Pergunta

Para uma lição de casa na álgebra linear, eu ter resolvido a seguinte equação usando operador \ do MATLAB (que é a maneira recomendada de fazê-lo):

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

que produz a seguinte resposta:

x =
1.7000
2.0800

Para a próxima parte da tarefa, eu tenho que resolver o mesmo equação usando o mínimo quadrados aproximação (e, em seguida, compará-la com o valor anterior para ver quão preciso a aproximação é).

Como posso encontrar uma maneira de fazer isso no MATLAB?

Trabalhos anteriores:. Eu encontrei o lsqlin função, o que parece ser capaz de resolver equações do tipo acima, mas eu não entendo que os argumentos para fornecê-lo nem em que ordem

Foi útil?

Solução

mldivide , ( " \ ") realmente faz isso também. De acordo com a documentação :

Se A é um m por-n-matriz com m ~ = N e B é um vector de coluna com m componentes, ou uma matriz com vários de tais colunas, então X = A \ B é a solução, no sentido dos mínimos quadrados para o sistema de sub ou sobredeterminado de equações AX = B. por outras palavras, minimiza X norma (a * X - B), o comprimento do vector de AX - B. o posto k de a é determinada a partir da decomposição QR com coluna pivotante (ver Algoritmo para detalhes). A solução calculada X tem a maioria dos elementos k diferente de zero por coluna. Se k

Então, realmente, o que você fez na primeira tarefa era resolver a equação usando LSE.

Outras dicas

A sua atribuição envolvem explicitamente codificação de uma aproximação dos mínimos quadrados, ou simplesmente usando uma outra função disponível em MATLAB? Se você pode usar outra função, uma opção é LSQR :

x = lsqr(A,y);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top