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());