2012-02-09 4 views
5

Ho recentemente iniziato a utilizzare MathNet per implementare la nostra algebra lineare, tuttavia ho difficoltà a tradurre le funzioni MATLAB in MathNet.Qual è l'equivalente MathNet di MATLAB risolve C = A B

In MATLAB Io uso spesso il semplice risolvere utilizzando l'operatore backslash:

C = A \ B

Qual è l'equivalente di questo Mathnet?

Ottengo gli stessi risultati in una matrice piccola usando C = Inv (A) * B, ma non so se il risultato è preciso.

risposta

2

Non penso che MathNet abbia un "equivalente" di operatore backslash di Matlab. Vedi questo sito per alcune informazioni su come funziona il backslash di Matlab: Matlab manual on mldivide(). Immagino che potresti guardare alcuni dei metodi di risoluzione, come QRSolve, ma non credo che saranno facili da usare ...

Cosa intendi per "preciso"? Stai chiedendo se l'inv (inversa) di MathNet fa esattamente l'inversione di una matrice, o stai semplicemente chiedendo se potresti calcolare C come Inv (A) * (B)?

Se si sta chiedendo il più tardi, sì, per le matrici quadrate il backslash di Matlab è più o meno lo stesso di Inv (A) * (B).

+0

Sto chiedendo il secondo sì. Ok, allora userò questo. Quando scrivi che è più o meno lo stesso, in cui si trova la differenza? – Bildsoe

+0

La differenza è che Matlab esegue l'eliminazione gaussiana quando si utilizza l'operatore backslash, riducendo così la complessità computazionale e aumentando la stabilità numerica. Il calcolo esplicito dell'inverso potrebbe essere mal condizionato in alcune condizioni e quindi quando si lavora in Matlab è meglio usare il backslash. – Niclas

+0

Ok, grazie. Penso di aver bisogno di guardare in qualche algebra lineare :) – Bildsoe

4

var C = A.QR().Solve(B); (utilizzando QR decomposizione)

Per matrici quadrate anche: var C = A.LU().Solve(B); (utilizzando LU decomposizione)

1

Con i test che ho fatto utilizzando Matlab e Math.Net Numerics:

Matrix A Vector B

Matlab: A \ B Math.Net numerici:. A.QR() Solve (B)

Entrambi danno gli stessi risultati (nel mio caso). Penso che funzionerà anche con B come Matrix.