(%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)
。
但是,我找不到有用的命令。
有人可以帮我解决这个问题吗?
答案 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)
)的值。