请原谅这个初学者的问题。我在任何Mathematica教程中都找不到合适的答案。
我搞不懂为什么一个函数的定义或一个简单替换的定义会产生不同的结果。考虑这个例子(Mathematica 9代码):
In[397]:= ClearAll["Global`*"]
In[398]:= Test := 3 c^2 + d^4
In[399]:= v[f_] := D[f, c]
In[400]:= v[Test]
Out[400]= 6 c这个作用于变量的简单导数函数"v“的第一个定义很好。定义替换测试= ...替换该变量会产生预期的结果(它得到关于c的3c^2+d^4并回答6c)。
但是,如果我定义一个函数,而不是简单的替换,这将不起作用:
In[401]:= TestFunction[a_, b_] := 3 a^2 + b^4
In[403]:= vFunction[f_[a_, b_]] := D[f[a, b], a]
In[405]:= vFunction[TestFunction[a, b]]
Out[405]= \!\(
\*SubscriptBox[\(\[PartialD]\), \(3\
\*SuperscriptBox[\(a\), \(2\)]\)]\((3\
\*SuperscriptBox[\(a\), \(2\)] +
\*SuperscriptBox[\(b\), \(4\)])\)\)为什么会这样呢?我在这里冒着看起来像个笨蛋的风险,但请开导我!
为了您的方便,我上载了我的工作簿here的副本
非常感谢,
迈克尔
发布于 2014-02-14 00:50:04
改为这样做
vFunction[f_,a_,b_]:=D[f[a,b],a];当您需要派生工具时,只需使用vFunction[TestFunction,a,b]即可获得。
当您写下f[x]时,它指的是f的估计值和参数值x。因此,从技术上讲,f[x]不再是一个函数。您想要作为vFunction[]的参数的是函数TestFunction,而不是计算值。
https://stackoverflow.com/questions/21752710
复制相似问题