Code von Python zu Matlab umschreiben?
Jens86
- sonstiges
1 woodfighter0 Jens86
Hallo Leute,
auch wenn es nicht direkt etwas mit HTML/CSS zu tun hat, erlaube ich mir dennoch eine Frage zur allgemeinen Programmierung hier zu stellen. Dabei geht es um ein Portieren eines Python-Codes nach Matlab.
Blöderweise kenne ich mich in Python so gut wie nicht aus und habe nach einigem Suchen auch nicht wirklich einen "Crash-Kurs" gefunden, der mir weiterhelfen könnte.
Die folgende Funktion stellt die Rosenbrock-Wanner Methode der Ordnung 2 dar:
def row_2_step(f, Jf, yi, h):
yi = atleast_2d(yi)
n = yi.shape[0]
a = 1.0/(2.0 + sqrt(2.0))
I = identity(n)
J = Jf(yi)
A = I - a*h*J
b1 = f(yi)
k1 = solve(A, b1)
b2 = f(yi+0.5*h*k1) - a*h*dot(J,k1)
k2 = solve(A, b2)
yip1 = yi + h*k2
return yip1
Darin ist f: Die rhs Funktion f(x) Jf: Jacobi-Matrix J(x) der Funktion: R^(nx1) -> R^(nxn) yi: aktueller Wert y_i zur Zeit ti h: Schrittweite
Wobei im weiteren Algorithmus dann
l = 25
f = lambda y: l*y*(1-y)
Jf = lambda y: l-2*l*y
gesetzt wird.
... leider verstehe ich ein paar Python-Funktionen nicht bzw. wüsste keine 'Entsprechung' in Matlab. Vielleicht kann mir jemand weiterhelfen, das wäre super!
Danke im Voraus, Jens86
Tach,
Die folgende Funktion stellt die Rosenbrock-Wanner Methode der Ordnung 2 dar:
def row_2_step(f, Jf, yi, h): yi = atleast_2d(yi) n = yi.shape[0] a = 1.0/(2.0 + sqrt(2.0)) I = identity(n) J = Jf(yi) A = I - a*h*J b1 = f(yi) k1 = solve(A, b1) b2 = f(yi+0.5*h*k1) - a*h*dot(J,k1) k2 = solve(A, b2) yip1 = yi + h*k2 return yip1
das ist nicht vollständig; welche Imports gehören noch zu der Methode, numpy?
... leider verstehe ich ein paar Python-Funktionen nicht bzw. wüsste keine 'Entsprechung' in Matlab.
Welche?
mfg
Woodfighter
P.S. Bitte weise auf Crosspostings (https://stackoverflow.com/questions/31170329/implementation-of-rosenbrock-wanner-method-python-vs-matlab, https://math.stackexchange.com/questions/1346162/python-vs-matlab) hin, damit Leute sich nicht, für bereits beantwortete Dinge, Arbeit machen.
Hallo,
das ist nicht vollständig; welche Imports gehören noch zu der Methode, numpy?
numpy import *
numpy.linalg import solve, norm
Welche?
nun ja, atleast_2d() bzw. .shape[], aber hier habe ich (siehe Crossposting) schon eine Antwort dazu; allerdings weiß ich nicht ob es für atleast_2d() ein äquivalent in MATLAB gibt, oder ob ich hierzu eine Abfrage bauen müsste, die mir entsprechende Arrays dann zurückwirft ...
P.S. Bitte weise auf Crosspostings (https://stackoverflow.com/questions/31170329/implementation-of-rosenbrock-wanner-method-python-vs-matlab, https://math.stackexchange.com/questions/1346162/python-vs-matlab) hin, damit Leute sich nicht, für bereits beantwortete Dinge, Arbeit machen.
Sorry; darauf hatte ich gestern leider vergessen.
LG jens86
Tach,
allerdings weiß ich nicht ob es für atleast_2d() ein äquivalent in MATLAB gibt, oder ob ich hierzu eine Abfrage bauen müsste, die mir entsprechende Arrays dann zurückwirft ...
nicht dass ich wüsste, aber meine Matlab-Erfahrungen sind schon relativ lange her. Aus meiner Erfahrung von damals würde ich auch behaupten, dass zu versuchen, einen in einer andern Sprache programmierten Algorithmus, in Matlab zu übersetzen nicht übermäßig hilfreich ist, da Matlab einfach vielfach anders funktioniert als traditionelle Sprachen.
mfg
Woodfighter