python - Sympy 中的尴尬替换

标签 python sympy sage

在 Sympy 中是否有一种类似于 Sage 或 Mathematica 的更简单的替代方法。 在 Mathematica 中,你有一个叫做 eliminate() 的东西,它给定一组方程式,你可以要求它消除某些变量。 在 Sage 中,您需要更多地使用它,但它或多或少与 Mathematica 相似。 在 Sympy 中做替换比较笨拙。

在屏幕截图中,红色箭头显示了我在说什么。白色箭头是我认为更合适的方法。

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

编辑 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/

相关文章:

python pandas 以优雅的方式按条件进行行替换

python - 动态创建方法

python - 如何优化 SymPy 积分的数值计算?

python - 为 sympy lambdify 参数设置默认值

math - 求第一象限中圆和两条直线的切点

python - Pandas 将标量值添加到数字列?

python - 使用nodejs接收python代码

python - 将 Sympy 与 Pypy 结合使用

user-interface - 绘制图形的工具,返回 graph6 代码或邻接矩阵