Maxima:如何替换方程中的变量

gui*_*out 5 symbolic-math maxima

我正在尝试写下我的工作笔记。Maxima 简化我工作的方式是,一旦我编写了一堆方程并且我想要更改变量的定义,我就会这样做并重新评估整个文件。

这是我想要实现的目标的示例:


问题 1:我有一个方程组,我想要从 Maxima 得到的只是变量替换。

eq1: x=a+b+c
eq2: y=d+e+f
eq3: x+y=0
Run Code Online (Sandbox Code Playgroud)

如何让 Maxima 输出

eq3: a+b+c+d+e+f = 0
Run Code Online (Sandbox Code Playgroud)

所以将来如果我想让x成为a+bc,我只需改变它并重新评估


问题2:与之前类似但更复杂一些

eq1: x=a+b+c
eq2: y=d+e+f
eq3: x=y
eq4: a+s+e=0
Run Code Online (Sandbox Code Playgroud)

如何让 Maxima 输出

eq3 a+b+c=d+e+f
Run Code Online (Sandbox Code Playgroud)

如何让 Maxima 求解 a 的 eq1 并求解 e 的 eq2 并输出

eq4: x-b-c+s+y-d-f = 0
Run Code Online (Sandbox Code Playgroud)

预先感谢您的帮助,Guido

Rob*_*ier 8

我认为subst并且solve可以在这里处理您想要的操作。

(%i1) eq1: x=a+b+c;
(%o1)                            x = c + b + a
(%i2) eq2: y=d+e+f;
(%o2)                            y = f + e + d
(%i3) eq3: x+y=0;
(%o3)                              y + x = 0
(%i4) subst ([eq1, eq2], eq3);
(%o4)                      f + e + d + c + b + a = 0
Run Code Online (Sandbox Code Playgroud)

好的,现在这是第二个例子。请注意,solve返回一个方程列表。

(%i5) eq3: x=y;
(%o5)                                x = y
(%i6) eq4: a+s+e=0;
(%o6)                            s + e + a = 0
(%i7) subst ([eq1, eq2], eq3);
(%o7)                        c + b + a = f + e + d
(%i8) solve (eq1, a);
(%o8)                           [a = x - c - b]
(%i9) solve (eq2, e);
(%o9)                           [e = y - f - d]
(%i10) append (%o8, %o9);
(%o10)                  [a = x - c - b, e = y - f - d]
(%i11) subst (%o10, eq4);
(%o11)                   y + x + s - f - d - c - b = 0
Run Code Online (Sandbox Code Playgroud)

Maxima的solve功能并不算太强大;有许多种方程它无法解。但它可以解线性方程。