我试图在Mathematica中绘制一个mollifier函数的导数。它区分函数OK,并且可以使用%
绘制函数,但我希望能够通过将导数分配为函数f[t_]
,然后Plot[ f[t] , {t,-1,1} ]
来绘制。
我不确定如何解决出现的错误。
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 *)
答案 0 :(得分:5)
尝试使用Plot[Evaluate[f[t]], {t, -1, 1}]
当谈到用户定义的函数时,Plot有点挑剔。
答案 1 :(得分:2)
使用给定的功能,您可以使用:
Plot[f[t], {t, -1, 1}, Evaluated -> True]
Evaluated -> True
与Evaluate[f[t]]
相比preferred。
更好的方法是遵循nikie的建议并以不同的方式定义f
:
Block[{t},
f[t_] = D[moll[t], t]
]
请参阅Scoping in assigning a derivative以获取解释。
答案 2 :(得分:1)
Plot的“挑剔”来自其Atttributes[Plot]
,其中包含HoldAll
,因此未经展开的f
永远不会被评估。按照ratatosk的建议进行力评估。