matlab数值积分实例

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

数值积分 1.求积分dx e x ⎰--112,在积分区间中,点与点之间的间隔取为0.1.

解:

(一)用MATBLE 编写复化梯形求积函数:

function I=T_quad(x,y)

n=length(x);m=length(y);

if n ~=m

error

end

h=(x(n)-x(1))/(n-1);a=[1 2*ones(1,n-2) 1];

I =h/2*sum(a.*y);

输入:

x=-1:0.1:1;y=exp(-x.^2);

I =T_quad(x,y)

运行得到:

I =

1.4924

(二)用MATBL 编写复化Simpson 求积函数:

function I=S_quad(x,y);

n=length(x);m=length(y);

if n ~=m

error

end

if rem(n-1,2) ~=0

I=T_quad(x,y);

return;

end

N=(n-1)/2;h=(x(n)-x(1))/N;a=zeros(1,n);

for k=1:N

a(2*k-1)=a(2*k-1)+1;a(2*k)=a(2*k)+4;

a(2*k+1)=a(2*k+1)+1;

end

I=h/6*sum(a.*y);

输入:

x= -1:0.1:1;y=exp(-x.^2);

I= S_quad(x,y)

运行得到:

I =

1.4936

(三)用MATBL 编写复化Cotes 求积函数:

function I=C_quad(x,y);

n=length(x);m=length(y);

if n ~=m

error

end

if rem(n-1,4) ~=0

I=S_quad(x,y);

return

end

N=(n-1)/4;h=(x(n)-x(1))/N;a=zeros(1,n);

for k=1:N

a(4*k-3)=a(4*k-3)+7;

a(4*k-2)=a(4*k-2)+32;

a(4*k-1)=a(4*k-1)+12;

a(4*k)=a(4*k)+32;

a(4*k+1)=a(4*k+1)+7;

end

I=h/90*sum(a.*y);

输入:

x= -1:0.1:1;y=exp(-x.^2);

I= C_quad(x,y)

运行得:

I =

1.4936

(四)利用trapz()函数,采用复化梯形公式求积分

输入:

x=-1:0.1:1;

y=exp(-x.^2);

I=trapz(x,y)

输出:

I =

1.4924

2. 求积分dx e x ⎰--1

12

,取精度要求510-=ε (一)用MATLAB 编写自适应步长的梯形公式

function I=T_quad_iter(fun,a,b,ep)

if nargin<4 ep=1e-5;

end

N=1;

h=b-a

T=h/2*(feval(fun,a)+feval(fun,b));

while 1

h=h/2;I=T/2;

for k=1:N

I=I+h*feval(fun,a+(2*k-1)*h);

end

if abs(I-T)

end

N=2*N;

T=I

End

输入:

I=T_quad_iter(@(x)exp(-x.^2),-1,1)

输出:

I =

1.4936

(二)用MATLAB编写自适应步长的Simpson公式function I=S_quad_iter(fun,a,b,ep)

if nargin<4 ep=1e-5

end

N=1;h=b-a

T1=h/2*(feval(fun,a)+feval(fun,b));

S0=T1;

while 1

h=h/2;T2=T1/2;

for k=1:N

T2=T2+h*feval(fun,a+(2*k-1)*h)

end

I=(4*T2-T1)/3;

if abs(I-S0)

end

N=2*N;T1=T2;

S0=I

End

输入:

I=S_quad_iter(@(x) exp(-x.^2),-1,-1)

输出:

I =

1.4936

(三)用quad()函数,采用自适应步长的Simposon求积分输入:

I=quad(@(x) exp(-x.^2) ,-1,1)

输出:

I =

1.4936

相关文档
最新文档