2009-03-20 20 views
6

Potrzebuję wykonać kilka podstawowych regresji OLS za pomocą F #. Aby to zrobić, potrzebuję funkcji Liniowego Algebry, ale jestem zdezorientowany co do tego, co tam jest. Nie mogę znaleźć żadnej metody odwrócenia matrycy. Istnieje pewna dokumentacja dla biblioteki o nazwie Microsoft.FSharp.Math.LinearAlgebra, ale nie wiem, czy to już istnieje.Jak odwrócić matrycę w F #?

+0

Zależy od typu elementu. 'Microsoft.FSharp.Math.Experimental.LinearAlgebra.Inverse' obsługuje tylko' float', IIRC. –

Odpowiedz

6

Jeśli dodać FSharp Powerpack do projektu (w odnośnikach .NET), można korzystać z różnych funkcji biblioteki macierzy

edit: trzeba także dodać eksperymentalne Fsharp.Powerpack.MathProviders biblioteki, a następnie można wywołać w następujący sposób

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

Mogę stworzyć Matrix dobrze, mogę je dodawać, mnożyć, a nawet transponować, ale nie mogę ich odwrócić –

+0

Aktualizacja powinna wykonać pracę – Codingday

+0

Kod, który musiałem użyć to Microsoft.FSharp.Math.Experimental.LinearAlgebra .Inverse (m) Ale to działa, dziękuję bardzo –

0

Nie wiem; w wersji 1.9.6 z F # nie widzę niczego niekiedy, docs tutaj

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

i jest Matrix rzeczy w przestrzeni nazw Microsoft.FSharp.Math w FSharp.Powerpack.dll, ale nie widzę 'invert' offhand, i nie wiem o materiałach "LinearAlgebra" (przestarzałe? web search sugeruje, że zniknęło kilka wydań z powrotem).

+0

Dobroć, jeśli nie wiesz, jaka jest dla nas nadzieja? :) Dll jest w 1.9.6.2 CTP i nic nie wskazuje na to, że jest przestarzałe (z wyjątkiem tego, że nie ma go w dokumentach, tak myślę ...) – Benjol

0

Czy wymeldowałeś się this. To może pomóc.

+0

Czy dnAnalytics nadal istnieje? Nie mogę już wejść na ich stronę. –

+0

To byłby wstyd. Nie próbowałem tego robić i przepraszam, jeśli to ślepy zaułek. :( – Craig

+0

Wygląda na to, że codeplex został wyłączony z powodu konserwacji dnAnalytics wydaje się być z powrotem dzisiaj –

1

FlyingFrog zrobić Numerics bibliotekę zawierającą Matrix inwersję wśród wielu innych funkcji.

Nie jestem pewien, który jest lepszy, ten lub (z pozoru przestarzały) kod "eksperymentalny" z PowerPack. Sądzę, że zawsze można zachować kod źródłowy dla zarządzanego bitu wersji PowerPack w bezpiecznym miejscu, nadal dostępnym tutaj:

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

Jeśli odwracasz ogromne matryce zmiennoprzecinkowe, to eksperymentalny kod ze starego F # Power Pack da lepszą wydajność (jeśli uda ci się go uruchomić!) Jeśli robisz małe macierze lub inne typy (np. Dokładna inwersja poprzez arytmetyczną racjonalną arytmetyczną dokładność) t hen F # dla Numerics jest drogą do zrobienia. –