首页 > 解决方案 > 具有多个变量的因子方程

问题描述

我有这个代码:

在此处输入图像描述

factor(sqrt((diff(theta, x1))^2+(diff(theta, y1))^2+(diff(theta, z1))^2));

在此处输入图像描述

在此处输入图像描述 在此处输入图像描述

这两个方程是相同的,但枫没有看到它(差异给了我一个可怕的方程......)。有没有办法让枫树能够分解第一个方程?

标签: maple

解决方案


当你写“这两个方程是相同的......”时,你似乎是在表明你认为它们在数学上是等价的。

那是错误的。

在所有未知数都是真实的假设下,Maple 可以将差异简化为零。

下面,我给出一个两个表达式不相等的反例。

在这里提供代码图像而不是纯文本代码是不好的礼仪。

restart;
with(VectorCalculus):
r1:=<x1,y1,z1>:
r2:=<x2,y2,z2>:
r3:=<x3,y3,z3>:
A:=r1 &x r2:
B:=r3 &x r2:

theta:=arccos(DotProduct(A,B)/(Norm(A)*Norm(B))):

sintheta1:=Norm(r1 &x r2)/(Norm(r1)*Norm(r2)):

expr1:=factor(sqrt((diff(theta, x1))^2+(diff(theta, y1))^2
              +(diff(theta, z1))^2)):

lprint(expr1);
    ((x2^2+y2^2+z2^2)/(x1^2*y2^2+x1^2*z2^2-2*x1*x2*y1*y2-
    2*x1*x2*z1*z2+x2^2*y1^2+x2^2*z1^2+y1^2*z2^2-
    2*y1*y2*z1*z2+y2^2*z1^2))^(1/2)

expr2:=1/(Norm(r1)*sintheta1):

lprint(expr2);
    (x2^2+y2^2+z2^2)^(1/2)/((y1*z2-y2*z1)^2
    +(-x1*z2+x2*z1)^2+(x1*y2-x2*y1)^2)^(1/2)

现在,在所有未知数都是真实的假设下,

combine(expr2-expr1) assuming real;

                           0

现在,一个具有(某些特定)复数值的反例,

simplify(eval(expr2-expr1, [x1=I, x2=1, y1=0, y2=1, z1=0, z2=1]));

                        (1/2)  (1/2)
                    -I 2      3  

推荐阅读