Beruflich Dokumente
Kultur Dokumente
Encadr par
Mr Coer J
Remarque : On remarque clairement que la mthode Optimise et plus rapide de la mthode itrative Exercice n2 : Utilisation des fonctions
function y = fonction_f(x) y = x.^2 +3*x-4; >> fonction_f(-4) ans = 0 Corroborer ces rsultats >> y = inline('x^2 +3*x-4') y= Inline function: y(x) = x^2 +3*x-4 >> fonction_f(-3/2) ans = -6.2500 >> fonction_f(1) ans = 0
Remarque :
Pour dnir des fonctions dpendantes dun ou plusieurs paramtres nous utilisons la fonction inline Exercice n3 : Utilisation des objets graphiques
DX=1; x=[-20:DX:20];
figure(1) y=fonction_f(x); plot(x,y,'-sb') xlabel('abscisse','FontSize',15,'FontName','arial'); ylabel('ordonne','FontSize',11,'FontName','times'); legend('courbe test'); title('exercice sur les graphiques');
La mthode de dichotomie un algorithme de recherche d'un zro d'une fonction qui consiste rpter des partages dun intervalle en deux parties puis slectionner le sous-intervalle dans lequel existe un zro de la fonction. function [RACINE,NITE]=dichotomie(a,b,EPSILON) fa=f(a); fb=f(b); RACINE=(a+b)/2; NITE=0; if (fa*fb>0) RACINE=-Inf; return; end; while (b-a)>EPSILON NITE=NITE+1; RACINE=(a+b)/2; fx=f(RACINE); if(sign(fx)==sign(fa)) a=RACINE; fa=fx; else b=RACINE; fb=fx; end; end; %dclaration de fonction function y=f(x) y=x^2-3*x-4;
Mthode dichotomie
Remarque :
Dans cette exempte la fonction f(x) est dclar dans le fichier dichotomie.m Mais il est possible aussi dutiliser str2func('fonction_f'); pour appeler f(x) a partir dun autre fichier donc on peut crire :
function [racine,NITER] = dichotomie(A,B, epsi, NMAX) % appelle de fonction str2func('fonction_f'); NITER=0; precis=1; for i=1:1:NMAX NITER=NITER+1; while (fonction_f(A)*fonction_f(B)<0)&&(precis>epsi) nd x=(A+B)/2; if(fonction_f(A)*fonction_f(x)<0) A=A; B=x; else A=x; B=B; end precis=abs((B-A)/(2*x)); end e x
L'algorithme consiste linaires une fonction f en un point et prendre le point d'annulation de cette linarisation comme approximation du zro recherch. On ritre cette procdure en l'approximation obtenue. Dans les cas favorables, les approximations successives obtenues convergent avec une vitesse quadratique. De manire informelle, le nombre de dcimales correctes double chaque tape. function [x,nb]=newton(x0,eps) err=1; xt=x0;x=x0; nb=0; while (err>eps) nb=nb+1; x=x-f(x)\df(x); err=norm(x-xt); xt=x; end function y=f(x) y=x^2-3*x-4; function y=df(x) y=2*x+3;
Ici on doit dclarer la fonction f(x) mais aussi a drive df(x) Q1) vrification de R1
Q2) vrification de R2
Avec la fzero(inline('x.^2+3*x-4'),x0) 0.0 360s Pour le calcule de temps dans un des algo on ajoute t0 = cputime; fonction. t1= cputime; t2=t1-t2 Si non on utilise REPS = 1000; ; tic; ici fonction averageTime = toc/REPS pour le nombre ditration exemple Tdeb_dicho=cputime; %enregistrement de lheure de dbut de lexecution de la fonction [racine_dicho,niter_dicho]=dichotomie(a,b,epsilon,nmax,str2func('fonction_f')); Tfin_dicho=cputime; %enregistrement de lheure de la fin de lexecution de la fonction T= Tfin_dicho-Tdeb_dicho
Q1) Ecriture de fonction qui permet de calculer la table des diffrences divises
function [tab]=diff_div1(N,x,y) n=N+1 tab=zeros(n,n) for k=1:n tab(k,1)=y(k) end for j=2:n for i=j:n tab(i,j)=(tab(i,j-1)-tab(i-1,j-1))/(x(i)-x(i-j+1)) end end t=diag(tab) fi=t'
diff_div1(3,X,Y) ans =
Q3)Fonction polynme
mult=1; for i=2:N+1 mult=mult.*(U-X(i-1)); PN=PN+A(i)*mult; end
A=[-27;13;-3;1]
Reprsentation graphique
Q6)fonction_runge Q7)
N=2
N=9
N=24
Pour n=2
N=24
>> S=racines_tchebychef(2) S= 0.8660 0.0000 -0.8660 >> S=racines_tchebychef1(9) S= Columns 1 through 7 0.9877 0.8910 0.7071 0.4540 0.1564 -0.1564 -0.4540 Columns 8 through 10
-0.7071 -0.8910 -0.9877 >> S=racines_tchebychef1(24) S= Columns 1 through 7 0.9980 0.9823 0.9511 0.9048 0.8443 0.7705 0.6845 Columns 8 through 14 0.5878 0.4818 0.3681 0.2487 0.1253 0.0000 -0.1253 Columns 15 through 21 -0.2487 -0.3681 -0.4818 -0.5878 -0.6845 -0.7705 -0.8443 Columns 22 through 25
Une approximation au sens des moindres carrs Q15) x=[0.0 212 507 698 992 1200]'; y=[0.0 42.7 109.2 151.9 193.3 235.4]'; Q16)
function[SORTIE]=approximation(X,Y,degre) Nech=length(X); K=degre; M=zeros(K+1); B=zeros(K+1,1); if length(Y)~=Nech disp('vecteurs de tailles differentes:abandon'); return end for I=1:K+1 for J=1:K+1 M(I,J)=sum(X.^(I+J-2)); end end for I=1:K+1 B(I)=sum(X.^(I-1).*Y); end SORTIE=M\B;
Q17)
function [inum,delay]=trapez(fonction_f,a,b,n);
delay=Ts
plot(xc,fc,'r'); hold on; title('Mthode des trapzes'); xlabel('x'); ylabel('y'); grid on; plot(x,f,'m'); plot(x,zeros(size(x)),'c') for i=1:n; plot([x(i),x(i)],[0,f(i)],'g'); end
Nombre de point 20
inum =0.0100
delay =1.5600e+005
Premire mthode :mthode du point milieu A=BORNEINF; B=BORNESUP; N=NBPOINT; H=abs(B-A)/(N-1); X=[A:H:B]; Ts=cputime*1e6
function [INUM,DELAY]=point_milieu(BORNEINF,BORNESUP,NBPOINT,NOMFONCTION)
function[INUM,DELAY]=simpson(BORNEINF,BORNESUP,NBPOINT,NOMFONCTION) A=BORNEINF; B=BORNESUP. N=NBPOINT; H=abs(B-A)/(N-1); X=[A:H:B]; Ts=cputime*1e6; Y=NOMFONCTION(X); Ydemi=NOMFONCTION(X([1:N-1])+H/2); Ts=cputime*1e6; INUM=H/6*(2*sum(Y)-Y(1)-Y(N)+4*sum(Ydemi)); DELAY=cputime*1e6-Ts;