2009-10-04 10 views
9

¿Cómo se resuelve la solución (no trivial) Ax = 0 para x en MATLAB?¿Cómo resolver una matriz en MATLAB?

A = matrix 
x = matrix trying to solve for 

He intentado resolver ('A * x = 0', 'x'), pero solo me dan 0 para una respuesta.

+1

es invertible A? – manji

+2

invertibilidad no es particularmente relevante (por sí mismo). – Peter

+2

si A es invertible, la única solución para Ax = 0 es 0, ¿no? – manji

Respuesta

13

Tenga en cuenta que nulo (A) hace lo mismo (para una matriz de rango deficiente) como el siguiente, pero esto es usar la función svd(A) en MATLAB (que como he mencionado en mis comentarios es lo null(A) hace).

[U S V] = svd(A); 
x = V(:,end) 

Para más información sobre esto, he aquí un link relacionado con este (no se puede publicarla en aquí debido a las fórmulas).

Si desea una sensación más intuitiva de descomposiciones singulares y de valores propios, consulte eigshow en MATLAB.

+0

gracias por la explicación :) – yxk

9

Puede usar N = null(A) para obtener una matriz N. Cualquiera de las columnas de N (o, de hecho, cualquier combinación lineal de columnas de N) satisfará Ax = 0. Esto describe todo lo posible x - acaba de encontrar una base ortogonal para el espacio nulo de A.

Nota: solo puede encontrar un x si A tiene un espacio nulo no trivial. Esto ocurrirá si rank(A) < #cols of A.

+0

Mi rango (A) = # cols. ¿Cómo se puede "disminuir" el valor del rango? También nulo (A) = matriz vacía: 12 por 0. – yxk

+0

Deberías buscar aproximaciones de bajo rango. Puedes usar la SVD para esto. – Peter

1

Puede ver si MATLAB tiene una descomposición de valor singular en su caja de herramientas. Eso te dará el espacio nulo del vector.

+0

Eso sería SVD, que da como resultado el mismo resultado que null (A). – Jacob

+0

Utilizan diferentes métodos numéricos. – Peter

+0

No realmente, nulo (A) usa svd - http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/ref/null.html – Jacob

Cuestiones relacionadas