交响乐中的尴尬替代

2024-04-24 04:10:24 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种更简单的方法来做代换,类似于圣人或数学家。 在Mathematica中,你有一个叫做消去()的东西,它给出了一组方程,你可以要求它消除某些变量。 在Sage中,你需要更多地使用它,但它仍然或多或少地类似于Mathematica。 相对而言,在交响乐团,做替代品更为尴尬。在

在截图中,红色箭头显示了我正在谈论的内容。白色箭头是我认为更合适的方法。在

http://i.stack.imgur.com/FQHzd.jpg

编辑1:这里是指向mathematica http://reference.wolfram.com/mathematica/ref/Eliminate.html中函数的链接


Tags: 方法编辑替代品内容箭头指向方程sage
2条回答

在SymPy中可以有等式(实际上是相等对象):

>>> eq1=Eq(x,y);eq2=Eq(x,5)

但你是对的,潜艇不会为你猜所有的东西。看起来Sage假设,如果一个变量被孤立在等式的一边,那就是要被替换的变量。但不能保证您总是方便地将所需的变量隔离开来。使用“求解”可以将所需的变量隔离开来:

^{pr2}$

然后把它代入方程中,你要从中消除这个变量。在

>>> eq1.subs(solve(eq2,x,dict=1)[0])
5=y

使用“exclude”关键字目前的行为不像我预期的那样;也许它应该在消除意义上起作用:

>>> solve((eq1,eq2), exclude=(x,))
{y:x}

根据上述评论和https://github.com/sympy/sympy/issues/14741,在Sympy中完成上述操作的一种方法是:

from sympy import Eq, var
var('P, F, K, M, E0, E1, E2, E3, E4')
a = Eq(E1, (E0 + P - F)*K - M)
b = Eq(E2, (E1 + P - F)*K - M)
c = Eq(E3, (E2 + P - F)*K - M)
d = Eq(E4, (E3 + P - F)*K - M - F)
d.subs(*c.args).subs(*b.args).subs(*a.args)

相关问题 更多 >