5.2Python數據處理篇之Sympy系列(二)---Sympy的基本操作


目錄

前言

符號化運算也是數值運算中的一個主要的領域,今天我們來學習以下,python里強大的符號運算庫---sympy。今天講的是第一講,sympy的操作。

對應於官網的:Basic Operations

Basic Operation s:

https://docs.sympy.org/latest/tutorial/basic_operations.html

(一)符號的初始化與輸出設置-symbol() symbols() latex()

1.作用:

在sympy里進行符號運算之前,必須先定義sympy的符號,這樣sympy才能識別該符號。

.init_printing(use_latex=True)開啟時,在jupyter運行時,輸出的是LaTeX的格式

使用:latex()函數,同樣返回LaTeX的格式。

2.操作:

(1)說明:

符號的初始化分為兩種形式:

  1. 單個符號的初始化:x = sympy.Symbol('x')
  2. 多個符號的初始化:x,y=sympy.symbol("x y")

(2)源代碼:

import sympy as sy

# 符號化變量
x = sy.Symbol('x')
y, z = sy.symbols('y z')

# 輸出設置
sy.init_printing(use_latex=True)

# 輸出結果
print("x:", type(x))
print("y:", type(y))
print(x**2+y+z)
print(sy.latex(x**2+y+z))

(3)輸出效果

01.png

(二)替換符號-subs(old,new)

1.說明:

sub是Substitution的簡稱,也就是替換,其有兩個作用:

語法是:expr.sub(old,new)

  1. 數值替換,用數值替換符號,進行帶入計算。
  2. 符號替換,用一些符號替換符號。

2.源代碼:

from sympy import *

# 符號化變量
x, y, z = symbols('x y z')

expr = x**2+1

# 數值替換
result = expr.subs(x, 2)
print("原式:", expr)
print("數值計算的結果:", result)

# 符號替換
new_expr = expr.subs(x, y+z)
print("符號替換的結果:", new_expr)

3.輸出效果:

02.png

4.注意點:

(1)是否改變原表達式

subs()函數不改變原表達式,並且返回一個修改的表達式。

(2)替換多個表達式

當需要替換多個表達式時,可以在subs()里使用列表

如:subs([(x,2), (y, 3), (z, 4)])

表示:將x替換成2,y替換成3,z替換成4

(三)將字符串變為sympy的表達式-sympify()

1.說明:

不要混淆了sympify()函數與 simplify()函數,前者是轉化,后者是簡化。

2.源代碼:

from sympy import *

string = "x**2+2*y + z/2"

# 轉化
expr = sympify(string)

print("類型:", type(expr))
print("表達式:", expr)

3.輸出效果:

03.png

(四)數值計算-evalf()

1.說明:

相當於python自帶的eval()函數,只是進行的是float浮點數運算。

2.操作:

(1)對於數值表達式的運算

直接使用.evalf()函數

from sympy import *

expr = sqrt(8)

# 進行計算
result = expr.evalf()

print(result)

04.png

(2)對於符號表達式的運算

對於表達式常用的是:

.evalf(subs={x: 2.4})

from sympy import *

# 符號化
x = Symbol('x')

# 進行計算
expr = x**2+3
result = expr.evalf(subs={x: 2})

print(result)

05.png

(五)自定義表達式-lambdify()

1.說明:

該函數有點類似於lambda(),用於自己構造一個函數表達

2.源代碼:

from sympy import *
import numpy as np

x = Symbol('x')

a = np.arange(10)

expr = x**2

# 構造自己的函數
f = lambdify(x, expr, "numpy")

print(f(a))

3.輸出效果:

06.png

作者:Mark

日期:2019/03/15 周五


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM