改进的欧拉法python
时间: 2023-12-23 22:27:32 浏览: 177
[计算方法作业]利用python中matplotlib实现绘制欧拉法、改进欧拉法、四阶龙格-库塔法图像
5星 · 资源好评率100%
改进的欧拉法(Improved Euler's Method)是一种数值求解常微分方程的方法。它是对欧拉法的改进,通过使用两个近似值来更准确地估计解。下面是一个使用Python实现改进的欧拉法的例子:
```python
def improved_euler(f, x0, y0, h, n):
"""
使用改进的欧拉法求解常微分方程
参数:
f:微分方程的右侧函数
x0:初始x值
y0:初始y值
h:步长
n:迭代次数
返回:
x:x的数组
y:y的数组
"""
x = [x0]
y = [y0]
for i in range(n):
xi = x[i]
yi = y[i]
# 使用欧拉法计算下一个近似值
y_euler = yi + h * f(xi, yi)
# 使用改进的欧拉法计算下一个近似值
y_improved = yi + h * f(xi + h/2, yi + h/2 * f(xi, yi))
x.append(xi + h)
y.append(y_improved)
return x, y
```
使用上述函数,你可以通过传入微分方程的右侧函数、初始值、步长和迭代次数来求解常微分方程。下面是一个例子:
```python
def f(x, y):
return x + y
x, y = improved_euler(f, 0, 1, 0.1, 10)
print(x) # 输出:[0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
print(y) # 输出:[1, 1.1, 1.22, 1.352, 1.5042, 1.67762, 1.873382, 2.09272, 2.337992, 2.6117912, 2.91797032]
```
这个例子使用改进的欧拉法求解了微分方程 dy/dx = x + y,初始条件为 x=0,y=1,步长为0.1,迭代次数为10次。
阅读全文