2009-03-20 5 views
6

Devo eseguire una regressione OLS di base usando F #. Per fare questo ho bisogno di alcune funzioni di algebra lineare, ma sono confuso su cosa c'è là fuori. Non riesco a trovare alcun modo per invertire una matrice. C'è una documentazione per una libreria chiamata Microsoft.FSharp.Math.LinearAlgebra, ma non so se esiste più.Come si inverte una matrice in F #?

+0

Dipende dal tipo di elemento. 'Microsoft.FSharp.Math.Experimental.LinearAlgebra.Inverse' supporta solo' float', IIRC. –

risposta

6

Se si aggiunge il FSharp Powerpack al progetto (in riferimenti .NET), è possibile utilizzare varie funzionalità della libreria di matrice

edit: è inoltre necessario aggiungere i Fsharp.Powerpack.MathProviders biblioteca sperimentali, quindi si può chiamare come segue

open Microsoft.FSharp.Math 
let m = Matrix.create 10 10 1.2 
let m2 = Experimental.LinearAlgebra.Inverse m 
+0

Posso creare una Matrix va bene, posso aggiungerle, moltiplicarle e persino trasporle, ma non posso invertirle –

+0

L'aggiornamento dovrebbe fare il lavoro – Codingday

+0

Il codice che dovevo usare era Microsoft.FSharp.Math.Experimental.LinearAlgebra .Inverse (m) Ma funziona, grazie mille –

0

Non so; nella versione 1.9.6 di F # Non vedo nulla estemporaneo, la documentazione sono qui

http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/namespaces.html

e c'è roba Matrix nello spazio dei nomi Microsoft.FSharp.Math nel FSharp.Powerpack.dll, ma non vedo "invertire" a rovescio, e non conosco il materiale "LinearAlgebra" (deprecato? la ricerca sul Web suggerisce che è scomparso qualche rilasci).

+0

Bontà, se non lo sai, che speranza c'è per il resto di noi? :) La dll è in 1.9.6.2 CTP e nulla indica che sia deprecato (tranne che per assenza dai documenti, immagino ...) – Benjol

0

Avete controllato this. Potrebbe aiutare.

+0

Does dnAnalytics esiste ancora? Non riesco più ad accedere alla loro pagina web. –

+0

Sarebbe un peccato. Non ho provato a scavare per questo e mi chiedo se questo è un vicolo cieco. :( – Craig

+0

Sembra che il codeplex sia inattivo per manutenzione. DnAnalytics sembra essere tornato oggi –

1

FlyingFrog fare una biblioteca che contiene Numerics Matrix inversione tra molte altre funzioni.

Non sono sicuro quale sia preferibile, quello o il codice "sperimentale" (apparentemente deprecato) dal PowerPack. Immagino che tu possa sempre mantenere il codice sorgente per il bit gestito della versione PowerPack in un posto sicuro, ancora disponibile qui:

C:\Program Files\FSharp-1.9.6.2\source\fsharp\FSharp.PowerPack\math\lapack\linear_algebra_managed.fs. 
+1

Se stai invertendo enormi matrici in virgola mobile, il codice sperimentale del vecchio F # Power Pack offre prestazioni migliori (se riesci a farlo funzionare!) Se stai facendo piccole matrici o altri tipi (es. Inversione esatta tramite aritmetica razionale di precisione arbitraria) t gallina F # per i numeri è la strada da percorrere. –