Maxima:如何将变量作为方程组中其他变量函数的总和?

问题描述 投票:1回答:1

问题是这样的;我有一个方程组,它描述了系统的工作原理。 (在这种情况下,电子系统。)系统具有内部变量,以及输入和输出变量。我想要的是根据输入变量获得输出变量,以便将输出变量描述为输入变量函数+常量的总和。 (当然,只有在数学上可行,在特定情况下。)

我最好使用Maxima计算机代数系统,但我也对在Matlab中实现它的方法感兴趣。

让我举两个例子;我希望你明白这个主意。 O表示输出变量,I表示输入变量,x表示内部变量,p表示参数。

1:

e1:O = x_1 * p_1 + x2 * p_2;

e2:x_1 = x_2 + I_1 * p_3;

e3:x_2 = I_2 * p_4 + p_5;

解决方案#1:O = p_1 * p_3 * I_1 + p_4 * (p_1 + p_2) * I_2 + p_5 * (p_1 + p_4)

2:

e1:O = x_1 * p_1 + x2 * p_2;

e2:x_1 = sqrt(I_1)* p_3;

e3:x_2 = tan(I_2 * p_4);

解决方案#2:O = p_1 * p_3 * sqrt(I_1) + p_2 * tan(p_4 * I_2)

matlab equation maxima equation-solving parametric-equations
1个回答
1
投票

Maxima有一些能够象征性地解决方程组的能力,尽管在这方面它不是太强大。尽管如此,我看到Maxima至少可以解决给出的例子。

(%i2) e1:O = x_1*p_1+x_2*p_2
(%o2)                        O = p_2 x_2 + p_1 x_1
(%i3) e2:x_1 = x_2+I_1*p_3
(%o3)                         x_1 = x_2 + I_1 p_3
(%i4) e3:x_2 = I_2*p_4+p_5
(%o4)                         x_2 = p_5 + I_2 p_4
(%i5) eliminate([e1,e2,e3],[x_1,x_2])
(%o5)      [(p_2 + p_1) p_5 + I_2 (p_2 + p_1) p_4 + I_1 p_1 p_3 - O]
(%i6) solve(%,O)
(%o6)    [O = (p_2 + p_1) p_5 + (I_2 p_2 + I_2 p_1) p_4 + I_1 p_1 p_3]
(%i7) e1:O = x_1*p_1+x_2*p_2
(%o7)                        O = p_2 x_2 + p_1 x_1
(%i8) e2:x_1 = sqrt(I_1)*p_3
(%o8)                         x_1 = sqrt(I_1) p_3
(%i9) e3:x_2 = tan(I_2*p_4)
(%o9)                         x_2 = tan(I_2 p_4)
(%i10) eliminate([e1,e2,e3],[x_1,x_2])
(%o10)            [p_2 tan(I_2 p_4) + sqrt(I_1) p_1 p_3 - O]
(%i11) solve(%,O)
(%o11)            [O = p_2 tan(I_2 p_4) + sqrt(I_1) p_1 p_3]

请注意,在解决eliminate之前,我已经调用了x_1来消除方程中的偶然变量x_2O;消除偶然变量后,O仅以输入和参数表示。

如果您尝试使用更复杂的方程式,则可能会遇到Maxima的限制。通过使用to_poly_solve等可以解决一些涉及自由基的方程式的其他函数,可能会取得更多进展。如果遇到麻烦,您可以考虑将邮件发送到Maxima邮件列表。见:https://sourceforge.net/projects/maxima/lists/maxima-discuss

© www.soinside.com 2019 - 2024. All rights reserved.