%===================================================== % % OS82 - 2013 % % Minimisation de l'Ed de 2 ressorts par dichotomie. % %===================================================== %=== nettoyage de matlab clc; clear all; close all; %=== parametres L=2; L1=1.5; L2=1.2; k1=10; k2=15; x_exact=(k1*L1+k2*L-k2*L2)/(k1+k2); n=100;%nb points tracés Ed(x) epsilon_cvg=1E-6; %=== courbe Ed(x) table_x=zeros(n,1); table_Ed=zeros(n,1); for i=1:n xi=(i-1)*L/(n-1); table_x(i,1)=xi; table_Ed(i,1)=Ed(xi,k1,k2,L1,L2,L); end figure(1) hold on plot(table_x,table_Ed,'-b'); grid; xlabel('x'); ylabel('Ed(x)'); hold off %=== algo dichotomie xG=0; xC=L/2; xD=L; compteur=1; test_fin=0; while(test_fin==0) fG=Ed(xG,k1,k2,L1,L2,L); fC=Ed(xC,k1,k2,L1,L2,L); fD=Ed(xD,k1,k2,L1,L2,L); if(fG>fD) xG=xC; xD=xD; xC=(xG+xD)/2; else xG=xG; xD=xC; xC=(xG+xD)/2; end if(abs(xG-xD) xG=%f\n-> xD=%f\n',compteur,xG,xD); compteur=compteur+1; end