Python解方程的技巧介绍(代码示例)
- 更新时间:2022-10-17 09:15:37
- 编辑:苏鹏飞
numpy
numpy 用来解方程的话有点复杂,需要用到矩阵的思维!我矩阵没学好再加上 numpy 不能解非线性方程组,所以...我也不会这玩意儿!
sympy
逊色于 sage 和 z3,但解方程也是非常不错的!
from sympy import * x = symbols('x') y = symbols('y') res = solve([x+y-3,x-y-1],[x,y])[0] print(res)
sage
sage 既能解线性方程组,又能解非线性方程组,堪称解方程界的神器,但是表达式不支持位运算,比如:与或非,取余以及异或。出现位运算的方程就只能用 z3 创建约束求解!sage 的优点也很明显:表达式简单易写,运算速度快!
在线sage求解
var('x y') solve([x**3+y**2+666==142335262,x**2-y==269086,x+y==1834],[x,y])
z3
z3 也叫约束求解器,用来解任何方程都没有问题!但是 windows 不太好装,所以我基本上是在linux
上跑,python2 和 python3 都支持!使用的思路非常简单:
-
先创建你所需类型的符号变量
-
再初始化一个约束器,
-
添加约束
-
最后判断约束是否有解以及求解变量
下面列举常用的函数,顺便给个 z3-solver文档
# 符号变量类型 Int('x') Real('x') Bool('x') BitVec('x',N) # N bit的符号变量,用于位操作 BitVecVal(num,N) # N bit的数据 num # 初始化约束器 solver = Solver() # 添加约束 solver.add(x+y==10,x-y==0) # 求解约束 solver.check() ans = solver.mode() # 初始化多个符号变量 x = [Int('x%d' % i) for i in range(n)] # 取结果中某个变量的值 value = ans[x].as_long()
以上就是Python解方程的技巧介绍(代码示例)的详细内容,更多请关注码农之家其它相关文章!
相关教程
-
python中文乱码不着急,先看懂字节和字符
给大家整理一篇关于python的教程,这篇文章主要介绍了python中文乱码不着急,先看懂字节和字符,具有一定借鉴价值,需要的朋友可以参考下。
发布时间:2022-06-17
-
关于python异常和文件处理机制实例详解
这篇文章主要介绍了python异常和文件处理机制,详细分析了Python异常处理的常用语句、使用方法及相关注意事项,需要的朋友可以参考下
发布时间:2020-01-23
-
无法使用pip命令安装python第三方库的彻底解决方案
今天小编就为大家分享一篇无法使用pip命令安装python第三方库的原因及解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
发布时间:2019-09-25
-
详解怎样通过50行Python代码获取公众号全部文章
这篇文章主要介绍了如何通过50行Python代码获取公众号全部文章,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
发布时间:2020-01-29
-
如何利用python开发手机app
给大家整理了关于python的教程,Python具有丰富的第三方模块库,可以选择使用kivy开发框架进行app的开发,然后利用buildozer打包工具将kivy项目打包成手机APP。
发布时间:2022-06-23
-
python如何实现优先级队列(附代码)
给网友朋友们带来一篇关于python的教程,本篇文章给大家带来的内容是关于python如何实现优先级队列(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
发布时间:2022-09-06
-
python如何实时获取tcpdump输出
这篇文章主要介绍了python如何实时获取tcpdump输出,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
发布时间:2021-04-08
-
python读取线的shp文件实例分析
今天小编就为大家分享一篇对python 读取线的shp文件实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
发布时间:2019-06-08