1 function [er,X]=sqrtm_iteration_newton(A,X0,epsilon)
\r
4 % sqrtm_iteration_newton : calcul d'une racine carrée de matrice par la méthode de Newton.
\r
7 % *********************************************************
\r
9 % [er,X]=sqrtm_iteration_newton(A,X0,espilon)
\r
10 % calcule les différents itérés de
\r
11 % la méthode de Newton pour la recherche d'une racine de matrice.
\r
12 % A chaque itération, elle affiche et stocke le résultat X_k ainsi que l'erreur
\r
13 % er(k)=|||X_k^2-A|||.
\r
15 % variables d'entrées :
\r
16 % * A :matrice dont on veut une racine.
\r
17 % * X0 : matrice initiale
\r
18 % * epsilon : paramètre de précision
\r
19 % variables de sortie :
\r
20 % * er: suite des erreurs, définies par er(k)=norm(X_k^2-A).
\r
21 % * X : suite des itérés (matriciels) calculés.
\r
23 % ATTENTION : nombre maximum d'itération défini par nmax
\r
25 % ************ Fonctions auxiliaires utilisées ************
\r
29 % *********************************************************
\r
32 % nombre maximum d'itération défini par nmax
\r
35 % Contrôles d'entrée
\r
38 error('attention, A n''est pas carrée : arrêt du programme');
\r
40 if (norm(A*X0-X0*A,inf)~=0)
\r
41 disp('attention, la matrice initiale et A ne commutent pas !!');
\r
46 % Corps d'algorithme
\r
51 test=(norm(X0^2-A,inf)~=0);
\r
54 disp(['itération numéro ',int2str(k)]);
\r
59 test=~((norm(y2-A,inf)==0)|(k>=nmax)|(norm(x-y,inf)<=epsilon));
\r
62 disp(['erreur : ',num2str(erloc)]);
\r
63 disp('appuyez sur une touche pour continuer');
\r
69 disp('attention, n>nmax');
\r