Domanda

Per un compito a casa in algebra lineare, ho risolto la seguente equazione utilizzando operatore \ di MATLAB (che è il modo consigliato di farlo):

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

che produce la seguente risposta:

x =
1.7000
2.0800

Per la prossima parte di assegnazione, dovrei risolvere il stessa equazione utilizzando la minor quadrati approssimazione (e poi confrontarlo con il valore prima di vedere come precisa il ravvicinamento è).

Come faccio a trovare un modo di fare che in MATLAB?

Prima di lavoro:. Ho trovato la funzione lsqlin, che sembra essere in grado di risolvere equazioni del tipo sopra, ma non capisco che gli argomenti per la fornitura di esso, né in quale ordine

È stato utile?

Soluzione

mldivide , ( " \ ") in realtà fa anche questo. Secondo il :

  

Se A è una matrice m-by-n con m ~ = n e B è un vettore colonna con m componenti, o una matrice con diversi tali colonne, allora X = A \ B è la soluzione in senso dei minimi quadrati al sistema di sotto-o sovradeterminato di equazioni AX = B. In altre parole, X minimizza norma (a * X - B), la lunghezza del vettore AX - B. la k rango di a è determinata dalla decomposizione QR con colonna orientabile (vedi Algoritmo per i dettagli). La soluzione calcolata X ha al massimo k elementi non nulli per colonna. Se k

Quindi, in realtà, quello che hai fatto nel primo incarico è stato quello di risolvere l'equazione utilizzando LSE.

Altri suggerimenti

Il tuo incarico coinvolgere in modo esplicito la codifica di un'approssimazione minimi quadrati, o semplicemente utilizzando un'altra funzione disponibile in MATLAB? Se è possibile utilizzare un'altra funzione, una possibilità è LSQR :

x = lsqr(A,y);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top