电磁场中微积分方程的仿真实验(欧拉算法)
一、Euler公式
以当前点的值为初值,当前点的导数为导数,计算下一个步长的点的值。
代码实现如下:
from matplotlib import pyplot as plt
import numpy as np
h=0.01
x = 0
xx=np.zeros(100)
yy=np.zeros(100)
y = 1
for i in range (100):
y=h*(y-2.0*x/y)+y
x=x+h
xx[i]=x
yy[i]=y
print(xx[i],yy[i])
plt.plot(xx,yy, ls='-', lw=2, label='OULA', color='blue')
plt.legend()
plt.show()
实验运行截图如下
由于是用前一点的导数来计算,因此明显大于精确解,且之间的差越来越大
二、改进欧拉法
以当前点的值为初值,当前点的导数和下一个步长的点的导数平均数为导数,计算下一个步