积分方程的数值计算技巧

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验七积分方程的数值计算方法

1. 实验描述

计算

32

sin(4)x

x e dx

-

⎰定积分的近似值,起始容差00.00001

ε=

1.用组合梯形公式M=10计算。

2.用组合辛普生公式M=5计算。

3.用龙贝格积分计算。

4.用自适应积分方法计算。

2. 实验内容

1. 用组合梯形公式M=10计算。

图1. 组合梯形算法流程图

将积分区间[],a b划分为宽度为()/

=-的M个子区间,再将各区间的面积

h b a M

求和即可得到近似面积。

2.用组合辛普生公式M=5计算。Array

图2. 组合辛普森算法流程图

将积分区间[],a b划分为宽度为()/2

h b a M

=-的2M个子区间,再由辛普森公式将各区间的面积求和即可得到近似面积。

3.用龙贝格积分计算。

图3.龙贝格积分算法流程图

①.由递归梯形公式序列得到递归辛普森序列序列。

②.由递归辛普森序列序列得到递归布尔公式序列。

③.通过理查森改进提高误差项的阶数。

4.用自适应积分方法计算

图4.自适应积分算法流程图

在辛普森公式基础上,将区间再进行划分,即为自适应积分。

3. 实验结果及分析

真实值S = 0.19971466216144

1. 用组合梯形公式M=10计算。

面积近似值S1 =0.16965032127666。误差error1=0.03006434088479。

2.用组合辛普森公式M=5计算

4.660686426147481*10-。面积近似值S2 =0.19966805529718。误差error2=5 3.用龙贝格积分计算。

表1.龙贝格积分表

面积近似值S3 =0.19971378242654。误差error3=5

2.254986251026825*10-。

4.用自适应积分方法计算

面积近似值S4 =0.19971391278871。误差error4=6

3.238553837777504*10-。

4. 结论

自适应计分方法和龙贝格积分法都可以得到较高的精确度。

组合梯形和组合辛普森可以增大M值,得到较高的精确度。

附件(代码)

1.

f=inline('sin(4*x)*exp(-2*x)','x');%定义函数

A=0;t=0;S=0;

for k=1:9

t=k*0.3;

A=A+0.3*feval(f,t);

end

S=A+0.15*(feval(f,0)+feval(f,3))%组合梯形的近似值

RS=int(sin(4*x)*exp(-2*x),0,3)%真实值

error=RS-S%真实值与近似值的误差

2.

f=inline('sin(4*x)*exp(-2*x)','x');%定义函数

S=0;X=zeros(1,11);h=0.3;

for j=1:11

X(j)=(j-1)*h;

end

for k=1:5

S=S+h/3*(feval(f,X(2*k-1))+4*feval(f,X(2*k))+feval(f,X(2*k+1))); end

RS=int(sin(4*x)*exp(-2*x),0,3);%真实值

S

error=RS-S%真实值与近似值的误差

3.

function [R,quad,err,h]=romber(f,a,b,n,tol)

%INPUT-f is the intergrand input as astring 'f'

% -a and b are upper and lower limits of interation

% -n is the maxium number of rows in the table

% -tol is the tolerance

%OUTPT-R is the Romberg table

% -quad is the quadrature value

% -err is the error estimate

% -h is the smallest step size uesd

M=1;

h=b-a;

err=1;

J=0;

R=zeros(4,4);

R(1,1)=h*(feval(f,a)+feval(f,b))/2;

while((err>tol)&(J

J=J+1;

h=h/2;

s=0;

for p=1:M

x=a+h*(2*p-1);

s=s+feval(f,x);

end

R(J+1,1)=R(J,1)/2+h*s;

M=2*M;

for K=1:J

R(J+1,K+1)=R(J+1,K)+(R(J+1,K)-R(J,K))/(4^K-1);

end

err=abs(R(J,J)-R(J+1,K+1));

end

quad=R(J+1,J+1);

4.

function Z=srule(f,a0,b0,tol0)

%INPUT-f is the intergrand input as astring 'f'

% -a0 and b0 are upper and lower limits of intergration % -tol0 is the tolerance

%OUTPUT-Z is a 1x6vector [a0 b0 S S2 err tol1]

h=(b0-a0)/2;

相关文档
最新文档