Bonjour,
je dois écrire l'algorithme du gradient conjugué, est ce que quelqu'un pourrait me dire si mon programme est juste ?
le voici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 function [x, k] = Gradient_conjugue(A, b, x, e) k=0; e=0; x=x0; r0=b-A*x0; r=r0; p0=r0; while norm(r)<e*norm(r0) f=dot(r,r)/(A*p,p); x=x+f*p; r=r-f*A*p; B=(dot(r,r))^2/(dot(r,r))^2; p=r+B*p; end
ou x^0 appartient à R^n, arbitraire, k=0,1,...
p^0=r^0=b-A*x^0
f^k=(r^k,r^k)/(A*p^k,p^k)
x^(k+1)=x^k+f^k*p^k
r^(k+1)=r^k-f^k*A*p^k
B^(k+1)= llr^(k+1)ll^2 / llr^kll^2
p^(k+1) = r^(k+1) + B^(k+1)*p^k
K(e) est le nb d'itération pour que llr^kll soit inférieur à epsilon(noté e) fois llr^0ll.
Merci bcp et bonne journée
Partager