2012-02-09 15 views
5

Recientemente he comenzado a utilizar MathNet para implementar nuestro álgebra lineal, sin embargo, estoy teniendo problemas para traducir las funciones de MATLAB a MathNet.¿Cuál es el equivalente MathNet de MATLAB resuelve C = A B

En MATLAB que a menudo utilizan la sencilla resolver utilizando el operador de barra invertida:

C = A \ B

Cuál es el equivalente de esto en Mathnet?

Obtengo los mismos resultados en una matriz pequeña usando C = Inv (A) * B, pero no sé si el resultado es tan preciso.

Respuesta

2

No creo que MathNet tenga ningún "equivalente" del operador de barra invertida de Matlab. Consulte este sitio para obtener información sobre cómo funciona la barra invertida de Matlab: Matlab manual on mldivide(). Supongo que podrías ver algunos de los métodos de resolución, como QRSolve, pero no creo que sean tan fáciles de usar ...

¿Qué quieres decir con "preciso"? ¿Estás preguntando si el Inv() de MathNet realiza la inversión exacta de una matriz, o simplemente preguntas si podrías calcular C como Inv (A) * (B)?

Si está preguntando más tarde, sí, para matrices cuadradas, la barra invertida de Matlab es más o menos la misma que Inv (A) * (B).

+0

Estoy preguntando esto último sí. Ok, entonces solo usaré esto. Cuando escribes eso es más o menos lo mismo, ¿en qué radica la diferencia? – Bildsoe

+0

La diferencia es que Matlab realiza la eliminación gaussiana cuando usa el operador de barra diagonal inversa, lo que reduce la complejidad computacional y aumenta la estabilidad numérica. El cómputo explícito de la inversa podría estar mal acondicionado en algunas condiciones y, por lo tanto, cuando se trabaja en Matlab, es mejor utilizar la barra invertida. – Niclas

+0

Ok, gracias. Creo que necesito buscar algo de álgebra lineal :) – Bildsoe

4

var C = A.QR().Solve(B); (mediante descomposición QR)

Para matrices cuadradas también: var C = A.LU().Solve(B); (mediante descomposición LU)

1

Con las pruebas que he hecho usando Matlab y Math.Net Numerics:

Matriz A Vector B

Matlab: A \ B Math.Net Numerics:. A.QR() Resolver (B)

Ambos dan los mismos resultados (en mi caso). Creo que funcionará con B siendo una Matriz también.

Cuestiones relacionadas