簡體   English   中英

Julia - 定義一個輸出函數的函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM