繁体   English   中英

替换时如何告诉Maple零的导数为零?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM