(matlab)数学实验报告二

  • 格式:docx
  • 大小:52.23 KB
  • 文档页数:6
等分区间x0=a<x1<…<xi=a+(b-a)i/n<...<xn=b, x=(b-a)/n
相应函数值为y0,y1,…,yn(yi=f(xi),i=0,1,…,n)
曲线y= f(x)上相应的点为P0,P1,…,Pn(Pi=(xi,yi),i=0,1,…,n)
将曲线的每一段弧P(i-1)Pi用过点P(i-1),Pi的弦P(i-1)Pi(线性函数)来代替,这使得
数学实验报告
实验序号:实验二日期:2017年12月7日
班级
信息与计算科学
姓名
一羊炖错
学号
160*******
实验名称
定积分的近似计算
问题背景描述:
利用牛顿——莱布尼茨公式虽然可以精确地计算定积分的值,但它仅适用于被积函数的原函数能用初等函数表达出来的情形。如果这点办不到或者不容易办到,这就有必要考虑近似计算的方法.在定积分的很多应用问题中,被积函数甚至没有解析表达式,可能只是一条实验记录曲线,或者是一组离散的采样值,这时只能应用近似方法去计算相应的定积分。
实验目的:
本实验将主要研究定积分的三种近似计算算法:矩形法、梯形法、抛物线法。对于定积分的近似数值计算,Matlab有专门函数可用。
实验原理与数学模型:
相关函数(命令)及简介:
l.sum(a):求数组a的和.
2.format long:长格式,即屏幕显示15位有效数字
(注:由于本实验要比较近似解法和精确求解间的误差,需要更高的精度).
end
inum5=inum5*h;
fprintf('积分为%g\n',inum5);
运算结果:积分为-1.33333
2.分别用梯形法与抛物线法,计算 ,将积分区间[1,2]作120等分.并尝试直接使用函数trapz()、quad()进行计算求解
(1)梯形法:
clear;clc;
syms x fx;
fx=x*(-1);
(1)数值积分函数:trapz、quad、dblquad
(2)符号积分函Байду номын сангаас:int
3.经过对比易知抛物线法的精确程度最高。
思考与深入:
1.在使用Matlab编程的过程中,应注意避免犯下“忘记初始化”、“错误输入符号”等“低级错误。”
2.在学习使用Matlab编程的过程中,不应只通过比照着老师给出的范本“依样画葫芦”完成作业。要真正学会通过Matlab解决某一题型的方法,应该先理解题型的算法,然后通过该算法编程。
方法3:x=0:0.001:1;
y= 1./(1+ x.^2);
trapz(x,y)(梯形法求数值积分)
(2)数值计算
方法1: int(int(‘x+y^ 2’,’y’,-1,1),’x’,0,2)(符号求积分)
方法2: dblquad(inline('x+y^2'),0,2,-1,1)(抛物线法求二重数值积分)
a=1;b=2;n=120;
h=(b-a)/n;Sum=0;
for i=1:n
xj=a+(i-1)*h;
xi=a+i*h;
fxj=subs(fx,'x',xj);
fxi=subs(fx,'x',xi);
Sum=Sum+(fxj+fxi)*h/2;
end
fprintf('积分为%g\n',Sum);
运算结果:积分为-1.5
8.syms变量1变量2...定义变量为符号.
9.sym('表达式'):将表达式定义为符号,
解释: Matlab中的符号运算事实上是借用了Maple的软件包,所以当在Matlab中要对符号进行运算时,必须先把要用到的变量定义为符号,
10.int(f,v,a,b):求f关于U积分,积分区间由a到b.
11.subs(f,'x',a):将a的值赋给符号表达式f中的ar,并计算出值.若简单地使用subs(f),则将f的所有符号变量用可能的数值代入,并计算出值.
3.double():若输入的是字符则转化为相应的ASCII码;若输入的是整型数值则转化为相应的实型数值.
4.quad():抛物线法求数值积分
格式: quad(fun,a,b),注意此处的fun是函数,并且为数值形式,所以使用*、/、^等运算时要在其前加上小数点,即.*、./、.^等.
5.trapz():梯形法求数值积分.
由于x1=(x0+x2)/2,代入上式,整理得
同样也有
……
将这n个积分相加即得原来所要计算的定积分的近似值:

这就是抛物线法公式,也称为辛普森公式.
4.直接应用Matlab命令计算结果
(1)数值计算
方法1:int(‘1/(1+x^2)’,’x’,0,1)(符号求积分)
方法2: quad(‘1./(1+x.^2)’,’x’,0,1)(抛物线法求数值积分)
将积分区间[a,b]作2n等分,分点依次为x0=a<x1<…<xi=a+(b-a)i/2n<…<x(2n)=b, x=(b-a)/2n,
对应函数值为y0,y1,…,y(2n),(yi=f(xi),i=0,1,…,2n)
曲线上相应点为P0,P1,…,P(2n),(Pi=(xi,yi),i=0,1,…,2n)
x3=(x1+x2)/2;
s=(f(x1)+4*f(x3)+f(x2))/6;
inum5=sum(s);
inum5=inum5*h;
fprintf('积分为%g\n',inum5);
运行结果:积分为-1.33333
实验结果报告与实验总结:
1.数值积分的常见算法有:矩形法、梯形法、抛物线法。
2.Matlab求积分函数可用:
实验过程记录(含基本步骤、主要程序清单及异常情况记录等):
1.分别用矩形法、梯形法、抛物线法计算 取n=258
(1)矩形法:
clear;clc;
syms x fx;
fx=(1+x^2)*(-1);
a=0;b=1;n=258;
h=(b-a)/n;Sum=0;
for i=1:n
xz=a+(i-1)*h;
fprintf('积分为%g\n',inum5);
运行结果:积分为-1.5
(3)trapz():
clear;clc;
x=1:1/120:2;
y=x*(-1);
trapz(x,y)
运行结果:ans=-1.5000
(4)quad():
clear;clc;
quad('x*(-1)',1,2,1/120)
运行结果:ans =-1.5000
每个[x(i-1),xi]上的曲边梯形成为真正的梯形,其面积为 × x ,i=1,2,…,n
于是各个小梯形面积之和就是曲边梯形面积的近似值,

称此式为梯形公式.
3.抛物线法
由梯形法求近似值,当y= f(x)为凹曲线时,它就偏小;当y= f(x)为凸曲线时,它就偏大.若每段改用与它凸性相接近的抛物线来近似时,就可减少上述缺点,这就是抛物线法.
(1)左点法:对等分区间x0=a<x1<...<xi=a+(b-a)i/n<...<xn=b在区间[x(i-1),xi]上取左端点,
即取ζi=x(i-1),
≈0.78789399673078
(2)右点法:同(1)中划分区间,在区间[x(i-1),xi]上取右端点,即取ζi=x(i-1),
≈0.78789399673078
h=(b-a)/n;inum5=0;%忘记初始化“inum5=0”
f=@(x)(1+x^2)*(-1);%输入“@(x)”时忘记输入括号,写成“@x”
for i=1:n
x1=a+(i-1)*h;x2=a+i*h;x3=(x1+x2)/2;
inum5=inum5+(f(x1)+4*f(x3)+f(x2))/6;
xj=a+(i-1)*h;
xi=a+i*h;
fxj=subs(fx,'x',xj);
fxi=subs(fx,'x',xi);
Sum=Sum+(fxj+fxi)*h/2;
end
fprintf('积分为%g\n',Sum);
运行结果:积分为-1.33334
(3)抛物线法:
clear;clc;
n=258;a=0;b=1;
实验所用软件及版本:
MATLAB R2016b
主要内容(要点):
1.矩形法
根据定积分的定义,每一个积分和都可以看作是定积分的一个近似值,即
在几何意义上,这是用一系列小矩形面积近似小曲边梯形的结果,所以把这个近似计算方法称为矩形法.不过,只有当积分区间被分割得很细时,矩形法才有一定的精确度.
针对不同 的取法,计算结果会有不同,我们以 为例(取n= 100):
s=subs(fx,'x',xz)*h;
Sum=Sum+s;
end
fprintf('积分为%g\n',Sum);
运行结果:积分为-1.3314
(2)梯形法:
clear;clc;
syms x fx;
fx=(1+x^2)*(-1);
a=0;b=1;n=258;
h=(b-a)/n;Sum=0;
for i=1:n
(2)抛物线法:
clear;clc;