在这种情况下,是否有必要手动帮助Maxima解决此方程组?

时间:2019-02-14 01:28:00

标签: symbolic-math maxima wxmaxima

我有这4个方程的列表,其中有4个未知数。我想用最大值解决它们。但是,以下代码不会返回结果。

eq1:I1^2+R1^2=Len1^2;
eq2:I2^2+R2^2=Len2^2;
eq3:R1+R2=U;
eq4:I1+I2=F;

solve([eq1,eq4,eq2,eq3],[R1,I1,R2,I2]);

我有一个非常耗时的半手动解决方案。我尝试用不同顺序将方程式相互替换,然后将前一个输出粘贴到下一行,如下所示。

substitute(solve(eq4,I1), I1 , eq1);
substitute(solve(eq2,I2), I2 , R1^2+(F-I2)^2=Len1^2);
substitute(solve(eq3,R2), R2 , (F-sqrt(Len2^2-R2^2))^2+R1^2=Len1^2);
solve((F-sqrt(Len2^2-(U-R1)^2))^2+R1^2=Len1^2,R1);
    [R1=(Len1^2-Len2^2-F^2+U^2+2*F*sqrt(-U^2+2*R1*U-R1^2+Len2^2))/(2*U)]

我已经尝试过Solver和to_poly_solve,但都没有给出合理的结果。 (注意:求解器解决方案的“解决方案”中仍然有未知数)

load(to_poly_solve);
to_poly_solve([eq1,eq4,eq2,eq3],[R1,I1,R2,I2]);
    (%o40) %union()

load(solver);
Solver([eq1,eq4,eq2,eq3],[R1,I1,R2,I2]);
    (%o42) [[R1=U-R2,I1=-sqrt(-U^2+2*R2*U-R2^2+Len1^2),
    I2=-sqrt(Len2^2-R2^2)],[R1=U-R2,I1=sqrt(-U^2+2*R2*U-R2^2+Len1^2),
    I2=-sqrt(Len2^2-R2^2)],
    [R1=U-R2,I1=-sqrt(-U^2+2*R2*U-R2^2+Len1^2),I2=sqrt(Len2^2-R2^2)],
    [R1=U-R2,I1=sqrt(-U^2+2*R2*U-R2^2+Len1^2),
    I2=sqrt(Len2^2-R2^2)]]

理想情况下,我想为每个变量获取这种类型的结果,但是我的一半方法-手动执行非常慢,对于较大的系统可能会更糟。即使找到一个变量也将有所帮助,因为这样可以使用更简单的系统。有没有比我做的更快的方法?

R1=(Len1^2-Len2^2-F^2+U^2+2*F*sqrt(-U^2+2*R1*U-R1^2+Len2^2))/(2*U)
R2=-(Len1^2-Len2^2-F^2+2*F*sqrt(Len2^2-R2^2)-U^2)/(2*U)
I1=(Len1^2-Len2^2+F^2+2*sqrt(-I1^2+2*F*I1-F^2+Len2^2)*U-U^2)/(2*F)
I2=-(Len1^2-Len2^2-F^2+2*sqrt(Len2^2-I2^2)*U-U^2)/(2*F)

0 个答案:

没有答案