数值分析——数值积分(Newton-Cotes、复化求积、Gauss求积、正交多项式Gauss)

本文介绍了数值积分的基本概念,探讨了牛顿-莱布尼兹公式的局限性,并详细讲解了梯形公式、中距公式、代数精度、插值型求积公式(如Newton-Cotes和Gauss方法)、复化求积以及基于正交多项式的Gauss求积。重点突出了如何通过不同的近似方法提高求积精度和稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

​   上一篇在函数逼近中我们介绍了如何在不同的误差衡量下来逼近函数,如最佳一致逼近函数OUAP以及最小二乘展开,还介绍了利用正交多项式的零点来进行多项式插值,避免边界处的Rouge现象。这次我们来介绍数值求积的思想。

   具体内容详见 《数值分析》 李庆扬、王能超、易大义(华中科大出版社)第四章



敲黑板

牛顿-莱布尼兹公式的局限性

  • 在高数中我们都学过基础的微积分知识 (微积分困难户在此 @-@),给定区间范围,给定被积函数,我们一般会利用牛顿——莱布尼兹公式,刷刷刷完成题目,可能还需要一些技巧,比如积分变量代换或者分部积分啥的,但根本的求解方法还是找到被积函数的原函数。但不可否认,高数里的定积分例子只是九牛一毛,在现实中很多函数是找不到原函数的,即不一定是初等函数,而且在定量测量实验中的函数数据也可能没有表达式,只有离散的数据点,此时也使用不了牛莱公式,GG!

  • 回归定积分最根本的思想,无限分割,以直代曲。在每个小区间内用区间的矩形面积去代替真实的面积(以一维积分为例)。由积分中值定理,我们有 ∫ a b f ( x ) d x = ( b − a ) f ( ξ ) \int_a^b f(x) dx=(b-a)f(\xi) abf(x)dx=(ba)f(ξ),即区间内一定存在一点 f ( ξ ) f(\xi) f(ξ)是区间上的平均高度。而接下来介绍的几种数值积分方法的核心思想就是尽可能准确的逼近这个平均高度。

常见的近似求法

  • 梯形公式:以左右积分端点函数值的平均值作为平均高度: ∫ a b f ( x ) d x ≈ ( b − a ) f ( a ) + f ( b ) 2 \int_a^b f(x) dx \approx (b-a) \frac{f(a)+f(b)}{2} abf(x)dx(ba)2f(a)+f(b)

  • 中距公式:以区间中间的函数值作为平均高度: ∫ a b f ( x ) d x ≈ ( b − a ) f ( a + b 2 ) \int_a^b f(x) dx \approx (b-a) f(\frac{a+b}{2}) abf(x)dx(ba)f(2a+b)

  • 对于一般情况,即只在区间上取某些节点 x k x_k xk,然后使用其对应的函数值加权求和来近似得到平均高度:

    ∫ a b f ( x ) d x ≈ ∑ k = 0 n A k f ( x k ) (1) \int_a^b f(x) dx \approx \sum_{k=0}^n A_k f(x_k) \tag{1} abf(x)dxk=0nAkf(xk)(1)

    可以看到式1是将积分的计算转化为特定节点上函数值的加权计算。


代数精度

  • 衡量一个近似求积公式的精度,作出一下定义:如果一个求积公式对于次数不超过m次的多项式均能够准确成立,但对于m+1次多项式不一定准确成立,则该求积公式具有m次代数精度。

1 : ∑ A k = b − a x : ∑ A k x k = 1 2 ( b 2 − a 2 ) . . . x m : ∑ A k x k m = 1 m + 1 ( b m + 1 − a m + 1 ) \begin{aligned} 1 &: \sum A_k=b-a \\ x &: \sum A_k x_k=\frac{1}{2}(b^2-a^2)\\ &... \\ x^m &: \sum A_k x_k^m=\frac{1}{m+1}(b^{m+1}-a^{m+1}) \end{aligned} 1xxm:Ak=ba:Akxk=21(b2a2)...:Akxkm=m+11(bm+1am+1)

  • 进一步理解,如果求积公式对于m次多项式准确成立,则必定具有m次代数精度,因为m次多项式可以转化成所有次数小于m次的多项式的线性组合。

  • 验证梯形公式只有1次代数精度

1 : ∫ a b 1 d x = b − a = ( b − a ) 1 + 1 2 x : ∫ a b x d x = 1 2 ( b 2 − a 2 ) = ( b − a ) a + b 2 x 2 : ∫ a b x 2 d x = 1 3 ( b 3 − a 3 ) ≠ ( b − a ) a 2 + b 2 2 \begin{aligned} 1 &: \int_a^b 1 dx=b-a=(b-a) \frac{1+1}{2}\\ x &: \int_a^b x dx=\frac{1}{2}(b^2-a^2)=(b-a) \frac{a+b}{2}\\ x^2 &: \int_a^b x^2 dx=\frac{1}{3}(b^{3}-a^{3}) \neq (b-a) \frac{a^2+b^2}{2}\\ \end{aligned} 1xx2:ab1dx=ba=(ba)21+1:abxdx=21(b2a2)=(ba)2a+b:abx2dx=31(b3a3)=(ba)2a2+b2


插值型求积公式

  • 如果给定一系列节点以及对应的函数值,求一个代数精度尽可能高的求积公式,自然而然可以想到利用多项式插值的方法,因为n次插值多项式对于次数不大于n的多项式其插值余项是0

  • 对于给定节点 a ≤ x 0 < x 1 < . . . < x n ≤ b a \leq x_0 < x1 <... < x_n \leq b ax0<x1<...<xnb,作插值函数(以Lagrange为例) L n ( x ) L_n(x) Ln(x),即:

    P n ( x ) = ∑ k = 0 n f ( x k ) l k ( x ) P_n(x)=\sum_{k=0}^n f(x_k)l_k(x) Pn(x)=k=0nf(xk)lk(x)

    l k ( x ) = ∏ j = 0 , j ≠ k n x − x j x k − x j l_k(x)=\prod_{j=0,j \neq k}^n \frac{x-x_j}{x_k-x_j} lk(x)=j=0,j=kn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值