linsolve — solveur d'équation linéaire
[x0,kerA]=linsolve(A,b [,x0])
une matrice réelle na x ma
(éventuellement creuse)
un vecteur na x 1
un vecteur réel
une matrice réelle ma x k
linsolve
donne toutes les solutions de A*x+b=0
.
x0
est une solution particulière (s'il en existe une) et kerA
est le noyau de A
. Tout vecteur de la forme x=x0+kerA*w
avec w
quelconque vérifie
A*x+b=0
.
Si un x0
compatible est donné en entrée, x0
est renvoyé. Dans le cas contraire un x0
compatible, s'il en existe un, est renvoyé.
A=rand(5,3)*rand(3,8); b=A*ones(8,1);[x,kerA]=linsolve(A,b);A*x+b // b compatible b=ones(5,1);[x,kerA]=linsolve(A,b);A*x+b // b incompatible A=rand(5,5);[x,kerA]=linsolve(A,b), -inv(A)*b // x est unique // Une comparaison des différentes méthode de résolution de systèmes linéaire creux [A,descr,ref,mtype] = ReadHBSparse(SCI+"/modules/umfpack/examples/bcsstk24.rsa"); b = 0*ones(size(A,1),1); tic(); res = umfpack(A,'\',b); printf('\ntemps nécessaire à la résolution du système avec umfpack: %.3f\n',toc()); tic(); res = linsolve(A,b); printf('\ntemps nécessaire à la résolution du système avec linsolve: %.3f\n',toc()); tic(); res = A\b; printf('\ntemps nécessaire à la résolution du système avec l'opérateur backslash: %.3f\n',toc());