Ich versuche, eine kleine Funktion zu erstellen, um den Hamilton-Fluss zu definieren, wenn die Funktionen eingegeben werden, aus denen der Hamilton-Operator besteht. Z.B. Ich würde gerneJulia - Definieren einer Funktion, die eine Funktion ausgibt
function makeThedH(f::Function,g::Function)
dH1(s,u) = cos(u[3]).*f(u[1],u[2]);
dH2(s,u) = sin(u[3]).*f(u[1],u[2]);
dH3(s,u) = dot([1,2] , g(u[1],u[2])).*f(u[1],u[2]).^0.5 ;
dH4(s,u) = dot([1,2] , g(u[1],u[2]));
dH(s,u) = [dH1(s,u), dH2(s,u), dH3(s,u),dH4(s,u)];
return dH;
end
definieren, um eine Funktion dH zu geben, die ich in einem ODE-Löser verwenden könnte. (Vergessen Sie, ob dieses System gut definiert ist oder nicht).
Ich kann anscheinend keine Dokumentation für Funktionen finden, die andere Funktionen wie diese ausgeben. Danke für irgendeine Hilfe ~
Edit: Es gibt ein dH zurück, aber ich kann nicht scheinen, es wie eine normale Funktion zu verwenden, z. dH (1, [1,2,3,4]) gibt nur das Objekt zurück (denke ich?) dH, bewertet aber nichts.
Edit: Danke, dass Sie mir helfen, zu erkennen, dass ich die Eingabe-Typen einfügen sollte, die ich möchte, dass f, g Funktionshilfen sind.
Ihr Code logische Fehler enthält, und scheint nicht zu den 's' Parameter überhaupt in seiner Definition zu verwenden, ist aber ansonsten gültige Code was eine "Funktion" ausgibt (ein Verschluss, um genau zu sein, der ein Lambda ist und normal aufgerufen werden kann). Z.B. Sie würden es als 'dh = makeThedH (1,2)' und dann 'dh (1, [1,2,3,4])' nennen, und wenn es keine Fehler in Ihrer Definition für "dh" gäbe, dann dies würde wie erwartet funktionieren. Warum denkst du, dass das nicht die richtige Syntax ist? –
Danke für die Eingabe Tasos. Es benötigt den $ s $ -Parameter, da der Ode-Solver diese Eingabe benötigt (auch wenn er nicht davon abhängig ist). Wie für den Aufruf der Funktion, vergib mir, wie ich denke, ich hätte Eingabe-Typen geben sollen. f und g sollten stattdessen als f :: Function, g :: Function gelesen werden. Wenn ich dH (1, [1,2,3,4]) anrufe, gibt es keine Zahl aus, sondern nur, dass ein DH erstellt wurde und das ist es ... –