我的問題是:爲什麼不做以下工作,以及如何解決?Mathematica中替換的奇怪行爲
Plot[f[t], {t, 0, 2*Pi}] /. {{f -> Sin}, {f -> Cos}}
結果是兩個空白圖。通過比較,如所期望
DummyFunction[f[t], {t, 0, 2*Pi}] /. {{f -> Sin}, {f -> Cos}}
給出
{DummyFunction[Sin[t], {t, 0, 2 *Pi}], DummyFunction[Cos[t], {t, 0, 2 * Pi}]}
。
這是什麼我實際上做一個簡化版本。我非常惱火,即使在弄清楚把花括號放在哪裏的煩人的「正確方法」都沒有用。
最後,我做了以下,其工作方式:
p[f_] := Plot[f[t], {t, 0, 2*Pi}]
p[Sin]
p[Cos]
謝謝您的回答。你的解決方案有一個錯字,你應該有/。而不是第一個 - >。有用。然而,對我而言,爲什麼替代不會處於優先順序的頂部...... – Ilya 2010-03-22 02:52:03
(這個錯字現在由Ramasalanka修復) – Ilya 2010-03-22 02:54:56
我無法解釋爲什麼操作的順序是它的方式是,但它不只是劇情。 Mathematica將嘗試評估/左側的任何函數。 (對於錯字較早),然後再執行替換。很多時間無關緊要:未定義的f [t]將通過函數定義進行,直到執行替換。例如,myFun [x_,l_]:= x/@ l; myFun [f,{1,2,3}] /。 {{f-> Sin},{f-> Cos}}會像你期望的那樣工作。但Plot []是未定義f [t]將導致立即錯誤的示例之一。 – 2010-03-22 02:59:04