如果输入哈密顿量包含的函数,我正在尝试创建一个小函数来定义哈密顿流。例如。我想定义
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
给出一个我可以在 ODE 求解器中使用的函数 dH。 (忘记该系统是否定义明确或其他任何东西)。
似乎无法找到任何输出这样的其他函数的函数的文档。感谢您的任何帮助~
编辑:它确实返回了一个 dH,但我似乎不能像普通函数一样使用它,例如dH(1,[1,2,3,4]) 只返回对象(我认为?) dH 但不评估任何内容。
编辑:感谢您帮助我意识到我应该输入输入类型,我希望 f,g 成为函数句柄。
最佳答案
你想要的似乎是一个闭包。
在你的情况下,一般的想法应该是:
function makeThedH(f,g)
# optional initial stuff (initializations if needed)
function dH(s,u)
# stuff (body of your dH function)
end
end
关于function - Julia - 定义一个输出函数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40435831/