版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

仓库源文站点原文


title: 数值分析实验 - 数值积分与数值微分 categories:


数值分析实验 4 - 数值积分与数值微分

<!-- more -->

目的和意义

实验目的

选用复合梯形公式, 复合 Simpson 公式, Romberg 算法, 计算

  1. $\displaystyle I=\int_0^\frac{1}{4}\sqrt{4-\sin^2x}\mathrm{d}x$
  2. $\displaystyle I=\int_0^1\frac{\sin x}{x}\mathrm{d}x$
  3. $\displaystyle I=\int_0^1\frac{e^x}{4+x^2}\mathrm{d}x$
  4. $\displaystyle I=\int_0^1\frac{\ln(1+x)}{1+x^2}\mathrm{d}x$

要求

  1. 编制数值积分算法的程序
  2. 分别用两种算法计算同一个积分, 并比较其结果
  3. 分别取不同步长 $n$, 试比较计算结果 (如 $n=10,20$ 等)
  4. 给定精度要求 $\epsilon$, 试用变步长算法, 确定最佳步长

意义

  1. 深刻认识数值积分法的意义
  2. 明确数值积分精度与步长的关系
  3. 根据定积分的计算方法, 可以考虑二重积分的计算问题

计算公式

梯形积分

$$ \inta^bf(x)\mathrm{d}x\approx\frac{h}{2}\left(f(a)+2\sum{i=1}^{n-1}f(x_k)+f(b)\right) $$

其中

Simpson 积分

$$ \inta^bf(x)\mathrm{d}x\approx\frac{h}{6}\left(f(a)+4\sum{i=1}^{n-1}f(x{k+1/2})+2\sum{i=1}^{n-1}f(x_k)+f(b)\right) $$

其中

Romberg 算法 (复化梯形)

关于多重积分

只需嵌套进行数值积分即可

一些特殊处理

程序设计

主程序

<details open> <summary><font color='orange'>Show code</font></summary> {% icodeweb blog lang:matlab numanaexp-04/main.m %} </details>

输入数据检查

<details open> <summary><font color='orange'>Show code</font></summary> {% icodeweb blog lang:matlab numanaexp-04/input_check.m %} </details>

按步长积分 (复化积分)

<details open> <summary><font color='orange'>Show code</font></summary> {% icodeweb blog lang:matlab numanaexp-04/integral_with_h.m %} </details>

按精度积分 (自适应积分)

<details open> <summary><font color='orange'>Show code</font></summary> {% icodeweb blog lang:matlab numanaexp-04/integral_with_eps.m %} </details>

辅助函数

梯形积分

<details open> <summary><font color='orange'>Show code</font></summary> {% icodeweb blog lang:matlab numanaexp-04/trapez.m %} </details>

Simpson 积分

<details open> <summary><font color='orange'>Show code</font></summary> {% icodeweb blog lang:matlab numanaexp-04/simpson.m %} </details>

结果讨论和分析

结果 - 复化积分

结果 - 自适应积分

分析


  1. J N Lyness. Notes on the Adaptive Simpson Quadrature Routine[J]. Journal of the ACM, 1969, 16(3): 483–495