5.2Python數據處理篇之Sympy系列(二)---Sympy的基本操作
阿新 • • 發佈:2019-03-16
返回 block 說明 語法 int ini 需要 -o 輸出結果
目錄
- 目錄
- 前言
- (一)符號的初始化與輸出設置-symbol() symbols() latex()
- 1.作用:
- 2.操作:
- (二)替換符號-subs(old,new)
- 1.說明:
- 2.源代碼:
- 3.輸出效果:
- 4.註意點:
- (三)將字符串變為sympy的表達式-sympify()
- 1.說明:
- 2.源代碼:
- 3.輸出效果:
- (四)數值計算-evalf()
- 1.說明:
- 2.操作:
- (五)自定義表達式-lambdify()
- 1.說明:
- 2.源代碼:
- 3.輸出效果:
目錄
前言
符號化運算也是數值運算中的一個主要的領域,今天我們來學習以下,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)說明:
符號的初始化分為兩種形式:
- 單個符號的初始化:x = sympy.Symbol(‘x‘)
- 多個符號的初始化: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)輸出效果
(二)替換符號-subs(old,new)
1.說明:
sub是Substitution的簡稱,也就是替換,其有兩個作用:
語法是:expr.sub(old,new)
- 數值替換,用數值替換符號,進行帶入計算。
- 符號替換,用一些符號替換符號。
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.輸出效果:
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.輸出效果:
(四)數值計算-evalf()
1.說明:
相當於python自帶的eval()函數,只是進行的是float浮點數運算。
2.操作:
(1)對於數值表達式的運算
直接使用.evalf()函數
from sympy import *
expr = sqrt(8)
# 進行計算
result = expr.evalf()
print(result)
(2)對於符號表達式的運算
對於表達式常用的是:
.evalf(subs={x: 2.4})
from sympy import *
# 符號化
x = Symbol('x')
# 進行計算
expr = x**2+3
result = expr.evalf(subs={x: 2})
print(result)
(五)自定義表達式-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.輸出效果:
作者:Mark
日期:2019/03/15 周五
5.2Python數據處理篇之Sympy系列(二)---Sympy的基本操作