[英]Julia - Defining a function that outputs a function
我正在嘗試創建一個小函數來定義哈密頓量流,如果輸入哈密頓量包含的函數。 我想定義一下
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.