### 6.54.7 Norme minimale d’un système linéaire : `LSQ`

`LSQ` a pour arguments une matrice `A` et un vecteur (rep une matrice) `B` qui représentent le (resp les) système(s) linéaire(s) `A*X=B` si `B` est un vecteur (resp une matrice).
`LSQ(A,B)` calcule la norme minimale selon la méthode des moindres carrés du système linéaire `A*X=B` sur- ou sous-déterminé c’est pour estimer la solution d’un système linéaire `A*X=B` (si `B` est un vecteur) ou des systèmes linéaires `A*X=B` (si `B` est une matrice) pour :

- un système sur-déterminé (on a plus de lignes que de colonnes)
  - si `B` est un vecteur : on cherche `X` de norme euclidienne minimum qui minimise la norme euclidienne de `(AX-B)`.
  - si `B` est une matrice : on cherche `Xj` de norme euclidienne minimum parmi les solutions qui minimise la norme euclidienne de `(AXj-Bj)`
- un système sous determiné (en général on a plus de colonnes que de lignes)
  On cherche `X` qui minimise la norme de Frobenius de `(AX-B)` (la norme de Frobenius d’une matrice M est sqrt∑|M(j,k)|2).
- un système exactement déterminé (le nombre de colonnes est égal au nombre de lignes et `A` est inversible).
  On utilise `inv(A)*B` pour avoir `X` qui produit des résultats faux en calcul approché si la matrice est mal conditionnée (équations indépendantes proche l’une de l’autre)

On tape :

`LSQ([[1,2],[3,4]],[5,11])`

On obtient :

`[[1],[2]]`

En effet si `X:=[[1],[2]]`, on a `[[1,2],[3,4]]*X=[[5],[11]]` On tape :

`LSQ([[1,2],[3,4]],[7,9])`

On obtient :

`[[-5],[6]]`

En effet si `X:=[[-5],[6]]`, on a `[[1,2],[3,4]]*X=[[7],[9]]` On tape :

`LSQ([[1,2],[3,4]],[[5,7],[11,9]])`

On obtient :

`[[1,-5],[2,6]]`

En effet si `X:=[[1,-5],[2,6]]`, on a `[[1,2],[3,4]]*X=[[5,7],[11,9]]` On tape :

`LSQ([[1,2],[3,4],[3,6]],[5,11,13])`

On obtient :

`[[11/5],[11/10]]`

En effet puisque`linsolve([[1,2],[3,4],[3,6]]*[x,y]-[5,11,13],[x,y])` renvoie `[]`, on cherche la norme minimum de `C` définit par :
`C:= [[1,2],[3,4],[3,6]]*[x,y]-[5,11,13]`.
On a :
`norm(C)` renvoie :
`sqrt(19*x```^```2+64*x*y-154*x+56*y```^```2-264*y+315)`
`gauss(19*x```^```2+64*x*y-154*x*z+56*y```^```2-264*y*z+315*z```^```2,[x,y,z])` renvoie :
`((19*x+32*y-77*z)```^```2)/19+((40/19*y+(-44)/19*z)```^```2)/(40/19)+(2*z```^```2)/5`
`linsolve([19*x+32*y-77=0,40/19*y+(-44)/19=0],[x,y])` renvoie :
`[11/5,11/10]`
On tape :

`LSQ([[1,2],[3,4],[3,6]],[[5,-1],[11,-1],[13,-3]]`

On obtient :

`[[11/5,1],[11/10,-1]]`

En effet `linsolve([[1,2],[3,4],[3,6]]*[x,y]-[-1,-1,-3],[x,y])`
renvoie : `[1,-1]`
On tape :

`LSQ([[3,4]],[12])`

On obtient :

`[[36/25],[48/25]]`

En effet si `d:=droite(3x+4y-12)` et si `M:=projection(d,point(0))` alors `coordonnees(M)` renvoie :
`[36/25,48/25]`