📜  欧拉法求解微分方程(1)

📅  最后修改于: 2023-12-03 15:40:38.118000             🧑  作者: Mango

欧拉法求解微分方程

简介

欧拉法是一种数值解微分方程的方法,其基本思想是将微分方程转化为差分方程,然后用差分方程的递推公式求解。欧拉法在工程和科学计算中应用广泛。

算法描述

给定微分方程 ${y}' = f(x,y)$ 和初值 $(x_0,y_0)$,我们可以采用欧拉法来求解该微分方程。具体步骤如下:

  1. 定义步长 $h$,计算积分区间端点 $a$ 和 $b$。
  2. 初始化 $x = x_0$,$y = y_0$。
  3. 用欧拉公式 $y_{n+1} = y_n + hf(x_n,y_n)$,计算下一个点 $(x_{n+1},y_{n+1})$。
  4. 重复步骤 3 直到 $x_n = b$。
  5. 输出结果 $y_n$。
代码实现
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。