使用 Maxima 重新排列除法方程
Rearranging equation with division using 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;
这里的主要问题是方程在指定的变量中不是线性的,所以不幸的是,提取系数矩阵没有任何意义。
我猜你想解 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]
我正在尝试使用最大值重新排列方程,但是 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;
这里的主要问题是方程在指定的变量中不是线性的,所以不幸的是,提取系数矩阵没有任何意义。
我猜你想解 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]