Advertisement
Guest User

Untitled

a guest
Nov 19th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.98 KB | None | 0 0
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. import scipy.signal as scp
  4.  
  5.  
  6. def euler_step(A,B,C,dt,T):
  7. t = np.arange(0,T,dt)
  8. n = int (T/dt)
  9.  
  10. x = np.zeros((A.shape[0],n+1))
  11. y = np.zeros((1,n))
  12.  
  13. u=1
  14.  
  15. for i in range (0,n):
  16. val = A @ x[: ,i]*dt + B * dt*u + x[: ,i]
  17. x[:, i+1] = val
  18. y[0, i] = C @ x[:, i]
  19.  
  20. return t, y[0, :]
  21.  
  22.  
  23. def euler_impulse(A,B,C,dt,T):
  24. t = np.arange(0,T,dt)
  25. n = int (T/dt)
  26. x = np.zeros((A.shape[0],n+1))
  27. y = np.zeros((1,n))
  28. u=1/dt
  29.  
  30. for i in range(-1,n):
  31. x[: ,i+1] = x[:, i] + A @ x[:, i] * dt + B*dt*u
  32. y[0, i] = C @ x[:, i]
  33. u=0
  34. return t,y[0,: ]
  35.  
  36. if __name__ == '__main__':
  37. A = np.array([-3/5])
  38. B = np.array([1/5])
  39. C = np.array([1])
  40. #D = np.array([0])
  41.  
  42. [tc,hc] = euler_step(A,B,C,0.1,10)
  43. plt.plot(tc,hc)
  44. plt.show()
  45.  
  46. [tc1, hc1] = euler_impulse(A, B, C, 0.1, 10)
  47. plt.plot(tc1, hc1)
  48. plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement