在 Sympy 中是否有一种类似于 Sage 或 Mathematica 的更简单的替代方法。 在 Mathematica 中,你有一个叫做 eliminate() 的东西,它给定一组方程式,你可以要求它消除某些变量。 在 Sage 中,您需要更多地使用它,但它或多或少与 Mathematica 相似。 在 Sympy 中做替换比较笨拙。
在屏幕截图中,红色箭头显示了我在说什么。白色箭头是我认为更合适的方法。
编辑 1:这是 Mathematica 中函数的链接 http://reference.wolfram.com/mathematica/ref/Eliminate.html
最佳答案
您可以在 SymPy 中使用方程式(实际上是 Equality 对象):
>>> eq1=Eq(x,y);eq2=Eq(x,5)
但你是对的,subs 不会为你猜出一切。看起来 Sage 假设如果一个变量在方程的一侧是孤立的,那就是要替换的变量。但是不能保证您总是可以方便地隔离所需的变量。使用 solve 为您提供所需的隔离变量并不难:
>>> solve(eq2,x,dict=1)
[{x:5}]
然后可以将其代入您要从中消除该变量的方程式。
>>> eq1.subs(solve(eq2,x,dict=1)[0])
5=y
“exclude”关键字的使用目前并不像我预期的那样;也许它应该在消除意义上起作用:
>>> solve((eq1,eq2), exclude=(x,))
{y:x}
关于python - Sympy 中的尴尬替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20826969/