使用Maxima重新排列等式

时间:2017-09-30 10:17:34

标签: maxima

我尝试使用最大值重新排列方程,但coefmatrix函数不适用于具有某些除法的方程,例如RL_parallel

我得到系数

的所有零
RL_series: Rs + %i*w*Ls;
RL_parallel: ratsimp( 1 / [1/Rp + 1/(%i*w*Lp)] );

display2d : false $
eq : RL_series  = RL_parallel $
vars : [Rs, Rp, Ls, Lp] $
coeffs : coefmatrix ([eq], vars);

coeffs . vars;

Rearranging Equation with division

1 个答案:

答案 0 :(得分:0)

这里的主要问题是方程在指定的变量中不是线性的,所以不幸的是,提取系数矩阵并没有任何意义。

我猜你要解决vars的等式。在我看来,你需要额外的数据,但很可能是我错过了一些东西。

这是我得到的。请注意[ ... ]是一个列表;使用( ... )分组表达式。

(%i1) RL_series: Rs + %i*w*Ls;
(%o1)                            %i Ls w + Rs
(%i2) RL_parallel: ratsimp( 1 / (1/Rp + 1/(%i*w*Lp)) );
                                   Lp Rp w
(%o2)                            ------------
                                 Lp w - %i Rp
(%i3) eq : RL_series  = RL_parallel;
                                           Lp Rp w
(%o3)                     %i Ls w + Rs = ------------
                                         Lp w - %i Rp
(%i4) vars : [Rs, Rp, Ls, Lp];
(%o4)                          [Rs, Rp, Ls, Lp]
(%i5) denom(rhs(eq)) * eq;
(%o5)               (Lp w - %i Rp) (%i Ls w + Rs) = Lp Rp w
(%i6) expand (%);
                       2
(%o6)        %i Lp Ls w  + Lp Rs w + Ls Rp w - %i Rp Rs = Lp Rp w

假设vars是真实的,我们可以将等式的实部和虚部分开。

(%i7) [realpart(%), imagpart(%)];
                                                   2
(%o7)         [Lp Rs w + Ls Rp w = Lp Rp w, Lp Ls w  - Rp Rs = 0]
(%i8) first(%) / (Lp*Rp*w);
                             Lp Rs w + Ls Rp w
(%o8)                        ----------------- = 1
                                  Lp Rp w
(%i9) expand (%);
                                  Rs   Ls
(%o9)                             -- + -- = 1
                                  Rp   Lp

因此,其中一个方程式的产品为Xs*Xp,另一个方程式的比率为Xs/Xp。也许这有助于指导搜索其他数据。

此时我不知道还能说些什么。如果有人可以评论这一点,我会有兴趣听到它。

编辑:OP说目标是用Rs和Ls来求解Rp和Lp。鉴于此,我们可以解决在%o7中获得的两个方程式。

(%i10) %o7[2];
                                    2
(%o10)                       Lp Ls w  - Rp Rs = 0
(%i11) solve ([%o9, %o10], [Rp, Lp]);
                   2  2     2         2  2     2
                 Ls  w  + Rs        Ls  w  + Rs
(%o11)    [[Rp = ------------, Lp = ------------], [Rp = 0, Lp = 0]]
                      Rs                   2
                                       Ls w
(%i12) subst (%o11[1], [%o9, %o10]);
                         2  2            2
                       Ls  w           Rs
(%o12)             [------------ + ------------ = 1, 0 = 0]
                      2  2     2     2  2     2
                    Ls  w  + Rs    Ls  w  + Rs
(%i13) ratsimp(%);
(%o13)                          [1 = 1, 0 = 0]