书签 分享 收藏 举报 版权申诉 / 39
上传文档赚钱

类型第十讲-数值积分和微分方程数值解课件.ppt

  • 上传人(卖家):ziliao2023
  • 文档编号:6017120
  • 上传时间:2023-05-22
  • 格式:PPT
  • 页数:39
  • 大小:342.50KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第十讲-数值积分和微分方程数值解课件.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    第十 数值 积分 微分方程 课件
    资源描述:

    1、第十讲第十讲 数值积分和微分方程数值积分和微分方程数值解数值解一数值定积分求面积一数值定积分求面积【例例5-4-1】用数值积分法求由 ,y=0,x=0与x=10围成的图形面积,并讨论步长和积分方法对精度的影响。解:原理 用矩形法和梯形法分别求数值积分并作比较,步长的变化用循环语句实现。MATLAB中的定积分有专门的函数QUAD,QUADL等实现。为了弄清原理,我们先用直接编程的方法来计算,然后再介绍定积分函数及其调用方法。设x向量的长度取为n,即将积分区间分为n-1段,各段长度为 。算出各点的,则矩形法数值积分公式为:2115yx(1,2,1)ix in(1,2,1)iy in11niiisy

    2、x矩形和梯形定积分公式 梯形法的公式为:比较两个公式,它们之间的差别只是 。在MATLAB中,把向量中各元素叠加的命令是sum。把向量中各元素按梯形法叠加的命令是trapz。梯形法的几何意义是把被积分的函数的各计算点以直线相联,形成许多窄长梯形条,然后叠加,我们把两种算法都编入同一个程序进行比较。11111222nniiniiiiiyyyyqxyx10.5nyy求面积的数值积分程序exn541for dx=2,1,0.5,0.1%设不同步长x=0:.1:10;y=-x.*x+115;%取较密的函数样本 plot(x,y),hold on%画出被积曲线并保持 x1=0:dx:10;y1=-x1.

    3、*x1+115;%求取样点上的y1%用矩形(欧拉)法求积分,注意末尾去掉一个点 n=length(x1);s=sum(y1(1:n-1)*dx;q=trapz(y1)*dx;%用梯形法求积分 stairs(x1,y1);%画出欧拉法的积分区域 hold on;plot(x1,y1);%画出梯形法的积分区域 dx,s,q,pause(1),hold off;end 程序exn541运行结果程序运行的结果如下:步长dx 矩形法解s 梯形法解q2 9108101 865815 .5841.25816.25.1821.65816.65 用解析法求出的精确解为2450/3=816.6666.。dx=2时

    4、矩形法和梯形法的积分面积见图5-4-1.。在曲线的切线斜率为负的情况下,矩形法的积分结果一定偏大,梯形法是由各采样点联线包围的面积,在曲线曲率为负(上凸)时,其积分结果一定偏小,因此精确解在这两者之间。由这结果也能看出,在步长相同时,梯形法的精度比矩形法高。矩形法数字积分的演示程序rsums MATLAB中有一个矩形法数字积分的演示程序rsums,可以作一个对比。键入rsums(115-x.2,0,10)就得到右图。图中表示了被积函数的曲线和被步长分割的小区间,并按各区间中点的函数值构成了各个窄矩形面积。用鼠标拖动图下方的滑尺可以改变步长的值,图的上方显示的是这些矩形面积叠加的结果。02468

    5、10020406080100115-x.2 :816.99218816MATLAB内的数值定积分函数 在实际工作中,用MATLAB中的定积分求面积的函数quad和quadl可以得到比自编程序更高的精度,因为quad函数用的是辛普生法,即把被积函数用二次曲线逼近的算法,而quadl函数采用了更高阶的逼近方法。它们的调用格式如下:Q=QUADL(FUN,A,B,TOL)其中,FUN是表示被积函数的字符串,A是积分下限,B是积分上限。TOL是规定计算的容差,其默认值为1e-6 例如,键入S=quad(-x.*x+115,0,10)得到S=8.166666666666666e+002二求两条曲线所围图

    6、形的面积二求两条曲线所围图形的面积【例例5-4-2】。设计算区间0,4上两曲线所围面积。解:原理:先画出图形,dx=input(dx=);x=0:dx:4;f=exp(-(x-2).2.*cos(pi*x);g=4*cos(x-2);plot(x,f,x,g,:r)2(2)cos(),()4cos(2)xxf xeg xx得到右图。从图上看到,其中既有f(x)g(x)的区域,也有f(x)g(x)的区域,求两条曲线所围图形的面积求两条曲线所围图形的面积(1)若要求两曲线所围总面积(不管正负),则可加一条语句 s=trapz(abs(f-g)*dx,在dx=0.001时,得到s=6.4774399

    7、6919702若要求两曲线所围的f(x)g(x)的正面积,则需要一定的技巧.方法一。先求出交点x1,再规定积分上下限。x1=fzero(exp(-(x-2).2.*cos(pi*x)-4*cos(x-2),1)%把积分限设定为0 x1,求出积分结果再乘以2:x=0:dx:x1;f=exp(-(x-2).2.*cos(pi*x);g=4*cos(x-2);s1=2*trapz(abs(f-g)*dx在设定dx=0.001时,得到s1=2.30330486000857求两条曲线所围图形的面积求两条曲线所围图形的面积(2)方法二。调用MATLAB中求面积函数quad。这里的关键是建立一个函数文件,把

    8、e1=f(x)-g(x)0的部分取出来。利用逻辑算式(e10),它在e10处取值为1,在e10)与e1作元素群乘法,正的e1将全部保留,而负的e1就全部为零。因此编出子程序exn542f.m如下:function e=exn542f(x)e1=exp(-(x-2).2.*cos(pi*x)-4*cos(x-2);e=(e1=0).*e1;将它存入工作目录下。于是求此积分的主程序语句为:s2=quad(exn542f,0,4)得到的结果为:s2=2.30330244952618三求曲线长度三求曲线长度【例【例5-4-3】设曲线方程及定义域为:用计算机做如下工作:(a)按给定区间画出曲线,再按n=

    9、2,4,8份分割并画出割线。(b)求这些线段长度之和,作为弧长的近似值。(c)用积分来估算弧长,并与用割线计算的结果比较。解:原理:先按分区间算割线长度的方法编程,然后令分段数不断增加求得其精密的结果,最后可以与解析结果进行比较。因此编程应该具有普遍性,能由用户设定段数,并在任何分段数下算出结果。2()1,11f xxx 求曲线长度的程序exn543n=input(分段数目n=),%输入分段数目x=linspace(-1,1,n+1);%设定x向量y=sqrt(1-x.2);%求y向量plot(x,y),hold on%绘图并保持Dx=diff(x);%求各段割线的x方向长度%x向量长度为n+

    10、1,Dx是相邻x元素的差,其元素数为nDy=diff(y);%Dy是相邻两个y元素的差Ln=sqrt(Dx.2+Dy.2);%求各割线长度L=sum(Ln)%求n段割线的总长度程序exn543的运行结果 程序运行后得到图5-32,在不同的n下,其数值结果为:n=2,L=2.82842712474619 n=4,L=3.03527618041008 n=8,L=3.10449606777484 n=1000L=3.14156635621648 我们已经可以大致猜测出它将趋向于,精确的极限值可用下列符号数学语句导出。x=syms x,y=sqrt(1-x2),L=int(sqrt(1+diff(y

    11、)2),-1,1)这个程序其实有相当的通用性,不同的被积函数,只要改变其中的一条函数赋值语句,并相应地改变自变量的赋值范围就行了。四求旋转体体积四求旋转体体积【例【例5-4-4】求曲线与x轴所围成的图形分别绕x轴和y轴旋转所成的旋转体的体积。解:原理:由于旋转对称性,在圆周方向的计算只要乘以圆周长度,不需要积分运算。因此旋转体的体积计算实际上就退化单变量求积分。程序如下:%先画出平面图形 dx=input(dx=);x=0:dx:pi;g=x.*sin(x).2;plot(x,g)求筒形旋转体体积求筒形旋转体体积(a)。绕。绕y轴体积轴体积用薄圆柱筒形体作为微分体积单元,其半径为x,厚度为dx

    12、,高度为g(x),其立体图见图5-34左,此筒形单元的截面积为g*dx,薄环的微体积为:dv=2*pi*x*dx*g,旋转体的体积为微分体积单元沿x方向的和,键入:v=trapz(2*pi*x.*g*dx)得:v=27.53489480036561求盘形旋转体体积求盘形旋转体体积(b)。绕。绕x轴体积轴体积它绕x轴旋转形成一个薄圆盘,其厚度为dx,而半径为g(x)。所以此薄盘体的微体积为:dv1=pi*g.2.*dx,旋转体的体积为微分体积单元沿x方向的和:v1=trapz(pi*g.2*dx)得:v1=9.86294784774497用符号数学工具箱的程序 精确的理论结果可用符号数学工具箱函

    13、数求得如下:syms x,g=x*sin(x)2;v1t=int(pi*g2,0,pi),double(v1t)v1t=1/8*pi4-15/64*pi2 ans=9.86294784774499 大多数的定积分并不会有理论的解析结果,所以这样的验证一般是不必要的。五多重积分五多重积分【例【例5-4-5】计算二重积分积分区域为由x=1,y=x及y=0所围成的闭合区域.22xydxdy00.5100.51y=xy=0 x=0解:原理 先画出积分区域,在任意x处取出沿y向的一个单元条,其宽度为dx,而高度为y=x,所以y是一个数组。其上的被积函数f也是一个数组,沿y向的积分可用trapz(f)完成

    14、,得到s1(k),它是随x而变的。用for循环求出所有的s1(k)。再沿x方向用trapz函数积分。MATLAB的数组运算可以代替一个for循环,所以二重积分只用了一组for语句。二重积分的MATLAB程序exn545clear,format compactfill(0,1,1,0,0,0,1,0,y),hold%画出积分区域fill(0.55,0.6,0.6,0.55,0.55,0,0,0.6,0.55,0,r)%画出单元条dx=input(步长dx=);dy=dx;x=0:dx:1;lx=length(x);for k=1:lx x1=(k-1)*dx;y1=0:dy:x1;f=x1.2+

    15、y1.2;s1(k)=trapz(f)*dy;ends=trapz(s1)*dx00.5100.51y=xy=0 x=0用MATLAB函数求二重积分(1)运行的数值结果在步长dx=0.01时为:s=0.3334另一种方法是利用MATLAB中现成的二重积分函数dblquad,其调用格式为:Q=DBLQUAD(FUN,XMIN,XMAX,YMIN,YMAX,TOL)其中FUN是x,y的函数,接下来的四个变元是四个积分限,其中前两个对应于x,后两个对应于y,TOL为允许误差(默认值为1.e-16)。这四个积分限只许用常数代入,可见dblquad函数只能用于积分区域为矩形的情况。解决的方法之一是仍用矩

    16、形区积分,但把不属于积分区域内的函数置成零,其方法与上题有些类似。用MATLAB函数求二重积分(2)在图示的积分区域中,对角线左上方的白色区域满足y-x0,逻辑式(y-x Q=dblquad(x.2+y.2).*(y-x0),0,1,0,1)得到Q=0.33332245532028三重积分的计算【例【例5-4-6】计算三重积分积分区域为由x=1,y=x,z=xy及三个坐标面所围成的区域.解:方法 先画出积分区域图5-36,这个区域在xy平面上的投影与图5-35相仿,只是增加了z方向的高度,从而构成了一个三维的实体。23xy z dxdydz 先画出积分区域。这个区域在xy平面上的投影上例相仿,

    17、只是增加了z方向的高度,从而构成了一个三维的实体。程序exn546a用来画这个立体空间。x=1,y=x都是沿z向的柱面,本题还用了plot3命令以画出与z轴平行的辅助平面。顶面则是由z=xy构成的二次曲面,用mesh函数容易画出。难点在于此区域有效的xy底面是一个三角形,不易用自变量网格表示。为了解决这个问题,采取了上题中对因变量乘以逻辑式的处理方法。将z乘以(y-x0)就可使y=x直线左上方所有z值都变成0。画出三维图后可以靠鼠标来拖动三维图形旋转,以得到一个最好的视觉效果。绘制积分区域的程序exn546a%本程序给出由x=1,y=x,z=xy三个曲面围成的积分区域.x,y=meshgrid

    18、(0:.05:1);%确定矩形定义域网格 z1=x.*y.*(y-x syms x,y=x2*atan(x),Z=int(y)得到 y=x2*atan(x)Z=1/3*x3*atan(x)-1/6*x2+1/6*log(x2+1)2arctanxxdx符号数学求不定积分例例 548(b)例5-4-8(b)。解下列积分,画出解的曲线。解:程序为 syms x Y=int(cos(x)2+sin(x)系统运行的结果为:Y=1/2*cos(x)*sin(x)+1/2*x-cos(x)+C 代入边界条件,得:C=1-(1/2*cos(pi)*sin(pi)+1/2*pi-cos(pi)结果是C=-pi

    19、/22cossin,()1yxx dxy符号数学求不定积分例例 548(c)例5-4-8(c)。求下列积分。解:程序为:syms x,Y=int(exp(-x2)%不定积分:Y1=int(exp(-x2),0,1)%定积分:运行结果为:Y=1/2*pi(1/2)*erf(x)Y1=1/2*erf(1)*pi(1/2)210 xedx【应用篇中与本节相关的例题应用篇中与本节相关的例题】【例例6-5-1】和例6-5-2磁场计算由元电流生成的磁场积分,得到全部线圈产生的磁场。【例例7-1-3】导弹跟踪目标的轨迹,根据x,y两个方向的速度积分得出轨迹。【例例7-1-5】有空气阻力下的抛射体轨迹,是微分

    20、方程的数字积分求解问题。【例例7-2-2】懸臂梁的桡度计算,这是纯粹的两次积分问题。【例例7-2-3】简支梁的桡度计算,也是纯粹的两次积分问题。【例例7-3-1】,【例例7-3-2】,一自由度自由振动和强迫振动,都是常微分方程求解的典型问题。这两道题用的是解析解,只是用数学软件来求根和绘制波形。【应用篇中与本节相关的例题应用篇中与本节相关的例题】【例例7-3-3】两自由度振动,是四阶的矩阵微分方程的问题。本题对于高阶矩阵指数采用了数值解,并且用矩阵对角化的方法,对振动的模态作了分解和分析。【例例9-1-2】任意高阶连续线性系统冲击响应的计算,它实际上是求常系数线性微分方程的解析解,可归结为代数问题,用MATLAB多项式函数库来求解。【例例9-1-4】多个放大器串联的脉冲响应仍然属于常系数线性微分方程在初始条件下的解,本题的特殊性在于遇到了重根。要在理论上解决这个问题,相当麻烦,但是用MATLAB作一下数值处理,就可以非常方便地求解。从这里可以看出工程师和数学家处理数学问题的区别。【例例9-4-1】在电磁场课程中常常遇到偏微分方程,本例给出了它的数值算法。这种方法对于电磁场的计算有一定的普遍意义。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第十讲-数值积分和微分方程数值解课件.ppt
    链接地址:https://www.163wenku.com/p-6017120.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库