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 #?
risposta
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
Posso creare una Matrix va bene, posso aggiungerle, moltiplicarle e persino trasporle, ma non posso invertirle –
L'aggiornamento dovrebbe fare il lavoro – Codingday
Il codice che dovevo usare era Microsoft.FSharp.Math.Experimental.LinearAlgebra .Inverse (m) Ma funziona, grazie mille –
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).
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
Avete controllato this. Potrebbe aiutare.
Does dnAnalytics esiste ancora? Non riesco più ad accedere alla loro pagina web. –
Sarebbe un peccato. Non ho provato a scavare per questo e mi chiedo se questo è un vicolo cieco. :( – Craig
Sembra che il codeplex sia inattivo per manutenzione. DnAnalytics sembra essere tornato oggi –
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.
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. –
Dipende dal tipo di elemento. 'Microsoft.FSharp.Math.Experimental.LinearAlgebra.Inverse' supporta solo' float', IIRC. –