Python數(shù)據(jù)處理篇之Sympy系列(五)---解方程
前言
sympy不僅在符號(hào)運(yùn)算方面強(qiáng)大,在解方程方面也是很強(qiáng)大。
本章節(jié)學(xué)習(xí)對(duì)應(yīng)官網(wǎng)的:Solvers
官方教程
https://docs.sympy.org/latest/tutorial/solvers.html
(一)求解多元一次方程-solve()
1.說(shuō)明:
解多元一次方程可以使用solve(),在sympy里,等式是用Eq()來(lái)表示,
例如:2x=42x=4 表示為:Eq(x*2, 4)
2.源代碼:
"""
解下列二元一次方程
2x-y=3
3x+y=7
"""
# 導(dǎo)入模塊
from sympy import *
# 將變量符號(hào)化
x = Symbol('x')
y = Symbol('y')
z = Symbol('z')
# 解一元一次方程
expr1 = x*2-4
r1 = solve(expr1, x)
r1_eq = solve(Eq(x*2, 4), x)
print("r1:", r1)
print("r1_eq:", r1_eq)
# 解二元一次方程
expr2 = [2*x-y-3, 3*x+y-7]
r2 = solve(expr2, [x, y])
print("r1:", r2)
# 解三元一次方程
f1 = x+y+z-2
f2 = 2*x-y+z+1
f3 = x+2*y+2*z-3
r3 = solve([f1, f2, f3], [x, y, z])
print("r3:", r3)
3.輸出:

(二)解線性方程組-linsolve()
1.說(shuō)明:
在sympy中,解線性方程組有三種形式:
默認(rèn)等式為0的形式:linsolve(eq, [x, y, z])
矩陣形式:linsolve(eq, [x, y, z])
增廣矩陣形式:linsolve(A,b, x, y, z)
2.源代碼:
"""
x+y+z-2=0
2x-y+z+1=0
x+2y+2z-3=0
"""
from sympy import *
x, y, z = symbols("x y z")
# 默認(rèn)等式為0的形式
print("======默認(rèn)等式為0的形式 =======")
eq = [x+y+z-2, 2*x-y+z+1, x+2*y+2*z-3]
result = linsolve(eq, [x, y, z])
print(result)
print(latex(result))
# 矩陣形式
print("======矩陣形式 =======")
eq = Matrix(([1, 1, 1, 2], [2, -1, 1, -1], [1, 2, 2, 3]))
result = linsolve(eq, [x, y, z])
print(result)
print(latex(result))
# 增廣矩陣形式
print("======增廣矩陣形式 =======")
A = Matrix([[1, 1, 1], [2, -1, 1], [1, 2, 2]])
b = Matrix([[2], [-1], [3]])
system = A, b
result = linsolve(system, x, y, z)
print(result)
print(latex(result))
3.輸出:

(三)解非線性方程組-nonlinsolve()
1.說(shuō)明:
nonlinsolve()用于求解非線性方程組,例如二次方,三角函數(shù),,,等方程
2.源代碼:
"""
x**2+y**2-2=0
x**3+y**3=0
"""
import sympy as sy
x, y = sy.symbols("x y")
eq = [x**2+y**3-2, x**3+y**3]
result = sy.nonlinsolve(eq, [x, y])
print(result)
print(sy.latex(result))
3.輸出:


(四)求解微分方程-dsolve()
1.說(shuō)明:
求解微分方程使用dsolve(),注意:
f = symbols('f', cls=Function)的作用是聲明f()是一個(gè)函數(shù)。
2.源代碼:
from sympy import *
# 初始化
x = symbols('x')
f = symbols('f', cls=Function)
# 表達(dá)式
expr1 = Eq(f(x).diff(x, x) - 2*f(x).diff(x) + f(x), sin(x))
# 求解微分方程
r1 = dsolve(expr1, f(x))
print(r1)
print("原式:", latex(expr1))
print("求解后:", latex(r1))
3.輸出:
原式:
f(x)−2ddxf(x)+d2dx2f(x)=sin(x) f(x)−2ddxf(x)+d2dx2f(x)=sin(x)
解微分后:
f(x)=(C1+C2x)ex+cos(x)2 f(x)=(C1+C2x)ex+cos(x)2

總結(jié)
以上所述是小編給大家介紹的Python數(shù)據(jù)處理篇之Sympy系列(五)---解方程,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
詳解Python中的分組函數(shù)groupby和itertools)
這篇文章主要介紹了Python中的分組函數(shù)groupby和itertools)的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-07-07
python taipy庫(kù)輕松地將數(shù)據(jù)和機(jī)器學(xué)習(xí)模型轉(zhuǎn)為功能性Web應(yīng)用
taipy 是一個(gè)開(kāi)源的 Python 庫(kù),任何具有基本 Python 技能的人都可以使用,對(duì)于數(shù)據(jù)科學(xué)家、機(jī)器學(xué)習(xí)工程師和 Python 程序員來(lái)說(shuō),它是一個(gè)方便的工具,借助 Taipy,你可以輕松地將數(shù)據(jù)和機(jī)器學(xué)習(xí)模型轉(zhuǎn)變?yōu)楣δ苄缘?nbsp;Web 應(yīng)用程序2024-01-01
Python web如何在IIS發(fā)布應(yīng)用過(guò)程解析
這篇文章主要介紹了Python web如何在IIS發(fā)布應(yīng)用過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
Python獲取當(dāng)前路徑實(shí)現(xiàn)代碼
這篇文章主要介紹了 Python獲取當(dāng)前路徑實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-05-05
ptyhon實(shí)現(xiàn)sitemap生成示例
這篇文章主要介紹了ptyhon實(shí)現(xiàn)sitemap生成示例,需要的朋友可以參考下2014-03-03
pytorch使用tensorboard報(bào)錯(cuò)問(wèn)題及解決
這篇文章主要介紹了pytorch使用tensorboard報(bào)錯(cuò)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
使用matplotlib繪制熱圖(heatmap)全過(guò)程
這篇文章主要介紹了使用matplotlib繪制熱圖(heatmap)全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
shelve 用來(lái)持久化任意的Python對(duì)象實(shí)例代碼
這篇文章主要介紹了shelve 用來(lái)持久化任意的Python對(duì)象實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2016-10-10
如何利用Python連接MySQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)數(shù)據(jù)儲(chǔ)存
當(dāng)我們學(xué)習(xí)了mysql數(shù)據(jù)庫(kù)后,我們會(huì)想著該如何將python和mysql結(jié)合起來(lái)運(yùn)用,下面這篇文章主要給大家介紹了關(guān)于如何利用Python連接MySQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)數(shù)據(jù)儲(chǔ)存的相關(guān)資料,需要的朋友可以參考下2021-11-11

