Julia - 定义一个输出函数的函数

时间:2016-11-05 07:27:30

标签: function closures output julia

如果输入汉密尔顿主义包含的函数,我正在尝试创建一个小函数来定义哈密顿流。例如。我想定义

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但不评估任何内容。

编辑:感谢您帮助我意识到我应该输入输入类型,我希望将其作为函数句柄。

1 个答案:

答案 0 :(得分:4)

你想要什么似乎是一个封闭。

在你的情况下,一般的想法应该是:

function makeThedH(f,g)
    # optional initial stuff (initializations if needed)
    function dH(s,u)
        # stuff (body of your dH function)
    end
end