在Python中求解数学方程的最简单方法
我想解决一组方程,可能是线性的,也可能是二次的。我并没有特定的问题,但我经常会遇到这种情况。
使用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为它提供了接口,而这是一个比较强大的免费选项。
50
sympy 正是你需要的工具。