第8章数值积分及数值微分1
- 格式:ppt
- 大小:704.50 KB
- 文档页数:34
数值微分与数值积分数值微分与数值积分是现代计算机科学中非常重要的数学工具。
它们可以用来处理各种研究。
在本文中,我们将讨论这两种方法的基础原理,以及它们在不同领域中的应用。
什么是数值微分?数值微分是指对给定函数进行求导的一种数值方法。
在实际应用中,函数的导数通常很难求得解析解,这时需要使用数值微分的方法来进行近似计算。
数值微分通常是通过在函数的某个点进行差分计算来完成的。
考虑一个函数$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$太大时,我们会失去一些重要的信息,如函数的局部斜率。
M a t l a b数值积分与数值微分Matlab数值积分1.一重数值积分的实现方法变步长辛普森法、高斯-克朗罗德法、梯形积分法1.1变步长辛普森法Matlab提供了quad函数和quadl函数用于实现变步长辛普森法求数值积分.调用格式为:[I,n]=Quad(@fname,a,b,tol,trace)[I,n]=Quadl(@fname,a,b,tol,trace)Fname是函数文件名,a,b分别为积分下限、积分上限;tol为精度控制,默认为1.0×10-6,trace控制是否展开积分过程,若为0则不展开,非0则展开,默认不展开.返回值I为积分数值;n为调用函数的次数.--------------------------------------------------------------------- 例如:求∫e0.5x sin(x+π6)dx3π的值.先建立函数文件fesin.mfunction f=fesin(x)f=exp(-0.5*x).*sin(x+(pi/6));再调用quad函数[I,n]=quad(@fesin,0,3*pi,1e-10)I=0.9008n=365--------------------------------------------------------------------- 例如:分别用quad函数和quadl函数求积分∫e0.5x sin(x+π6)dx3π的近似值,比较函数调用的次数.先建立函数文件fesin.mfunction f=fesin(x)f=exp(-0.5*x).*sin(x+(pi/6));formatlong[I,n]=quadl(@fesin,0,3*pi,1e-10)I=n=198[I,n]=quad(@fesin,0,3*pi,1e-10)I=n=365--------------------------------------------------------------------- 可以发现quadl函数调用原函数的次数比quad少,并且比quad函数求得的数值解更精确.1.2高斯-克朗罗德法Matlab提供了自适应高斯-克朗罗德法的quadgk函数来求震荡函数的定积分,函数的调用格式为:[I,err]=quadgk(@fname,a,b)Err返回近似误差范围,其他参数的意义与quad函数相同,积分上下限可以是-Inf或Inf,也可以是复数,若为复数则在复平面上求积分.--------------------------------------------------------------------- 例如:求积分∫xsinx1+cos2xdx π的数值.先编写被积函数的m文件fsx.mfunction f=fsx(x)f=x.*sin(x)./(1+cos(x).^2);再调用quadgk函数I=quadgk(@fsx,0,pi)I=2.4674--------------------------------------------------------------------- 例如:求积分∫xsinx1+cos2xdx +∞−∞的值.先编写被积函数的m文件fsx.mfunction f=fsx(x)f=x.*sin(x)./(1+cos(x).^2); 再调用quadgk函数I=quadgk(@fsx,-Inf,Inf)I=-9.0671e+017---------------------------------------------------------------------1.3梯形积分法对于一些不知道函数关系的函数问题,只有实验测得的一组组样本点和样本值,由表格定义的函数关系求定积分问题用梯形积分法,其函数是trapz函数,调用格式为:I=Traps(X,Y)X,Y为等长的两组向量,对应着函数关系Y=f(X) X=(x1,x2,…,x n)(x1<x2<…<x n),Y=(y1,y2,…,y n),积分区间是[x1,x n]--------------------------------------------------------------------- 例如:已知某次物理实验测得如下表所示的两组样本点.现已知变量x和变量y满足一定的函数关系,但此关系未知,设y=f(x),求积分13.39∫f(x)dx1.38的数值.X=[1.38,1.56,2.21,3.97,5.51,7.79,9.19,11.12,13.39];Y=[3.35,3.96,5.12,8.98,11.46,17.63,24.41,29.83,32.21];I=trapz(X,Y) I=217.1033---------------------------------------------------------------------例如:用梯形积分法求积分:∫e −x dx 2.51的数值.x=1:0.01:2.5; y=exp(-x); I=trapz(x,y) I= 0.2858---------------------------------------------------------------------2. 多重数值积分的实现重积分的积分函数一般是二元函数f(x,y)或三元函数f(x,y,z);形如:∫∫f (x,y )dxdy ba dc∫∫∫f(x,y,z)dxdydz b a d cf eMatlab 中有dblquad 函数和triplequad 函数来对上述两个积分实现.调用格式为: I=dblquad(@fun,a,b,c,d,tol)I=triplequad(@fun,a,b,c,d,e,f,tol)Fun 为被积函数,[a,b]为x 的积分区间;[c,d]为y 的积分区间;[e,f]为z 的积分区间.Dblquad 函数和triplequad 函数不允许返回调用的次数,如果需要知道函数调用的次数,则在定义被积函数的m 文件中增加一个计数变量,统计出被积函数被调用的次数.---------------------------------------------------------------------例如:计算二重积分I =∫∫√x 2+y 2dxdy π2−π2π2−π2的值.先编写函数文件fxy.mfunction f=fxy(x,y) global k; k=k+1;f=sqrt(x.^2+y.^2);再调用函数dblquadglobalk; k=0;I=dblquad(@fxy,-pi/2,pi/2,-pi/2,pi/2,1.0e-10) I= 11.8629 k k= 37656---------------------------------------------------------------------例如:求三重积分∫∫∫4xze −z2y−x 2dxdydz ππ1的值.编写函数文件fxyz1.mfunction f=fxyz1(x,y,z) global j; j=j+1;f=4*x.*z.*exp(-z.*z.*y-x.*x);调用triplequad函数editglobalj;j=0;I=triplequad(@fxyz1,0,pi,0,pi,0,1,1.0e-10)I=1.7328jj=1340978---------------------------------------------------------------------Matlab数值微分1.数值微分与差商导数的三种极限定义f′(x)=limn→0f(x+h)−f(x)hf′(x)=limn→0f(x)−f(x−h)hf′(x)=limn→0f(x+h2)−f(x−h2)h上述公式中假设h>0,引进记号:?f(x)=f(x+h)−f(x)?f(x)= f(x)−f(x−h)δf(x)= f(x+h2)−f(x−h2)称上述?f(x)、?f(x)、δf(x)为函数在x点处以h(h>0)为步长的向前差分、向后差分、中心差分,当步长h足够小时,有:f′(x)≈?f(x) hf′(x)≈?f(x) hf′(x)≈δf(x) h?f(x) h 、?f(x)h、δf(x)h也分别被称为函数在x点处以h(h>0)为步长的向前差商、向后差商、中心差商.当h足够小时,函数f(x)在x点处的导数接近于在该点的任意一种差商,微分接近于在该点的任意一种差分.2.函数导数的求法2.1用多项式或样条函数g(x)对函数f(x)进行逼近(插值或拟合),然后用逼近函数g(x)在点x处的导数作为f(x)在该点处的导数.2.2用f(x)在点x处的差商作为其导数.3.数值微分的实现方法Matlab中,只有计算向前差分的函数diff,其调用格式为:·DX=diff(X):计算向量X的向前差分,DX(i)=X(i+1)-X(i),i=1,2,…,n-1·DX=diff(X,n):计算向量X的n阶向前差分,例如diff(X,2)=diff(diff(X))·DX=diff(A,n,dim):计算矩阵A的n阶向前差分,dim=1(默认值)按列计算差分,dim=2按行计算差分. --------------------------------------------------------------------- 例如:生成6阶范德蒙德矩阵,然后分别按行、按列计算二阶向前差分A=vander(1:6)A=111111321684212438127931102425664164131256251252551777612962163661D2A1=diff(A,2,1)D2A1=180501220057011018200132019424200255030230200D2A2=diff(A,2,2)D2A2=000084211083612457614436920004008016540090015025--------------------------------------------------------------------- 例如:设f(x)=√x3+2x2−x+12+√(x+5)56+5x+2求函数f(x)的数值导数,并在同一坐标系中作出f’(x)的图像.已知函数f(x)的导函数如下:f′(x)=3x2+4x−12√x3+2x2−x+12+16√(x+5)56+5编辑函数文件fun7.m和fun8.mfunctionf=fun7(x)f=sqrt(x.^3+2*x.^2-x+12)+(x+5).^(1/6)+5*x+2;functionf=fun8(x)f=(3*x.^2+4*x-1)/2./sqrt(x.^3+2*x.^2-x+12)+1/6./(x+5).^(5/6)+5;x=-3:0.01:3;p=polyfit(x,fun7(x),5);用5次多项式拟合曲线dp=polyder(p);对拟合多项式进行求导dpx=polyval(dp,x);对dp在假设点的求函数值dx=diff(fun7([x,3.01]))/0.01;直接对dx求数值导数gx=fun8(x);求函数f的函数在假设点的导数plot(x,dpx,x,dx,'.',x,gx,'-')可以发现,最后得到的三条曲线基本重合.--------------------------------------------------------------------- 练习:A.用高斯-克朗罗德法求积分∫dx1+x2 +∞−∞的值并讨论计算方法的精确度.(该积分值为π)function f=fun9(x)f=1./(1+x.^2);formatlong[I,err]=quadgk(@fun9,-Inf,Inf)I=err=B.设函数f(x)=sin xx+cos2x用不同的办法求该函数的数值导数,并在同一坐标系中作出f′(x)的图像.已知f′(x)=x cos x+cos x cos2x−sin x+2sin x sin2x(x+cos2x)2function f=fun10(x)f=sin(x)./(x+cos(2*x));function f=fun11(x)f=(x.*cos(x)+cos(x).*cos(2*x)-sin(x)-2*sin(x).*sin(2*x))/(x+cos(2*x)).^2;x=-3:0.01:3;p=polyfit(x,fun10(x),5);dp=polyder(p);dpx=polyval(dp,x);dx=diff(fun10([x,3.01]))/0.01;gx=fun11(x);plot(x,dpx,'r:',x,dx,'.g',x,gx,'-k')[文档可能无法思考全面,请浏览后下载,另外祝您生活愉快,工作顺利,万事如意!]11 / 11。
数值微分与数值积分数值微分和数值积分是数值分析中两个重要的概念和技术。
它们在数学与工程领域中都有着广泛的应用。
本文将介绍数值微分和数值积分的概念、原理和应用。
1. 数值微分数值微分是指通过数值计算方法来逼近函数的导数。
在实际计算中,我们常常需要求解某一函数在特定点的导数值,这时数值微分就能派上用场了。
一种常用的数值微分方法是有限差分法。
它基于函数在离给定点很近的两个点上的函数值来逼近导数。
我们可以通过选取合适的差分间距h来求得函数在该点的导数值。
有限差分法的一般形式可以表示为:f'(x) ≈ (f(x+h) - f(x))/h其中,f'(x)是函数f(x)在点x处的导数值,h是差分间距。
数值微分方法有很多种,比如前向差分、后向差分和中心差分等。
根据实际需求和计算精度的要求,我们可以选择合适的数值微分方法来进行计算。
2. 数值积分数值积分是指通过数值计算方法来近似计算函数的定积分。
在实际问题中,我们经常需要求解函数在某一区间上的积分值,而数值积分可以提供一个快速而准确的近似。
一种常见的数值积分方法是复合梯形法。
它将积分区间分割成若干个小区间,然后在每个小区间上应用梯形面积的计算公式。
最后将所有小区间上的梯形面积相加,即可得到整个积分区间上的积分值。
复合梯形法的一般形式可以表示为:∫[a, b] f(x)dx ≈ h/2 * [f(a) + 2∑(i=1 to n-1)f(x_i) + f(b)]其中,[a, b]是积分区间,h是分割的小区间宽度,n是划分的小区间个数,x_i表示第i个小区间的起始点。
除了复合梯形法,还有其他常用的数值积分方法,比如复合辛普森法、龙贝格积分法等。
根据被积函数的性质和计算精度要求,我们可以选择合适的数值积分方法来进行计算。
3. 数值微分和数值积分的应用数值微分和数值积分在科学研究和工程实践中具有广泛的应用。
以下是一些常见的应用领域:3.1 物理学在物理学中,我们经常需要对物体的位置、速度和加速度进行计算。
数值计算方法复习知识点数值计算是计算机科学的一个重要分支,它研究如何使用计算机来进行数值计算和数值模拟。
在实际应用中,许多问题无法用解析表达式求解,只能通过数值计算方法来近似求解。
因此,数值计算方法的学习对于掌握计算机科学和工程中的相关问题具有重要意义。
1.插值与拟合插值是通过已知数据点构造出一个函数,使得该函数在已知数据点上的取值与给定数据点相同。
常用的插值方法有拉格朗日插值和牛顿插值。
拟合是通过已知数据点,在一定误差范围内,用一个函数逼近这些数据点的过程。
最小二乘法是一种常用的拟合方法。
2.数值积分数值积分是通过数值计算方法对定积分进行近似求解的过程。
常用的数值积分方法有梯形法则、辛普森法则和龙贝格法则。
3.数值微分数值微分是通过数值计算方法来计算函数的导数。
常用的数值微分方法有前向差分法和中心差分法。
4.常微分方程数值解常微分方程是研究自变量只有一个的微分方程。
常微分方程数值解是通过数值计算方法来求解常微分方程的近似解。
常用的常微分方程数值解方法有欧拉法、改进欧拉法和龙格-库塔法等。
5.线性方程组的数值解法线性方程组是一个包含多个线性方程的方程组。
线性方程组的数值解法主要包括直接法和迭代法。
直接法是通过一系列代数运算直接求解出方程组的解,常用的直接法有高斯消元法和LU分解法。
迭代法是通过一系列迭代运算逐步逼近方程组的解,常用的迭代法有雅可比迭代法和高斯-赛德尔迭代法等。
6.非线性方程的数值解法非线性方程是含有未知数的函数与该未知数的组合线性关系不成立的方程。
非线性方程的数值解法包括二分法、牛顿法和割线法等。
7.特征值与特征向量特征值和特征向量是矩阵理论中的重要概念。
特征值是矩阵运算中的一个标量,特征向量是矩阵运算中的一个向量。
特征值和特征向量的计算可以通过幂法、反幂法和QR分解等数值计算方法来实现。
8.插值和误差分析插值方法的误差分析是指通过数值计算方法来分析插值近似值与精确值之间的误差大小。
第8章 常微分方程边值问题的数值解法8.1 引 言推论 若线性边值问题()()()()()(),,(),()y x p x y x q x y x f x a x b y a y b αβ'''=++≤≤⎧⎨==⎩ (8.1.2) 满足(1) (),()p x q x 和()f x 在[,]a b 上连续; (2) 在[,]a b 上, ()0q x >, 则边值问题(8.1.1)有唯一解。
求边值问题的近似解,有三类基本方法:(1) 差分法(difference method),也就是用差商代替微分方程及边界条件中的导数,最终化为代数方程求解;(2) 有限元法(finite element method);(3) 把边值问题转化为初值问题,然后用求初值问题的方法求解。
8.2 差分法8.2.1 一类特殊类型二阶线性常微分方程的边值问题的差分法设二阶线性常微分方程的边值问题为(8.2.1)(8.2.2)()()()(),,(),(),y x q x y x f x a x b y a y b αβ''-=<<⎧⎨==⎩其中(),()q x f x 在[,]a b 上连续,且()0q x ≥.用差分法解微分方程边值问题的过程是:(i) 把求解区间[,]a b 分成若干个等距或不等距的小区间,称之为单元;(ii) 构造逼近微分方程边值问题的差分格式. 构造差分格式的方法有差分法, 积分插值法及变分插值法;本节采用差分法构造差分格式;(iii) 讨论差分解存在的唯一性、收敛性及稳定性;最后求解差分方程. 现在来建立相应于二阶线性常微分方程的边值问题(8.2.1), (8.2.2)的差分方程. ( i ) 把区间[,]I a b =N 等分,即得到区间[,]I a b =的一个网格剖分:011N N a x x x x b -=<<<<=,其中分点(0,1,,)i x a ih i N =+=,并称之为网格节点(grid nodes);步长b a Nh -=. ( ii ) 将二阶常微分方程(8.2.2)在节点i x 处离散化:在内部节点(1,2,,1)i x i N =-处用数值微分公式2(4)1112()2()()()(),12i i i i i i i i y x y x y x h y x y x x h ξξ+---+''=-<< (8.2.3)代替方程(8.2.2)中()i y x '',得112()2()()()()()()i i i i i i i y x y x y x q x y x f x R x h +--+-=+,(8.2.4) 其中2(4)()()12i i h R x y ξ=. 当h 充分小时,略去式(8.2.4)中的()i R x ,便得到方程(8.2.1)的近似方程1122i i i i i i y y y q y f h +--+-=,(8.2.5)其中(),()i i i i q q x f f x ==, 11,,i i i y y y +-分别是11(),(),()i i i y x y x y x +-的近似值, 称式(8.2.5)为差分方程(difference equation),而()i R x 称为差分方程(8.2.5)逼近方程(8.2.2)的截断误差(truncation error). 边界条件(8.7.2)写成0,.N y y αβ==(8.2.6)于是方程(8.2.5), (8.2.6)合在一起就是关于1N +个未知量01,,,N y y y ,以及1N +个方程式的线性方程组:2211212211222111(2),(2),1,2,,1,(2).i i i i i N N N N q h y y h f y q h y y h f i N y q h y h f αβ-+----⎧-++=-⎪-++==-⎨⎪-+=-⎩(8.2.7)这个方程组就称为逼近边值问题(8.2.1), (8.2.2)的差分方程组(system of difference equations)或差分格式(difference scheme),写成矩阵形式2211122222223332222222111(2)11(2)11(2)11(2)11(2)N N N N N N y q h h f y q h h f y q h h f y q h h f y q h h f αβ------⎡⎤⎡⎤-+-⎡⎤⎢⎥⎢⎥⎢⎥-+⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥-+=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥-+⎢⎥⎢⎥⎢⎥-+-⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦. (8.2.8)用第2章介绍的解三对角方程组的追赶法求解差分方程组(8.2.7)或(8.2.8), 其解01,,,N y y y 称为边值问题(8.2.1), (8.2.2)的差分解(difference solution). 由于(8.2.5)是用二阶中心差商代替方程(8.2.1)中的二阶微商得到的,所以也称式(8.2.7)为中心差分格式(centered-difference scheme).( iii ) 讨论差分方程组(8.2.7)或(8.2.8)的解是否收敛到边值问题(8.2.1), (8.2.2)的解,估计误差.对于差分方程组(8.2.7),我们自然关心它是否有唯一解;此外,当网格无限加密,或当0h →时,差分解i y 是否收敛到微分方程的解()i y x . 为此介绍下列极值原理:定理8.2.1 (极值原理) 设01,,,N y y y 是给定的一组不全相等的数,设1122(),0,1,2,,i i i i i i i y y y l y q y q i N h +--+=-≥=.(8.2.9)(1) 若()0,1,2,,i l y i N ≥=, 则{}0Ni i y =中非负的最大值只能是0y 或N y ; (2) 若()0,1,2,,i l y i N ≤=, 则{}0Ni i y =中非正的最小值只能是0y 或N y .证 只证(1) ()0i l y ≥的情形,而(2) ()0i l y ≤的情形可类似证明. 用反证法. 记{}0max i i NM y ≤≤=,假设0M ≥, 且在121,,,N y y y -中达到. 因为i y 不全相等,所以总可以找到某个00(11)i i N ≤≤-,使0i y M =,而01i y -和01i y +中至少有一个是小于M 的. 此时0000000011222()2.i i i i i i i i y y y l y q y h M M M q M q M h +--+=--+<-=-因为00,0i q M ≥≥,所以0()0i l y <, 这与假设矛盾,故M 只能是0y 或N y . 证毕!推论 差分方程组(8.2.7)或(8.2.8)的解存在且唯一. 证明 只要证明齐次方程组11202()0,0,1,2,,1,0,0i i i i i i i N y y y l y q y q i N h y y +--+⎧=-=≥=-⎪⎨⎪==⎩ (8.2.10)只有零解就可以了. 由定理8.7.1知,上述齐次方程组的解01,,,N y y y 的非负的最大值和非正的最小值只能是0y 或N y . 而00,0N y y ==,于是0,1,2,,.i y i N == 证毕!利用定理8.2.1还可以证明差分解的收敛性及误差估计. 这里只给出结果: 定理8.2.2 设i y 是差分方程组(8.2.7)的解,而()i y x 是边值问题(8.2.1), (8.2.2)的解()y x 在i x 上的值,其中0,1,,i N =. 则有224()(),96i i i M h y x y b a ε=-≤-(8.2.11)其中(4)4max ()a x bM yx ≤≤=.显然当0h →时,()0i i i y x y ε=-→. 这表明当0h →时,差分方程组(8.2.7)或(8.2.8)的解收敛到原边值问题(8.7.1), (8.7.2)的解.例8.2.1 取步长0.1h =,用差分法解边值问题43,01,(0)(1)0,y y x x y y ''-=≤≤⎧⎨==⎩并将结果与精确解()()2222()3434x xy x e e ee x --=---进行比较.解 因为110N h ==,()4,()3q x f x x ==, 由式(8.2.7)得差分格式221222112289(240.1)30.10.1,(240.1)30.1,2,3,,8,(240.1)30.10.9,i i i i y y y y y x i y y -+⎧-+⨯+=⨯⨯⎪-+⨯+=⨯=⎨⎪-+⨯=⨯⨯⎩0100y y ==, 00.1,1,2,,9i x ih i i =+==, 其结果列于表8.2.1.从表8.2.1可以看出, 差分方法的计算结果的精度还是比较高的. 若要得到更精确的数值解,可用缩小步长h 的方法来实现.8.2.2 一般二阶线性常微分方程边值问题的差分法对一般的二阶微分方程边值问题1212()()()()()(),,()(),()(),y x p x y x q x y x f x a x b y a y a y b y b αααβββ'''++=<<⎧⎪'+=⎨⎪'+=⎩ (8.2.12) 假定其解存在唯一.为求解的近似值,类似于前面的做法,( i ) 把区间[,]I a b =N 等分,即得到区间[,]I a b =的一个网格剖分:011N N a x x x x b -=<<<<=,其中分点(0,1,,)i x a ih i N =+=,步长b a Nh -=. ( ii ) 对式(8.2.12)中的二阶导数仍用数值微分公式2(4)1112()2()()()(),12i i i i i i i iy x y x y x h y x y x x h ξξ+---+''=-<<代替,而对一阶导数,为了保证略去的逼近误差为2()O h ,则用3点数值微分公式;另外为了保证内插,在2个端点所用的3点数值微分公式与内网格点所用的公式不同,即21112012000022212()()()(),,1,2,,1,263()4()()()(),,23()4()3()()(),.23i i i i i i i N N N N N N N N y x y x h y x y x x i N h y x y x y x h y x y x x h y x y x y x h y x y x x h ξξξξξξ+-----⎧-''''=-<<=-⎪⎪-+-⎪''''=+<<⎨⎪⎪-+''''=+<<⎪⎩(8.2.13) 略去误差,并用()i y x 的近似值i y 代替()i y x ,(),(),()i i i i i i p p x q q x f f x ===,便得到差分方程组1111221001221211(2)(),1,2,,1,2(34),2(43),2i i i i i i i i i N N N N p y y y y y q y f i N h hy y y y h y y y y h αααβββ-++---⎧-++-+==-⎪⎪⎪+-+-=⎨⎪⎪+-+=⎪⎩(8.2.14)其中(),(),(),1,2,,1i i i i i i q q x p p x f f x i N ====-, i y 是()i y x 的近似值. 整理得12021222211222121(23)42,(2)2(2)(2)2,1,2,,1,4(32)2.i i i i i i i N N N h y y y h hp y h q y hp y h f i N y y h y h αααααβββββ-+---+-=⎧⎪---++==-⎨⎪-++=⎩ (8.2.15)解差分方程组(8.2.15),便得边值问题(8.2.12)的差分解01,,,N y y y .特别地, 若12121,0,1,0ααββ====,则式(8.2.12)中的边界条件是第一类边值条件:(),();y a y b αβ==此时方程组(7.7.16)为221112112211221211112(2)(2)2(2),(2)2(2)(2)2,2,3,,2,(2)2(2)2(2).i i i i i i i N N N N N N h q y hp y h f hp hp y h q y hp y h f i N hp y h q y h f hp αβ-+------⎧--++=--⎪---++==-⎨⎪---=-+⎩(8.2.16) 方程组(8.2.16)是三对角方程组,用第2章介绍的解三对角方程组的追赶法求解差分方程组(8.2.16),便得边值问题(8.2.12)的差分解01,,,N y y y .( iii ) 讨论差分方程组(8.2.16)的解是否收敛到微分方程的解,估计误差. 这里就不再详细介绍.例8.2.2取步长/16h π=,用差分法求下列边值问题的近似解,并将结果与精确解进行比较.精确解是1()(sin 3cos )10y x x x =-+. 解 因为(20)8N h π=-=,()1,()2,()cos p x q x f x x =-=-=, 由式(8.2.17)得差分格式()()()()()()()()()()()()()2122211222122216(2)216(1)216cos 16216(1)(0.3),216(1)2216(2)216(1)216cos 16,2,3,,6,216(1)2216(2)216cos 7i i i N N y yy y y i i y y πππππππππππππ-+--⎡⎤--⨯-++⨯-⎡⎤⎣⎦⎣⎦=--⨯-⨯-⎡⎤⎣⎦⎡⎤-⨯---⨯-++⨯-⎡⎤⎡⎤⎣⎦⎣⎦⎣⎦==⎡⎤-⨯---⨯-⎡⎤⎣⎦⎣⎦=()()16216(1)(0.1),ππ⎧⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪-+⨯-⨯-⎡⎤⎣⎦⎩080.3,0.1y y =-=-, 00.1,1,2,,9i x ih i i =+==, 其结果列于表8.2.2.8.3 有限元法有限元法(finite element method)是求解微分方程定解问题的有效方法之一,它特别适用在几何、物理上比较复杂的问题. 有限元法首先成功地应用于结构力学和固体力学,以后又应用于流体力学、物理学和其他工程科学. 为简明起见,本节以线性两点边值问题为例介绍有限元法.考虑线性两点边值问题()(8.3.1)(8.3.2)()()()()(),,(),(),Ly p x y x q x y x f x a x b y a y b αβ⎧''⎪=-+=≤≤⎨==⎪⎩其中1()0,()0,C [,]p x q x p a b >≥∈, ,C[,]q f a b ∈.此微分方程描述了长度为b a -的可变交叉截面(表示为()q x )的横梁在应力()p x 和()f x 下的偏差()y x .8.3.1 等价性定理记{}221C [,]()C [,],(),()a b y y y x a b y a y b αβ==∈==, 引进积分()22()()[()]()()2()()d baI y p x y x q x y x f x y x x '=+-⎰. (8.3.3)任取21()C [,]y y x a b =∈,就有一个积分值()I y 与之对应,因此()I y 是一个泛函(functional),即函数的函数. 因为这里是,y y '的二次函数,因此称()I y 为二次泛函.对泛函(8.3.3)有如下变分问题(variation problem):求函数21C [,]y a b ∈,使得对任意21C [,]y a b ∈, 均有()()I y I y ≥, (8.3.4)即()I y 在y 处达到极小, 并称y 为变分问题(8.3.4)的解.可以证明:定理8.3.1(等价性定理) y 是边值问题(8.3.1), (8.3.2)的解的充分必要条件是y 使泛函()I y 在21C [,]a b 上达到极小,即y 是变分问题(8.3.4)在21C [,]a b 上的解. 证 (充分性) 设21C [,]y a b ∈是变分问题()I y 的解;即y 使泛函()I y 在21C [,]a b 上达到极小,证明y 必是边值问题(8.3.1), (8.3.2)的解.设()x η是2C [,]a b 任意一个满足()()0a b ηη==的函数,则函数21()()()C [,]y x y x x a b αη=+∈,其中α为参数. 因为y 使得()I y 达到极小,所以()()I y I y αη+≥,即积分()22()()[()()]()[()()]2()[()()]baI y p x y x x q x y x x f x y x x dxαηαηαηαη''+=+++-+⎰作为α的函数,在0α=处取极小值()I y ,故d()0d I y ααηα=+=. (8.3.5) 计算上式,得()()()()()022(8.d()d d ()[()()]()[()()]2()[()()]d d 2()[()()]()2()[()()]()2()()d 2()()()()()()()()d .bab abaI y p x y x x q x y x x f x y x x x p x y x x x q x y x x x f x x x p x y x x q x y x x f x x x ααααηααηαηαηααηηαηηηηηη===+''=+++-+'''=+++-''=+-⎰⎰⎰3.6)利用分部积分法计算积分[][]()()()d ()()d ()()()()()()()d ()()()d ,bbaab ba abap x y x x x p x y x x p x y x x x p x y x x x p x y x x ηηηηη'''='''=-''=-⎰⎰⎰⎰代入式(8.3.6),得()0(8.3.7)d()2()()()()()()d 0.d b a I y p x y x q x y x f x x x ααηηα'=⎡⎤⎣⎦'+=-+-=⎰因为()x η是任意函数,所以必有()()()()()()0p x y x q x y x f x ''-+-≡. (8.3.8)否则,若在[,]a b 上某点0x 处有()00000()()()()()0p x y x q x y x f x ''-+-≠,不妨设()00000()()()()()0p x y x q x y x f x ''-+->,则由函数的连续性知,在包含0x 的某一区间00[,]a b 上有()()()()()()0p x y x q x y x f x ''-+->.作002200000,[,]\[,],()()(),.x a b a b x x a x b a x b η∈⎧⎪=⎨--≤≤⎪⎩ 显然2()C [,]x a b η∈,且()()0a b ηη==,但()()()()()()()d ba p x y x q x y x f x x x η⎡⎤''-+-⎢⎥⎣⎦⎰ ()00()()()()()()d 0b a p x y x q x y x f x x x η⎡⎤''=-+->⎢⎥⎣⎦⎰,这与式(8.3.7)矛盾. 于是式(8.3.8)成立,即变分问题(8.3.4)的解y 满足微分方程(8.3.1), 且(),()y a y b αβ==故它是边值问题(8.3.1), (8.3.2)的解.(必要性) 设()y y x =是边值问题(8.3.1), (8.3.2)的解,证明y 是变分问题(8.3.4)的解;即:y 使泛函()I y 在21C [,]a b 上达到极小.因为()y y x =满足方程(8.3.1),所以()()()()()()0p x y x q x y x f x ''-+≡.设任意21()C [,]y y x a b =∈,则函数()()()x y x y x η=-满足条件()()0a b ηη==,且2()C [,]x a b η∈. 于是()()[]()222222()()()()()[()()]()[()()]2()[()()]d ()[()]()[()]2()()d 2()()()()()()()()d ()[()]()[()]d baba baaI y I y I y I y p x y x x q x y x x f x y x x x p x y x q x y x f x y x xp x y x x q x y x x f x x x p x x q x x xηηηηηηηηη-=+-''=+++-+'-+-''=+-++⎰⎰⎰()()()22222()()()()()()d ()[()]()[()]d ()[()]()[()]d .bb ba a bap x y x q x y x f x x x p x x q x x xp x x q x x x ηηηηη⎡⎤'''=--+++⎢⎥⎣⎦'=+⎰⎰⎰⎰因为()0,()0p x q x >≥,所以当()0x η≠时,()22()[()]()[()]d 0bap x x q x x x ηη'+>⎰, 即()()0I y I y ->.只有当()0x η≡时,()()0I y I y -=. 这说明y 使泛函()I y 在21C [,]a b 上达到极小. 证毕!定理8.3.2 边值问题(8.3.1), (8.3.2)存在唯一解.证明 用反证法. 若12(),()y x y x 都是边值问题(8.3.1), (8.3.2)的解,且不相等,则由定理8.3.1知,它们都使泛函()I y 在21C [,]a b 上达到极小,因而12()()I y I y > 且 21()()I y I y >,矛盾!因此边值问题(8.3.1), (8.3.2)的解是唯一的.由边值问题解的唯一性,不难推出边值问题(8.3.1), (8.3.2)解的存在性(留给读者自行推导).8.3.2 有限元法等价性定理说明,边值问题(8.3.1), (8.3.2)的解可化为变分问题(8.3.4)的求解问题. 有限元法就是求变分问题近似解的一种有效方法. 下面给出其解题过程:第1步 对求解区间进行网格剖分01,i n a x x x x b =<<<<<=区间1[,]i i i I x x -=称为单元,长度1(1,2,,)i i i h x x i n -=-=称为步长,1max i i nh h ≤≤=. 若(1,2,,)i h h i n ==,则称上述网格剖分为均匀剖分.给定剖分后,泛函(8.3.3)可以写成()22()()[()]()()2()()d baI y p x y x q x y x f x y x x '=+-⎰()12211()[()]()()2()()d i i nnx i x i i p x y x q x y x f x y x xS -=='=+-∑∑⎰记. (8.3.9)第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)梯形法是一种更加准确的数值积分方法,它利用多个梯形来逼近曲线下的面积。
第八章 数值积分习题8-12.已知函数表x 1.8 2.0 2.2 2.4 2.6f(x) 3.12014 4.42569 6.042418.0301410.46675试用牛顿—柯特斯公式计算4.推导n=3时牛顿—柯特斯公式,并推导误差公式。
习题8-21.分别用复化梯形公式和复化辛普生公式计算积分,并比较结果。
x00.06250.1250.18750.250.31250.37500.0156100.0311280.0464670.615380.0762630.0905660.43750.50.56250.6250.68750.750.81250.10438 0.1176470.1303170.1423490.1537120.1643840.1743500.8750.937510.183607 0.1921540.23.用复化梯形公式求 n=5并估计误差。
解:22x sin x sin x1/(1+ sin x) 00010.20.19866930.0.946950.9620292 0.40.38941830.15164660.8683219 0.50.47942550.22984880.8131081 0.60.56464250.31882120.75825290.80.71735610.51459980.66024041.00.84147100.70807340.5854549习题8-42.n+1个节点的高斯型积分公式的代数精度是多少?会超过2n+1次吗?为什么?n+1个节点的高斯型积分公式的代数精度是2n+1次,不能再增高,因为n+1个节点的高斯型积分公式只有2n+2个自由度,2n+1次多项式恰有2n+2个系数需待定。
3.以二点积分公式为例,说明即使把积分上下限也作为待定系数,也无法构造出具有2n次代数精度的积分公式。
(n为节点个数)上下限必须相等,说明无法构造出一个积分公式达到4 次代数精度。
MATLAB教程第8章MATLAB数值积分与微分1.数值积分数值积分是计算函数的定积分值的近似方法。
在MATLAB中,有几个函数可以帮助我们进行数值积分。
(1) quad函数quad函数是MATLAB中用于计算一维定积分的常用函数。
它的语法如下:I = quad(fun, a, b)其中,fun是被积函数的句柄,a和b分别是积分区间的下界和上界,I是近似的积分值。
例如,我们可以计算函数y=x^2在区间[0,1]内的积分值:a=0;b=1;I = quad(fun, a, b);disp(I);(2) integral函数integral函数是在MATLAB R2024a版本引入的新函数,它提供了比quad函数更稳定和准确的积分计算。
integral函数的语法如下:I = integral(fun, a, b)其中fun、a和b的含义与quad函数相同。
例如,我们可以使用integral函数计算函数y = x^2在区间[0, 1]内的积分值:a=0;b=1;I = integral(fun, a, b);disp(I);2.数值微分数值微分是计算函数导数的近似方法。
在MATLAB中,可以使用diff 函数计算函数的导数。
(1) diff函数diff函数用于计算函数的导数。
它的语法如下:derivative = diff(fun, x)其中,fun是需要计算导数的函数,x是自变量。
例如,我们可以计算函数y=x^2的导数:syms x;fun = x^2;derivative = diff(fun, x);disp(derivative);(2) gradient函数gradient函数可以计算多变量函数的梯度。
它的语法如下:[g1, g2, ..., gn] = gradient(fun, x1, x2, ..., xn)其中fun是需要计算梯度的函数,x1, x2, ..., xn是自变量。
例如,我们可以计算函数f=x^2+y^2的梯度:syms x y;fun = x^2 + y^2;[gx, gy] = gradient(fun, x, y);disp(gx);disp(gy);以上是MATLAB中进行数值积分和微分的基本方法和函数。