微积分实验.docx
- 文档编号:10614845
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:19
- 大小:133.49KB
微积分实验.docx
《微积分实验.docx》由会员分享,可在线阅读,更多相关《微积分实验.docx(19页珍藏版)》请在冰豆网上搜索。
微积分实验
微积分实验多媒体,上机实验
第四讲
Ⅰ授课题目
第3章微积分实验
Ⅱ教学目的与要求:
了解MATLAB在微积分中的使用,能利用MATALB解决一些微积分的基本问题
Ⅲ、讲授内容
3.4微分学实验
函数的微分计算有两种情况。
一是函数表达式已知时,可以求得导函数,这时进行的求导运算称为符号微分;二是函数是以离散的数据给出的,要求函数的导数,这也是实际应用中常见的情况,这时可以不求函数的表达式而直接根据给出的数据求函数的导数,这样的求导运算称为数值微分运算。
3.4.1符号微分
1.一元函数的符号微分
函数diff可以用于求一元函数的导数,其主要调用格式如下:
格式
功能
diff(f,’v’)或diff(f,sym(’v’))
以v为自变量,求一元函数表达式f的导数
diff(f)
对于由findsym返回的自变量,求一元函数表达式f的导数
diff(f,n)
求一元函数表达式f的n阶导数
说明:
(1)diff(S,n,’v’)与diff(S,’v’,n)这两种格式都能识别;
例1、设函数
,用MATLAB求
,
程序如下:
symsx;
f=sin(3*x);
f1=diff(f)
f10=diff(f,10)
运行结果:
f1=
3*cos(3*x)
f10=
-59049*sin(3*x)
例2、设函数
,用MATLAB求
,
,
程序如下:
symsxabc;
f=a*x^3+b*log(c);
f11=diff(f,'x')
f13=diff(f,'x',3)
f12=diff(f,'c')
运行结果:
f11=
3*a*x^2
f13=
6*a
f12=
b/c
说明
(2)diff还可以同时计算几个函数的导数。
例3、计算函数
,
,
的一阶导数。
程序如下:
symsx;
f1=sin(x);
f2=log(x^0.5-1);
f3=(exp(1/x)-1)^(-1);
diff([f1,f2,f3])
运行结果:
ans=
[cos(x),1/2/x^(1/2)/(x^(1/2)-1),1/(exp(1/x)-1)^2/x^2*exp(1/x)]
2.多元函数的偏导数
由于偏导数是将其他变量当作常量来求导的,所以仍然可以用diff来求多元函数的偏导数。
例4、设函数
,试求
,
,
程序如下:
symsxy;
f=x*exp(2*y);
f1=diff(f,'x')
f2=diff(f,'y')
f12=diff(diff(f,'x'),'y')%可以使用前面的结果,也可以将函数diff嵌套使用
运行结果:
f1=
exp(2*y)
f2=
2*x*exp(2*y)
f12=
2*exp(2*y)
对于函数的微分,可以利用微分与导数的关系,编写程序计算。
例5、函数同上例,试验求出函数的全微分
直接利用上面的计算结果,再执行下列语句即可:
symsdxdy
df=f1*dx+f2*dy
得到:
df=
exp(2*y)*dx+2*x*exp(2*y)*dy
3.4.2数值微分
数值微分是用离散的方法近似地计算函数
在某点
的导数值(变化率)。
实际情况中,函数往往是以统计数据表格的形式给出的一系列离散的数据,因而数值微分具有较强的实用性。
首先简介差分概念:
在科学技术和经济研究中,连续变化的时间范围内,变量y的变化速度是用
刻画;但在有些场合,变量要按一定的离散时间取值。
例如,要对某种水稻的产量进行动态分析,一般可以根据每一季水稻的产量采集数据。
因此常取在规定的时间区间上的差商
来刻画变化速度。
如果选择
,那么
可以近似代替变量的变化速度。
定义:
设函数
,记为
。
当x取遍非负整数时,函数值可以排成一个数列:
,则差
称为函数
的差分,也称为一阶差分,记为
,即
。
同样可以定义二阶差分:
定义:
函数
以函数表的形式给出:
……
y
……
说明
(1)函数本身是以n组离散数据给出时,其数值微分就有n-1个值;
(2)当间隔1取数据时,数值微分等于差分。
特别地,由于实际采集的数据按照某个变量均匀间隔的情况非常普遍,这时,差分与数值微分只相差常数倍。
MATLAB中计算一元函数的数值微分仍然用函数diff,这时调用格式为:
格式
功能
diff(X)
对向量X=[x
(1),x
(2),…,x(n)],所得值为
[x
(2)-x
(1),x(3)-x
(2),…,x(n)-x(n-1)]
diff(X,n)
求n阶差分值
说明:
对于向量X,diff返回的值也是一个向量,该向量比X少一个元素。
例6、根据调查得到函数的一些观测值,如下表。
计算其数值微分值。
x
2
3
5
10
14
y
5
4
2
1
4
执行语句:
x=[2351014];
y=[54214];
y1=diff(y)./diff(x)%运算符号“./”表示向量中对应位置的数据逐个做除法
得到:
y1=
-1.0000-1.0000-0.20000.7500
例7、已知20世纪美国人口统计数据如下表所示:
年
1900
1910
1920
1930
1940
1950
1960
1970
1980
1990
人口/百万
76
92
106.5
123.2
131.7
150.7
179.3
204
226.5
251.4
试计算这些年份的人口增长率。
程序如下:
year=[1900191019201930194019501960197019801990]
pop=[7692106.5123.2131.7150.7179.3204226.5251.4]
rate=diff(pop)./diff(year)
得到各年的增长率:
rate=
Columns1through6
1.60001.45001.67000.8515-13.101517.8600
Columns7through9
2.47002.25002.4900
可以绘制出增长率曲线:
year=year(1:
9);
plot(year,rate)
title(‘美国人口的年增长率’)
结果如图:
美国人口的年增长率
这个图形中可以很直观地看出1900—1990美国人口增长率波动的大致情况。
但是由于数据较少,所以绘制出来的图形较粗略。
3.4.3求函数的极值
在实际工作中经常遇到求函数极值的问题。
这时一般方法是先求出函数的一阶导数为零的点以及一阶导数不存在的点,然后从中选出极值点,需要时带入函数表达式求出极值。
对于简单的函数,可以编程按照这个方法求解。
另外,当碰到函数很复杂的情况时,为避免求更加复杂的导函数解析式,可以使用数值方法。
下面介绍求一元函数的极值的一个函数:
fminbnd,该函数是通过迭代算法找出一元函数的局部极小值,其常用格式有以下几种:
x=fminbnd(f,x1,x2)
x=fminbnd(f,x1,x2,options)
[x,fval]=fminbnd(...)
[x,fval,exitflag]=fminbnd(...)
说明:
(1)求函数f在区间
上的一个极小值。
注意此区间不宜太大,最好只含有函数的一个极小值;如果在该区间函数有多个极小值,则只搜索最小的极小值当中的一个;
(2)options是可选项,是一个向量,常用的几个选项有:
options
(1)决定是否显示求最小值的迭代步骤,若为非0值则显示,否则不显示;默认值是0;options
(2)是迭代时的误差控制范围,默认是1e-4;options(14)是最大的迭代步骤,默认为500。
使用时可以用赋值语句对相应的分量赋值,如options
(1)=1,options(14)=100等。
如果想恢复默认值,则只需使用赋值语句options=foptions即可;
(3)x返回极值点,fval返回极值,exitflag若返回1表示搜索成功,若为-1表示没有搜索到极小值点,若为0表示已经达到迭代的最大次数;
(4)也可以用fminbnd来求函数
的极大值,这时只需求函数
的极小值即可。
例8、求函数
在[-2,2]内的极小值与极大值
程序如下:
symsx;
f='x^3-x^2-x+1';
[x1,minf]=fminbnd(f,-2,2)
f1='-x^3+x^2+x-1';
[x2,maxf]=fminbnd(f1,-2,2)
maxf=-maxf
运行结果:
x1=
1.0000
minf=
3.5776e-010
x2=
-0.3333
maxf=
-1.1852
maxf=
1.1852
例9、求函数
的极值
注意到题目没有给出区间,先用图形粗略观察极值点的范围,极大值点大致在[0,2],极小值点大致在[2,5]。
程序如下:
symsx;
f='2*exp(-x)*sin(x)';
[x1,minf]=fminbnd(f,2,5)
f1='-2*exp(-x)*sin(x)';
[x2,maxf]=fminbnd(f1,0,2)
maxf=-maxf
运行结果:
x1=
3.9270
minf=
-0.0279
x2=
0.7854
maxf=
-0.6448
maxf=
0.6448
3.5积分学实验
积分运算比微分运算复杂得多。
《微积分》课程的学习让我们可以通过求被积函数的原函数来得到积分结果,在MATLAB中这种运算可以用函数int来实现。
另外我们也从《微积分》的学习了解到,有时即使知道被积函数有原函数,我们也无法将它表示为初等函数的形式,这时往往要用数值积分方法来求得。
这方面的算法很多,我们将介绍比较成熟的几种。
本书只介绍一元函数的积分。
对于重积分,可以将之转化为累次积分再利用下列函数计算。
3.5.1 符号积分
1.不定积分
函数常用格式:
int(f,x)返回函数f的原函数。
当函数f中有多个字母时,用参数x来指明积分变量;当函数f中仅有一个字母时,参数x可以省略。
要注意,MATLAB所求的原函数中没有任意常数c。
例1、设函数
,求不定积分
。
程序如下:
symsx;
f=(sin(x))^3;
int(f)
运行结果:
ans=
-1/3*sin(x)^2*cos(x)-2/3*cos(x)
即:
例2、设函数
,求不定积分
。
程序如下:
symsxab;
f=log(a*x+b)
int(f,x)
运行结果:
ans=
log(a*x+b)*x+1/a*log(a*x+b)*b-x-1/a*b
得到:
即:
2.定积分
求定积分也可以用函数int,这时格式为:
int(f,x,a,b)其中f为被积函数,x为被积变量,a为积分下限,b为积分上限。
在不至于引起混淆时,x可以省略。
例3、求下列定积分:
(1)
程序如下:
symsx
f=x^5*sin(x)
int(f,x,0,pi/2)
运行结果:
ans=
-15*pi^2+5/16*pi^4+120
即
(2)
程序如下:
symsx
f=exp(-x^2)
int(f,x,0,inf)
运行结果:
ans=
1/2*pi^(1/2)
即
例4、求曲线
,
所围图形的面积。
解:
根据定积分几何意义,就是计算定积分
程序如下:
symsx
f=x^(1/2)-x^2;
int(f,x,0,1)
运行结果:
ans=
1/3
即
,
所围图形的面积为1/3
在求积分中有一些是int函数无法求出的,这时要用到下面的数值积分方法。
3.5.2数值积分
如果函数是离散数据给出的,或者无法找出原函数的积分,这时可以用数值积分法得到积分近似值。
对定积分定义的学习让我们知道,定积分的计算是将小区间上的曲边梯形的面积用规则图形的面积近似代替,然后取极限得到精确值的。
因此在找积分值时,如果用梯形近似代替小曲边梯形得到的积分算法,就叫梯形求积算法,在此基础上为计算更加快速、精确而对算法作一些优化,可以得到很多算法。
这里介绍以下三种。
对具体算法感兴趣的读者可以阅读数值计算方法方面的书籍。
本书仅介绍相关函数的使用。
1.梯形求积分函数trapz()
常用格式有:
trapz(Y),trapz(X,Y)
其中,X,Y是同维向量,trapz(Y)表示对被积函数Y以间距为1取点,根据所得到的函数值Y进行梯形积分计算,如果取点时是以a为间距取的,则实际积分值为trapz(Y)*a;当间距不均匀时,采用trapz(X,Y),它是求Y关于X的积分值。
例、用梯形法求函数sinx在区间
内的定积分值。
解:
首先对函数取点。
当然取的点越多,计算越精确,但是计算量会很大,影响计算速度。
这里以
为间距取点进行计算。
程序如下:
x=[0:
pi/20:
pi];
y=sin(x);
trapz(x,y)%或者trapz(y)*pi/20
运行结果:
ans=
1.9959
如果将间距缩小为
,则得到:
ans=
1.9990
与精确值2相比,误差更小。
例6、采集到函数
的一列函数值,如下表,据此用梯形函数trapz(),计算
。
x
0.6366
0.5046
0.3679
0.3001
0.1700
0.0524
0
程序如下:
x=[0.5*pi,0.6*pi,0.7*pi,0.75*pi,0.85*pi,0.95*pi,pi];
y=[0.6366,0.5046,0.3679,0.3001,0.1700,0.0524,0];
trapz(x,y)
运行结果:
ans=
0.4817
如果以间距
取点进行计算。
程序如下:
x=[pi/2:
pi/20:
pi];
y=sin(x)./x;%注意这时函数的写法,通常的“/”用“./”代替
trapz(x,y)
运行结果:
ans=
0.4814
由于数据增加,结果更加精确。
2.辛普生(Simpon)自适应法quad()
该函数的常用格式为:
quad(f,x1,x2),quad(f,x1,x2,e)
计算函数f从x1到x2的积分值
,e为指定误差范围,默认是
。
例7、用函数quad()计算
程序如下:
symsx
quad('sin(x)./x',pi/2,pi)
运行结果:
ans=
0.4812
3.Newton-Cotes高阶自适应法quad8()
其使用格式与quad()相同,一般而言更加精确。
例8、用函数quad8()计算
程序如下:
symsx
f='exp(x.^2).*x'
quad8(f,0,1)
运行结果:
ans=
0.8591
上机实验
利用MATLAB求解下列各题:
1求下列函数的一阶导数:
(1)
(2)
2求函数
关于x的3阶导数以及关于a的一阶导数:
。
3求二元函数
的所有一阶偏导数以及二阶偏导数。
4函数
以下面表格形式给出,求其数值微分。
x
-2
3
5
7
y
0
2
1
0
5求函数
的极值。
V课外作业:
上机实验
1用函数int()计算下列不定积分:
(1)
(2)
2计算下列定积分:
(1)
(2)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微积分 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)