千里马:如何替换变量以简化方程式?

时间:2018-07-09 08:53:53

标签: maxima

(%i1)   r: sqrt(x^2+y^2+z^2);
(r) sqrt(z^2+y^2+x^2)
(%i2)   dx: diff(r,x);
(dx)    x/sqrt(z^2+y^2+x^2)

我只显示一个简单的代码,因为我的代码又长又复杂。

我想简化dx并得到结果是x/r而不是x/sqrt(z^2+y^2+x^2)

但是,我找不到有用的命令。

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

在这种特定情况下,您可以使用subst,尽管在许多情况下ratsubst可能很有用。

(%i1) linel:65;
(%o1)                          65
(%i2) r: sqrt(x^2+y^2+z^2);
                             2    2    2
(%o2)                  sqrt(z  + y  + x )
(%i3) diff (r, x);
                               x
(%o3)                  ------------------
                             2    2    2
                       sqrt(z  + y  + x )

(%i5) subst (r = 'r, %o3);
                                x
(%o5)                           -
                                r
(%i6) ratsubst ('r, r, %o3);
                                x
(%o6)                           -
                                r

请注意,单引号会阻止评估,因此'r是符号r,而不是r(即sqrt(x^2 + y^2 + z^2))的值。