MATLAB的微积分基本运算
第六章 MATLAB的微积分基本运算
学习目标:
1、 熟悉符号对象和表达式的创建;
2、 熟悉计算结果的类型与精度控制和转换
3、掌握MATLAB 中符号微积分运算:极限、导数、积分的命令及格式。
第一节 极 限
一、 极限概念演示:
数列极限是指当n 无限增大时,u n 与某常数无限接近或u n 趋向于某一定值,就图形而言,其点列以某一平行y 轴的直线为渐近线。函数极限也是如此。 例1:观察数列⎨
⎧n ⎫
⎬,当n →∞时的变化趋势。 ⎩n +1⎭
输入程序:
>> n=1:100;xn=n./(n+1); >> for i=1:100;
plot(n(i),xn(i),'r') % plot是二维图形作图命令。 hold on
end % for……..end 语句是循环语句,循环体内的语句被执行100次
由图可看出,随n 的增大,点列与直线y=1无限接近,所以例2:观察函数 f (x ) =sin
lim
n →∞
n
=1 n +1
1
,当x →0时的变化趋势。 x
输入程序:
>> x=-1:0.01:1;y=sin(1./x);plot(x,y)
从图可看到,当x →0时,sin 例3:观察函数 f (x ) =(1+
1
在-1和1之间无限次振荡,极限不存在。 x
1x
) ,当x →∞时的变化趋势 x
输入程序:
>> x=-1:10:1000;y=(1+1./x).^x;plot(x,y)
从图可看到,当x →∞时,函数值与某常数无限接近,这个常数就是e 。
二、 极限计算:
如果符号表达式F 中只有一个变量x ,x 可以省略,当a=0时0也可以省略。
例:阅读理解下列程序
>> syms x n
>> limit(x^2*exp(x)) ans = 0
>> limit(exp(-1/x),x,0,'left') ans = inf
>> limit((1+2/n)^(3*n),n,inf) ans = exp(6)
三、 符号对象与表达式的建立
微积分运算的对象为函数,MATLAB 称为符号表达式, MATLAB进行微积分运算首先要建立符号表达式,然后才可以利用MATLAB 符号数学工具箱提供的函数进行运算。符号对象的建立方法,符号表达式运算结果显示成数值型符号结果的精度控制,在第一章中学习过,不清楚的话,读者可以去回顾。
第二节 导数运算
一、 导数与偏导数:
1、 求一元函数的导数: 输入程序: 1)
>> syms x
>> diff(cos(3*x)*sin(2*x))
ans =
-3*sin(3*x)*sin(2*x)+2*cos(3*x)*cos(2*x) 2)
>> diff(x*sqrt(1-x^2)+asin(x)) ans =
(1-x^2)^(1/2)-x^2/(1-x^2)^(1/2)+1/(1-x^2)^(1/2)
2、 参数方程确定的函数的导数:
⎧x =x (t ) dy y /(t )
设参数方程确定的函数为⎨,则y 的导数=/ 。
dx x (t ) ⎩y =y (t )
⎧x =a (t +sin t ) dy
例:设 ⎨ ,求
dx y =a (1+cos t ) ⎩
输入程序:
>> syms a t
>> dx_dt=diff(a*(t-sin(t)));dy_dt=diff(a*(1-cos(t))); % dx_dt是给求导结果取的变量名 >> dy_dx=dy_dt/dx_dt dy_dx =
sin(t)/(1-cos(t))
二、多元函数的偏导数:
设u =
x 2+y 2+z 2 ,求
∂u ∂x
>> syms x y z
>> diff((x^2+y^2+z^2)^(1/2),x) ans =
1/(x^2+y^2+z^2)^(1/2)*x
高阶导数或高阶偏导数: >> diff(atan(x),2) ans =
-2/(1+x^2)^2*x
设z =x ln(xy ) ,求所有二阶偏导数。 >> diff(x*log(x*y),x,2) ans = 1/x
>> diff(x*log(x*y),y,2) ans = -x/y^2
>> diff(diff(x*log(x*y),x),y) ans = 1/y
三、 隐函数确定函数的导数或偏导数:
F x /dy
=-/ ,二元隐函数F(x,y,z)=0的偏由隐函数求导公式,一元隐函数 F(x,y)=0的导数dx F y
F y /F x /∂z ∂z
导数=-/ ,=-/
∂x F z ∂y F z
∂z ∂z
设x +y +z =e -(x +y +z ) ,求 ,
∂x ∂y
>> df_dx=diff(x+y+z-exp(-(x+y+z)),x) df_dx =
1+exp(-x-y-z)
>> df_dy=diff(x+y+z-exp(-(x+y+z)),y) df_dy =
1+exp(-x-y-z)
>> df_dz=diff(x+y+z-exp(-(x+y+z)),z) df_dz =
1+exp(-x-y-z)
>> dz_dx=-(df_dx/df_dz) dz_dx = -1
>> dz_dy=-(df_dy/df_dz) dz_dy = -1
第三节
不定积分与定积分运算
例:阅读理解下列程序 1) 求定积分: >> syms x
>> int(x*(sec(x))^2,0,pi/4) ans =
1/4*pi-1/2*log(2)
>> int(sqrt(1+x)/(1+sqrt(1+x)),0,1)
ans =
-2*2^(1/2)+3+2*Re(atanh(2^(1/2)))-2*log(2)
2)求不定积分: >> syms x n
>> A=[x^n,1/(x^2-1),(1+log(x))/x,(x^3-x^2*cos(x)+x*sqrt(x)-x)/x];
% 同时进行多个函数的不定积分运算
>> B=int(A) B =
[ x^(n+1)/(n+1), -atanh(x), 1/2*log(x)^2+log(x), 1/3*x^3-cos(x)-x*sin(x)+2/3*x^(3/2)-x]
3)二重积分:化为二次积分即可。 求二次积分:
⎰dx ⎰
1
x 2
2x
xydy
>> syms x y
>> int(int(x*y,y,x*2,x^2+1),x,0,1) ans = 1/12 例:求
⎰⎰xyd σ , 其中D 是由抛物线y
D
2
=x 与直线y =x -2围成的区域。
分析:画出积分区域D, 边界曲线的交点为(-1,1)和(4,2),先积x 后积y, 二重积分可
化为二次积分
⎰
2
-1
dy ⎰2xydx
y
y +2
>> int(int(x*y,x,y^2,y+2),y,-1,2) ans = 45/8
第四节 符号方程求解
一、 代数方程
代数方程是指未涉及微积分运算的方程,相对比较简单。在MATLAB 符号数学工具箱中,用符号表达式表示的代数方程求解可由函数solve 实现,其调用格式如表所示。
>> syms a b c x; >> s=a*x^2+b*x+c; >> solve(s) ans =
-(b + (b^2 - 4*a*c)^(1/2))/(2*a) -(b - (b^2 - 4*a*c)^(1/2))/(2*a)
⎧x 2-xy +y =3
例 求解非线性方程组⎨2的解
x -4x +3=0⎩
>> syms x y;
[x,y]=solve('x^2+x*y+y=3','x^2-4*x+3=0') x = 1 3 y = 1 -3/2
>> solution=[x,y] solution = [ 1, 1] [ 3, -3/2]
二、符号微分方程
dy d 2y
在MATLAB 中,用大写字母D 来表示微分,如:Dy表示,D2y 表示2,D3y 表
dt dt
d 3y
示3, 以此类推。D2y+Dy+x-10=0表示微分方程y"+y'+x-10=0。Dy(0)=3表示dt /
y (0) =3。 在符号数学工具箱中,求解微分方程的符号解由函数dsolve 实现,函数
dsolve 把D 后面的字母当做因变量,默认对t 求导。
dy t 2+y 2
=例 求微分方程的通解 2dt 2t
>> syms t y;
>> y=dsolve('Dy=(t^2+y^2)/t^2/2','t') y =
t
-t*(1/(C4 + log(t)/2) - 1) 例 求微分方程
dy
=2xy 2的通解和当y(0)=1时的特解 dx
>> syms x y
y=dsolve('Dy=2*x*y^2','x')
y=dsolve('Dy=2*x*y^2','y(0)=1','x') y =
0 -1/(x^2 + C8) y =
-1/(x^2 - 1)
第五节 可视化符号函数计算器
对于习惯了使用计算器或者只是作一些简单的符号运算与图形处理的读者,MATLAB 的符号数学工具箱中提供了一个可视化符号函数计算器,它具有功能简单实用、操作方便和可视化界面的优点。
在MATLAB 的命令窗口输入“funtool" ,即可启动可视化符号函数计算器,其界面如下图所示。可视化符号函数计算器由三个独立的窗口组成,分别为两个图形窗口(Figure No.1和Figure No.2)和一个函数运算控制窗口Figure No.3。任何时候,两个图形窗口只有一个处于激活状态。函数运算窗口的任何操作只对被激活的图形窗口起作用。
在函数运算控制窗口Figure No.3中,
第1排按钮只对f 起作用,可以求导数、积分、化简、提取分子分母、求1/f和反函数。 第2排按钮处理函数f 和常数a 的运算
第3排按钮处理f 和g 的运算,swap 是实现f 与g 的互换。 第4排按钮用于计算器自身的操作:
Insert :把当前激活窗口的函数写入列表fxlist Cycle :依次循环显示fxlist 中的函数
Delete :从fxlist 列表中删除激活窗口的函数 Reset :是计算器恢复到初始调用状态 Help :获得关于界面的在线说明 Demo :自动演示
上机实践:
1、求下列极限:
1-cos 2x e x -e sin x
1)、lim 2)lim
x sin x x →0x →0x -sin x
3-2x x
) 3) lim (secx -tan x ) 4)lim (
2-2x x →∞π+
x →
2
5)
lim
x →1
x +ln x
2
2、求下列导数或偏导数:
1πsin (x -) 2)y =(1-x 2) tan x ln x 1)y =ln
1sin (x +) 24
a 22
3)y =x -a -a arccos (a>0, x>0)
x
2/4) y =cot +x , 求y |x =0 5) y =x 3ln x , 求y (4)
⎧x =arctan x
6)z =x sin(xy ) 7)⎨ 2
y =ln(1+t ) ⎩
2
8)设 2sin(x+2y-3z)=x+2y-3z , 求证:3、求下列积分: 1)
π
∂z ∂z +=1 ∂x ∂y
e
1e
ln x dx 2)⎰2
dx
1+sin x
2
2
3)cos
x dx 4)⎰x ⎰
5)⎰sin(lnx ) dx
25-x 2dx
⎰dx ⎰7)⎰⎰sin(y
6)
2x
1
x 2+1
xydy
2
) dxdy ,其中D 是由x=0 , y=1及y=x所围成的闭区域。
D
4、求解代数方程组
⎧5x +6y +7z =16⎪
⎨4x -5y +z =7 ⎪x +y +2z =2⎩
5、求下列微分方程的通解和满足初始条件的特解 1)y -3y =8, y
/
x =0
=2
x =0
///2x
2)y -10y +9y =e , y =1, y /
x =0
=0