跳到主要内容

数值方法

数值方法是用数值计算求解数学问题的方法!理解数值方法,能帮助我们解决许多无法解析求解的问题。

什么是数值方法?

数值方法(Numerical Methods)是用数值计算近似求解数学问题的方法。

简单理解

数值方法就像"用计算机算出来":

  • 有些问题无法解析求解
  • 用数值方法近似求解
  • 得到近似解

目的

数值方法的目的:

  • 🔢 求解方程:求解无法解析求解的方程
  • 📊 计算积分:计算无法解析计算的积分
  • 🔍 优化问题:求解优化问题

方程求根

二分法

二分法(Bisection Method)是求解方程 f(x)=0f(x) = 0 的根的方法。

算法

  1. 选择区间 [a,b][a, b],使得 f(a)f(b)<0f(a) f(b) < 0
  2. 计算中点 c=a+b2c = \frac{a + b}{2}
  3. 如果 f(c)=0f(c) = 0,则 cc 是根
  4. 否则,根据 f(a)f(c)f(a) f(c) 的符号选择新区间
  5. 重复步骤 2-4,直到满足精度要求

例子:求 f(x)=x22=0f(x) = x^2 - 2 = 0 的根

  • 区间 [1,2][1, 2]f(1)=1<0f(1) = -1 < 0f(2)=2>0f(2) = 2 > 0
  • c=1.5c = 1.5f(1.5)=0.25>0f(1.5) = 0.25 > 0,新区间 [1,1.5][1, 1.5]
  • c=1.25c = 1.25f(1.25)=0.4375<0f(1.25) = -0.4375 < 0,新区间 [1.25,1.5][1.25, 1.5]
  • 继续迭代,得到 21.414\sqrt{2} \approx 1.414

牛顿法

牛顿法(Newton's Method)是求解方程 f(x)=0f(x) = 0 的根的迭代方法。

迭代公式

xn+1=xnf(xn)f(xn)x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}

几何意义:用切线近似曲线,求切线与 xx 轴的交点。

例子:求 f(x)=x22=0f(x) = x^2 - 2 = 0 的根

  • f(x)=2xf'(x) = 2x
  • 迭代公式:xn+1=xnxn222xn=xn2+1xnx_{n+1} = x_n - \frac{x_n^2 - 2}{2x_n} = \frac{x_n}{2} + \frac{1}{x_n}
  • 初值 x0=1x_0 = 1
    • x1=1.5x_1 = 1.5
    • x2=1.4167x_2 = 1.4167
    • x3=1.4142x_3 = 1.4142

数值积分

矩形法

矩形法(Rectangle Method)是用矩形近似曲线下的面积。

公式

abf(x)dxi=1nf(xi)Δx\int_a^b f(x) dx \approx \sum_{i=1}^{n} f(x_i) \Delta x

其中 Δx=ban\Delta x = \frac{b - a}{n}xi=a+iΔxx_i = a + i \Delta x

梯形法

梯形法(Trapezoidal Rule)是用梯形近似曲线下的面积。

公式

abf(x)dxΔx2[f(a)+2i=1n1f(xi)+f(b)]\int_a^b f(x) dx \approx \frac{\Delta x}{2} [f(a) + 2\sum_{i=1}^{n-1} f(x_i) + f(b)]

辛普森法

辛普森法(Simpson's Rule)是用抛物线近似曲线下的面积。

公式nn 为偶数):

abf(x)dxΔx3[f(a)+4i=1n/2f(x2i1)+2i=1n/21f(x2i)+f(b)]\int_a^b f(x) dx \approx \frac{\Delta x}{3} [f(a) + 4\sum_{i=1}^{n/2} f(x_{2i-1}) + 2\sum_{i=1}^{n/2-1} f(x_{2i}) + f(b)]

例子:计算 01x2dx=13\int_0^1 x^2 dx = \frac{1}{3}

  • 精确值:130.3333\frac{1}{3} \approx 0.3333
  • 梯形法(n=4n = 4):0.343750.34375
  • 辛普森法(n=4n = 4):0.33330.3333(更精确)

微分方程数值解

欧拉法

欧拉法(Euler's Method)是求解一阶微分方程 y=f(x,y)y' = f(x, y) 的数值方法。

迭代公式

yn+1=yn+hf(xn,yn)y_{n+1} = y_n + h f(x_n, y_n)

其中 hh 是步长。

例子:求解 y=yy' = yy(0)=1y(0) = 1

  • 精确解:y=exy = e^x
  • 欧拉法(h=0.1h = 0.1):
    • y1=1+0.1×1=1.1y_1 = 1 + 0.1 \times 1 = 1.1
    • y2=1.1+0.1×1.1=1.21y_2 = 1.1 + 0.1 \times 1.1 = 1.21
    • y3=1.21+0.1×1.21=1.331y_3 = 1.21 + 0.1 \times 1.21 = 1.331

龙格-库塔法

龙格-库塔法(Runge-Kutta Method)是更精确的微分方程数值解法。

四阶龙格-库塔法(RK4):

k1=hf(xn,yn)k_1 = h f(x_n, y_n) k2=hf(xn+h2,yn+k12)k_2 = h f(x_n + \frac{h}{2}, y_n + \frac{k_1}{2}) k3=hf(xn+h2,yn+k22)k_3 = h f(x_n + \frac{h}{2}, y_n + \frac{k_2}{2}) k4=hf(xn+h,yn+k3)k_4 = h f(x_n + h, y_n + k_3) yn+1=yn+16(k1+2k2+2k3+k4)y_{n+1} = y_n + \frac{1}{6}(k_1 + 2k_2 + 2k_3 + k_4)

线性方程组求解

高斯消元法

高斯消元法(Gaussian Elimination)是求解线性方程组的方法。

步骤

  1. 将增广矩阵化为上三角矩阵
  2. 回代求解

例子:求解

2x + y = 5 \\ x - y = 1 \end{cases}$$ - 增广矩阵:$\begin{pmatrix} 2 & 1 & 5 \\ 1 & -1 & 1 \end{pmatrix}$ - 行变换:$\begin{pmatrix} 2 & 1 & 5 \\ 0 & -1.5 & -1.5 \end{pmatrix}$ - 回代:$y = 1$,$x = 2$ ### 迭代法 **雅可比迭代法**(Jacobi Iteration)和**高斯-赛德尔迭代法**(Gauss-Seidel Iteration)是求解大型线性方程组的迭代方法。 ## 误差分析 ### 截断误差 **截断误差**(Truncation Error)是由于近似方法本身产生的误差。 ### 舍入误差 **舍入误差**(Round-off Error)是由于计算机表示数字的精度限制产生的误差。 ### 总误差 **总误差** = 截断误差 + 舍入误差 ## 数值方法的应用 ### 科学计算 - 🔬 **物理模拟**:模拟物理过程 - 📊 **数据分析**:分析实验数据 ### 工程计算 - 🏗️ **结构分析**:分析工程结构 - ⚙️ **系统仿真**:仿真系统行为 ### 金融计算 - 💰 **期权定价**:计算期权价格 - 📈 **风险评估**:评估金融风险 ## 常见错误 ### 错误 1:步长选择不当 步长太大导致误差大,步长太小导致计算量大。 ### 错误 2:初值选择不当 初值选择不当可能导致迭代不收敛。 ### 错误 3:忽略误差 要分析数值方法的误差,确保结果可靠。 ## 小练习 1. 用二分法求 $x^3 - x - 1 = 0$ 在 $[1, 2]$ 内的根 2. 用梯形法计算 $\int_0^1 e^x dx$($n = 4$) 3. 用欧拉法求解 $y' = -y$,$y(0) = 1$($h = 0.1$,计算 3 步) 4. 应用题:在科学计算中,如何选择合适的数值方法? --- > 💡 **小贴士**:数值方法是用数值计算近似求解数学问题的方法。记住:二分法简单但慢,牛顿法快但需要导数,梯形法简单,辛普森法更精确。掌握数值方法,你就能解决许多无法解析求解的问题!