给定区间用python语言实现Euler法和改进Euler法求解微分方程
时间: 2024-03-03 11:51:09 浏览: 228
好的,下面是给定区间用Python语言实现Euler法和改进Euler法求解微分方程的代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 定义微分方程
def f(x, y):
return x + y
# 定义Euler法
def Euler(f, x0, y0, h, n):
x = np.zeros(n+1)
y = np.zeros(n+1)
x[0] = x0
y[0] = y0
for i in range(n):
y[i+1] = y[i] + h*f(x[i], y[i])
x[i+1] = x[i] + h
return x, y
# 定义改进Euler法
def Improved_Euler(f, x0, y0, h, n):
x = np.zeros(n+1)
y = np.zeros(n+1)
x[0] = x0
y[0] = y0
for i in range(n):
y_half = y[i] + 0.5*h*f(x[i], y[i])
y[i+1] = y[i] + h*f(x[i]+0.5*h, y_half)
x[i+1] = x[i] + h
return x, y
# 绘制图像
x0 = 0
y0 = 1
h = 0.1
n = 10
x1, y1 = Euler(f, x0, y0, h, n)
x2, y2 = Improved_Euler(f, x0, y0, h, n)
plt.plot(x1, y1, 'r', label='Euler')
plt.plot(x2, y2, 'b', label='Improved_Euler')
plt.legend()
plt.show()
```
在这个代码中,我们首先定义了微分方程,然后定义了Euler法和改进Euler法,最后利用Matplotlib库绘制了图像。其中,Euler函数的输入为微分方程f、初始值x0和y0、步长h和迭代次数n,输出为x和y的数组;Improved_Euler函数同理,只是使用的是改进Euler法。最后,利用plt.plot函数绘制了Euler法和改进Euler法的解。
阅读全文