Advertisement
Guest User

Untitled

a guest
Nov 21st, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.62 KB | None | 0 0
  1.  
  2.  
  3. import matplotlib.pyplot as plt
  4. import numpy as np
  5.  
  6.  
  7. def createArray(x0, shape):
  8. arr = np.empty(shape)
  9. arr[0] = x0
  10. return arr
  11.  
  12. def error(yTarget, yCurrent):
  13. return yTarget - yCurrent
  14.  
  15.  
  16. def reg(e, sum):
  17. global k
  18. global ki
  19. return (k * e) + (ki * sum)
  20.  
  21.  
  22. h = 0.1
  23. t0 = 0
  24. T = 100
  25. a = -0.025
  26. state = 0
  27. y_target = 50
  28. #y_target2 = 90
  29. #y_target3 = 20
  30. y0 = 30
  31. x0 = 0
  32. k = 0.0
  33. ki = 0.0
  34. random = 0
  35. mi = 2.
  36. w = 0.7
  37.  
  38. tTab = np.arange(t0, T, h)
  39. xTab = createArray(x0, np.shape(tTab))
  40. yTab = createArray(y0, np.shape(tTab))
  41. targets = np.full_like(tTab, y_target)
  42. eTab = createArray(error(yTab[0], targets[0]), np.shape(tTab))
  43. sumTab = createArray(eTab[0]*h, np.shape(tTab))
  44. uTab = createArray(0., np.shape(tTab))
  45.  
  46. '''
  47. r = int(targets.shape[0]/3)*2
  48. for j in range(int(targets.shape[0]/3), r):
  49. targets[j] = y_target2
  50. targets[r] = y_target3
  51. r = r + 1
  52. '''
  53.  
  54. for i in range(1, tTab.shape[0]-1):
  55. yTab[i] = yTab[i - 1] + h * xTab[i-1] # y + h * y'(x = y')
  56. eTab[i] = targets[i] - yTab[i]
  57. sumTab[i] = sumTab[i - 1] + (eTab[i] * h)
  58. uTab[i] = k * eTab[i] + ki * sumTab[i]
  59. xTab[i] = xTab[i-1] + (h*(uTab[i-1] + (random*np.random.rand(1)) + mi*(1-yTab[i-1]**2)*xTab[i-1] - (w*w*yTab[i-1]))) # x + h*x'
  60.  
  61.  
  62.  
  63. #print(xTab[i])
  64. #print(uTab[i])
  65. print(str(i) + ' ' + str(yTab[i]))
  66. print(str(yTab[i]) + ' ' + str(yTab[i-1]))
  67. #print(str(i) + ' y ' + str(yTab[i]) + ' e ' + str(eTab[i]) + ' x ' + str(xTab[i]))
  68.  
  69.  
  70.  
  71.  
  72. f, axes = plt.subplots(3, sharex='all')
  73.  
  74. axes[0].plot(tTab, yTab, label='y', color='blue')
  75. axes[0].plot(tTab, targets, label='y target', color='red')
  76.  
  77.  
  78. axes[1].plot(tTab, eTab, label='error')
  79. axes[2].plot(tTab, uTab, label='U')
  80.  
  81. for ax in axes:
  82. ax.grid(True)
  83. ax.legend(loc='upper right')
  84. ax.set_xlabel('Czas')
  85. plt.show()
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92. '''
  93. import matplotlib.pyplot as plt
  94. import numpy as np
  95.  
  96.  
  97. def createArray(x0, shape):
  98. arr = np.empty(shape)
  99. arr[0] = x0
  100. return arr
  101.  
  102. def error(yTarget, yCurrent):
  103. return yTarget - yCurrent
  104.  
  105.  
  106. def reg(e, sum):
  107. global k
  108. global ki
  109. return (k * e) + (ki * sum)
  110.  
  111.  
  112. h = 0.1
  113. t0 = 0
  114. T = 100
  115. a = -0.025
  116. state = 0
  117. y_target = 50
  118. #y_target2 = 90
  119. #y_target3 = 20
  120. y0 = 0
  121. x0 = 0
  122. k = 0.00005
  123. ki = 0.1
  124. random = 0
  125. b = 4 #0.7
  126. c = 0.3
  127.  
  128. tTab = np.arange(t0, T, h)
  129. xTab = createArray(x0, np.shape(tTab))
  130. yTab = createArray(y0, np.shape(tTab))
  131. targets = np.full_like(tTab, y_target)
  132. eTab = createArray(error(yTab[0], targets[0]), np.shape(tTab))
  133. sumTab = createArray(eTab[0]*h, np.shape(tTab))
  134. uTab = createArray(0., np.shape(tTab))
  135.  
  136. '''
  137. #r = int(targets.shape[0]/3)*2
  138. #for j in range(int(targets.shape[0]/3), r):
  139. # targets[j] = y_target2
  140. # targets[r] = y_target3
  141. # r = r + 1
  142. '''
  143.  
  144. for i in range(1, tTab.shape[0]-1):
  145. yTab[i] = yTab[i - 1] + h * xTab[i-1] # y + h * y'(x = y')
  146. eTab[i] = targets[i] - yTab[i]
  147. sumTab[i] = sumTab[i - 1] + (eTab[i] * h)
  148. uTab[i] = k * eTab[i] + ki * sumTab[i]
  149. xTab[i] = xTab[i-1] + h*(uTab[i-1] + (random*np.random.rand(1)) - b*xTab[i-1] - c*yTab[i-1]) # x + h*x'
  150.  
  151.  
  152.  
  153. #print(xTab[i])
  154. #print(uTab[i])
  155. #print(str(i) + ' y ' + str(yTab[i]) + ' + ' + str(a * yTab[i - 1] + uTab[i - 1]))
  156.  
  157.  
  158.  
  159.  
  160. f, axes = plt.subplots(3, sharex='all')
  161.  
  162. axes[0].plot(tTab, yTab, label='y', color='blue')
  163. axes[0].plot(tTab, targets, label='y target', color='red')
  164.  
  165.  
  166. axes[1].plot(tTab, eTab, label='error')
  167. axes[2].plot(tTab, uTab, label='U')
  168.  
  169. for ax in axes:
  170. ax.grid(True)
  171. ax.legend(loc='upper right')
  172. ax.set_xlabel('Czas')
  173. plt.show()
  174.  
  175. '''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement