Python解方程的技巧介绍(代码示例)


本文摘自php中文网,作者不言,侵删。

本篇文章给大家带来的内容是关于Python解方程的技巧介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

numpy

numpy 用来解方程的话有点复杂,需要用到矩阵的思维!我矩阵没学好再加上 numpy 不能解非线性方程组,所以...我也不会这玩意儿!

sympy

逊色于 sage 和 z3,但解方程也是非常不错的!

1

2

3

4

5

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求解

1

2

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文档

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

# 符号变量类型

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人工智能是什么意思

Python有这么强大吗

Python如何做一个登录注册界面

Python文件操作a+与a模式的区别

Python中0o1010是多少

Python中的列表与元组有什么区别?一文搞懂元组与列表的异同点

selenium+Python如何爬取简书网站

Python如何遍历字符串

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...