数学D和Dt表现不正常?

时间:2011-09-01 17:29:05

标签: wolfram-mathematica

衍生函数D和Dt似乎没有像宣传的那样起作用。 在http://reference.wolfram.com/mathematica/ref/Constants.html的“属性和关系”部分中的第一个示例之后,我有:

In[1]:= {Dt[ax^2 + b, x, Constants -> {a, b}], D[ax^2 + b, x]}

Out[1]= {2 ax Dt[ax, x, Constants -> {a, b}], 0}

我复制了输入,但输出完全不同。如何获得预期的输出{ 2 a x, 2 a x}

我正在使用Rutgers大学安装的64位Mathematica 8.0.1.0。

2 个答案:

答案 0 :(得分:8)

您需要ax之间的空格,否则它会认为您在谈论名为ax的变量:

In[2]:= {Dt[a x^2 + b, x, Constants -> {a, b}], D[a x^2 + b, x]}

Out[2]= {2 a x, 2 a x}

答案 1 :(得分:3)

我意识到这并没有真正回答OP的问题。但考虑到问题的严重程度,以及OP希望使用Contants选项,以下信息可能对其他人有用。未来。

Dt上我的2美分。

IMO,使用Constants选项并不理想 - 主要是因为它会产生混乱的输出。例如:

In[1]:= Dt[x^a y^b, Constants -> {a, b}]

Out[1]= a x^(-1 + a) y^b Dt[x, Constants -> {a, b}] + 
 b x^a y^(-1 + b) Dt[y, Constants -> {a, b}]

我是唯一一个发现上述行为烦人/多余的人吗?这个设计是否有实际原因?如果有,请教育我...... :)

替代方法:

如果您不想使用Constants选项,可以选择以下方法。

使用UpValues强制常量。

In[2]:= Remove[a, b];
        a /: Dt[a] = 0;
        b /: Dt[b] = 0;
        Dt[x^a y^b]

Out[5]= a x^(-1 + a) y^b Dt[x] + b x^a y^(-1 + b) Dt[y]

使用属性。 (即,给某些符号Constant Attribute

In[6]:= Remove[a, b];
        SetAttributes[{a, b}, Constant];
        Dt[x^a y^b]

Out[8]= a x^(-1 + a) y^b Dt[x] + b x^a y^(-1 + b) Dt[y]

使用规则来改变主Dt []表达式的输出。

In[9]:= Remove[a, b];
        Dt[x^a y^b] /. Dt[a] -> 0 /. Dt[b] -> 0

Out[10]= a x^(-1 + a) y^b Dt[x] + b x^a y^(-1 + b) Dt[y]