matlab实验报告

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

Matlab实验报告

——定积分的近似计算

学生姓名:

学号:

专业:数学与应用数学专业

数学实验报告

实验序号:1001114030 日期:2012年10月20日

班级应一姓名陈璐学号1001114030

实验名称:定积分的近似运算

问题背景描述:

利用牛顿—莱布尼茨公式虽然可以精确地计算定积分的值,但它仅适合于被积分函数的原函数能用初等函数表达出来的情形。如果这点办不到或不容易办到,

这就有必要考虑近似计算的方法。在定积分的很多应用问题中,被积函数甚至没

有解析表达式,可能只是一条实验记录曲线,或者是一组离散的采样值,这时只

能应用近似方法去计算相应的定积分。

实验目的:

本实验将主要研究定积分的三种近似计算算法:矩形法、梯形法、抛物线发。对于定积分的近似数值计算,Matlab有专门函数可用。

实验原理与数学模型:

1.sum(a):求数组a的和。

2.format long:长格式,即屏幕显示15位有效数字。

3.double():若输入的是字符则转化为相应的ASCII码;若输入的是整型数之则转化为

相应的实型数值。

4.quad():抛物线法求数值积分。格式:quad(fun,a,b)。此处的fun是函数,并且

为数值形式,所以使用*、/、^等运算时要在其前加上小数点。

5.trapz():梯形法求数值积分。格式:trapz(x,y)。其中x为带有步长的积分区间;y为数

值形式的运算。

6.fprintf(文件地址,格式,写入的变量):把数据写入指定文件。

7.syms 变量1变量2……:定义变量为符号。

8.sym('表达式'):将表达式定义为符号。

9.int(f,v,a,b):求f关于v积分,积分区间由a到b。

10.subs(f,'x',a):将a的值赋给符号表达式f中的x,并计算出值。若简单地使用subs

(f),则将f的所有符号变量用可能的数值代入,并计算出值。

实验所用软件及版本:Matlab 7.0.1

主要内容(要点):

1.矩形法:i b a n

i i x f dx x f ⎰∑=∆=1)()(ς (1)左点法:对等分区间b x i n

a b a x x a x n i =<<-+

=<<<= 10在区间[]i i x x ,1-上取左端点,即取1-=i i x ς。 (2)右点发:同(1)中划分区间,在区间[]i i x x ,1-上取右端点,即取i i x =ς。

(3)中点法:同(1)中划分区间,在区间[]i i x x ,1-上取右端点,即取21i i i x x +=

-ς。 2.梯形法:⎪⎭⎫ ⎝⎛++++-=

-⎰22)(110n n b a y y y y n a b dx x f 3.抛物线法:()()[]2242123120246)(--+++++++++-=⎰n n n b a y y y y y y y y n

a b dx x f 4.直接用Matlab 命令计算结果

实验过程记录(含基本步骤、主要程序清单及异常情况记录等):

1、分别用梯形法和抛物线法,计算⎰2

1x

dx ,将积分区间[0,1]作120等分。并尝试直接使用函数trapz()、quad()进行计算求解,比较结果的差异。

(1)梯形法:

format long

n=120;a=1;b=2;inum=0;

syms x fx

fx=1/x;

xj=a+(i-1)*(b-a)/n;

xi=a+i*(b-a)/n;

fxj=subs(fx,'x',xj);

fxi=subs(fx,'x',xi);

inum=inum+(fxj+fxi)*(b-a)/(2*n);

end

inum

integrate=int(fx,1,2)

integrate=double(integrate)

fprintf('The relative error between inum and real-value is about: %g\n\n',...

abs((inum-integrate)/integrate))

运行结果:inum =0.69315152080005

integrate =log(2)

integrate =0.69314718055995

The relative error between inum and real-value is about: 6.26164e-006

(2)抛物线法:

format long

%2*n=240;

n=120;

a=1;b=2;

syms x fx

fx=1/x;

for i=1:n

x0=a+(2*i-2)*(b-a)/(2*n);

x1=a+(2*i-1)*(b-a)/(2*n);

x2=a+(2*i-0)*(b-a)/(2*n);

fx0=subs(fx,x,x0);

fx1=subs(fx,x,x1);

fx2=subs(fx,x,x2);

Si=(fx0+4*fx1+fx2)*(b-a)/(6*n);

inum=inum+Si;

end

inum

integrate=int(fx,1,2);

integrate=double(integrate)

fprintf('抛物线法的相对误差为: %e\n',abs((inum-integrate)/integrate))%将inum输入成了abs导致运行出错

运行结果:inum =0.69314718056936

integrate =0.69314718055995

抛物线法的相对误差为: 1.358861e-011

相关文档
最新文档