📅  最后修改于: 2023-12-03 15:40:38.118000             🧑  作者: Mango
欧拉法是一种数值解微分方程的方法,其基本思想是将微分方程转化为差分方程,然后用差分方程的递推公式求解。欧拉法在工程和科学计算中应用广泛。
给定微分方程 ${y}' = f(x,y)$ 和初值 $(x_0,y_0)$,我们可以采用欧拉法来求解该微分方程。具体步骤如下:
def euler(f, x0, y0, xn, n):
"""
欧拉法求解微分方程
参数:
f -- 函数 f(x,y)
x0 -- 自变量的初值
y0 -- 因变量的初值
xn -- 自变量的终值
n -- 区间 [x0,xn] 的等分点数
返回:
y -- 因变量在等分点处的近似值
"""
h = (xn - x0) / float(n) # 计算步长
x = [x0 + i * h for i in range(n+1)] # 初始化自变量数组
y = [y0] # 初始化因变量数组
for i in range(n):
y.append(y[i] + h * f(x[i], y[i])) # 使用欧拉公式递推计算 y
return y
其中,函数 $f(x,y)$ 是微分方程 ${y}' = f(x,y)$ 中的 $f$ 函数;$x0$ 和 $y0$ 是自变量和因变量的初值;$xn$ 是自变量的终值;$n$ 是区间 [x0,xn] 的等分点数。函数返回因变量在等分点处的近似值。
假设要求解微分方程 ${y}' = x - y$,且已知 $y(0) = 1$,求 $y(1)$ 的近似值。我们可以使用欧拉法来求解该微分方程。
def f(x, y):
return x - y
res = euler(f, 0, 1, 1, 10)
print(res[-1]) # 输出 y(1) 的近似值
输出结果为:
1.5230806478002846
参考文献:
[1] 高等数学第七版 上册,同济大学数学系,高等教育出版社,2006。