10.C] Write code to solve \frac{dy}{dx} = 1 + \frac{y}{x}, \quad y(1) = 2 at x = 2, using RK-4 method with h = 0.2
Answer:
'''Program to find y using RK4 method'''
from sympy import symbols, lambdify
import numpy as np
# Define symbolic variables
x, y = symbols('x y')
# Define the differential equation dy/dx = 1 + y/x
diff_eq = 1 + y / x
f = lambdify([x, y], diff_eq)
# Initial conditions
x0 = 1.0
y0 = 2.0
h = 0.2
xn = 2.0
# Store the results
results = []
# Runge-Kutta 4th Order Iteration
while x0 <= xn + 1e-8: # Include xn with a small tolerance
k1 = h * f(x0, y0)
print(f'k1 = {k1:.4f}')
k2 = h * f(x0 + h/2, y0 + k1/2)
print(f'k2 = {k2:.4f}')
k3 = h * f(x0 + h/2, y0 + k2/2)
print(f'k3 = {k3:.4f}')
k4 = h * f(x0 + h, y0 + k3)
print(f'k4 = {k4:.4f}')
y1 = y0 + (1/6) * (k1 + 2*k2 + 2*k3 + k4)
results.append(y1)
print(f'x = {x0 + h:.1f}, y = {y1:.6f}\n')
# Prepare for next iteration
x0 += h
y0 = y1
# Final result
print(f'Approximate value of y at x = {xn:.1f} is: {results[-1]:.6f}')
