from mpmath import * import time mp.dps = 15# , mp.pretty = True start = time.time() def run_invertlaplace(tt,fp,ft): for i in range(0,len(tt)): print(' : %s'%ft(tt[i])) print(' : %s'%invertlaplace(fp,tt[i],method='talbot')) print(' h(t) : %s. :%s.'%(ft(tt[i]), ft(tt[i])-invertlaplace(fp,tt[i],method='talbot'))) stop = time.time() print (", : %s"%(stop-start)) tt = [0.001, 0.01, 0.1, 1, 10]# fp = lambda p: 1/(p+1)**2# ft = lambda t: t*exp(-t)# run_invertlaplace(tt,fp,ft)
# -*- coding: utf8 -*- import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl from mpmath import * mpl.rcParams['font.family'] = 'fantasy' mpl.rcParams['font.fantasy'] = 'Comic Sans MS, Arial' mp.dps = 5; mp.pretty = True def run_invertlaplace(tt,fp,tau): y=[] for i in np.arange(0,len(tt)): if tt[i]<=tau: y.append(0) else: y.append(invertlaplace(fp,tt[i],method='talbot')) return y tau=5 tt = np.arange(0,100,0.05) T1=5;T2=4;T3=4;K=1.5;tau=14 fp = lambda p: K*exp(-tau*p)/((T1*p+1)*(T2*p+1)*(T3*p+1)*p) y=run_invertlaplace(tt,fp,tau) plt.title(' \n, invertlaplace ') plt.plot(tt,y,'r') plt.grid(True) plt.show()
# -*- coding: utf8 -*- import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl from mpmath import * mpl.rcParams['font.family'] = 'fantasy' mpl.rcParams['font.fantasy'] = 'Comic Sans MS, Arial' mp.dps = 5; mp.pretty = True tt = np.arange(0.01,20,0.05) Kp=2;Ti=2;Kd=4;Td=0.5 fp = lambda p: (1+(Kd*Td*p)/(1+Td*p))*Kp*(1+1/(Ti*p))*(1/p) y=[invertlaplace(fp,tt[i],method='talbot') for i in np.arange(0,len(tt))] Kd=0 fp = lambda p: (1+(Kd*Td*p)/(1+Td*p))*Kp*(1+1/(Ti*p))*(1/p) y1=[invertlaplace(fp,tt[i],method='talbot') for i in np.arange(0,len(tt))] plt.title(' \n, invertlaplace ') plt.plot(tt,y,'r', color='r',linewidth=2, label='-') plt.plot(tt,y1, color='b', linewidth=2, label='-') plt.grid(True) plt.legend(loc='best') plt.show()
# -*- coding: utf8 -*- import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl from mpmath import * mpl.rcParams['font.family'] = 'fantasy' mpl.rcParams['font.fantasy'] = 'Comic Sans MS, Arial' mp.dps = 15; mp.pretty = True tt = np.arange(0.01,20,0.01) Kp=2;Ti=2;Kd=4;Td=0.5 fp = lambda p: (1+(Kd*Td*p)/(1+Td*p))*Kp*(1+1/(Ti*p))*(1/p) ft = lambda t:(Kp/Ti)*(Ti+Kd*Td)+(Kp/Ti)*t+Kd*(Ti-Td)*exp(-t/Td) y=np.array([invertlaplace(fp,tt[i],method='talbot') for i in np.arange(0,len(tt))]) y1=np.array([ft(tt[i]) for i in np.arange(0,len(tt))]) z=y-y1 plt.title(' invertlaplace ') plt.plot(tt,z,'r', color='r',linewidth=1, label=' ') plt.grid(True) plt.legend(loc='best') plt.show()
# -*- coding: utf8 -*- import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl from mpmath import * mpl.rcParams['font.family'] = 'fantasy' mpl.rcParams['font.fantasy'] = 'Comic Sans MS, Arial' ww= np.arange(0,0.6,0.005) T1=25;T2=21;T3=12;K=0.37;tau=14 def invertfure(w): j=(-1)**0.5 return ((K*np.exp(-tau*j*w)/((T1*j*w+1)*(T2*j*w+1)*(T3*j*w+1))).real) z=[invertfure(w) for w in ww] plt.title(' \n Re(W(j*w)) ') plt.plot(ww,z,'r') plt.grid(True) plt.show()
# -*- coding: utf8 -*- import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl from mpmath import * mpl.rcParams['font.family'] = 'fantasy' mpl.rcParams['font.fantasy'] = 'Comic Sans MS, Arial' from scipy.integrate import quad tt=np.arange(0,200,1) T1=25;T2=21;T3=12;K=0.37;tau=14 def invertfure(w,t): j=(-1)**0.5 return (2/np.pi)*((K*np.exp(-tau*j*w)/((T1*j*w+1)*(T2*j*w+1)*(T3*j*w+1))).real*(np.sin(w*t)/w)) z=[quad(lambda w: invertfure(w,t),0, 0.6)[0] for t in tt] plt.title(' , \n ') plt.plot(tt,z,'r') plt.grid(True) plt.show()
# -*- coding: utf8 -*- import numpy as np from scipy.integrate import quad import matplotlib.pyplot as plt import matplotlib as mpl mpl.rcParams['font.family'] = 'fantasy' mpl.rcParams['font.fantasy'] = 'Comic Sans MS, Arial' tt = np.arange(0,100,0.01) T1=25;T2=21;T3=12;K=0.37;tau=14 def invertfure(w,t): j=(-1)**0.5 return (2/np.pi)*((K*np.exp(-tau*j*w)/((T1*j*w+1)*(T2*j*w+1)*(T3*j*w+1))).real*(np.sin(w*t)/w)) z=np.array([quad(lambda w: invertfure(w,t),0, 0.6)[0] for t in tt]) def h(t): if t<=tau: g=0 else: g=(-K*(T1**2)*np.exp((tau-t)/T1)/((T1-T3)*(T1-T2)))+(K*(T2**2)*np.exp((tau-t)/T2)/((T1-T2)*(T2-T3)))+(-K*(T3**2)*np.exp((tau-t)/T3)/((T1-T3)*(T2-T3)))+K return g q=np.array([h(t) for t in tt]) from mpmath import * mp.dps = 5; mp.pretty = True def run_invertlaplace(tt,fp,tau): y=[] for i in np.arange(0,len(tt)): if tt[i]<=tau: y.append(0) else: y.append(invertlaplace(fp,tt[i],method='talbot')) return y fp = lambda p: K*exp(-tau*p)/((T1*p+1)*(T2*p+1)*(T3*p+1)*p) y=np.array(run_invertlaplace(tt,fp,tau)) plt.title(' \n ') plt.plot(tt,qy,'b',linewidth=2, label= ' ') plt.plot(tt,qz,'r',linewidth=2, label=' ') plt.legend(loc='best') plt.grid(True) plt.show()
Source: https://habr.com/ru/post/346338/
All Articles