数值分析Cht4数值积分和数值微分
- 格式:ppt
- 大小:1.57 MB
- 文档页数:59
数值分析实验报告四数值积分与数值微分实验(2学时)一 实验目的1.掌握复化的梯形公式、Simpson 公式等牛顿-柯特斯公式计算积分。
2. 掌握数值微分的计算方法。
二 实验内容1. 用复化梯形公式计算积分。
⎰90dx x M=82. 用复化Simpson 公式计算积分。
⎰90dx x M=8 3. 给定下列表格值利用四点式(n=3)求)50()50('''f f 和的值。
三 实验步骤(算法)与结果1复化梯形公式用C 语言编程如下:#include<stdio.h>#include<math.h>/*被积函数的定义*/float f(float x){float y;y=sqrt(x);return y;}void main(){int i,m;float a,b,h,r;printf("输入等分数m:" );scanf("%d",&m);printf("输入区间左端点a的值:"); scanf("%f",&a);printf("输入区间右端点b的值:"); scanf("%f",&b);float x[m+1];h=(b-a)/m;for(i=0;i<=m;i++)x[i]=a+i*h;r=0;for(i=0;i<=m;i++){if(i==0) r=r+h*0.5*f(x[i]);if(i>0&&i<m) r=r+h*f(x[i]);if(i==m) r=r+0.5*h*f(x[i]);}printf("输出区间[%3.1f %3.1f]的积分值:%f\n",a,b,r); }求解结果如下:输入等分数m:8输入区间左端点a的值:0输入区间右端点b的值:9输出区间[0.0 9.0]的积分值:17.7695142复化Simpson公式用C语言编程如下:#include<stdio.h>#include<math.h>/*被积函数的定义*/float f(float x){float y;y=sqrt(x);return y;}void main(){int i,m;float a,b,h,r;printf("输入等分数m:" );scanf("%d",&m);printf("输入区间左端点a的值:"); scanf("%f",&a);printf("输入区间右端点b的值:"); scanf("%f",&b);float x[m+1];h=(b-a)/m;for(i=0;i<=m;i++)x[i]=a+i*h;r=0;for(i=0;i<=m;i++){if(i==0) r=r+h*f(x[i])/3;if(i>0&&i<m){ if(i%2==0)r=r+h*2*f(x[i])/3; else r=r+h*4*f(x[i])/3;}if(i==m) r=r+h*f(x[i])/3;}printf("输出区间[%3.1f %3.1f]的积分值:%f\n",a,b,r); }求解结果如下:输入等分数m:8输入区间左端点a的值:0输入区间右端点b的值:9输出区间[0.0 9.0]的积分值:17.9031393求导数值用C语言编程如下:#include<stdio.h>int n;/*拉格朗日多项式函数的一阶导函数的定义*/float g1(float *x,float *y,float z){int i,j,k;float r,m,s;s=0;for(i=0;i<n;i++){ m=0;for(j=0;j<n;j++){if(j!=i){ r=1;for(k=0;k<n;k++)if(k!=i&&k!=j) r=r*(z-x[k]); m=m+r*y[i];}}r=1;for(j=0;j<n;j++)if(j!=i)r=r*(x[i]-x[j]);s=s+m/r;}return s;}/*拉格朗日多项式函数的二阶导函数的定义*/ float g2(float *x,float *y,float z){int i,j,k,p;float r,m,s,w;s=0;for(i=0;i<n;i++){w=0;for(j=0;j<n;j++){if(j!=i){m=0;for(k=0;k<n;k++){if(k!=i&&k!=j){ r=1;for(p=0;p<n;p++)if(p!=k&&p!=j&&p!=i)r=r*(z-x[p]); m=m+r*y[i];}}w=w+m;}}r=1;for(j=0;j<n;j++)if(j!=i)r=r*(x[i]-x[j]);s=s+w/r;}return s;}void main(){int i,j;float f1,x0,f2;printf("输入节点数n:");scanf("%d",&n);float x[n],y[n];printf("输入向量x:");for(i=0;i<n;i++)scanf("%f",&x[i]);printf("输入向量y:");for(i=0;i<n;i++)scanf("%f",&y[i]);printf("********************\n"); printf("输入1****求一阶导数\n"); printf("输入2****求二阶导数\n"); printf("********************\n"); printf("选择操作1-2:");scanf("%d",&j);switch(j){case 1:printf("输入求导处的x:");scanf("%f",&x0);f1=g1(x,y,x0);printf("x=%3.1f处的一阶导数值%f\n",x0,f1); break;case 2:printf("输入求导处的x:");scanf("%f",&x0);f2=g2(x,y,x0);printf("x=%3.1f处的二阶导数值%f\n",x0,f2); break;}}求解结果如下:输入节点数n:4输入向量x:50 55 60 65输入向量y:1.6690 1.7404 1.7782 1.8129********************输入1****求一阶导数输入2****求二阶导数********************选择操作1-2:1输入求导处的x:50x=50.0处的一阶导数值0.019673输入节点数n:4输入向量x:50 55 60 65输入向量y:1.6990 1.7404 1.7782 1.8129 ********************输入1****求一阶导数输入2****求二阶导数********************选择操作1-2:2输入求导处的x:50x=50.0处的二阶导数值-0.000164。
数值微分与数值积分数值微分与数值积分是现代计算机科学中非常重要的数学工具。
它们可以用来处理各种研究。
在本文中,我们将讨论这两种方法的基础原理,以及它们在不同领域中的应用。
什么是数值微分?数值微分是指对给定函数进行求导的一种数值方法。
在实际应用中,函数的导数通常很难求得解析解,这时需要使用数值微分的方法来进行近似计算。
数值微分通常是通过在函数的某个点进行差分计算来完成的。
考虑一个函数$f(x)$在某个点$x_0$进行微分的情况。
我们可以计算$f(x_0+h)$和$f(x_0-h)$,其中$h$是一个小的正数。
然后,我们可以计算$[f(x_0+h) - f(x_0-h)]/2h$来得到$f'(x_0)$的近似值。
数值微分的应用非常广泛。
在科学和工程领域中,它通常用于计算物理量相关的导数。
例如,流体力学中的速度梯度、量子力学中的波函数导数,都可以使用数值微分进行近似计算。
此外,在金融领域中,数值微分也可用于计算期权价格等任意变量导数的近似解。
什么是数值积分?数值积分是指对给定函数进行积分的一种数值方法。
与数值微分类似,函数的积分通常很难求得解析解,而不得不使用数值积分的方法来近似计算。
在数值积分中,我们通常使用数值积分公式来计算定义在一个区间$[a,b]$上的函数(如果积分问题是无限积分,我们需要进行变形,将其转化为有限积分问题)。
数值积分公式通常基于插值方法,即将函数转化为一个多项式,并对多项式进行积分。
数值积分也应用广泛。
在科学和工程领域中,它通常用于计算面积、物质质量,以及探测信号的峰值等。
在金融领域中,数值积分也可用于计算期权定价公式的近似解。
数值微分和数值积分的误差分析在应用数值微分和数值积分时,误差是一个重要的考虑因素。
误差源可以来自于采样、采样噪声、近似方法等。
通常,我们使用误差分析来评估误差大小。
数值微分的误差通常归因于选取的$h$值。
当$h$太大时,我们会失去一些重要的信息,如函数的局部斜率。
第四章 数值积分与数值微分1.确定下列求积公式中的特定参数,使其代数精度尽量高,并指明所构造出的求积公式所具有的代数精度:10121012112120(1)()()(0)();(2)()()(0)();(3)()[(1)2()3()]/3;(4)()[(0)()]/2[(0)()];hhhh hf x dx A f h A f A f h f x dx A f h A f A f h f x dx f f x f x f x dx h f f h ah f f h -----≈-++≈-++≈-++''≈++-⎰⎰⎰⎰解:求解求积公式的代数精度时,应根据代数精度的定义,即求积公式对于次数不超过m 的多项式均能准确地成立,但对于m+1次多项式就不准确成立,进行验证性求解。
(1)若101(1)()()(0)()hhf x dx A f h A f A f h --≈-++⎰令()1f x =,则1012h A A A -=++令()f x x =,则110A h A h -=-+令2()f x x =,则3221123h h A h A -=+ 从而解得011431313A h A h A h -⎧=⎪⎪⎪=⎨⎪⎪=⎪⎩令3()f x x =,则3()0hhhhf x dx x dx --==⎰⎰101()(0)()0A f h A f A f h --++=令4()f x x =,则4551012()52()(0)()3hhhhf x dx x dx h A f h A f A f h h ---==-++=⎰⎰故此时,101()()(0)()hhf x dx A f h A f A f h --≠-++⎰故101()()(0)()h hf x dx A f h A f A f h --≈-++⎰具有3次代数精度。
(2)若21012()()(0)()hhf x dx A f h A f A f h --≈-++⎰令()1f x =,则1014h A A A -=++令()f x x =,则110A h A h -=-+令2()f x x =,则32211163h h A h A -=+ 从而解得11438383A h A h A h -⎧=-⎪⎪⎪=⎨⎪⎪=⎪⎩令3()f x x =,则22322()0hhhhf x dx x dx --==⎰⎰101()(0)()0A f h A f A f h --++=令4()f x x =,则22452264()5hhhhf x dx x dx h --==⎰⎰510116()(0)()3A f h A f A f h h --++=故此时,21012()()(0)()hhf x dx A f h A f A f h --≠-++⎰因此,21012()()(0)()h hf x dx A f h A f A f h --≈-++⎰具有3次代数精度。
数值微分与数值积分的计算方法数值微分和数值积分是数学中一种非常重要的方法。
在实际生活和科学研究中,很多情况下,需要对函数进行微分或积分的计算。
然而,由于很多函数的解析式很难或者根本不能求出,因此需要采用一些数值方法来近似计算。
本文将讨论数值微分和数值积分的计算方法。
一、数值微分在数值计算中,常常会遇到需要求函数在某个点处的导数的问题。
这时候,我们就需要用到数值微分。
数值微分主要有三种方法:前向差分、后向差分和中心差分。
(一)前向差分前向差分是一种用来计算函数在某个点处导数的方法。
其基本思想是求函数在当前点和向前一点的斜率,即:$$f'(x_i)=\frac{f(x_{i+1})-f(x_i)}{h}$$其中,$h$表示步长。
(二)后向差分后向差分是一种用来计算函数在某个点处导数的方法。
其基本思想是求函数在当前点和向后一点的斜率,即:$$f'(x_i)=\frac{f(x_i)-f(x_{i-1})}{h}$$(三)中心差分中心差分是一种用来计算函数在某个点处导数的方法。
其基本思想是求函数在当前点左右两个点的平均斜率,即:$$f'(x_i)=\frac{f(x_{i+1})-f(x_{i-1})}{2h}$$对于三种方法,其截断误差的阶分别为 $\mathcal{O}(h)$、$\mathcal{O}(h)$ 和 $\mathcal{O}(h^2)$。
二、数值积分数值积分是指用数值方法对某个函数在某一区间上的定积分进行近似计算的过程。
常见的数值积分方法有梯形法、辛普森法和龙贝格法。
下面将分别介绍这三种方法。
(一)梯形法梯形法是一种比较简单的数值积分方法。
其基本思想是将积分区间分成若干个小梯形,然后求出这些小梯形面积的和。
具体地,假设我们要对函数 $f(x)$ 在区间 $[a,b]$ 上进行积分,将该区间分成 $n$ 个小区间,步长为 $h=(b-a)/n$,则梯形法的计算公式为:$$\int_{a}^{b}f(x)dx\approx\frac{h}{2}\left[f(a)+2\sum_{i=1}^{n-1}f(a+ih)+f(b)\right]$$梯形法的截断误差的阶为 $\mathcal{O}(h^2)$。
数值分析中的数值微分与数值积分数值微分和数值积分是数值分析领域中两个重要的概念。
它们在计算机科学、工程学和物理学等领域中有广泛的应用。
本文将介绍数值微分和数值积分的概念、原理以及一些常用的方法和技巧。
一、数值微分数值微分是通过数值方法来计算函数的导数。
导数是描述函数变化率的工具,它在物理学、经济学和生物学等领域中具有重要的作用。
1. 前向差分法(Forward Difference)前向差分法是一种简单而常用的计算导数的方法。
它利用函数在某一点上的值与函数在该点附近的一个点上的值之间的差异来估计导数。
具体公式如下:f'(x) ≈ (f(x+h) - f(x))/h其中,h为步长,为了提高精度,需要选择足够小的步长。
2. 后向差分法(Backward Difference)后向差分法与前向差分法类似,不同之处在于它利用函数在某一点上的值与函数在该点附近的一个点上的值之间的差异来估计导数。
具体公式如下:f'(x) ≈ (f(x) - f(x-h))/h同样地,步长h需要选择足够小。
3. 中心差分法(Central Difference)中心差分法是一种更加准确的数值微分方法,它利用函数在某一点上的前后两个点的值来估计导数。
具体公式如下:f'(x) ≈ (f(x+h) - f(x-h))/(2h)中心差分法相对于前向差分法和后向差分法而言,具有更高的精度。
二、数值积分数值积分是通过数值方法来计算函数的积分。
积分在物理学、经济学和统计学等领域中起着重要的作用,它可以用来计算面积、体积以及概率等。
1. 矩形法(Rectangle Method)矩形法是一种简单的数值积分方法,它利用多个矩形来逼近曲线下的面积。
具体来说,将积分区间等分为若干子区间,然后在每个子区间上选择一个点作为高度,从而构造出多个矩形。
最后,将各个矩形的面积相加,即可得到近似的积分值。
2. 梯形法(Trapezoidal Method)梯形法是一种更加准确的数值积分方法,它利用多个梯形来逼近曲线下的面积。
第四章 数值积分与数值微分1.确定下列求积公式中的特定参数,使其代数精度尽量高,并指明所构造出的求积公式所具有的代数精度: 解:求解求积公式的代数精度时,应根据代数精度的定义,即求积公式对于次数不超过m 的多项式均能准确地成立,但对于m+1次多项式就不准确成立,进行验证性求解。
(1)若101(1)()()(0)()hhf x dx A f h A f A f h --≈-++⎰令()1f x =,则 令()f x x =,则 令2()f x x =,则 从而解得 令3()f x x =,则 故101()()(0)()hhf x dx A f h A f A f h --=-++⎰成立。
令4()f x x =,则 故此时, 故101()()(0)()hhf x dx A f h A f A f h --≈-++⎰具有3次代数精度。
(2)若21012()()(0)()hhf x dx A f h A f A f h --≈-++⎰令()1f x =,则 令()f x x =,则 令2()f x x =,则 从而解得 令3()f x x =,则 故21012()()(0)()hhf x dx A f h A f A f h --=-++⎰成立。
令4()f x x =,则 故此时, 因此,具有3次代数精度。
(3)若1121()[(1)2()3()]/3f x dx f f x f x -≈-++⎰令()1f x =,则 令()f x x =,则 令2()f x x =,则 从而解得120.28990.5266x x =-⎧⎨=⎩或120.68990.1266x x =⎧⎨=⎩ 令3()f x x =,则 故1121()[(1)2()3()]/3f x dx f f x f x -=-++⎰不成立。
因此,原求积公式具有2次代数精度。
(4)若20()[(0)()]/2[(0)()]hf x dx h f f h ah f f h ''≈++-⎰令()1f x =,则 令()f x x =,则 令2()f x x =,则 故有令3()f x x =,则 令4()f x x =,则 故此时, 因此,21()[(0)()]/2[(0)()]12hf x dx h f f h h f f h ''≈++-⎰具有3次代数精度。
数值微分与数值积分的技术原理数值微分和数值积分是数值分析中常用的数学方法,它们在工程、科学等领域具有广泛的应用,例如数值模拟、数据处理、信号处理等。
本文将介绍数值微分和数值积分的技术原理,旨在帮助读者更好地理解这些方法所基于的原理和实现方式。
一、数值微分数值微分是用数值方法来近似计算函数的导数,它的核心思想是利用函数在一点附近的局部信息来估计导数。
数值微分的比较常用的方法是前向差分、后向差分和中心差分。
下面将分别介绍它们的原理和实现。
1.前向差分前向差分是利用函数在某一点的函数值和函数在该点处的导数来近似计算函数在该点的导数。
其原理如下:$f'(x_0)=\lim_{h\to0}\frac{f(x_0+h)-f(x_0)}{h}$由于$h$趋近于0时,上式右侧的分式求值较为困难,所以我们可以将其替换为有限的、足够小的$h$,这样就得到了前向差分公式:$f'(x_0)\approx\frac{f(x_0+h)-f(x_0)}{h}$其中,$h$是差分步长,越小则得到的结果越接近真实值,但是计算量也越大。
2.后向差分后向差分与前向差分的思路相似,只是差分点的位置不同。
其原理如下:$f'(x_0)=\lim_{h\to0}\frac{f(x_0)-f(x_0-h)}{h}$同样地,将上式右侧的分式替换为有限的$h$,就得到了后向差分公式:$f'(x_0)\approx\frac{f(x_0)-f(x_0-h)}{h}$3.中心差分中心差分是利用函数在某一点前后两个点的函数值来近似计算函数在该点的导数。
其原理如下:$f'(x_0)=\lim_{h\to0}\frac{f(x_0+h)-f(x_0-h)}{2h}$同样地,将上式右侧的分式替换为有限的$h$,就得到了中心差分公式:$f'(x_0)\approx\frac{f(x_0+h)-f(x_0-h)}{2h}$二、数值积分数值积分是用数值方法来近似计算函数的定积分值,它的核心思想是将定积分转化为曲线下面的面积,然后用数值积分方法来近似计算这个面积。
数值积分与数值微分第七章数值积分与数值微分积分问题最早来⾃于⼏何形体的⾯积、体积计算,也是经典⼒学中的重要问题(例如计算物体的重⼼位置). 在现实应⽤中,很多积分的结果并不能写成解析表达式,因此需要通过数值⽅法来计算. 数值微分是利⽤⼀些离散点上的函数值近似计算某⼀点处的函数导数,它针对表达式未知的函数. 本章介绍⼀元函数积分(⼀重积分)和微分的各种数值算法,它们也是数值求解积分⽅程、微分⽅程的基础.7.1数值积分概论7.1.1基本思想考虑如下定积分的计算:I(f)≡∫f(x)dxba,(7.1) 其中函数f: ?→?,⾸先应想到的是微积分中学习过的⽜顿-莱布尼兹(Newton-Leibniz)公式:∫f(x)dxba=F(b)?F(a) ,其中F′(x)=f(x),即F(x)为f(x)的原函数. 但是,诸如e x2,sinxx,sinx2等表达式很简单的函数却找不到⽤初等函数表⽰的原函数,因此必须研究数值⽅法来近似计算积分. 另⼀⽅⾯,某些函数的原函数虽然可以解析表⽰,但其推导、计算⾮常复杂,此时也需要使⽤数值积分⽅法.⼀般考虑连续的、或在区间[a,b]上可积①的函数f(x),则根据积分的定义有:lim n→∞,?→0∑(x i+1?x i)f(ξi)ni=0=I(f) , (7.2)其中a=x0上述讨论表明,近似计算积分I(f)的数值积分⽅法(numerical quadrature)⼀般具有如下形式:I n(f)≡∑A k f(x k)nk=0, (7.3)其中a≤x0推导求积公式的⼀种⽅法是⽤多项式函数p(x)来近似f(x),则可期望有以下的近似关系:①连续函数在闭区间内⼀定有界、可积,⽽可积函数则可能不连续.∫f (x )dx b a ≈∫p (x )dx ba ,其中多项式函数的积分很容易通过⽜顿-莱布尼兹公式求出. 假设使⽤拉格朗⽇插值法构造p (x ),区间[a, b]内的插值节点为x 0,x 1,…,x n ,则p (x )=L n (x )=∑f (x k )l k (x )nk=0,l k (x)为拉格朗⽇插值基函数. 由此得到求积公式为:I n (f )=∫∑f (x k )l k (x )n k=0dx b a =∑f (x k )∫l k (x )dx b an k=0 .(7.4) 由于l k (x )为拉格朗⽇插值基函数,⼀旦插值节点确定,积分∫l k (x )dx b a 可⽅便地计算出来. 这种⽤多项式插值近似被积函数得到的求积公式(7.4)被称为插值型求积公式(interpolatory quadrature ),易知它也是⼀种机械求积公式,其积分节点就是插值节点,⽽积分系数 A k =∫l k (x )dx b a ,(k =0,1,?,n ).(7.5)下⾯的例⼦推导n=0, n=1两种情况下的插值型求积公式,它们分别称为中矩形公式(midpoint rule )和梯形公式(trapezoid rule ).例7.1 (中矩形公式与梯形公式):根据n=0, n=1两种情况对应的拉格朗⽇插值推导相应的求积公式,假设插值节点分别为区间[a, b]的中点和两个端点.[解] 当n=0时,按题意设x 0=(a +b)/2, 由于0次拉格朗⽇插值多项式为常数,则L 0(x )=f (x 0)因此,I 0(f )=∫f (x 0)dx b a =(b ?a )f (a +b 2) . (7.6)当n=1时,按题意设x 0=a , x 1=b , 利⽤线性拉格朗⽇插值基函数和公式(7.5),求出:A 0=∫l 0(x )dx b a =∫x ?b dx b a=b ?a , A 1=∫l 1(x )dx b a =∫x ?a b ?a dx b a =b ?a 2. 因此,I 1(f )=∑A k f (x k )1i=0=b ?a 2[f (a )+f(b)] . (7.7)中矩形公式(7.6)和梯形公式(7.7)具有很直观的⼏何意义,即分别⽤矩形⾯积和梯形⾯积来近似函数曲线和横轴围成区域的⾯积(如图7-1).7.1.2求积公式的积分余项与代数精度定义7.1:对于计算积分I(f)的求积公式I n (f),称I(f)?I n (f)为该公式的积分余项,常记为R [f ].积分余项反映了求积公式的截断误差,是衡量求积公式准确度的重要依据. 假设I n (f)为某个插值函数p(x)的积分,则R [f ]=∫[f (x )?p (x )]dx ba,即积分余项等于插值余项的积分. 对于插值型求积公式(7.4),有R [f ]=∫[f (x )?L n (x )]dx b a =∫f (n+1)(ξ)(n +1)!ωn+1(x )dx b a, (7.8) 其中ξ依赖于x .下⾯介绍代数精度的概念,它是衡量求积公式准确度的另⼀个重要标准.定义7.2:如果某求积公式对于次数不超过m 的多项式均准确成⽴,但对于m+1次多项式可能不准确,则称该求积公式具有m 次代数精度(degree of exactness ).上述定义表明,⼀个求积公式具有较⾼次的代数精度,就意味着它能准确计算次数较⾼的多项式的积分②. 应注意,在某些情况下代数精度并不是越⾼越好.要判断⼀个机械求积公式的代数精度,最直接的⽅法是考察当被积函数分别为1,x,…,x m 时求积公式的准确性. 下⾯给出⼀个定理,其证明留给感兴趣的读者思考. 定理7.1:机械求积公式I n (f )=∑A k f (x k )n k=0⾄少有m 次代数精度的充要条件是当f (x )分别为1,x,…,x m 时,I (f )=I n (f ) .我们讨论的所有求积公式都⾄少具有0次代数精度,因此根据定理7.1它们应对f (x )=1的积分准确,则推出:∑A k n k=0=∫1dx ba =b ?a ,(7.9)这说明积分系数之和等于区间长度.根据插值型求积公式的含义,容易得出如下定理,其证明留给读者思考.定理7.2:机械求积公式I n (f )=∑A k f (x k )n k=0是插值型求积公式(7.4)的充要条件是它⾄少有n 次代数精度.考察例7.1中的中矩阵公式和梯形公式,可得出它们都具有1次代数精度. ⼀般地,在部分积分节点、积分系数已知的情况下,利⽤定理7.1可建⽴⽅程求解剩余的积分系数或节点,使其达到⼀定的代数精度. ⽽且定理7.1中求积公式的形式还可以更⼀般,只要是函数值或其导数的线性组合即可,下⾯的例⼦说明了这种情况.例7.2(求积公式的代数精度):⽤形如H 2(f )=A 0f (0)+A 1f (1)+B 0f ′(0)的求积公式近似积分I (f )=∫f(x)dx 10,试确定系数A 0, A 1, B 0,使公式具有尽可能⾼的代数精确度.[解] 根据题意可令f (x )=1,x ,x 2分别代⼊求积公式使H 2(f )=I(f)精确成⽴.②当然,这没有什么实际意义,因为很容易得到多项式函数的原函数.(a) 中矩形公式(b) 梯形公式图7-1 中矩形公式(a)和梯形公式(b)的⽰意图.当f (x )=1时,得A 0+A 1=∫1?dx 1=1当f (x )=x 时,得A 1+B 0=∫xdx 1=12 当f (x )=x 2时,得A 1=∫x 2dx =1310联⽴上述三个⽅程,解得A 1=13,A 0=23,B 0=16 .当f (x )=x 3时,容易验证上述求积公式不准确,因此H 2(f )最多具有2次代数精度. 7.1.3求积公式的收敛性与稳定性实际使⽤的求积公式都是机械求积公式(7.3),下⾯针对它给出求积公式的收敛性和稳定性的概念.定义7.3:对于n 的值可以任意的⼀系列机械求积公式I n (f)=Σk=0n A k f (x k ),a ≤x 0lim n→∞,?→0I n (f)=∫f (x )dx ba ,其中?=max 1≤k≤n (x k ?x k?1),则称这⼀系列求积公式具有收敛性.收敛性说明求积公式在积分节点逐渐增多、且节点间距逐渐变⼩时,其结果收敛到准确的积分值. 这个概念不同于公式(7.2),后者反映的是被积函数具有可积性. 在实际应⽤中,求积公式具有收敛性⾮常重要,后⾯还将针对具体的公式加以讨论.在讨论求积公式的稳定性之前,先分析数值积分问题的敏感性和条件数. 假设f(x)为准确的被积函数, f(x )为实际计算时受扰动影响的被积函数,扰动的⼤⼩为δ=‖f (x )?f ?(x )‖∞=max a≤x≤b |f (x )?f ?(x )|,则扰动对积分计算的影响为: |∫f (x )dx b a ?∫f(x )dx b a |≤∫|f (x )?f ?(x )|dx b a ≤(b ?a )δ, (7.10)这说明,积分计算结果的误差最多为扰动的(b ?a)倍,积分区间的长度(b ?a)是绝对条件数的上限. ⼀般来说,数值积分问题是不太敏感的. 这⼀点不难理解,因为积分运算本⾝就是⼀个平均的过程,它不易受被积函数的某些微⼩变化的影响.求积公式的稳定性反映计算过程中的扰动是否被放⼤、以及放⼤的程度. 具体来说,在计算机械求积公式时,需考虑积分节点的函数值出现误差时,它对结果产⽣的影响. 假设节点函数值由f (x k )变为f(x k ),则数值积分的结果由I n (f )变为I n (f ?),两者之差满⾜: |I n (f )?I n (f)|=|∑A k [f (x k )f (x k )]n k=0|≤∑|A k |nk=0?|f (x k )?f ?(x k )|≤(∑|A k |n k=0)ε,(7.11)其中ε=max 0≤k≤n|f (x k )?f ?(x k )|≤δ. 根据(7.9)式,若同时有A k >0,k =0,…,n ,则不等式(7.11)变为:|I n (f )?I n (f)|≤(b a )ε≤(b ?a )δ . (7.12) (7.12)式表明求积公式的结果受扰动影响的程度与积分问题敏感性的结果(7.10)式⼀致,这是控制数值计算误差能达到的最佳情况. 将它作为⼀个标准,可定义求积公式的稳定性.定义7.4:若对k =0,1,…,n ,均有A k >0, 则机械求积公式I n (f)=Σk=0n A k f (x k )是稳定的.利⽤定义7.4很容易直接判断求积公式的稳定性. 在实际情况中,不稳定的求积公式的积分系数绝对值之和Σk=0n |A k |可能远⼤于b ?a ,从⽽导致函数值的扰动在计算结果上被放⼤很多.本节介绍了求积公式的基本形式,以及积分余项、代数精度、收敛性和稳定性的概念,其中收敛性是针对⼀系列公式(积分节点数⽬逐渐增多)⽽⾔的. 后⾯介绍具体公式时,将考察单个公式的积分余项、代数精度和稳定性,并讨论积分节点数⽬逐渐增多时的收敛性. 此外,还应注意具体公式中计算函数值的次数,它是度量计算量⼤⼩的标准.7.2⽜顿-柯特斯公式在积分区间上构造等距节点的多项式插值,对应的插值型求积公式为⽜顿-柯特斯公式.7.2.1 柯特斯系数与⼏个低阶公式假设将积分区间n 等分,步长?=(b ?a)/n ,插值节点为x k =a +k?,(k =0,…,n),则可得到等距节点的拉格朗⽇插值多项式. 根据公式(7.4), (7.5)的推导,得到型如I n (f )=∑A k f (x k )n k=0的求积公式,其中A k =∫l k (x )dx b a =∫(x ?x 0)?(x ?x k?1)(x ?x k+1)?(x ?x n )(x k ?x 0)?(x k ?x k?1)(x k ?x k+1 )?(x k ?x n )dx b a. 这就是n 阶⽜顿-柯特斯(Newton-Cotes )公式.引⼊变量代换:x =a +t?,t ∈[0,n], 则A k =∫∏(t ?j )n j=0,j≠k ?dt n0=∫∏(t ?j )n j=0,j≠k b ?a dt n 0 . (7.13) 令C k (n )=1n ∫∏(t ?j k ?j )n j=0,j≠k dt n 0 ,(k =0,?,n ), (7.14)它仅与阶数n 有关,⽽与区间⼤⼩⽆关,则积分系数A k =(b ?a )C k (n ).(7.15) 公式(7.14)中的C k (n )常被称为柯特斯系数,可以预先计算出不同n 值对应的柯特斯系数,制成⼀个表(如表7-1所⽰),根据它⽅便地写出各阶⽜顿-柯特斯公式.表7-1 柯特斯系数表。
第四章 数值积分与数值微分1.确定下列求积公式中的特定参数,使其代数精度尽量高,并指明所构造出的求积公式所具有的代数精度: 解:求解求积公式的代数精度时,应根据代数精度的定义,即求积公式对于次数不超过m 的多项式均能准确地成立,但对于m+1次多项式就不准确成立,进行验证性求解。
(1)若101(1)()()(0)()hhf x dx A f h A f A f h --≈-++⎰令()1f x =,则 令()f x x =,则 令2()f x x =,则 从而解得 令3()f x x =,则 故101()()(0)()hhf x dx A f h A f A f h --=-++⎰成立。
令4()f x x =,则 故此时, 故101()()(0)()hhf x dx A f h A f A f h --≈-++⎰具有3次代数精度。
(2)若21012()()(0)()hhf x dx A f h A f A f h --≈-++⎰令()1f x =,则 令()f x x =,则 令2()f x x =,则 从而解得 令3()f x x =,则 故21012()()(0)()hhf x dx A f h A f A f h --=-++⎰成立。
令4()f x x =,则 故此时, 因此,具有3次代数精度。
(3)若1121()[(1)2()3()]/3f x dx f f x f x -≈-++⎰令()1f x =,则 令()f x x =,则 令2()f x x =,则 从而解得120.28990.5266x x =-⎧⎨=⎩或120.68990.1266x x =⎧⎨=⎩ 令3()f x x =,则 故1121()[(1)2()3()]/3f x dx f f x f x -=-++⎰不成立。
因此,原求积公式具有2次代数精度。
(4)若20()[(0)()]/2[(0)()]hf x dx h f f h ah f f h ''≈++-⎰令()1f x =,则 令()f x x =,则 令2()f x x =,则 故有令3()f x x =,则 令4()f x x =,则 故此时, 因此,21()[(0)()]/2[(0)()]12hf x dx h f f h h f f h ''≈++-⎰具有3次代数精度。