2010-07-18 6 views
5

Ich versuche, ein ziemlich einfaches MATLAB-Skript in Haskell umzuschreiben. Ich suche ein Äquivalent zu MATLABs fsolve (numerischer Wurzelfinder) und ode15s (einer der ODE-Löser). Auf Hackage scheint es ein MATLAB-Interface-Paket zu geben. Ist dies der Weg zu gehen (in Bezug auf Geschwindigkeit, Einfachheit usw.) oder gibt es andere Pakete, die besser geeignet wären?Welches Haskell-Paket enthält eine Funktion, die MATLABs "fsolve" am ähnlichsten ist?

Danke, Ben

Antwort

7

Ich habe nicht die MATLAB-Schnittstelle verwendet, aber ich habe mit hmatrix gute Ergebnisse hatte. Es exportiert GSL-Funktionen, einschließlich ODE-Solver und nichtlinearer multidimensionaler Root-Suche, die meiner Meinung nach tun, was Sie benötigen. Es sieht aus wie Ode15s ist vergleichbar mit Numeric.GSL.ODE.odeSolveV mit entweder Gear1 oder Gear2 als die Methode, obwohl eine der anderen Methoden möglicherweise besser für Ihr Problem geeignet sind. Es exportiert auch die LAPACK-Schnittstelle, was sehr nützlich ist.

Welche ist einfacher zu erstellen/zu installieren, hängt von Ihrem Betriebssystem und verfügbaren Bibliotheken. Unter Linux oder Unix sollten sie genauso einfach sein, aber wenn Sie unter Windows sind, könnte die Installation von beiden schmerzhaft sein. Wenn Sie hmatrix verwenden, können Sie die Software auf Systemen ohne Matlab ausführen, was ein Vorteil sein könnte.

Ich fand Hmatrix einfach zu verwenden, auch ohne vorherige GSL oder LAPACK Erfahrung; es ist gut dokumentiert und hat eine sehr gute Leistung. Nach einer oberflächlichen Betrachtung scheint es, dass Sie mit Matlabs C-API vertraut sein müssen, um die Bindungen gut zu nutzen.

+1

Danke! Ich habe das sehr nützliche Tutorial gelesen: http://code.haskell.org/hmatrix/ Es scheint genau das zu sein, was ich brauche. :) – Ben

Verwandte Themen