2012-12-05 115 views
2

我正試圖在Mathematica中繪製一個液壓函數的導數。它區分功能OK,並且可以使用%繪製功能,但是我希望能夠通過將衍生物分配爲功能f[t_],然後Plot[ f[t] , {t,-1,1} ]進行繪圖。Mathematica:繪製分段函數的導數

我不確定如何解決出現的錯誤。

Mathematica的代碼是:

Clear[moll, f] 

moll[x_] := 
Piecewise[ { {E^(-1/(1 - x^2)), -1 < x < 1} , {0,x <= -1 || x >= 1} } ]; (* Standard  mollifier *) 

f[t_] := D[ moll[t] , t] 

f[t] 

Plot[%, {t, -1, 1}] (* this line works *) 

Plot[f[t], {t, -1, 1}] (* this line comes up with an error *) 
+2

如果您評估'f [2]',你會明白爲什麼情節不起作用。你可以定義這個函數爲'f [t_] = D [moll [t],t]'('Set',而不是'SetDelayed') – Niki

回答

5

嘗試使用Plot[Evaluate[f[t]], {t, -1, 1}]

劇情是有點挑剔,當涉及到用戶定義的函數。

1

劇情的「挑剔」來自其Atttributes[Plot],其中包括HoldAll,所以未經評論的f永不被評估。按照ratatosk的建議進行力量評估。

2

在給定的功能,你可以使用:

Plot[f[t], {t, -1, 1}, Evaluated -> True] 

Evaluated -> True是要preferred超過Evaluate[f[t]]

更好的是跟隨nikie的意見,並確定f不同:

Block[{t}, 
    f[t_] = D[moll[t], t] 
] 

一個解釋見Scoping in assigning a derivative