Question

Pour une tâche de travail en algèbre linéaire, j'ai résolu l'équation suivante en utilisant l'opérateur \ de Matlab (ce qui est la méthode recommandée de le faire):

A = [0.2 0.25; 0.4 0.5; 0.4 0.25];
y = [0.9 1.7 1.2]';
x = A \ y

qui produit la réponse suivante:

x =
1.7000
2.0800

Pour la partie suivante de l'affectation, je suis censé résoudre la même équation en utilisant la approximation des moindres carrés (puis la comparer à la valeur avant de voir le degré de précision l'approximation est).

Comment puis-je trouver un moyen de le faire dans Matlab?

Des travaux antérieurs. J'ai trouvé la fonction lsqlin, qui semble être en mesure de résoudre les équations du type ci-dessus, mais je ne comprends pas quels arguments pour lui fournir ni dans quel ordre

Était-ce utile?

La solution

mldivide , ( " \ ") ne fait que trop. Selon le :

  

Si A est une matrice m-par-n avec m ~ = n et B est un vecteur colonne à m composantes, ou une matrice à plusieurs de ces colonnes, alors X = A \ B est la solution dans le sens des moindres carrés au système ou sous-surdéterminé d'équations AX = B. en d'autres termes, X minimise norme (A * X - B), la longueur du vecteur AX - B. le rang k de A est déterminée à partir de la décomposition QR de la colonne faire pivoter (voir algorithme pour plus de détails). La solution calculée X a au plus k éléments non nuls par colonne. Si k

Alors, vraiment, ce que vous avez fait dans la première mission consistait à résoudre l'équation en utilisant LSE.

Autres conseils

Est-ce que votre mission de codage impliquent explicitement une approximation des moindres carrés, ou tout simplement en utilisant une autre fonction disponible dans Matlab? Si vous pouvez utiliser une autre fonction, une option est LSQR :

x = lsqr(A,y);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top