在Python中求解数学方程的最简单方法

27 投票
16 回答
81596 浏览
提问于 2025-04-15 15:29

我想解决一组方程,可能是线性的,也可能是二次的。我并没有特定的问题,但我经常会遇到这种情况。

使用wolframalpha.com这个网站就很简单,它是Mathematica的网络版,可以用来解决这些方程。不过,这样做没有在iPython环境中操作那么方便。

有没有什么简单的库,可以在Python环境中处理线性和二次方程呢?

就我个人而言,我觉得使用卡西欧991 MS科学计算器非常方便。我知道怎么设置变量、解方程,还能做很多其他事情。我希望能有一个这样的工具,最好能在iPython环境中使用。我很惊讶到现在还没有找到这样的工具。我对sage的印象也不够深刻,也许我错过了什么。

16 个回答

11

这里是如何使用Python(通过Sage)来解决你最初的问题。这基本上是对保罗·麦克米兰上面提到的内容的进一步解释。

sage: a,b,c = var('a,b,c')
sage: solve([a+b+c==1000, a^2+b^2==c^2], a,b,c)
[[a == 1000*(r1 + sqrt(r1^2 + 2000*r1 - 1000000))/(r1 + sqrt(r1^2 + 2000*r1 - 1000000) + 1000), b == -1/2*r1 - 1/2*sqrt(r1^2 + 2000*r1 - 1000000) + 500, c == r1], [a == 1000*(r2 - sqrt(r2^2 + 2000*r2 - 1000000))/(r2 - sqrt(r2^2 + 2000*r2 - 1000000) + 1000), b == -1/2*r2 + 1/2*sqrt(r2^2 + 2000*r2 - 1000000) + 500, c == r2]]
23

你把最好的答案当成不可接受的。

你的问题是:“我想要一个可以在Python中使用的免费计算代数系统。”

答案是:“SAGE可以做到这一点。”

你有没有看过maxima/macsyma?SAGE为它提供了接口,而这是一个比较强大的免费选项。

http://maxima.sourceforge.net/

50

sympy 正是你需要的工具。

撰写回答