# 用四阶经典龙格-库塔方法解决问题
import numpy as np
def f(x, y): # 原题目
return (3 * y) / (1 + x)
def RK(x_0, y_0, h): # 构造R-K公式
yn = y_0
x = x_0
for n in range(1, 11):
k1 = f(x, yn)
k2 = f((x + h / 2), (yn + h / 2 * k1))
k3 = f((x + h / 2), (yn + h / 2 * k2))
k4 = f((x + h), (yn + h * k3))
y = yn + (h / 6) * (k1 + 2 * k2 + 2 * k3 + k4)
x = x + h
yn = y
print('迭代次数:', "{0:.0f}".format(n),
'迭代后x值:', "{0:.6f}".format(x),
'迭代后y值:', "{0:.6f}".format(y),
k1,)
x_0 = 0
y_0 = 1
h = 0.2
RK(x_0, y_0, h)
用四阶经典龙格-库塔方法解决问题