梯形法数值积分.doc
文本预览下载声明
《MATLAB 程序设计实践》课程考核
一、编程实现以下科学计算算法,并举一例应用之。(参考书籍《精通MALAB科学计算》,王正林等著,电子工业出版社,2009年)
“矩形法、梯形法数值积分”
1.梯形法数值积分
A.算法说明:
梯形法数值积分采用的梯形公式是最简单的数值积分公式,函数在区间[a,b]上计算梯形法数值积分表达式为:
由于用梯形公式来求积分十分粗糙,误差也比较大,后来改进后提出了复合梯形公式:,其中,n为积分区间划分的个数;h为积分步长。
在MATLAB中编程实现的复合梯形公式的函数为:Combine Traprl.
功能:复合梯形公式求函数的数值积分。
调用格式:[I,step]=CombineTraprl(f,a,b,eps).
其中,f为函数名;
a为积分下限;
b为积分上限;
eps为积分精度;
I为积分值;
Step为积分划分的区间个数
B.流程图
开始
开始
abs ( I2 –I1 ) eps
n=n+1;
h=(b-a) / n;
I1=I2;
I2=0;
for i=0:n-1
x=a+h*i;
x1=x+h;
I2=I2+( h/2 ) * ( subs ( sym ( f ) , findsym ( sym ( f ) ) , x ) +subs (sym ( f ) , findsym ( sym ( f ) ), x1) );
I=I2;
Step=n;
结束
是
否
否
n=1;
h=(b-a)/2;
I1=0;
I2= ( subs (sym ( if ) , findsym ( sym ( f ) ) , a ) + subs ( sym ( f ), findsym ( sym ( f ) ) , b ) ) / h;
是
C.复合梯形公式的MATLAB代码:
function[I,step]=CombineTraprl(f,a,b,eps)
%复合梯形公式求函数f在区间[a,b]上的定积分
%函数名:f
%积分下限:a
%积分上限:b
%积分精度:eps
%积分值:I
%积分划分的子区间个数:step
if(nargin==3)
eps=1.0e-4; %默认精度为0.0001
end
n=1;
h=(b-a)/2;
I1=0;
I2=(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsym(sym(f)),b))/h;
while abs(I2-I1)eps
n=n+1;
h=(b-a)/n;
I1=I2;
I2=0;
for i=0:n-1 %第n次的复合梯形公式积分
x=a+h*i; %i=0 和n-1时,分别代表积分区间的左右端点
x1=x+h;
I2=I2+(h/2)*(subs(sym(f),findsym(sym(f)),x)+subs(sym(f),findsym(sym(f)),x1));
end
end
I=I2;
step=n;
D.应用举例:
复合梯形法求数值积分应用举例,利用复合梯形法计算定积分
流程图
调用函数
调用函数CombineTraprl(f,a,b,eps)
f= 1/(x^2-1)
a=2;
b=4
结束
开始
b. 原程序代码:
[q,s]=CombineTraprl(1/(x^2-1),2,4) %精度为默认的10-4
结果
[q,s]=CombineTraprl(1/(x^2-1),2,4,1.0e-6) %精度为10-6
结果:
所以从复合梯形公式可以得出0.2939
2.矩形法数值积分的源程序
function[I,step]=CombineTraprl(f,a,b,eps)
% 复合矩形公式求函数f在区间[a,b]上的定积分
%函数名:f
%积分下限:a
%积分上限:b
%积分精度:eps
%积分值:I
%积分划分的子区间个数:step
if(nargin==3)
eps=1.0e-4; %默认精度为0.0001
end
n=1;
h=b-a;
I1=0;
I2=(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsym(sym(f)),b))/h;
while abs(I2-I1)eps
n=n+1;
h=(b-a)/n;
I1=I2;
I2=0;
for i=0:n-1
显示全部