Advertisement
Guest User

Untitled

a guest
Oct 24th, 2016
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.05 KB | None | 0 0
  1. from math import sqrt
  2. import numpy as np
  3. from matplotlib import pyplot as plt
  4.  
  5. def rk4(f, x0, y0, x1, n):
  6.     vx = [0] * (n + 1)
  7.     vy = [0] * (n + 1)
  8.     h = (x1 - x0) / float(n)
  9.     vx[0] = x = x0
  10.     vy[0] = y = y0
  11.     for i in range(1, n + 1):
  12.         k1 = h * f(x, y)
  13.         k2 = h * f(x + 0.5 * h, y + 0.5 * k1)
  14.         k3 = h * f(x + 0.5 * h, y + 0.5 * k2)
  15.         k4 = h * f(x + h, y + k3)
  16.         vx[i] = x = x0 + i * h
  17.         vy[i] = y = y + (k1 + k2 + k2 + k3 + k3 + k4) / 6
  18.     return vx, vy
  19.  
  20. def eulers(f, x0, y0, x1, n):
  21.     deltax = (x1 - x0) / (n - 1)
  22.     x = np.linspace(x0, x1 ,n)
  23.     y = np.zeros([n])
  24.     y[0] = y0
  25.     for i in range(1, n):
  26.         y[i] = deltax * f(x[i], y[i - 1]) + y[i - 1]
  27.         return x, y
  28.  
  29. a = 0.9
  30. k = 7
  31. m = 2
  32. f = lambda x, y: (1 - y ** 2) / ((1 + m) * (x ** 2) + y ** 2 + 1)
  33. x, y = eulers(f, 0, 0, 1, 50)
  34. vx, vy = rk4(f, 0, 0, 1, 50)
  35. plt.plot(vx, vy, 'o')
  36. plt.plot(x, y, 'o')
  37. plt.xlabel("x")
  38. plt.ylabel("y")
  39. plt.title("Approximate Solution with Runge Kutta's and Euler's Methods")
  40. plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement