首頁 > 後端開發 > Python教學 > Python解方程式的技巧介紹(程式碼範例)

Python解方程式的技巧介紹(程式碼範例)

不言
發布: 2018-11-15 13:50:58
轉載
5223 人瀏覽過

這篇文章帶給大家的內容是關於Python解方程式的技巧介紹(程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

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解方程式的技巧介紹(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
python - ubuntu16.04 lxml的報錯
來自於 1970-01-01 08:00:00
0
0
0
有辦法在PHP裡寫Python嗎?
來自於 1970-01-01 08:00:00
0
0
0
python scrapy爬蟲錯誤
來自於 1970-01-01 08:00:00
0
0
0
python相關問題求解決,有償
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板