suivant: Le programme optimisé de
monter: La décomposition de Cholesky
précédent: Le programme de factorisation
Table des matières
Index
//A:=[[1,0,-1],[0,2,4],[-1,4,11]]
//A:=[[1,1,1],[1,2,4],[1,4,11]]
//A:=[[1,0,-2],[0,2,6],[0,2,11]]
//A:=[[1,-2,4],[-2,13,-11],[4,-11,21]]
//A:=[[-1,-2,4],[-2,13,-11],[4,-11,21]] (pas def pos)
//A:=[[24,66,13],[66,230,-11],[13,-11,210]]
cholesi(A):={
local j,n,l,k,C,c2,s;
n:=size(A);
A:=1/2*(A+tran(A));
C:=makemat(0,n,n);;
for (j:=0;j<n;j++) {
s:=0;
for (k:=0;k<j;k++) {
s:=s+(C[j,k])^2;
}
c2:=A[j,j]-s;
if (c2<=0) {return "pas definie positive ";}
C[j,j]:=normal(sqrt(c2));
for (l:=j+1;l<n;l++) {
s:=0;
for (k:=0;k<j;k++) {
s:=s+C[l,k]*C[j,k];
}
C[l,j]:=normal(1/sqrt(c2)*(A[l,j]-s));
}
}
return C;
}
Ce programme n'est pas très bon car les termes de la matrice C sont
obtenus avec une multiplication ou une division de racine carrée...
On se pourra se reporter ci-dessous pour avoir le programme choleski optimisé.
Documentation de giac écrite par Renée De Graeve