天天看點

高等數學基礎概念的Python開發實作

一般的數學算式math函數庫就可以解決了,如果是涉及到高等數學極限,微積分等知識,就需要用到sympy科學計算庫,它是專門用來解決數學的運算問題的。

Sympy是一個符号計算的Python庫。它的目标是成為一個全功能的計算機代數系統,同時保持代碼簡潔、易于了解和擴充。它完全由Python寫成,不依賴于外部庫。SymPy支援符号計算、高精度計算、模式比對、繪圖、解方程、微積分、組合數學、離散 數學、幾何學、機率與統計、實體學等方面的功能。

官方文檔:SymPy 1.11 documentation

安裝 sympy:

# 第一種

pip install sympy

# 第二種 推薦,鏡像下載下傳更快

pip install sympy -i Simple Index

使用 jupyter 顯示效果更好。Project Jupyter | Home

導入庫的方式為 from sympy import *

常見的數學符号在sympy中的表示方式:

數學符号 sympy表達 數學符号 sympy表達
sinx sin(x) arccosx acos(x)
cosx cos(x) arcsinx asin(x)
tanx tan(x) imaginary number i I(大寫i)
高等數學基礎概念的Python開發實作
exp(x) 或者 E**x
高等數學基礎概念的Python開發實作
oo(兩個o)
高等數學基礎概念的Python開發實作
y**x linx log(x)
高等數學基礎概念的Python開發實作
x/y
高等數學基礎概念的Python開發實作
pi

基本數學方法

from sympy import *       # 導入sympy 全部函數

#數學表達式,用到symbols() 聲明數學符号

x, y = symbols('x, y')    # symbols() 聲明了兩個符号x, y。否則就會報 x 未定義錯誤

expr = x + 2*y            # 定義了表達式:x + 2y

expr               # x + 2*y

#可以對表達式進行簡單的四則運算

expr = expr + x + 1       # 表達式可以進行基本運算

expr              # 2*x + 2*y + 1

expr = expr * x + 2       # 相當于:(2*x + 2*y + 1) * x + 2

expr              # x*(2*x + 2*y + 1), 并沒有進行展開計算

#表達式展開成最終形式,用到 expand() 函數

expanded_expr = expand(expr)

expanded_expr     # 2*x**2 + 2*x*y + x,表達式以最終能夠展開的形式顯示

#平方根

sqrt(8)                # 

高等數學基礎概念的Python開發實作

#如果想求8的算數平方根的具體的值,就需要用的 math 類

import math

math.sqrt(8)       # 2.82842712474619

#簡化表達式,用到simplify()函數

expr = (3*x**2+9)/3

expr     # 

高等數學基礎概念的Python開發實作

#分解因式,用到 factor() 函數

expr = factor(expanded_expr)       #expanded_expr = 2*x**2 + 2*x*y + x

expr             # 𝑥(2𝑥+2𝑦+1)

#解方程,用到solve(equation, symbol),equation為等式或者表達式,symbol聲明的符号即變量

x = Symbol("x")

expression = x**2+3*x-4    # 即方程

高等數學基礎概念的Python開發實作

,x為變量

solve(expression, x)      # 方程的解有兩個:[-4,1]

solve(x**2 - 2, x)     # 

高等數學基礎概念的Python開發實作

的解為: 

高等數學基礎概念的Python開發實作

#替代變量為具體值,用到expression.subs(symbol, constant),equation為等式或者表達式,symbol為要替換的變量,constant具體的數值

expression = x**2+3*x-4  

expression.subs(x, 3)  #将表達式expression中的x的值替換為3,結果為:14

高等數學方法

#求極限,用到limit(expr, symbol, value),expr表達式,symbol變量,value變量的值

limit(x**2, x, 5)      # 

高等數學基礎概念的Python開發實作

在點5處的極限值為 25

limit(x**3, x, oo)    # 

高等數學基礎概念的Python開發實作

在點正

高等數學基礎概念的Python開發實作

處的極限值為 

高等數學基礎概念的Python開發實作

limit(1/x, x, 0)        # 1/x 從正方向逼近0時的極限值為 

高等數學基礎概念的Python開發實作

limit(1/x, x, 0, dir="-")    #1/x 從負方向逼近0時的極限值為 -

高等數學基礎概念的Python開發實作

limit(1/x, x, 0, dir='+-')    #1/x 從正負方向逼近0時的極限值為 

高等數學基礎概念的Python開發實作

limit(sin(x)/x, x, 0)    #計算 

高等數學基礎概念的Python開發實作

的極限值為1

#計算階乘,用到factorial()

factorial(5)      #計算5的階乘,即5×4×3×2×1=120

#求一階導數,用到diff(expr),計算表達式的導數

x = Symbol('x')      #聲明變量

expression = x**3 + x**2 + 9*x     #要求導的表達式

高等數學基礎概念的Python開發實作

diff(expression)     #求導結果:

高等數學基礎概念的Python開發實作

diff(sin(x))    #求導結果:cos(x)

diff(x**3*y*z,x)   #表達式

高等數學基礎概念的Python開發實作

對x求導,結果為:

高等數學基礎概念的Python開發實作

expr = x**4+x**3+x+1

expr.diff(x)    #導數為:

高等數學基礎概念的Python開發實作
高等數學基礎概念的Python開發實作

#求高階導數

expr=sin(x)    

expr.diff(x,4)      #求sin(x)的4階導數,為:sin(x)

expr=x**5 + x**4

expr.diff(x,3)        #求

高等數學基礎概念的Python開發實作

的3階導數,為:12x(5x+2)

#求不定積分,用到Integrate(expr),求表達式的不定積分,即計算∫ expr dx 

expr = 3*x**2 + 2*x + 9          # 表達式

高等數學基礎概念的Python開發實作

integrate(3 * x ** 2 + 2 * x + 9)   #積分為:

高等數學基礎概念的Python開發實作

integrate(x*y, x)    #表達式xy對x進行積分,結果為

高等數學基礎概念的Python開發實作

integrate(sin(x**2), (x, -oo, oo))  #計算

高等數學基礎概念的Python開發實作

積分,結果為

高等數學基礎概念的Python開發實作

#求定積分,用到Integrate(expr, (x, a,b )),求表達式的定積分,即計算

高等數學基礎概念的Python開發實作

integrate(log(x), (x, 1, a))   #log(x)對x從1到a求積分,結果為alog(a)-a+1

#二重積分,用到integrate(expr,x,y),對表達式expr進行對x,y的二重積分。

# 計算 

高等數學基礎概念的Python開發實作

,即計算 xy在抛物線 

高等數學基礎概念的Python開發實作

與直線 y=x−2 所圍成的區域上的二重積分

expr=x*y      # 表達式

integrate(expr,(x, y**2,y+2),(y,-1,2))     # y區間[-1,2],x區間[y**2, y+2],結果: 45/8

附圖如下:

高等數學基礎概念的Python開發實作