您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > 变步长的梯形积分方法的应用
CENTRALSOUTHUNIVERSITY数值分析实验报告变步长的梯形积分方法的应用一、问题背景实际问题当中常常需要计算积分,有些数值方法,如微分方程和积分方程的求解,也都和积分计算相关联。依据人们所熟知的微积分基本定理,对于积分dxxfIab,只要找到被积分函数xf的原函数xF,便有下列牛顿-莱布尼茨(Newton-Leibniz)公式:aFbFdxxfba.但实际使用这种求积分方法往往有困难,因为大量的被积函数,诸如0sinxxx,2xe等,其原函数不能用初等函数表达,故不能用上述公式计算。即使能求得原函数的积分,有时计算也十分困难。例如对于被积函数611xxf,其原函数CxxxxxxxxF1313ln3411arctan61arctan3122,计算aF,bF仍然很困难,另外,当xf是由测量或数值计算给出的一张数据表时,牛顿-莱布尼茨公式也不能直接运用。因此有必要研究积分的数值计算问题。二、数学模型由于牛顿-科特斯积分公式在8n时不具有稳定性,故不能通过提高阶数的方法来提高求积精度。为了提高精度通常可以把积分区间划分成若干的子区间(通常是等分),再在每个子区间上用低阶求积公式。这种方法称为复合求积法。复合梯形法虽然方法简单,但是却不能估计积分精度,这有时候是很不方便的。要想控制积分精度,可以采用如下的方法,设积分区间已经划分为n个子区间,这时再把区间划分更细,给出新的积分结果,如果前后两次积分的差比给定的误差容限小的话,则停止细华否则继续增加积分区间。这种方法原理很简单也容易实现,但是实际计算中一般采用的比较少,因为这种方法比较机械效率不是太高,实际上采用比较多的通常是Romberg方法。三、算法及流程给定义误差容限小量TOL,对于dxxfba,有复合梯形公式1122nkkbaxfbfafhdxxf如果前后两次的划分的积分计算结果大于给定的误差TOL,则增加划分区间,如果满足精度,则停止细化,并输出结果。MATLAB实现过程:%可控精度复合梯形法计算积分问题function[jifen,num]=kong_tixing(a,b,tol)%a,b为积分区间%tol为积分精度,默认为10的-3次方if(nargin==3)eps=1.0e-3;endn=1;h=(b-a)/2;int_1=0;%调用方程函数int_2=(kong_t_f(a)+kong_t_f(b))/h;%如果前后两次误差小于给定的精度,则停止细化积分区间whileabs(int_2-int_1)toln=n+1;h=(b-a)/n;int_1=int_2;int_2=0;fori=0:n-1x=a+h*i;x1=x+h;int_2=int_2+(h/2)*(kong_t_f(x)+kong_t_f(x1));endend%积分结果jifen=int_2;%区间划分细度num=n;将文件以文件名kong_tixing.m保存。四、计算结果及分析计算定积分dxeTx102要求输出精度为10-4。打开Editor编写如下程序,并将文件以文件名kong_t_f.m保存。functionf=kong_t_f(x)f=exp(-x^2);打开Editor编写如下程序,并将文件以文件名kong_t_main.m保存。%可控精度的梯形积分方法%精度为0.1[s_1,num_1]=kong_tixing(0,1,1e-1)%精度为0.01[s_2,num_2]=kong_tixing(0,1,1e-4)%精度为0.001[s_1,num_3]=kong_tixing(0,1,1e-7)%画出积分图形x=0:0.02:1;y=exp(-x.^2);area(x,y)在MATLAB命令窗口输入输入kong_t_main点击Enter键后得到:s_1=0.739986475276682num_1=3s_2=0.746398247893441num_2=12s_1=0.746818876175303num_3=108从输出的结果可以看出,要达到10-4精度,需要把区间划分为12个子区间,而要达到10-7精度,则要把区间划分为108个子区间。事实上,函数的积分总区间跨度不是很大,所以在划分为108个子区间后已经是对函数取点很密集了。下图给出了积分的几何意义,积分的结果即图中蓝色区域面积,从输出结果可以看出蓝色区域面积约为0.746818876175303。
本文标题:变步长的梯形积分方法的应用
链接地址:https://www.777doc.com/doc-2569650 .html