Como faço para usar o mínimo quadrados aproximação no MATLAB?
-
11-09-2019 - |
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
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);