[英]How to tell maple that derivative of zero is zero when substituting?
我正在尝试使用maple中的subs
将较长公式中的导数替换为0:
subs(diff(u(r),r) = 0, formula);
看来,如果formula
仅涉及u(r)
一阶导数,那么它将按我期望的那样工作。 例如,
formula := diff(u(r),r);
subs(diff(u(r),r) = 0, formula);
0
但是如果formula
涉及二阶导数,即使使用simplify
diff(0,r)
我得到的结果也不会消失diff(0,r)
:
formula := diff(u(r),r,r);
subs(diff(u(r),r) = 0, formula);
d
-- 0
dr
(我的实际formula
很长,涉及两个变量的一阶和二阶导数。我知道相对于某个变量的所有导数均为0,我想删除它们)。
一种方法是将simplify
命令与所谓的“侧面关系”一起使用。
formula := diff(u(r),r,r) + 3*cos(diff(u(r),r,r))
+ diff(u(r),r) + x*(4 - diff(u(r),r,r,r)):
simplify( formula, { diff(u(r),r) = 0 } );
3 + 4 x
formula2 := diff(u(r,s),s,s) + 3*cos(diff(u(r,s),r,r))
+ diff(u(r,s),r) + x*(4 - diff(u(r,s),r,s,r,r)):
simplify( formula2, { diff(u(r,s),r) = 0 } );
/ 2 \
| d |
3 + |---- u(r, s)| + 4 x
| 2 |
\ ds /
[edit]我忘记回答您有关为什么以前获得d/dr 0
查询。 答案是因为您使用了subs
而不是2参数eval
。 前者仅执行语法替换,不评估结果。 后者是人们经常不知道而需要的,并且“在(特定)点进行评估”。
formulaA := diff(u(r),r,r):
subs(diff(u(r),r) = 0, formulaA);
d
--- 0
dr
%; # does an evaluation
0
eval(formulaA, diff(u(r),r) = 0);
0
formulaB := diff(u(r,s),s,r,r,s):
eval(formulaB, diff(u(r,s),r) = 0);
0
您可以看到,对那些d/dr 0
对象的任何求d/dr 0
都会产生0。但是,使用2-参数eval通常比使用eval(subs(...))
更好。 人们使用subs
,因为它听起来像“替代”,我想,还是他们看到其他人使用它。 有时候, subs
是工作的正确工具,因此了解两者之间的差异非常重要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.