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

2024-05-19 01:13:46 发布

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

我想解一组方程,线性的,有时是二次的。我没有什么特别的问题,但我经常遇到这种情况。

使用Mathematica的web等价物wolframalpha.com来求解它们很简单。但这并不能提供iPython外壳的舒适性和便利性。

是否有一个简单的库来处理python shell中的线性和二次方程?

就我个人而言,我发现使用卡西欧991毫秒科学计算器非常方便。我知道如何设置变量,解方程,做很多事情。我希望这样一个工具最好能在ipython外壳中使用。我很惊讶没有找到。我对圣人印象不够深刻,也许我遗漏了什么。


Tags: 工具comwebipython情况线性科学shell
3条回答

sympy正是你要找的。

你认为最好的答案是不可接受的。

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

答案是“圣人做到了”

你看过maxima/macsyma吗?SAGE为它提供绑定,这是一个更强大的免费绑定。

http://maxima.sourceforge.net/

下面是如何使用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]]

相关问题 更多 >

    热门问题