Implémentation de la methode de Cholesky en MATLAB

serhanus Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
serhanus Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -
Salut à tous,

Tout d'abord je rappel que la méthode de Cholesky consiste à résoudre un système linéaire classique Ax=b, On décomposant la matrice A en A=B*Bt (avec B une matrice triangulaire inférieur, et Bt sa transposée).

Il existe une fonction dans MATLAB qui s'appelle "chol" qui retourne Bt, j'ai écrit un script qui résous le système on utilisant cette fonction.

Mais le problème et que je suis demandé d'implémenter une fonction qui fait ce que "chol" fait !
A voir également:

1 réponse

rlo73 Messages postés 2956 Date d'inscription   Statut Membre Dernière intervention   635
 
ça s'appelle un exercice non ? on ne va pas écrire l'algorithme à ta place, enfin il me semble que ce n'est pas la politique de CCM !
3
serhanus Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
oui il est,
mais je te demande pas de résoudre le problème , le problème c'est que c'est première publication , et la à été poster avant de compléter ...

ce que je veus c'est just une indication

voilà ma tentation:

function x=cholesky2(A,b)
%*****************
[n nn]=size(A);
%*****************
for i=1:n
for j=1:n
B(i,j)=0;
end
end

%*****************
for j=1:n-1
som1=0;

for k=1:n
som1=som1+B(j,k)^2;
end

B(j,j)=sqrt(A(j,j)-som1);

n=j+1;
som2=0;
for k=1:j-1
som2=som2+B(j,k)*B(j+1,k);
end
B(j+1,j)=A(j+1,j)-som2;
end
%B(j+1,j)=A(j+1,j)-som2;
B
%*****************
Bt=B';
%******************
for k=1:n
B(k,n+1)=b(k);
end

%******************
y(1)=B(1,n+1)/B(1,1);
for i=1:n;
c=0;

for j=1:i-1;


c=c+B(i,j)*y(j);


end
y(i)=(B(i,n+1)-c)/B(i,i);
end
%******************

for k=1:n
Bt(k,n+1)=y(k);
end


%******************
x(n)=Bt(n,n+1)/Bt(n,n);
for i=n-1:-1:1;
c=0;

for j=i+1:n;


c=c+Bt(i,j)*x(j);


end
x(i)=(Bt(i,n+1)-c)/Bt(i,i);
end
x=x';
%******************
B
Bt
0