Advertisement
Guest User

Untitled

a guest
Oct 17th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.88 KB | None | 0 0
  1. import math
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4.  
  5. #Диф.уравнение
  6. def difur (x,y):
  7. return (x*(y**2)-y)
  8.  
  9. #Метод Эйлера
  10. def fx (du, x_0,y_0,x_k,n_1):
  11. h= (x_k-x_0) /n_1
  12. xlist, ylist=[],[]
  13. for i in range (0,n_1):
  14. y1=y_0+h*du (x_0,y_0)
  15. x1=x_0+h
  16. x_0=x1
  17. y_0=y1
  18. xlist.append(x_0)
  19. ylist.append(y_0)
  20. return xlist, ylist
  21.  
  22. # метод рунге-кутта
  23. def rk (du, x_0,y_0,x_k,n_1):
  24. h= (x_k-x_0) /n_1
  25. xlist, ylist=[],[]
  26. for i in range (0,n_1):
  27. k1=h*du (x_0,y_0)
  28. k2=h*du (x_0+h/2,y_0+k1/2)
  29. k3=h*du (x_0+h/2,y_0+k2/2)
  30. k4=h*du (x_0+h,y_0+k3)
  31. y1=y_0+ (k1+2*k2+2*k3+k4) /6
  32. x_0=x_0+h
  33. y_0=y1
  34. xlist.append(x_0)
  35. ylist.append(y_0)
  36. return xlist, ylist
  37.  
  38. def TochnoeReshenie(du, x_0,y_0,x_k,n_1):
  39. ylist=[],[]
  40. h= (x_k-x_0) /n_1
  41. ilist = np.arange(0, n, 1)
  42. ylist = [(a+h*i) for i in ilist]
  43. for x in xlist:
  44. func = 1/(exp(x)+x+1)
  45. ylist.append(func)
  46. return ilist, ylist
  47.  
  48. def calc_y1 (du, x0, y0, xk, n):
  49. try:
  50. rx, ry = rk(du,x0,y0,xk,n)
  51. ex, ey = fx(du,x0,y0,xk,n)
  52. tx, ty = TochnoeReshenie(du,x0,y0,xk,n)
  53. plt.plot(ex, ey, rx, ry, tx, ty)
  54. plt.xlabel('t')
  55. plt.ylabel('y')
  56. plt.legend(('метод Эйлера','метод Рунге-Кутта 4-го порядка'), loc=2)
  57. plt.grid(True)
  58. plt.show()
  59. except:
  60. print('Неверно заданы значения')
  61.  
  62. #x0 - величина начального значения числа X
  63. #y0 - величина начального значения числа Y
  64. #xk - величина конечной точки
  65. #n - точность интегрирования
  66. x0, y0, xk, n = 0, 1, 2, 30
  67. calc_y1(difur, x0, y0, xk, n)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement