四阶龙格库塔python
时间: 2024-01-20 18:17:00 浏览: 31
四阶龙格-库塔(Runge-Kutta)方法是一种常用的数值求解高阶微分方程的方法。下面是一个用Python实现四阶龙格-库塔方法求解高阶微分方程的示例代码:
```python
def runge_kutta(f, x0, y0, h, n):
"""
使用四阶龙格-库塔方法求解高阶微分方程
:param f: 高阶微分方程的函数表达式
:param x0: 初始点的x坐标
:param y0: 初始点的y坐标
:param h: 步长
:param n: 迭代次数
:return: 迭代结果的列表
"""
result = [(x0, y0)]
for i in range(n):
xi, yi = result[-1]
k1 = h * f(xi, yi)
k2 = h * f(xi + h/2, yi + k1/2)
k3 = h * f(xi + h/2, yi + k2/2)
k4 = h * f(xi + h, yi + k3)
xn = xi + h
yn = yi + (k1 + 2*k2 + 2*k3 + k4) / 6
result.append((xn, yn))
return result
# 示例:求解二阶微分方程 y'' = -2y' - 2y + 4
def f(x, y):
return -2 * y[1] - 2 * y[0] + 4
x0 = 0 # 初始点的x坐标
y0 = [1, 0] # 初始点的y坐标和y'坐标
h = 0.1 # 步长
n = 10 # 迭代次数
result = runge_kutta(f, x0, y0, h, n)
for x, y in result:
print(f"x = {x}, y = {y}")
```
这段代码实现了四阶龙格-库塔方法求解二阶微分方程 y'' = -2y' - 2y + 4 的过程。通过调用 `runge_kutta` 函数,传入微分方程的函数表达式、初始点的坐标、步长和迭代次数,即可得到迭代结果的列表。最后,我们将结果打印出来。