使用python解方程组

无人久伴 提交于 2020-03-16 18:57:21

某厂面试归来,发现自己落伍了!>>>

知乎上有人列了个问题, a平方 + a三次方 = 392 ,之前用了凑数的办法,答案是 7 ,土办法,但最简单

今天有人回帖,用编程的方案解决,心血来潮,试了一把用python 

(使用了python 的sympy 库)

from sympy import *
from sympy.abc import x

aa = solve([x**2 + x**3 -392], [x])
print(aa)

代码很简单,就是把等式做一下形变,把等号的右边编程 0 ,然后使用 sympy的 solve 函数进行求解

得到结果如下

[(7,), (-4 - 2*sqrt(10)*I,), (-4 + 2*sqrt(10)*I,)]

也就是这个方程有3个解,说明之前的凑数法有点武断了,7是正解,但只是正解之一 [手工捂脸]

 

于是又尝试了解方程组

x + y + z = 2
2x - y + z = -3
x + 2y + 3z = 5

原理差不多,第一步也需要作形变,将等式右边变成 0 ,测试代码如下

from sympy import *

x, y , z = symbols("x y z")
eq = [x + y + z -2 , 2*x - y + z + 3, x + 2*y + 3*z -5]
result = linsolve(eq, [x, y, z])
print(result)

得到结果

FiniteSet((-3/5, 11/5, 2/5))

也就是 x = -3/5 , y = 11/5, z = 2/5 (数字没凑好,结果都是分数)

是不是好方便,手工点赞👍

根据网上的资料,sympy还能做很多数学上的事情,比如导数,微积分, 只是我的高等数学好多都还给老师了,以后再研究吧

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!