请原谅初学者的问题。我在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”的第一个定义很好。定义替换Test = ...替换变量会产生预期的结果(它相对于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
的副本非常感谢,
迈克尔
答案 0 :(得分:0)
改为
vFunction[f_,a_,b_]:=D[f[a,b],a];
当你需要衍生品时,只需使用vFunction[TestFunction,a,b]
即可获得它。
当您记下f[x]
时,它表示f
的评估值,其参数值为x
。所以,f[x]
在技术上不再是一个功能。您想要的vFunction[]
参数是函数TestFunction
,而不是评估值。