Pregunta

Para una asignación de la preparación en el álgebra lineal, que han resuelto de la siguiente ecuación usando el operador \ de MATLAB (que es la forma recomendada de hacerlo):

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

que produce la siguiente respuesta:

x =
1.7000
2.0800

En la siguiente parte de la asignación, se supone que debo resolver el mismo ecuación usando la aproximación por mínimos cuadrados (y luego compararlo con el valor previo para ver cómo es exacto es la aproximación).

¿Cómo puedo encontrar una manera de hacer que en MATLAB?

Antes de trabajo:. He encontrado el lsqlin función, que parece ser capaz de resolver ecuaciones del tipo anterior, pero no entiendo por qué argumentos para el suministro de él ni en qué orden

¿Fue útil?

Solución

mldivide ( " \ ") realmente hace eso también. De acuerdo con la documentación de :

  

Si A es una matriz m-por-n con m ~ = n y B es un vector columna con m componentes, o una matriz con varias de estas columnas, entonces X = A \ B es la solución en los mínimos cuadrados sentido al sistema de sub o sobredeterminado de ecuaciones AX = B. En otras palabras, X minimiza norma (a * X - B), la longitud de la AX vector - B. el rango k de a se determina a partir de la descomposición QR con la columna pivotante (ver Algoritmo para detalles). La solución X computarizada tiene en la mayoría de los elementos no nulos K por columna. Si k

Así que en realidad, lo que hizo en la primera asignación fue para resolver la ecuación usando LSE.

Otros consejos

¿Su asignación implican explícitamente la codificación de una aproximación por mínimos cuadrados, o simplemente utilizando otra función disponible en MATLAB? Si puede utilizar otra función, una opción es LSQR :

x = lsqr(A,y);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top