矩形法求定积分

合集下载

左矩形求积公式

左矩形求积公式

构造或确定一个求积公式,要讨论解决的问题有
(i) 确定求积系数Ak和求积节点n; (ii) 求积公式的误差估计和收敛性.
用什么标准来判定两个节点数相同的求积 公式的“好”与“差”呢?通常用“代数精确 度”的高低作为求积公式“好”与“差”的一 个标准.在后面的讨论中我们将看到,节点相 同的求积公式,代数精确度越高,求出的积分 近似值精确度一般越好.下面给出代数精确度 的定义.
f
)

R( ,
f
)

b 6
a{f
(a)
4
f
(a
b) 2
f
(b)}
R( ,
f
)
具有3次代数精确度.
解:

f (x) 1时,I ( f )
b
1dx

b

a,
a

I3(
f
)

b
6
a
(1
4
1)

(b

a)
有 R( ,1) 0
I(
f
)

I3(
f
)

R( ,
f
由Lagrange插值基函数有
n
lk (x) lk (a th)
i0,ik
x xi xk xi
n ti
i0,ik k i
(1)nk
n
t i
k !(n k)! i0,ik
而 dx hdt b a dt,所以
n
b
3
I3
(
f
)

b
6
a
(a2

定积分的定义与计算方法

定积分的定义与计算方法

定积分的定义与计算方法定积分是微积分的重要概念之一,用于求解曲线下的面积以及计算函数的平均值和总变化量。

本文将介绍定积分的定义及其计算方法,帮助读者更好地理解和应用定积分。

一、定积分的定义定积分是函数在一个闭区间上的面积或曲线下的有向面积。

设函数f(x)在区间[a, b]上连续,将[a, b]分为n个小区间,每个小区间的长度为Δx,选择每个小区间上一点ξi,将其映射到函数的对应值f(ξi),得到小矩形的面积为f(ξi)Δx。

当n趋向于无穷大时,每个小矩形的宽度趋近于0,这时求和Σf(ξi)Δx的极限就是定积分,记作∫[a, b] f(x)dx。

二、定积分的计算方法1. 几何法:对于简单的函数,可以根据几何图形的面积来计算定积分。

将函数的图像与坐标轴围成的区域划分为几个简单的几何形状(如矩形、三角形等),计算每个几何形状的面积,再将这些面积相加即得到定积分的值。

2. 分割求和法:将区间[a, b]等分为n个小区间,每个小区间的长度为Δx=(b-a)/n。

在每个小区间中选择一个代表点ξi,计算f(ξi)与Δx的乘积,然后将所有小区间的乘积相加,即可得到定积分近似值。

当n 越大时,近似值越接近定积分的真实值。

3. 定积分的性质:定积分具有线性性质和可加性质。

即对于任意实数a和b,有∫[a, b]f(x)dx = ∫[a, c]f(x)dx + ∫[c, b]f(x)dx。

4. 牛顿—莱布尼茨公式:若函数F(x)是f(x)的一个原函数(即F'(x) = f(x)),那么∫[a, b]f(x)d x = F(b) - F(a)。

通过求函数的原函数,可以通过原函数的值来计算定积分。

三、应用举例1. 求解面积:设函数f(x)在[a, b]上连续且非负,其图像在坐标轴上方形成一个封闭区间。

此时,通过计算∫[a, b]f(x)dx可以得到该区域的面积。

2. 平均值计算:设函数f(x)在[a, b]上连续,则其平均值为f_avg =1/(b-a) * ∫[a, b]f(x)dx。

MATLAB实验三 定积分的近似计算

MATLAB实验三 定积分的近似计算

实验三定积分的近似计算一、问题背景与实验目的利用牛顿—莱布尼兹公式虽然可以精确地计算定积分的值,但它仅适用于被积函数的原函数能用初等函数表达出来的情形.如果这点办不到或者不容易办到,这就有必要考虑近似计算的方法.在定积分的很多应用问题中,被积函数甚至没有解析表达式,可能只是一条实验记录曲线,或者是一组离散的采样值,这时只能应用近似方法去计算相应的定积分.本实验将主要研究定积分的三种近似计算算法:矩形法、梯形法、抛物线法.对于定积分的近似数值计算,Matlab有专门函数可用.二、相关函数(命令)及简介1.sum(a):求数组a的和.2.format long:长格式,即屏幕显示15位有效数字.(注:由于本实验要比较近似解法和精确求解间的误差,需要更高的精度).3.double():若输入的是字符则转化为相应的ASCII码;若输入的是整型数值则转化为相应的实型数值.4.quad():抛物线法求数值积分.格式:quad(fun,a,b) ,注意此处的fun是函数,并且为数值形式的,所以使用*、/、^等运算时要在其前加上小数点,即.*、./、.^等.例:Q = quad('1./(x.^3-2*x-5)',0,2);5.trapz():梯形法求数值积分.格式:trapz(x,y)其中x为带有步长的积分区间;y为数值形式的运算(相当于上面介绍的函数fun)例:计算0sin()dx xπ⎰x=0:pi/100:pi;y=sin(x);trapz(x,y)6.dblquad():抛物线法求二重数值积分.格式:dblquad(fun,xmin,xmax,ymin,ymax),fun可以用inline定义,也可以通过某个函数文件的句柄传递.例1:Q1 = dblquad(inline('y*sin(x)'), pi, 2*pi, 0, pi)顺便计算下面的Q2,通过计算,比较Q1 与Q2结果(或加上手工验算),找出积分变量x、y的上下限的函数代入方法.Q2 = dblquad(inline('y*sin(x)'), 0, pi, pi, 2*pi)例2:Q3 = dblquad(@integrnd, pi, 2*pi, 0, pi)这时必须存在一个函数文件integrnd.m:function z = integrnd(x, y) z = y*sin(x);7.fprintf (文件地址,格式,写入的变量):把数据写入指定文件.例:x = 0:.1:1; y = [x; exp(x)];fid = fopen('exp.txt','w'); %打开文件 fprintf(fid,'%6.2f %12.8f\n',y); %写入 fclose(fid) %关闭文件 8.syms 变量1 变量2 …:定义变量为符号. 9.sym('表达式'):将表达式定义为符号.解释:Matlab 中的符号运算事实上是借用了Maple 的软件包,所以当在Matlab 中要对符号进行运算时,必须先把要用到的变量定义为符号. 10.int(f,v,a,b):求f 关于v 积分,积分区间由a 到b .11.subs(f ,'x',a):将 a 的值赋给符号表达式 f 中的 x ,并计算出值.若简单地使用subs(f),则将f 的所有符号变量用可能的数值代入,并计算出值.三、实验内容1. 矩形法根据定积分的定义,每一个积分和都可以看作是定积分的一个近似值,即1()d ()nbi i ai f x x f x ς==∆∑⎰在几何意义上,这是用一系列小矩形面积近似小曲边梯形的结果,所以把这个近似计算方法称为矩形法.不过,只有当积分区间被分割得很细时,矩形法才有一定的精确度.针对不同i ς的取法,计算结果会有不同,我们以 120d 1xx +⎰为例(取100=n ),(1) 左点法:对等分区间b x i n ab a x x a x n i =<<-+=<<<=ΛΛ10,在区间],[1i i x x -上取左端点,即取1-=i i x ς,12 01d ()1ni i i xf x x ς==∆≈+∑⎰0.78789399673078, 理论值 12 0d 14x x π=+⎰,此时计算的相对误差0.7878939967307840.0031784ππ-=≈(2)右点法:同(1)中划分区间,在区间],[1i i x x -上取右端点,即取i i x =ς,12 01d ()1ni i i xf x x ς==∆≈+∑⎰0.78289399673078, 理论值 12 0d 14x x π=+⎰,此时计算的相对误差 0.7828939967307840.0031884ππ-=≈(3)中点法:同(1)中划分区间,在区间1[,]i i x x -上取中点,即取12i ii x x ς-+=, 12 01d ()1ni i i xf x x ς==∆≈+∑⎰0.78540024673078, 理论值 12 0d 14x x π=+⎰,此时计算的相对误差 60.7854002467307842.653104ππ--=≈⨯如果在分割的每个小区间上采用一次或二次多项式来近似代替被积函数,那么可以期望得到比矩形法效果好得多的近似计算公式.下面介绍的梯形法和抛物线法就是这一指导思想的产物.2. 梯形法等分区间b x i n a b a x x a x n i =<<-+=<<<=ΛΛ10,nab x -=∆ 相应函数值为n y y y ,,,10Λ(n i x f y i i ,,1,0),(Λ==).曲线)(x f y =上相应的点为n P P P ,,,10Λ(n i y x P i i i ,,1,0),,(Λ==)将曲线的每一段弧i i P P 1-用过点1-i P ,i P 的弦i i P P 1-(线性函数)来代替,这使得每个],[1i i x x -上的曲边梯形成为真正的梯形,其面积为x y y ii ∆⨯+-21,n i ,,2,1Λ=. 于是各个小梯形面积之和就是曲边梯形面积的近似值,11 11()d ()22nnbi i i i ai i y y x f x x x y y --==+∆≈⨯∆=+∑∑⎰, 即11 ()d ()22bn n ay y b a f x x y y n --≈++++⎰L , 称此式为梯形公式.仍用 12 0d 1x x +⎰的近似计算为例,取100=n ,10112 0d ()122n n y y x b a y y x n --≈++++=+⎰L 0.78539399673078, 理论值 12 0d 14x x π=+⎰,此时计算的相对误差 60.7853939967307845.305104ππ--=≈⨯很显然,这个误差要比简单的矩形左点法和右点法的计算误差小得多.3. 抛物线法由梯形法求近似值,当)(x f y =为凹曲线时,它就偏小;当)(x f y =为凸曲线时,它就偏大.若每段改用与它凸性相接近的抛物线来近似时,就可减少上述缺点,这就是抛物线法.将积分区间],[b a 作n 2等分,分点依次为b x i n a b a x x a x n i =<<-+=<<<=2102ΛΛ,nab x 2-=∆, 对应函数值为n y y y 210,,,Λ(n i x f y i i 2,,1,0),(Λ==),曲线上相应点为n P P P 210,,,Λ(n i y x P i i i 2,,1,0),,(Λ==).现把区间],[20x x 上的曲线段)(x f y =用通过三点),(000y x P ,),(111y x P ,),(222y x P 的抛物线)(12x p x x y =++=γβα来近似代替,然后求函数)(1x p 从0x 到2x 的定积分:21 ()d x x p x x =⎰22 ()d x x x x x αβγ++=⎰)()(2)(30220223032x x x x x x -+-+-γβα]4)(2)()()[(62022022202002γβαγβαγβα++++++++++-=x x x x x x x x x x 由于2201x x x +=,代入上式整理后得 21 ()d x x p x x ⎰)](4)()[(612122202002γβαγβαγβα++++++++-=x x x x x x x x )4(621002y y y x x ++-=)4(6210y y y nab ++-= 同样也有422 ()d x x p x x ⎰)4(6432y y y n ab ++-=……222 ()d n n x nx p x x -⎰)4(621222n n n y y y nab ++-=-- 将这n 个积分相加即得原来所要计算的定积分的近似值:22222212 11()d ()d (4)6ii nnbx i i i i ax i i b af x x p x x y y y n---==-≈=++∑∑⎰⎰, 即021******* ()d [4()2()]6bn n n ab af x x y y y y y y y y n---≈++++++++⎰L L 这就是抛物线法公式,也称为辛卜生(Simpson )公式.仍用 12 0d 1x x +⎰的近似计算为例,取100=n ,102132124222 0d [4()2()]16n n n x b ay y y y y y y y x n ---≈+++++++++⎰L L=0.78539816339745,理论值 12 0d 14x x π=+⎰,此时计算的相对误差 160.7853981633974542.827104ππ--=≈⨯4. 直接应用Matlab 命令计算结果(1) 数值计算 120d .1xx +⎰ 方法1:int('1/(1+x^2)','x',0,1) (符号求积分)方法2:quad('1./(1+x.^2)',0,1) (抛物线法求数值积分)方法3:x=0:0.001:1; y=1./(1+x.^2);trapz(x,y) (梯形法求数值积分) (2)数值计算 212 01d d x x y y -+⎰⎰方法1:int(int('x+y^2','y',-1,1),'x',0,2) (符号求积分)方法2:dblquad(inline('x+y^2'),0,2,-1,1) (抛物线法二重数值积分)四、自己动手1. 实现实验内容中的例子,即分别采用矩形法、梯形法、抛物线法计算 120d 1xx +⎰,取258=n ,并比较三种方法的精确程度.2. 分别用梯形法与抛物线法,计算 2 1d xx⎰,取120=n .并尝试直接使用函数trapz()、quad()进行计算求解,比较结果的差异.3. 试计算定积分 0sin d xx x+∞⎰.(注意:可以运用trapz()、quad()或附录程序求解吗?为什么?)4. 将 120d 1xx +⎰的近似计算结果与Matlab 中各命令的计算结果相比较,试猜测Matlab 中的数值积分命令最可能采用了哪一种近似计算方法?并找出其他例子支持你的观点.5. 通过整个实验内容及练习,你能否作出一些理论上的小结,即针对什么类型的函数(具有某种单调特性或凹凸特性),用某种近似计算方法所得结果更接近于实际值?6. 学习fulu2sum.m 的程序设计方法,尝试用函数 sum 改写附录1和附录3的程序,避免for 循环.五、附录附录1:矩形法(左点法、右点法、中点法)(fulu1.m ) format long n=100;a=0;b=1;inum1=0;inum2=0;inum3=0; syms x fx fx=1/(1+x^2); for i=1:nxj=a+(i-1)*(b-a)/n; %左点 xi=a+i*(b-a)/n; %右点 fxj=subs(fx,'x',xj); %左点值fxi=subs(fx,'x',xi); %右点值fxij=subs(fx,'x',(xi+xj)/2); %中点值inum1=inum1+fxj*(b-a)/n;inum2=inum2+fxi*(b-a)/n;inum3=inum3+fxij*(b-a)/n;endinum1inum2inum3integrate=int(fx,0,1)integrate=double(integrate)fprintf('The relative error between inum1 and real-value is about: %d\n\n',...abs((inum1-integrate)/integrate))fprintf('The relative error between inum2 and real-value is about: %d\n\n',...abs((inum2-integrate)/integrate))fprintf('The relative error between inum3 and real-value is about: %d\n\n',...abs((inum3-integrate)/integrate))附录2:梯形法(fulu2.m)format longn=100;a=0;b=1;inum=0;syms x fxfx=1/(1+x^2);for i=1:nxj=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);endinumintegrate=int(fx,0,1)integrate=double(integrate)fprintf('The relative error between inum and real-value is about: %d\n\n',...abs((inum-integrate)/integrate))附录2sum:梯形法(fulu2sum.m),利用求和函数,避免for 循环format longn=100;a=0;b=1;syms x fxfx=1/(1+x^2);i=1:n;xj=a+(i-1)*(b-a)/n; %所有左点的数组xi=a+i*(b-a)/n; %所有右点的数组fxj=subs(fx,'x',xj); %所有左点值fxi=subs(fx,'x',xi); %所有右点值f=(fxi+fxj)/2*(b-a)/n; %梯形面积inum=sum(f) %加和梯形面积求解integrate=int(fx,0,1)integrate=double(integrate)fprintf('The relative error between inum and real-value is about: %d\n\n',...abs((inum-integrate)/integrate))附录3:抛物线法(fulu3.m)format longn=100;a=0;b=1;inum=0;syms x fxfx=1/(1+x^2);for i=1:nxj=a+(i-1)*(b-a)/n; %左点xi=a+i*(b-a)/n; %右点xk=(xi+xj)/2; %中点fxj=subs(fx,'x',xj);fxi=subs(fx,'x',xi);fxk=subs(fx,'x',xk);inum=inum+(fxj+4*fxk+fxi)*(b-a)/(6*n);endinumintegrate=int(fx,0,1)integrate=double(integrate)fprintf('The relative error between inum and real-value is about: %d\n\n',...abs((inum-integrate)/integrate))。

定积分的含义和计算

定积分的含义和计算

定积分的含义和计算定积分是微积分中的一种运算方式,通过计算函数在一个区间上的面积来求解。

它是反应函数变化的量的一种数值特征,同时也是分析函数性质和解决实际问题中的重要工具之一。

在本文中,我们将详细介绍定积分的含义、计算方法及其应用。

首先,我们来探讨定积分的含义。

定积分可以理解为函数曲线与坐标轴之间的有向面积。

具体而言,对于一个函数$f(x)$,我们可以将其限定在一个区间$[a,b]$上,然后使用一根尺直角下压在曲线上,该尺的长度与曲线上相应点的纵坐标相关。

当我们将尺从$a$点移动到$b$点时,这根尺覆盖的面积就是定积分。

同时,定积分还可以表示曲线上方的面积减去曲线下方的面积,即上减下。

为了更形象地理解定积分的含义,我们可以以一个例子进行说明。

假设有一个自由落体运动,其运动方程为$s(t) = v_0t - \frac{1}{2}gt^2$,其中$v_0$是初始速度,$g$是重力加速度,$t$是时间。

现在我们想知道在给定的时间区间$[t_1,t_2]$内自由落体运动所覆盖的空间距离。

这时,我们可以使用定积分来解决这个问题。

根据定义,自由落体运动的空间距离可以表示为$s(t)$在区间$[t_1,t_2]$上的定积分:$$\int_{t_1}^{t_2}(v_0t - \frac{1}{2}gt^2)dt$$其中$\int$表示求和的符号,$(v_0t - \frac{1}{2}gt^2)dt$表示被积函数,$dt$表示积分变量。

这个定积分的结果就是自由落体运动在区间$[t_1,t_2]$内所覆盖的空间距离。

接下来,我们将介绍定积分的计算方法。

在实际计算中,定积分可以通过多种方式求解,例如几何法、牛顿-莱布尼茨公式和数值积分等。

几何法是一种直观易懂的计算方式,它利用几何图形的性质来求取定积分的值。

具体而言,对于一个函数$f(x)$,我们可以通过绘制函数曲线与坐标轴之间的图形,然后根据几何图形的性质来计算面积。

定积分的计算

定积分的计算

定积分的计算定积分是微积分中的一个重要概念,用来计算曲线与x轴之间的面积或曲线的弧长等问题。

本文将介绍定积分的概念、性质和计算方法。

一、定积分的概念定积分是一种数学运算,用来计算曲线与x轴之间的面积。

它的定义是在一个区间上划分出无穷多个小矩形,然后计算这些小矩形的面积之和,然后取极限。

用符号表示为∫f(x)dx,其中f(x)是被积函数,dx表示微元长度。

二、定积分的性质1. 定积分具有可加性,即∫(f(x) + g(x))dx = ∫f(x)dx + ∫g(x)dx。

2. 定积分的区间可加性,即∫[a,b]f(x)dx = ∫[a,c]f(x)dx + ∫[c,b]f(x)dx。

3. 定积分的值与被积函数的符号无关,即∫[a,b]f(x)dx = -∫[b,a]f(x)dx。

4. 定积分的值与积分区间的长度无关,即∫[a,b]f(x)dx = ∫[ka,kb]f(x)dx,其中k为任意非零常数。

三、定积分的计算方法计算定积分的方法有很多种,以下是一些常用的方法:1. 几何方法:对于一些简单的几何图形,我们可以利用几何的知识来求解。

例如,对于一个矩形的面积,可以直接计算长度乘以宽度。

2. 切割方法:将区间切割成无穷多个小区间,并计算每个小区间上的面积之和。

当小区间趋近于无穷小时,这个和就是定积分的值。

这种方法也被称为黎曼和的定义。

3. 牛顿-莱布尼茨公式:若函数G(x)是f(x)的一个原函数,则定积分可以通过G(b) - G(a)来计算,其中a、b是积分区间的端点。

4. 变量代换法:对于一些复杂的函数,可以通过变量代换来简化问题。

例如,对于∫(x^2 + 1)dx,我们可以令u = x^2 + 1,然后计算∫udu,最后再带回原来的变量。

5. 分部积分法:对于一些产品的积分,可以利用分部积分公式来求解。

该公式为∫u(x)v'(x)dx = u(x)v(x) - ∫v(x)u'(x)dx。

定积分的计算及应用

定积分的计算及应用

定积分的计算及应用定积分是微积分中的重要内容,主要用于计算曲线下的面积、求函数的平均值和求解各种几何问题。

本文将介绍定积分的计算方法和应用。

一、定积分的计算方法1.函数的不定积分和定积分在介绍定积分之前,先来了解一下不定积分。

不定积分是求函数的原函数,即给定一个函数f(x),求出它的一个原函数F(x),满足F'(x)=f(x)。

然后,定积分是不定积分的一个推广。

对于一个函数f(x),我们可以将其在[a,b]区间内的曲线下的面积分成无穷多个矩形小面积,然后将这些小面积相加,得到的极限值就是函数f(x)在[a,b]区间上的定积分。

2.基本积分法则计算定积分常用的方法是基本积分法则,它是通过一些基本的积分公式来计算积分。

下面是一些常见的基本积分公式:- 常数函数积分:∫k dx = kx + C,其中k为常数,C为常数;- 幂函数积分:∫x^n dx = (x^(n+1))/ (n+1) + C,其中n≠-1,C 为常数;- 指数函数积分:∫e^x dx = e^x + C,C为常数;- 三角函数积分:∫sin(x) dx = -cos(x) + C, ∫cos(x) dx = sin(x) + C,C为常数。

3.定积分的计算方法对于函数f(x)在[a,b]区间上的定积分,有以下计算方法:-用基本积分法则计算不定积分F(x);-确定积分上下限,将F(x)在a和b处的值代入,得到F(b)-F(a);-F(b)-F(a)即为函数f(x)在[a,b]区间上的定积分。

二、定积分的应用1.曲线下的面积定积分最常用的应用是计算曲线下的面积。

给定一个函数f(x),要计算它在[a,b]区间上曲线下的面积,可以通过定积分来实现。

具体步骤如下:-将[a,b]区间划分成n个小区间,每个小区间的宽度为Δx=(b-a)/n;- 在每个小区间上确定一个点xi,其中i=1,2,3,...,n;- 计算每个小区间上的矩形面积,即ΔS= f(xi) * Δx;-将n个小矩形的面积相加,即S≈Σ(ΔS);- 当n趋向于无穷大时,即Δx趋向于0,Σ(ΔS)趋向于定积分∫f(x)dx。

定积分的定义怎么计算公式

定积分的定义怎么计算公式

定积分的定义怎么计算公式定积分的定义及计算公式。

定积分是微积分中的一个重要概念,它描述了函数在一个区间上的累积变化量。

定积分的计算方法有很多种,其中最常用的是利用定积分的定义来进行计算。

在本文中,我们将介绍定积分的定义及其计算公式,以及一些具体的例子来帮助读者更好地理解定积分的概念和计算方法。

定积分的定义。

在介绍定积分的计算公式之前,我们先来了解一下定积分的定义。

在数学中,定积分可以用来描述函数在一个区间上的累积变化量。

假设有一个函数f(x),我们要求解它在区间[a, b]上的定积分,可以用以下公式表示:∫[a, b] f(x)dx。

其中,∫表示积分符号,a和b分别表示积分的下限和上限,f(x)表示被积函数,dx表示积分变量。

定积分的计算公式。

定积分的计算公式可以根据被积函数的不同而有所不同。

下面我们将介绍一些常见的定积分计算公式。

1. 基本积分公式。

如果被积函数是一个常数函数,那么定积分的计算公式就是:∫[a, b] cdx = c(b a)。

其中,c是一个常数,表示被积函数的值。

2. 多项式函数的积分公式。

如果被积函数是一个多项式函数,那么可以利用多项式函数的积分公式来进行计算。

例如,对于多项式函数f(x) = ax^n + bx^(n-1) + ... + k,它在区间[a, b]上的定积分可以表示为:∫[a, b] (ax^n + bx^(n-1) + ... + k)dx = (a/(n+1))x^(n+1) + (b/n)x^n + ... + kx |[a, b] 其中,|表示在区间[a, b]上的取值范围。

3. 三角函数的积分公式。

如果被积函数是一个三角函数,那么可以利用三角函数的积分公式来进行计算。

例如,sin(x)和cos(x)的定积分计算公式分别为:∫[a, b] sin(x)dx = -cos(x) |[a, b]∫[a, b] cos(x)dx = sin(x) |[a, b]这些是定积分计算公式中的一些基本公式,通过这些公式可以对各种类型的函数进行定积分的计算。

(整理)定积分的近似计算.

(整理)定积分的近似计算.

实验二定积分的近似计算一、问题背景与实验目的利用牛顿—莱布尼兹公式虽然可以精确地计算定积分的值,但它仅适用于被积函数的原函数能用初等函数表达出来的情形.如果这点办不到或者不容易办到,这就有必要考虑近似计算的方法.在定积分的很多应用问题中,被积函数甚至没有解析表达式,可能只是一条实验记录曲线,或者是一组离散的采样值,这时只能应用近似方法去计算相应的定积分.本实验将主要研究定积分的三种近似计算算法:矩形法、梯形法、抛物线法.对于定积分的近似数值计算,Matlab有专门函数可用.二、相关函数(命令)及简介1.sum(a):求数组a的和.2.format long:长格式,即屏幕显示15位有效数字.(注:由于本实验要比较近似解法和精确求解间的误差,需要更高的精度).3.double():若输入的是字符则转化为相应的ASCII码;若输入的是整型数值则转化为相应的实型数值.4.quad():抛物线法求数值积分.格式: quad(fun,a,b) ,注意此处的fun是函数,并且为数值形式的,所以使用*、/、^等运算时要在其前加上小数点,即 .*、./、.^等.例:Q = quad('1./(x.^3-2*x-5)',0,2);5.trapz():梯形法求数值积分.格式:trapz(x,y)其中x为带有步长的积分区间;y为数值形式的运算(相当于上面介绍的函数fun)例:计算x=0:pi/100:pi;y=sin(x);trapz(x,y)6.dblquad():抛物线法求二重数值积分.格式:dblquad(fun,xmin,xmax,ymin,ymax),fun可以用inline定义,也可以通过某个函数文件的句柄传递.例1:Q1 = dblquad(inline('y*sin(x)'), pi, 2*pi, 0, pi)顺便计算下面的Q2,通过计算,比较Q1 与Q2结果(或加上手工验算),找出积分变量x、y的上下限的函数代入方法.Q2 = dblquad(inline('y*sin(x)'), 0, pi, pi, 2*pi) 例2:Q3 = dblquad(@integrnd, pi, 2*pi, 0, pi)这时必须存在一个函数文件integrnd.m:function z = integrnd(x, y)z = y*sin(x);7.fprintf(文件地址,格式,写入的变量):把数据写入指定文件.例:x = 0:.1:1;y = [x; exp(x)];fid = fopen('exp.txt','w'); %打开文件fprintf(fid,'%6.2f %12.8f\n',y); %写入fclose(fid) %关闭文件8.syms 变量1 变量2 …:定义变量为符号.9.sym('表达式'):将表达式定义为符号.解释:Matlab中的符号运算事实上是借用了Maple的软件包,所以当在Matlab中要对符号进行运算时,必须先把要用到的变量定义为符号.10.int(f,v,a,b):求f关于v积分,积分区间由a到b.11.subs(f,'x',a):将 a 的值赋给符号表达式 f 中的 x,并计算出值.若简单地使用subs(f),则将f的所有符号变量用可能的数值代入,并计算出值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.初始化积分区间(a,b)。
2.如果把积分区间划分为100个格,则h=fabs(a-b)/100;
3.因为区间划分为100个格,因此循环过程如下:
for(i=0;i<100;i++)
{
fx=f (x+i*h+h/2);
……
}
流程图
实现程序代码如下:
#include "stdio.h"
#include "math.h"
{float s,h,y;
int i;
s=(fun(a)+fun(b))/2;
h=(b-a)/n;
for(i=1;i<n;ቤተ መጻሕፍቲ ባይዱ++)
s=s+fun(a+i*h);
y=s*h;
return y;
高手可以帮我解释下每一行语句的意思吗?
提问者:twwls-见习魔法师二级
最佳答案
a区间起点,b积分区间终点,n是这个区间划分数。每一个划分的长度为h=(b-a)/n。每一个划分利用梯形算法来求积分,即:上底+下底乘以高再除以2。第一个小梯形面积为(f(a) + f(a+h))*h/2,第二个为(f(a+h)+f(a+2h))*h/2,依次类推。将这些加和加起来有:
double f(double x)
{
return sin(x);
}
double Jifen(double a,double b)
{
double h;
double fx;
double x;
int i;
double sum=0;
h=fabs(a-b)/100;
x=a;
for(i=0;i<100;i++)
h*(f(a)/2 + f(a+h) + ... +f(a+(n-1)h) + f(b))/2)。预先将f(a)/2和f(b)/2加起来,其它数据即f(a+h) + ... f(a+(n-1)h)用循环处理,然后将所有结果乘以h即可。
问题采用矩形法求定积分
分析利用矩形法可以求定积分其原理如图(9-1)所示。求函数f在(a,b)区间的定积分公式为:
图9-1矩形法求定积分
所需数据与算法如下。
数据要求
问题的输入:
double a;/*积分区间下限*/
double b;/*积分区间上限*/
问题的输出:
doublefx;/*积分结果*/
设计初始算法
{
fx=f(x+i*h+h/2);
sum=sum+fx;
}
return sum*h;
}
void main()
{
double a;
double b;
double fx;
a=0;
b=3.1415926;
fx=Jifen(a,b);
printf("Ji Fen Y=%f" ,fx);
}
运行结果Ji Fen Y=2.000082
测试如果将积分区间划分为1000个格,则循环条件改为i<1000,得到结果为2.00001。该测试说明积分区间划分越多,越能够接近正确结果。
c语言用梯形法求积分
悬赏分:0-解决时间:2006-11-25 16:44
#include <math.h>
float integral(float(*fun)(float x),float a,float b,int,n)
相关文档
最新文档