Advertisement
Guest User

Untitled

a guest
Dec 10th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.79 KB | None | 0 0
  1. def f(x, y):
  2. return x + y
  3.  
  4.  
  5. def eiler(f, a, b, y0, n):
  6. h = (b - a) / n
  7. x = [k for k in range(n + 1)]
  8. y = [k for k in range(n + 1)]
  9. x[0] = a
  10. y[0] = y0
  11. for i in range(n):
  12. x[i + 1] = x[i] + h
  13. ypr = y[i] + h / 2 * f(x[i], y[i])
  14. y[i + 1] = y[i] + h * f(x[i] + h / 2, ypr)
  15.  
  16. return x, y
  17.  
  18.  
  19. def kut(f, a, b, y0, n):
  20. h = (b - a) / n
  21. x = [k for k in range(n + 1)]
  22. y = [k for k in range(n + 1)]
  23. x[0] = a
  24. y[0] = y0
  25. for i in range(n):
  26. x[i + 1] = x[i] + h
  27. k1 = h * f(x[i], y[i])
  28. k2 = h * f(x[i] + h / 2, y[i] + k1 / 2)
  29. k3 = h * f(x[i] + h / 2, y[i] + k2 / 2)
  30. k4 = h * f(x[i] + h, y[i] + k3)
  31. y[i + 1] = y[i] + 1 / 6 * (k1 + 2 * k2 + 2 * k3 + k4)
  32. return x, y
  33.  
  34.  
  35. def met_adam_bosh(fun, a, b, y0, n):
  36. h = (b - a) / n
  37. x = [x for x in range(n + 1)]
  38. y = [x for x in range(n + 1)]
  39. f = [x for x in range(n + 1)]
  40. x[0] = a
  41. y[0] = y0
  42. f[0] = fun(x[0], y[0])
  43. for i in range(3):
  44. x[i + 1] = x[i] + h
  45. k1 = h * f[i]
  46. k2 = h * fun(x[i] + h / 2, y[i] + k1 / 2)
  47. k3 = h * fun(x[i] + h / 2, y[i] + k2 / 2)
  48. k4 = h * fun(x[i] + h, y[i] + k3)
  49. y[i + 1] = y[i] + 1 / 6 * (k1 + 2 * k2 + 2 * k3 + k4)
  50. f[i + 1] = fun(x[i + 1], y[i + 1])
  51. for i in range(4, n):
  52. x[i + 1] = x[i] + h
  53. y[i + 1] = y[i] + h / 24 * (55 * f[i] - 59 * f[i - 1] +
  54. 37 * f[i - 2] - 9 * f[i - 3])
  55. f[i + 1] = fun(x[i + 1], y[i + 1])
  56. return x, y
  57.  
  58.  
  59. def met_adam_multon(fun, a, b, y0, n):
  60. h = (b - a) / n
  61. x = [x for x in range(n + 1)]
  62. y = [x for x in range(n + 1)]
  63. f = [x for x in range(n + 1)]
  64. x[0] = a
  65. y[0] = y0
  66. f[0] = fun(x[0], y[0])
  67. for i in range(3):
  68. x[i + 1] = x[i] + h
  69. k1 = h * f[i]
  70. k2 = h * fun(x[i] + h / 2, y[i] + k1 / 2)
  71. k3 = h * fun(x[i] + h / 2, y[i] + k2 / 2)
  72. k4 = h * fun(x[i] + h, y[i] + k3)
  73. y[i + 1] = y[i] + 1 / 6 * (k1 + 2 * k2 + 2 * k3 + k4)
  74. f[i + 1] = fun(x[i + 1], y[i + 1])
  75. for i in range(4, n):
  76. x[i + 1] = x[i] + h
  77. ypred = y[i] + h / 24 * (55 * f[i] - 59 * f[i - 1] +
  78. 37 * f[i - 2] - 9 * f[i - 3])
  79. fpred = fun(x[i + 1], ypred)
  80. y[i + 1] = y[i] + h / 24 * (9 * fpred + 19 * f[i] - 5 * f[i - 1] + f[i - 2])
  81. f[i + 1] = fun(x[i + 1], y[i + 1])
  82. return x, y
  83.  
  84.  
  85. def main():
  86. a = 0
  87. b = 5
  88. y0 = 1
  89. n = 20
  90. x, y = eiler(f, a, b, y0, n)
  91. print(x)
  92. print(y)
  93.  
  94. x, y = kut(f, a, b, y0, n)
  95. print(x)
  96. print(y)
  97.  
  98. x, y = met_adam_multon(f, a, b, y0, n)
  99. print(x)
  100. print(y)
  101.  
  102. x, y = met_adam_bosh(f, a, b, y0, n)
  103. print(x)
  104. print(y)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement