1)Le minimum par fminsearch, fminbnd respectivement est:
1.414187500000002
1.414214542680643
On sait par ailleurs que le minimum est atteint pour x=sqrt(2)
1.414213562373095
On remarque que les deux commandes de Matlab donnent des solutions approchées du minimum exact sqrt(2).
Elle sont assez bonne erreur de l'ordre de e-4 et e-5 mais ce n'est pas suffisant pour des calculs intensifs.
2)La suite est une suite récurrente convergente (voir cours Analyse I)
3)
Solution1:
function [xn,va]=PLY1(x0,nmax,precision,alpha)
format long
xn(1)=x0+alpha*(2-x0^2);
va=abs(xn(1)-x0);
ni=1;
while ni<=nmax && va>precision
xn(ni+1)=xn(ni)+alpha*(2-xn(ni)^2);
va=abs(xn(ni+1)-xn(ni));
ni=ni+1;
end
xn=xn.'
%ni=size(xn,1)-1 donne le nombre d'iteration
%round(log10(b)) donne l'ordre de b -8 si b=0,93*10^(-8)
%ou b=9,3e-9
end
Solution2:
function [xn,va]=PLY2(x0,nmax,precision,alpha)
format long
xn(1,1)=x0+alpha*(2-x0^2);
va=abs(xn(1,1)-x0);
ni=1;
while ni<=nmax && va>precision
xn(ni+1,1)=xn(ni,1)+alpha*(2-xn(ni,1)^2);
va=abs(xn(ni+1,1)-xn(ni,1));
ni=ni+1;
end
%ni=size(xn,1)-1 donne le nombre d'iteration
%round(log10(b)) donne l'ordre de b -8 si b=0,93*10^(-8)
%ou b=9,3e-9
end
Solution3:
function [xn,va]=PLY3(x0,nmax,precision,alpha)
format long
va=precision+eps;
xn(1)=x0;
i=0;
while i<=nmax && va>precision
i=i+1;
xn(i+1)=xn(i)+alpha*(2-xn(i)^2);
va=abs(xn(i+1)-xn(i));
end
va=abs(xn(i+1)-xn(i));
xn=xn(2:i+1).';
%ni=size(xn,1) donne le nombre d'iteration
%round(log10(b)) donne l'ordre de b -8 si b=0,93*10^(-8)
%ou b=9,3e-9
end
Solution4:
function [xn,va]=PLY4(x0,nmax,precision,alpha)
format long
xn(1,1)=x0;
va=precision+1;
ni=1;
while ni<=nmax+1 && va>precision
xn(ni+1,1)=xn(ni,1)+alpha*(2-xn(ni,1)^2);
va=abs(xn(ni+1,1)-xn(ni,1));
ni=ni+1;
end
xn=xn(2:size(xn,1));
%ni=size(xn,1)-1 donne le nombre d'iteration
%round(log10(b)) donne l'ordre de b -8 si b=0,93*10^(-8)
%ou b=9,3e-9
end
4)Les valeurs de sorties sont
pour alpha =1/(2sqrt(2))
xn=
1.292893218813453
1.409009742330268
1.414203988238127
1.414213562340687
l'erreur de sortie est
9.574102559417597e-06
|sqrt(2)-xn|=
3.240829826722802e-11
Pour alpha=1/3
xn=
1.333333333333334
1.407407407407407
1.413808870598994
1.414190363070860
1.414212235403363
1.414213486481837
l'erreur de sortie est
1.251078474373557e-06
|sqrt(2)-xn|=
7.589125772256011e-08
Pour alpha=1/2
xn=
1.000000000000000
1.500000000000000
1.375000000000000
1.429687500000000
1.407684326171875
1.416896745096892
1.413098551963808
1.414674793182702
1.414022407949442
1.414292722857873
1.414180769893505
1.414227144925212
1.414207936203554
1.414215892792996
l'erreur de sortie est
7.956589442636997e-06
|sqrt(2)-xn|=
2.330419901275249e-06
Pour alpha=2/3
xn=
0,666666666666667
1,70370370370370
1,10196616369456
1,62574654640942
1,19704532430131
1,57510031868022
1,25447297607586
1,53867134427277
1,29366500714865
1,51128557333471
1,32196285055497
1,49023899839003
1,34303081684169
1,47387630018405
1,35900206802123
1,46107765409724
1,37124571322904
1,45103584252969
1,38069916499246
1,44314570885188
1,38803268420015
1,43694286259490
1,39373966901995
1,43206615902006
1,39819050314642
1,42823271442053
1,40166692339317
1,42522014730352
1,40438516845028
1,42285336754153
1,40651223052534
1,42099446078042
1,40817762240132
1,41953481158009
1,40948209072161
1,41838891467831
1,41050417249010
1,41748949208211
1,41130518530665
1,41678363459103
1,41193305642772
1,41622975253884
1,41242527788802
1,41579516747665
1,41281119664316
1,41545421173631
1,41311379472161
1,41518673016661
1,41335107600684
1,41497689997371
1,41353714833423
1,41481230185365
1,41368306886937
1,41468318939743
1,41379750515498
1,41458191476669
1,41388725237670
1,41450247742115
1,41395763833411
1,41444016966520
1,41401284062352
1,41439129832472
1,41405613514026
1,41435296625505
1,41409009081874
1,41432290085090
1,41411672227003
1,41429931946754
1,41413760943664
1,41428082382119
1,41415399140229
1,41426631713627
1,41416683994548
1,41425493914456
1,41417691721471
1,41424601509278
1,41418482095558
1,41423901574147
1,41419101997787
1,41423352598718
1,41419588196976
1,41422922024961
1,41419969531107
1,41422584316579
1,41420268618046
1,41422319444710
1,41420503197232
1,41422111700176
1,41420687181929
1,41421948761869
1,41420831484504
1,41421820966047
l'erreur de sortie est
9.894815432787141e-06
|sqrt(2)-xn|=
4.647287378700682e-06
5)On remarque que pratiquement (d'une façon pratique non théorique) que avec alpha=1/(2*sqrt(2)) que l’algorithme s'approche rapidement de la solution exacte (au bout de 4 itérations) par rapport au autres et il y des valeurs de alpha où l'algorithme converge mais très lentement avec plus de 70 itérations.
Il est évident que pour cette fonction, la suite donnée converge mieux que la commande Matlab utilisée précédemment.
Il est judicieux de voir si cette valeur de alpha est la meilleur ou qu'il existe une autre, d'une façon théorique.
6)Il suffit d'utiliser la commande suivante pour afficher l'ordre de l'erreur
erreur=2.34e-7
puissance10=abs(round(log10(erreur)))
ce qui donne
puissance10=6
avec un display
disp(['l''ordre de l''erreur est ',num2str(puissance10),' chiffres après la virgule'])