利用python、scipy求解差分方程的解


 

 

 文檔:https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.lfilter.html#scipy.signal.lfilter

import matplotlib.pyplot as plt
import numpy as np
from scipy import signal

nmin = 0
nmax = 8
n = np.arange(nmin,nmax+1,1)
nl = len(n)

den = np.array([1,0.6])
num = np.array([1,2])

xn = (0.1*7)**n

y0 = np.array([4,2])

#0狀態
x01 = np.array([0]);
zi1 = signal.lfilter_zi(num,den)
y1,_ = signal.lfilter(num,den,xn,zi=zi1*x01)

#0輸入
x02 = np.zeros(nl)
zi2 = signal.lfiltic(num,den,y0)
y2,_ = signal.lfilter(num,den,x02,zi = zi2)

#全響應
y3,_ = signal.lfilter(num,den,xn,zi=zi1)

#計算單位沖激響應
t4,y4 = signal.dimpulse((num,den,1),n=nl)

plt.subplot(411)
plt.stem(n,y1)
plt.ylim(-5,5)
plt.subplot(412)
plt.stem(n,y2)
plt.ylim(-5,5)
plt.subplot(413)
plt.stem(n,y3)
plt.ylim(-3,3)
plt.subplot(414)
plt.stem(t4,np.squeeze(y4))
plt.ylim(-5,5)
plt.show()

 


免責聲明!

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



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