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

Maxima: How to replace the variables to simplify the equation?

(%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)

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

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

在这种特定情况下,您可以使用 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))。