# linsolve

solveur d'équation linéaire

## Séquence d'appel

    [x0,kerA]=linsolve(A,b [,x0])

## Paramètres

A

  une matrice réelle `na x ma` (éventuellement creuse)

b

  un vecteur `na x 1`

x0

  un vecteur réel

kerA

  une matrice réelle `ma x k`

## Description

`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é.

## Exemples

    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 = zeros(size(A,1),1);

    tic();
    res = umfpack(A,'\',b);
    mprintf('\ntemps nécessaire à la résolution du système avec umfpack: %.3f\n',toc());

    tic();
    res = linsolve(A,b);
    mprintf('\ntemps nécessaire à la résolution du système avec linsolve: %.3f\n',toc());

    tic();
    res = A\b;
    mprintf('\ntemps nécessaire à la résolution du système avec l''opérateur backslash: %.3f\n',toc());

## Voir aussi

- inv
- pinv
- colcomp
- im_inv
- umfpack
- backslash