### 6.63.9 Norme minimale d’un système linéaire : LSQ lsq

LSQ ou 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) ou 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 √∑j,k|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 puisquelinsolve([[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]