modification fonction factorisation LU
La fonction ci-jointe transforme une matrice A quelconque en deux matrice L et U. on voudrait l'adapter de manière à mettre en paramettre une matrice M stockée au format MMCS;
pouvez-vous m'aider?
merci
function [L,U]=MMCS_LU(I,J,V)
if max(I)~=max(J) then
error('la matrice n''est pas carree')
end;
getf MMCS2full.sci;
A=MMCS2full(I,J,V);
[m,n]=size(A);
//test de l'inversibilité de la matrice A
for i=1:n
if det(A([1:i],[1:i]))==0 then
e=1;
end
end
if e==1 then
printf("\n il existe une sous matrice principale non inversible, la methode ne marche pas\n");
x=[];l=[];u=[];
else
//algorithme de gauss
for r=1:n-1
j=r; //inversion de lignes si il y a un 0 sur la diagonale
while a(j,r)==0,
j=j+1;
end
if j>r then,
//inversion des lignes de a
for k=r:n
m=a(r,k);
a(rk,)=a(j,k);
a(j,k)=m;
end
end
for i=1:n
for j=1:i-1
A(i,j)=A(i,j);
for k=1:j-1
A(i,j)=A(i,j)-A(i,k)*A(k,j);
end;
A(i,j)=A(i,j)/A(j,j);
end;
for j=i:n
A(i,j)=A(i,j);
for k=1:i-1
A(i,j)=A(i,j)-A(i,k)*A(k,j);
end;
end;
end;
U=triu(A);L=A-U+diag(ones(n,1));
endfunction;
pouvez-vous m'aider?
merci
function [L,U]=MMCS_LU(I,J,V)
if max(I)~=max(J) then
error('la matrice n''est pas carree')
end;
getf MMCS2full.sci;
A=MMCS2full(I,J,V);
[m,n]=size(A);
//test de l'inversibilité de la matrice A
for i=1:n
if det(A([1:i],[1:i]))==0 then
e=1;
end
end
if e==1 then
printf("\n il existe une sous matrice principale non inversible, la methode ne marche pas\n");
x=[];l=[];u=[];
else
//algorithme de gauss
for r=1:n-1
j=r; //inversion de lignes si il y a un 0 sur la diagonale
while a(j,r)==0,
j=j+1;
end
if j>r then,
//inversion des lignes de a
for k=r:n
m=a(r,k);
a(rk,)=a(j,k);
a(j,k)=m;
end
end
for i=1:n
for j=1:i-1
A(i,j)=A(i,j);
for k=1:j-1
A(i,j)=A(i,j)-A(i,k)*A(k,j);
end;
A(i,j)=A(i,j)/A(j,j);
end;
for j=i:n
A(i,j)=A(i,j);
for k=1:i-1
A(i,j)=A(i,j)-A(i,k)*A(k,j);
end;
end;
end;
U=triu(A);L=A-U+diag(ones(n,1));
endfunction;
Réponses
-
De mon expérience, je pense que
- tu dois expliquer quel est ce stockage MMCS que tu mentionnes (je pense que tout le monde ne connais pas les différents types de stockage, j'en connais un ou deux et celui-ci ne me dis rien);
- c'est sympa d'avoir mis l'algo mais à mon avis ça va changer pas mal de chose quand même. -
voici la def de MMCS
%============================================================
%%
This ASCII file represents a sparse mxn matrix with N
% nonzeros in the following Matrix Market format :
%%
+
+
% |%%MatrixMarket matrix coordinate | <--- header line
% |% real general | <--+
% |% comments | |--0 or more comment lines
% |% | <--+
% | m n V | <--- rows, columns, entries
% | I1 J1 A(I1, J1) | <--+
% | I2 J2 A(I2, J2) | |
% | I3 J3 A(I3, J3) | |-- L lines
% | . . . | |
% | IN JN A(IN, JN) | <--+
% +
+
%%
Indices are 1-based, i.e. A(1,1) is the first element.
%
%============================================================
5 5 8
1 1 1.000e+00
2 2 1.050e+01
3 3 1.500e-02
1 4 6.000e+00
4 2 2.505e+02
4 4 -2.800e+02
4 5 3.332e+01
5 5 1.200e+01
ou plus simplement:
-->A=[1 2 3;0 3 5;1 0 8]
A =
! 1. 2. 3. !
! 0. 3. 5. !
! 1. 0. 8. !
-->matricestockeeMMCS=[1 1 1;1 2 2;1 3 3;2 3 5;3 1 1;3 3 8]
matricestockeeMMCS =
! 1. 1. 1. !
! 1. 2. 2. !
! 1. 3. 3. !
! 2. 3. 5. !
! 3. 1. 1. !
! 3. 3. 8. !
Au fait je travaille avec scilab!
Connectez-vous ou Inscrivez-vous pour répondre.
Bonjour!
Catégories
- 163.2K Toutes les catégories
- 9 Collège/Lycée
- 21.9K Algèbre
- 37.1K Analyse
- 6.2K Arithmétique
- 53 Catégories et structures
- 1K Combinatoire et Graphes
- 11 Sciences des données
- 5K Concours et Examens
- 11 CultureMath
- 47 Enseignement à distance
- 2.9K Fondements et Logique
- 10.3K Géométrie
- 64 Géométrie différentielle
- 1.1K Histoire des Mathématiques
- 68 Informatique théorique
- 3.8K LaTeX
- 39K Les-mathématiques
- 3.5K Livres, articles, revues, (...)
- 2.7K Logiciels pour les mathématiques
- 24 Mathématiques et finance
- 314 Mathématiques et Physique
- 4.9K Mathématiques et Société
- 3.3K Pédagogie, enseignement, orientation
- 10K Probabilités, théorie de la mesure
- 773 Shtam
- 4.2K Statistiques
- 3.7K Topologie
- 1.4K Vie du Forum et de ses membres