>>symsxy
>>limit(limit(x*y/(x^2+y^2>,x,0>,y,0>
ans=
0
注:
此二元函数的极限不存在,但计算结果为零,是不正确的。
要注意二元函数的极限与二次极限的区别。
故使用MATLAB计算极限,要在极限存在的前提下进行。
5.4.2符号导数
diff函数用于对符号表达式求导数。
该函数的一般调用格式为:
diff(s>:
没有指定变量和导数阶数,则系统按findsym函数指示的默认变量对符号表达式s求一阶导数。
diff(s,'v'>:
以v为自变量,对符号表达式s求一阶导数。
diff(s,n>:
按findsym函数指示的默认变量对符号表达式s求n阶导数,n为正整数。
diff(s,'v',n>:
以v为自变量,对符号表达式s求n阶导数。
例5-3(1>设z=e2xcos(3y>,求
<化简过程中只写最后一个最简结果)。
2.设z=e2xcos(3y>,求
并求
(2>y=ex(sinx+cosx>
>>z=exp(2*x>*cos(3*y>。
>>f1=diff(diff(z,x>,y>
f1=
-6*exp(2*x>*sin(3*y>
%或f1=diff(diff(z,y>,x>结果同上!
>>ff2=subs(f1,x,1>。
>>ff2=subs(ff2,y,pi>
ff2=-1.6288e-014
<2)
>>clear。
symsxy
>>y=exp(x>*(sin(x>+cos(x>>。
>>dy=diff(y,x>
dy=
exp(x>*(sin(x>+cos(x>>+exp(x>*(cos(x>-sin(x>>
>>simple(dy>
ans=
2*exp(x>*cos(x>
>>simplify(dy>
ans=
2*exp(x>*cos(x>
例5-3求下列函数的导数。
(同前面合并!
>
(2>
,
>>clear。
symsxy
>>s=diff(x^2*exp(-y>,x,2>
s=
2*exp(-y>
>>t=diff(x^2*exp(-y>,x>。
>>t=diff(t,y>。
>>t=subs(t,x,1>
>>t=subs(t,y,2>
t=
-0.2707
例5-4.(1>求由方程y5+2y-x-3x7=0所确定的隐函数的导数
。
(2>.求函数z=ln(x2+y2>的全微分,并化简<化简过程中只写最后一个最简结果)。
(3>求摆线
,在t=π所对应的点的切线斜率
(4>求y=ln(sinx>的微分
>>symsxy。
>>fxy=y^5+2*y-x-3*x^7。
>>fx=diff(fxy,'x'>。
fy=diff(fxy,'y'>。
>>dv=-fx/fy
dv=(1+21*x^6>/(5*y^4+2>
>>symsxydxdy
>>z=log(x^2+y^2>。
>>dz=diff(z,x>*dx+diff(z,y>*dy。
>>dz=simple(dz>
dz=2*(x*dx+y*dy>/(x^2+y^2>
>>symsat。
>>x=a*(t-sin(t>>。
y=a*(1-cos(t>>。
>>f1=diff(y,t>。
f2=diff(x,t>。
>>f=f1/f2
f=
sin(t>/(1-cos(t>>
>>ff=inline(f>。
>>k=ff(pi>
k=
6.1232e-017
>>symsxydxdy
>>y=log(sin(x>>。
>>f1=diff(y,x>。
>>dy=f1*dx
dy=
cos(x>/sin(x>*dx
5.4.3符号积分
符号积分由函数int来实现。
该函数的一般调用格式为:
int(s>:
没有指定积分变量和积分阶数时,系统按findsym函数指示的默认变量对被积函数或符号表达式s求不定积分。
int(s,v>:
以v为自变量,对被积函数或符号表达式s求不定积分。
int(s,v,a,b>:
求定积分运算。
a,b分别表示定积分的下限和上限。
该函数求被积函数在区间[a,b]上的定积分。
a和b可以是两个具体的数,也可以是一个符号表达式,还可以是无穷(inf>。
当函数f关于变量x在闭区间[a,b]上可积时,函数返回一个定积分结果。
当a,b中有一个是inf时,函数返回一个广义积分。
当a,b中有一个符号表达式时,函数返回一个符号函数。
当系统求不出解读解,会自动求原点附近的一个近似解。
例5-5求下列积分。
>>symsx
>>f=(x^2+1>/(x^2-2*x+2>^2。
>>g=cos(x>/(sin(x>+cos(x>>。
>>h=exp(-x^2>。
>>I=int(f>
>>J=int(g,0,pi/2>
>>K=int(h,0,inf>
结果为:
I=1/4*(2*x-6>/(x^2-2*x+2>+3/2*atan(x-1>
J=1/4*pi
K=1/2*pi^(1/2>
4.求不定积分:
并化简<化简过程中只写最后一个最简结果)。
(4>
>>f2=int(x*exp(a*x>>
f2=
1/a^2*(a*x*exp(a*x>-exp(a*x>>
>>simple(f2>
ans=
exp(a*x>*(a*x-1>/a^2
例5-5计算积分<无解读解)
<3)
(4>
(5>重积分
>>symsx。
t3=int(3*sin(x^2>/x,1,4>
t3=
3/2*sinint(16>-3/2*sinint(1>%特殊函数sinint(a>表示积分int(sin(a*x>/x,0,1>
>>t3=vpa(t3,5>%用vpa求数值解
t3=
1.0279
>>t4=int(exp(-x^sin(x>>,0,1>%求不出解读解
Warning:
Explicitintegralcouldnotbefound.
>InD:
\toolbox\symbolic\@sym\int.matline58
t4=
int(exp(-x^sin(x>>,x=0..1>
>>t4=vpa(t4,5>%也可用vpa求数值解
t4=
.45491
>>symsxy
>>iy=int(2*sqrt(1-x^2>,y,-sqrt(1-x^2>,sqrt(1-x^2>>。
>>t5=int(iy,x,-1,1>
t5=
16/3
5.5级数
5.5.1级数符号求和
求无穷级数的和需要符号表达式求和函数symsum,其调用格式为:
symsum(s,v,n,m>
其中s表示一个级数的通项,是一个符号表达式。
v是求和变量,v省略时使用系统的默认变量。
n和m是求和的开始项和末项。
例5-6求级数
的和S,以及前十项的部分和S1.
>>symsnx
>>S=symsum(1/n^2,1,inf>
S=
1/6*pi^2
>>S1=symsum(1/n^2,1,10>
S1=
1968329/1270080
重要说明:
当求函数项级数
的和S2时,可用命令:
>>symsnx
>>S2=symsum(x/n^2,n,1,inf>
S2=
1/6*x*pi^2
>>S2=symsum(x/n^2,n,1,10>
S2=
1968329/1270080*x
两点说明:
<1)注意观察S2与S1的细微区别!
<2)当通项公式的Matlab表达式较长时,表达式要加上单引号.后面的练习中会遇到此问题.
例5-7求下列级数之和。
3.求幂级数
的和函数(注意最后结果要化简!
>
(3>symsnx。
%(1分>
s1=symsum(1/(2*n+1>/(2*x+1>^(2*n+1>,n,0,inf>。
%(4分>
s1=simple(s1>%(3分>
s1=1/2*log((x+1>/x>
5.5.2函数的泰勒级数
MATLAB提供了taylor函数将函数展开为幂级数,其调用格式为:
taylor(f,v,n,a>
该函数将函数f按变量v展开为泰勒级数,展开到第n项(即变量v的n-1次幂>为止,n的缺省值为6。
v的缺省值与diff函数相同。
参数a指定将函数f在自变量v=a处展开,a的缺省值是0。
例5-8求函数在指定点的泰勒级数展开式。
4.将函数
在x=0点展开成x的幂级数<取前9项,实际结果为4项)
(4>f4=log((1+x>/(1-x>>。
%(2分>
taylor(f4,x,0,9>%(6分>
ans=
2*x+2/3*x^3+2/5*x^5+2/7*x^7
4.将函数
在x=-1点展开成x的幂级数(采用默认阶数>
(4>taylor(1/x^2,-1>%(8分>
ans=3+2*x+3*(x+1>^2+4*(x+1>^3+5*(x+1>^4+6*(x+1>^5
5.6符号代数方程求解
在MATLAB中,求解用符号表达式表示的代数方程可由函数solve实现,其调用格式为:
solve(s>:
求解符号表达式s的代数方程,求解变量为默认变量。
solve(s,v>:
求解符号表达式s的代数方程,求解变量为v。
solve(s1,s2,…,sn,v1,v2,…,vn>:
求解符号表达式s1,s2,…,sn组成的代数方程组,求解变量分别v1,v2,…,vn。
注:
线性方程可用linsolve函数
当系统求不出解读解,会自动求原点附近的一个近似解。
例5-9解方程
(1>二次方程ax2+bx+c=0。
(2>无解读解x2-3x+ex=2。
(3>方程组
,
这里y,z是未知量。
>>symsabcx。
solve(a*x^2+b*x+c,x>
ans=
[1/2/a*(-b+(b^2-4*a*c>^(1/2>>]
[1/2/a*(-b-(b^2-4*a*c>^(1/2>>]
>>solve(x^2-3*x+exp(x>-2,x>%无解读解,得一近似解
ans=
1.4462386859664265816
>>symsyzuvw。
s=solve(u*y^2+v*z+w,y+z+w,y,z>
s=
y:
[2x1sym]
z:
[2x1sym]
>>s.y,s.z%察看结构的具体内容,结果略,也可用下列方法更直接
>>[y,z]=solve(u*y^2+v*z+w,y+z+w,y,z>
y=
[-1/2/u*(-2*u*w-v+(4*u*w*v+v^2-4*u*w>^(1/2>>-w]
[-1/2/u*(-2*u*w-v-(4*u*w*v+v^2-4*u*w>^(1/2>>-w]
z=
[1/2/u*(-2*u*w-v+(4*u*w*v+v^2-4*u*w>^(1/2>>]
[1/2/u*(-2*u*w-v-(4*u*w*v+v^2-4*u*w>^(1/2>>]
例5-9解下列方程。
***4.问k为何值时,下面的方程组有非零解?
请写出相应的MATLAB命令
x1-3x3=0
x1+2x2+kx3=0
2x1+kx2-x3=0
(4>
>>symsk%(1分>
>>A=[10-3。
12k。
2k-1]。
%(1分>
>>D=det(A>%(2分>
D=10-k^2-3*k
>>solve(D>
ans=
[-5]
[2]
当k=-5或k=2时,det(A>=0,从而有非零解!
。
5.7符号常微分方程求解
在MATLAB中,用大写字母D表示导数。
例如,Dy表示y',D2y表示y'',Dy(0>=5表示y'(0>=5。
D3y+D2y+Dy-x+5=0表示微分方程y'''+y''+y'-x+5=0。
符号常微分方程(组>求解可以通过函数dsolve来实现,其调用格式为:
S=dsolv