Mathematica 9 - 函数定义问题

时间:2014-02-13 11:19:59

标签: function wolfram-mathematica definition

请原谅初学者的问题。我在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

的副本

非常感谢,

迈克尔

1 个答案:

答案 0 :(得分:0)

改为

vFunction[f_,a_,b_]:=D[f[a,b],a];

当你需要衍生品时,只需使用vFunction[TestFunction,a,b]即可获得它。

当您记下f[x]时,它表示f的评估值,其参数值为x。所以,f[x]在技术上不再是一个功能。您想要的vFunction[]参数是函数TestFunction,而不是评估值。