怎麼可能用一個數學函數作爲模塊 - 參數功能參數模塊
如:
PersonalPlot[fun0_, var0_, min0_, max0_] :=
Module[{fun = fun0, var = var0 , min = min0, max = max0},
(*this is incorrect*)
fun = fun[var_];
Plot[fun, {var, min, max}]
]
PersonalPlot[x^2,x,0,3];
怎麼可能用一個數學函數作爲模塊 - 參數功能參數模塊
如:
PersonalPlot[fun0_, var0_, min0_, max0_] :=
Module[{fun = fun0, var = var0 , min = min0, max = max0},
(*this is incorrect*)
fun = fun[var_];
Plot[fun, {var, min, max}]
]
PersonalPlot[x^2,x,0,3];
你說得對,這種說法是不正確。數學計算結果爲類似
x^2[x]
當你打電話
PersonalPlot
和計算結果爲,那麼,用文字x to the power of 2 of x
不使有很大的意義。解決問題的方法有很多。最簡單的將是完全與模塊分配和定義:
PersonalPlot1[fun0_, var0_, min0_, max0_] := Plot[fun0, {var0, min0, max0}]
,你會叫這樣的:
PersonalPlot1[x^2, x, 0, 3]
注意,這類PersonalPlot1[x^2, y, 0, 3]
呼叫產生一個空的情節,因爲在變量傳入的函數與第二個參數不是同一個變量。請繼續閱讀。
如果要定義一個模塊,它需要一個函數作爲參數,那麼這就是做這件事的一種方法:
PersonalPlot2[fun0_, var0_, min0_, max0_] :=
Module[{fun = fun0, var = var0, min = min0, max = max0},
Plot[fun[var], {var, min, max}]]
,你會調用此類
PersonalPlot2[#^2 &, x, 0, 3]
注意:
Plot
命令在您指定的範圍內評估fun[var]
。您的局部變量不是嚴格必要的,因爲您的函數通過副作用工作,產生一個繪圖而不是操縱(副本)傳遞給它的參數。你可以改寫這個簡稱爲:
另一種可能性是下降表示輸入傳遞給PersonalPlot
函數變量參數,如下所示:
PersonalPlot3[fun0_, min0_, max0_] := Module[{x},
Plot[fun0[x], {x, min0, max0}]]
,你會這樣調用
PersonalPlot3[#^2 &, 0, 3]
在這個版本我做x
本地到Module
以避免與任何工作區變量(也稱爲x
)發生衝突。這樣可以避免使用函數參數的不同名稱(純函數沒有參數名稱)和第二個參數PersonalPlot
;現在已經下降了。
無論這些函數是否使用模塊,可能還有其他幾種有用的方法將參數傳遞給函數。
編輯
我們大多數人誰用過數學一會兒不這樣做,我認爲,對於#^2&
的東西,以避免。如果你不喜歡它,你可以使用更明確的語法,就像這樣:
fun1 = Function[x,x^2]
然後你就可以繞過這樣
PersonalPlot[fun1,0.0,4.0]
通過使用這種方法可以讓你的功能通過要求正確的類型被傳入,這樣的錯誤少一些,像這樣
PersonalPlot[fun_Function, min_Real, max_Real] := ...
但是它真的取決於你。
關閉我的頭頂我不知道如何Plot
做到這一點,我不得不看看文檔。
首先,非常感謝這個宏偉的 - 我會稱它爲一篇文章。但問題是,我並不是真的想做一個簡單的劇情,而是做更多的操作......此外,模塊的使用應該儘可能簡單......所以沒有辦法繞過這個' #^ 2&'? thx –
這是怎麼做的繪圖本身? –
HPM,我希望你會在Mathematica.SE更頻繁地發佈。 –