2009-03-20 13 views
6

Necesito realizar una regresión MCO básica usando F #. Para hacer esto necesito algunas funciones de Algebra Lineal, pero estoy confundido en cuanto a lo que hay por ahí. No puedo encontrar ninguna forma de invertir una matriz. Existe documentación para una biblioteca llamada Microsoft.FSharp.Math.LinearAlgebra, pero no sé si ya existe.¿Cómo invierto una matriz en F #?

+0

Depende de qué tipo de elemento es. 'Microsoft.FSharp.Math.Experimental.LinearAlgebra.Inverse' solo es compatible con' float', IIRC. –

Respuesta

6

Si se agrega el FSharp Powerpack a su proyecto (en las referencias .NET), se pueden utilizar diversas funciones de la biblioteca de la matriz

edit: también hay que añadir los Fsharp.Powerpack.MathProviders biblioteca experimentales, a continuación, puede llamar de la siguiente manera

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

Puedo crear una matriz muy bien, puedo agregarlos, multiplicarlos e incluso transponerlos, pero no puedo invertirlos. –

+0

La actualización debería hacer el trabajo – Codingday

+0

El código que tuve que usar fue Microsoft.FSharp.Math.Experimental.LinearAlgebra .Inverso (m) Pero eso funciona, muchas gracias –

0

No lo sé; en la versión 1.9.6 de F # No veo nada improvisada, los documentos están aquí

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

y hay cosas de Matrix en el espacio de nombres en el Microsoft.FSharp.Math FSharp.Powerpack.dll, pero no veo 'invertir' de forma directa, y no sé sobre el material 'LinearAlgebra' (la búsqueda web obsoleta sugiere que desaparecieron algunas versiones).

+0

Bien, si no lo sabes, ¿qué esperanza hay para el resto de nosotros? :) El dll está en 1.9.6.2 CTP y nada indica que esté en desuso (excepto su ausencia de los documentos, supongo ...) – Benjol

0

¿Has comprobado this. Podría ayudar.

+0

¿Todavía existen dnAnalytics? No puedo acceder a su página web nunca más. –

+0

Eso sería una pena. No intenté buscarlo y me disculpo si esto es un callejón sin salida. :( – Craig

+0

Parece que codeplex no funcionó para el mantenimiento. DnAnalytics parece estar de vuelta hoy. –

1

FlyingFrog hacer una biblioteca que contiene Numerics inversión de matrices entre muchas otras funciones.

No estoy seguro de cuál es preferible, eso o el código 'experimental' (aparentemente obsoleto) del PowerPack. Supongo que siempre puede mantener el código fuente del bit administrado de la versión del PowerPack en un lugar seguro, todavía disponible aquí:

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

Si está invirtiendo matrices de coma flotante grandes, entonces el código experimental del antiguo F # Power Pack dará un mejor rendimiento (¡si puede hacer que funcione!) . Si está haciendo matrices pequeñas u otros tipos (por ejemplo, inversión exacta mediante aritmética racional de precisión arbitraria) t La gallina F # para Numerics es el camino a seguir. –

Cuestiones relacionadas