基本原理
例题
代码
#四阶龙格-库塔法
#求一阶常微分方程,相应的特解
#x变量的区间
a = 0
b = 1
#已知条件
X = [0]
Y = [1]
h = 0.2 #设置步长
n = (b-a)/h #步数
def f(x,y):
df = y-2*x/y
return df
#程序运行
for i in range(int(n)):
x1 = X[i]+h
X.append(x1) #x1=x0+h
k1 = f(X[i], Y[i])
k2 = f(X[i]+h/2, Y[i]+h/2*k1)
k3 = f(X[i]+h/2, Y[i]+h/2*k2)
k4 = f(X[i]+h, Y[i]+h*k3)
y1 = Y[i] + h/6*(k1+2*k2+2*k3+k4)
Y.append(y1)
list = []
for i in range(len(X)):
list.append([X[i],Y[i]])
import pandas as pd
dataframe = pd.DataFrame(list)
print(dataframe)
结果:
0 1
0 0.0 1.000000
1 0.2 1.183229
2 0.4 1.341667
3 0.6 1.483281
4 0.8 1.612514
5 1.0 1.732142