Welcome To Colab - Colab
Welcome To Colab - Colab
import numpy as np
import matplotlib.pyplot as plt
# RK2 method
def RK2_first_order(f, x0, y0, xn, h):
n = int((xn - x0) / h)
x, y = x0, y0
x_vals, y_vals = [x], [y]
for _ in range(n):
k1 = h * f(x, y)
k2 = h * f(x + h, y + k1)
y += (k1 + k2) / 2
x += h
x_vals.append(x)
y_vals.append(y)
# RK4 method
def RK4_first_order(f, x0, y0, xn, h):
n = int((xn - x0) / h)
x, y = x0, y0
x_vals, y_vals = [x], [y]
for _ in range(n):
k1 = h * f(x, y)
k2 = h * f(x + h/2, y + k1/2)
k3 = h * f(x + h/2, y + k2/2)
k4 = h * f(x + h, y + k3)
y += (k1 + 2*k2 + 2*k3 + k4) / 6
x += h
x_vals.append(x)
y_vals.append(y)
for _ in range(n):
k1_y = h * v
k1_v = h * g(x, y, v)
k2_y = h * (v + k1_v / 2)
k2_v = h * g(x + h/2, y + k1_y/2, v + k1_v/2)
k3_y = h * (v + k2_v / 2)
k3_v = h * g(x + h/2, y + k2_y/2, v + k2_v/2)
k4_y = h * (v + k3_v)
k4_v = h * g(x + h, y + k3_y, v + k3_v)
x_vals.append(x)
y_vals.append(y)
v_vals.append(v)
# Define parameters
x0, y0, v0 = 0, 1, 0
xn = 10
h = 0.1
# Plot results
plt.figure(figsize=(10, 5))
# First-order ODE
plt.subplot(1, 2, 1)
plt.plot(x_rk2, y_rk2, 'b-', label="RK2 Solution")
plt.plot(x_rk4, y_rk4, 'r--', label="RK4 Solution")
plt.xlabel("x")
plt.ylabel("y")
plt.title("First-Order ODE Solution")
plt.legend()
# Second-order ODE
plt.subplot(1, 2, 2)
plt.plot(x_rk4_2nd, y_rk4_2nd, 'g-.', label="RK4 Second-Order Solution")
plt.xlabel("x")
plt.ylabel("y")
plt.title("Second-Order ODE Solution")
plt.legend()
plt.tight_layout()
plt.show()