MATLAB符号计算.docx
- 文档编号:9566535
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:44
- 大小:1.49MB
MATLAB符号计算.docx
《MATLAB符号计算.docx》由会员分享,可在线阅读,更多相关《MATLAB符号计算.docx(44页珍藏版)》请在冰豆网上搜索。
MATLAB符号计算
实验日期2014-03-19
一、实验名称:
MATLAB符号计算
二、实验目的:
(1)掌握定义符号对象的方法;
(2)掌握符号表达式的运算法则以及符号矩阵运算;(3)掌握求符号函数极限及导数的方法;(4)掌握求符号函数定积分和不定积分的方法
三、实验原理
1.函数极限及导数的方法
(1)函数极限:
limit(F,x,a)求符号函数f(x)的极限值。
即计算当变量x趋近于常数a时,f(x)函数的极限值。
(2)limit(f):
求符号函数f(x)的极限值。
符号函数f(x)的变量为函数findsym(f)确定的默认变量;没有指定变量的目标值时,系统默认变量趋近于0,即a=0的情况。
(3)limit(f,x,a,'right'):
求符号函数f的极限值。
'right'表示变量x从右边趋近于a。
(4)limit(f,x,a,‘left’):
求符号函数f的极限值。
‘left’表示变量x从左边趋近于a。
2.微分:
diff(s):
没有指定变量和导数阶数,则系统按findsym函数指示的默认变量对符号表达式s求一阶导数。
diff(s,'v'):
以v为自变量,对符号表达式s求一阶导数。
diff(s,n):
按findsym函数指示的默认变量对符号表达式s求n阶导数,n为正整数。
diff(s,'v',n):
以v为自变量,对符号表达式s求n阶导数。
3.函数定积分和不定积分的方法:
int(s):
没有指定积分变量和积分阶数时,系统按findsym函数指示的默认变量对被积函数或符号表达式s求不定积分。
int(s,v):
以v为自变量,对被积函数或符号表达式s求不定积分。
int(s,v,a,b):
求定积分运算。
a,b分别表示定积分的下限和上限。
梯形法:
trapz(x,y):
x为分割点构成的向量,y为被积函数在分割点上的函数值构成的向量;
抛物线法:
quad(f,a,b,tol),f是被积函数,[a,b]是积分区间,tol是精度。
4.求和及泰勒级数展开的方法:
(1)求和symsum(s,v,n,m)其中s表示一个级数的通项,是一个符号表达式。
v是求和变量,v省略时使用系统的默认变量。
n和m是求和的开始项和末项。
(2)泰勒级数展开taylor(f,v,n,a)该函数将函数f按变量v展开为泰勒级数,展开到第n项(即变量v的n-1次幂)为止,n的缺省值为6。
v的缺省值与diff函数相同。
参数a指定将函数f在自变量v=a处展开,a的缺省值是0。
四、实验内容
1.求下列极限:
(1)
(2)
(3)
(4)
(3)
2.求下列函数的导数:
(1)
(2)
(3)
(4)
(5)
(6)
,求
,
,
3.求下列函数的积分
(1)
(2)
(3)
(4)
(5)
由曲面
,
,
所围成
(6)
4.解下列方程组。
(1)
(2)
(3)
5.求下列级数的和
(1)
(2)
6.泰勒级数展开
将函数
展开成
的幂级数
五、实验过程及结果(含源代码)
1.求下列极限:
>>symsxat;
>>F1=limit(atan(x)/x)%求F1的极限
F1=
1
>>F2=limit((1+x)/(1-x)^(1/x))%求F2的极限
F2=
exp
(1)
>>F3=limit(x*(log(1+x))/(sin(x^2)))%求F3的极限
F3=
1
>>F4=limit((1/(1+x))-(1/(1-x^3)),x,1)%求F4的极限
F4=
NaN
>>F5=limit((1+2*t/(a*x))^(5*x),x,inf)%求F5的极限
F5=
exp((10*t)/a)
2.求下列函数的导数:
>>x=sym('x');
>>y1=diff((cos(x)^3)-(cos(3*x)))%求导后y1的表达式
y1=
3*sin(3*x)-3*cos(x)^2*sin(x)
>>y2=diff(x*sin(x)*log(x))%求导后y2的表达式
y2=
sin(x)+log(x)*sin(x)+x*cos(x)*log(x)
>>y3=diff((x*exp(x)-1)/sin(x))%求导后y3的表达式
y3=
(exp(x)+x*exp(x))/sin(x)-(cos(x)*(x*exp(x)-1))/sin(x)^2
>>y4=diff(exp(x)*cos(x))%求导后y4的表达式
y4=
exp(x)*cos(x)-exp(x)*sin(x)
>>y5=diff(x^2*sin(x))%求导后y5的表达式
y5=
x^2*cos(x)+2*x*sin(x)
>>symsxat;
>>f=[a*exp(x)t^3*x;t*cos(x)log(x)];
>>diff(f)%求f的一阶导
ans=
[a*exp(x),t^3]
[-t*sin(x),1/x]
>>diff(f,t,2)%求f对t的二阶导
ans=
[0,6*t*x]
[0,0]
>>diff(diff(f),t)%求f的一阶导后再对t求导
ans=
[0,3*t^2]
[-sin(x),0]
3.求下列函数的积分
>>symsxyzabc;
>>f1=int(sin(a*x)*sin(b*x)*sin(c*x),x)%第一题的积分
Warning:
Explicitintegralcouldnotbefound.
f1=
piecewise([a=b+c,int(sin(x*(b+c))*sin(b*x)*sin(c*x),x)],[a+b=c,int(sin(c*x-b*x)*sin(b*x)*sin(c*x),x)],[a+c=b,int(sin(b*x-c*x)*sin(b*x)*sin(c*x),x)],[a+b+c=0,int(sin(-b*x-c*x)*sin(b*x)*sin(c*x),x)],[a<>b+canda+b<>canda+c<>banda+b+c<>0,cos(x*(a+b+c))/(4*a+4*b+4*c)-cos(x*(a+b-c))/(4*a+4*b-4*c)-cos(x*(a-b+c))/(4*a-4*b+4*c)-cos(x*(b-a+c))/(4*b-4*a+4*c)])
>>f2=int(x^5+x^3-sqrt(x)/4,x)%第二题的积分
f2=
x^4/4-x^(3/2)/6+x^6/6
>>f4=int((int(x/(1+x*y),x,0,1)),y,0,1)%第四题的积分
Warning:
Explicitintegralcouldnotbefound.
f4=
log(4)-1
>>f5=int(pi*z^2,z,1,2)%第五题的积分
f5=
(7*pi)/3
>>A=[1/xb*x^2;exp(x)cos(x)];%第六题的积分
>>f5=int(A,x)
f5=
[log(x),(b*x^3)/3]
[exp(x),sin(x)]
4.解下列方程组
>>[x1,x2,x3]=solve('-2*x1+5*x2-7*x3=-5','4*x1+3*x2-2*x3=3','2*x1+1*x2+6*x3=15')
x1=%第一题的解
23/83
x2=
167/83
x3=
172/83
首先编制函数文件fc.m如下:
%第二题的解
functiony=fc(x)
y
(1)=x
(1)-5*sin(x
(1))-4*cos(x
(2));
y
(2)=x
(2)-5*cos(x
(1))+4*sin(x
(2));
y=[y
(1)y
(2)];
在MATLAB窗口中输入:
>>x0=[0.50.5];
>>fsolve('fc',x0)
Nosolutionfound.
fsolvestoppedbecausetheproblemappearsregularasmeasuredbythegradient,
butthevectoroffunctionvaluesisnotnearzeroasmeasuredbythe
defaultvalueofthefunctiontolerance.
ans=
-0.75450.8106
>>[x,y]=dsolve('Dx=-5*x+y','Dy=-y+5*x')%第三题的解
x=
C2/5-C1/exp(6*t)
y=
C2+C1/exp(6*t)
5.求下列级数的和
>>symsf1f2n
>>a=1;
>>b=inf;
>>f1=(2*n-1)/2^n;
>>I1=symsum(f1,n,a,b)%求I1的解
I1=
3
>>I2=symsum(f2,n,a,b)%求I2的解
I2=
2-2*log
(2)
6.泰勒级数展开
>>symsx
>>taylor(1/(x^2+5*x-3),3,2)%展开至2次幂
ans=
(70*(x-2)^2)/1331-(9*x)/121+29/121
>>taylor(1/(x^2+5*x-3),4,2)%展开至3次幂
ans=
(70*(x-2)^2)/1331-(9*x)/121-(531*(x-2)^3)/14641+29/121
>>taylor(1/(x^2+5*x-3),5,2)%展开至4次幂
ans=
(70*(x-2)^2)/1331-(9*x)/121-(531*(x-2)^3)/14641+(4009*(x-2)^4)/161051+29/121
实验日期2014-04-02
一、实验名称
MATLAB符号计算及应用
二、实验目的
(1)掌握定义符号对象的方法
(2)掌握符号表达式的运算法则以及符号矩阵运算
(3)掌握求符号函数极限及导数的方法
(4)掌握求符号函数定积分和不定积分的方法
四、实验内容
1.一无阻力抛射体的飞行,给定初速
,试计算物体在真空中飞行的时间和距离,并绘出其运行轨迹。
2.一有阻力抛射体的飞行,给定初速
,设空气阻力的方向与速度向量相反,大小与速度的平方成正比,试计算物体在真空中飞行的时间和距离,并绘出其运行轨迹。
3.用数值积分法求
,在
到
之间所围面积,并讨论步长和积分方法对精度的影响。
4.计算二重积分
,积分区域D为由
,
及
所围成的闭合区域,并作出积分区域D的示意图。
5.计算三重积分
,积分区域V为由
,
,
及
所围成的闭合区域,并作出积分区域V的示意图。
五、实验过程及结果(含源代码)
1.
>>symsvvxvytyxtfthetaxmax;%定义变量
>>v=10;theta=pi/3;%给初速度v(单位m/s)和抛射角theta(单位rad)赋值
>>vx=v*cos(theta);%速度的x轴分量
>>vy=v*sin(theta);%速度的y轴分量
>>y=vy*t-0.5*9.8*t^2;%建立y轴方向上的位移表达式
>>x=vx*t;%建立x轴方向上的位移表达式
>>tf=roots([-0.5*9.8vy0])%当y=0时,解出落地时间tf(单位s)
tf=
0
1.7674
>>tf=1.7674;
>>xmax=vx*tf%利用tf求出水平抛射距离(单位m)
xmax=
8.8370
>>t=0:
0.01:
tf,tf;%绘图
>>x=vx*t;
>>y=vy*t-0.5*9.8*t.^2;
>>plot(x,y)
2.
>>symsxxmaxyvvxvyffxfykmgthetat%定义变量
>>v=10;k=-1.2;m=5;g=-9.8;theta=pi/3;%初速度v(m/s),阻力比例系数k,物体质量m(kg),重力加速度g(m/s2),抛射角theta(rad)赋值
>>fx=k*vx;%阻力在x轴上的分量
>>fy=k*vy;%阻力在y轴上的分量
>>vx=v*cos(theta)+fx/m*t;%速度在x轴上的分量,记为方程a
>>vy=v*sin(theta)+(fy/m+g)*t;%速度在y轴上的分量,记为方程b
>>x=v*cos(theta)*t+1/2*fx/m*t^2;%建立x轴方向上的位移表达式,记为方程c
>>y=v*sin(theta)*t+1/2*(fy/m+g)*t^2;%建立y轴方向上的位移表达式,记为方程d
>>vy%查看方程b的符号表达式
vy=
5*3^(1/2)-t*((6*vy)/25+49/5)
>>y%查看方程d的符号表达式
y=
5*3^(1/2)*t-t^2*((3*vy)/25+49/10)
>>[vyt]=solve('5*3^(1/2)*t-t^2*((3*vy)/25+49/10)=0','5*3^(1/2)-t*((6*vy)/25+49/5)-vy=0')
%联立方程b和方程d求解物体飞行时间t
vy=
0
-(50*3^(1/2))/(6*3^(1/2)-49)
t=
5*3^(1/2)
-5*3^(1/2)
>>vpa(vy,6)
ans=
0
2.24314
>>vpa(t,6)
ans=
8.66025
-8.66025%显然物体在有阻力的情况下飞行了8.66025s
>>subs(vx,'t',8.66025)%将此时间带入vx表达式中的变量t中,得方程A
ans=
5-(457058187573461*vx)/219902325555200
>>subs(x,'t',8.66025)%将此时间带入x表达式中的变量t中。
得方程C
ans=
34641/800-(7916476337866131*vx)/879609302220800
[vxx]
=solve('5-(457058187573461*vx)/219902325555200-vx=0','34641/800-(7916476337866131*vx)/879609302220800-x=0')%联立方程A和方程C求出物体飞行最远水平距离x
vx=
1099511627776000/676960513128661
x=
155********423814701/541568*********800
>>vpa(x,6)%化简x的值,使其保留到6位有效数字
ans=
28.6836%显然物体飞行最远水平距离为28.6836m
>>cleart%清除变量t内存,为作图做t的分划做准备
>>symst%再次定义变量t
>>x=v*cos(theta)*t+1/2*((k*v*cos(theta))/(k/m*t+1))/m*t^2%将fx的表达式带入方程c得到的新方程c`,并查看其符号表达式
x=
5*t+(3*t^2)/(5*((6*t)/25-1))
>>y=v*sin(theta)*t+1/2*((k*(v*sin(theta)+g*t)/(k/m*t+1))/m+g)*t^2%将fy的表达式带入方程d得到的新方程d`,并查看其符号表达式
y=
5*3^(1/2)*t-t^2*(((294*t)/25-6*3^(1/2))/(10*((6*t)/25-1))+49/10)
>>t=0:
0.1:
8.66025;%绘图
>>x=5*t+(3*t.^2)/(5*((6*t)/25-1));
>>y=5*3^(1/2).*t-t.^2*(((294.*t)/25-6*3^(1/2))/(10*((6.*t)/25-1))+49/10);
>>plot(x,y)
3.
>>symsxyexactapproximate11approximate12approximate21%定义变量
>>exact=int(-1*x.^2+115,x,0,10)%求出积分精确值
exact=
2450/3
>>vpa(exact)
ans=
816.66666666666666666666666666667
>>x=linspace(0,10,10);%将区间[0,10]10等分赋予x
>>y=-1*x.^2+115;%建立x和y两数组的函数关系
>>approximate11=trapz(x,y)%用梯形公式求y的数值积分
approximate11=
814.6091
>>approximate12=quad('-1*x.^2+115',0,10)%用辛普森公式求y得数值积分
approximate12=
816.6667%显然辛普森公式精度好于梯形公式
>>x=linspace(0,10,20);%将区间[0,10]20等分赋予x
>>y=-1*x.^2+115;
>>approximate21=trapz(x,y)%求更小步长下的梯形公式数值积分
approximate21=
816.2050%显然步长越小精度越好
4.
>>clear
>>symsxy%定义变量
>>int((int(x^2+y^2),x,y,1),y,0,1)%求二重积分
ans=
1/3
>>x=0:
0.1:
1;%作出积分区域,蓝色区为积分区域
>>y=x;
>>plot(x,y);
>>title('积分区域')
5.
>>clear
>>symsxyz%定义变量
>>int(int(int('4*x*y*z',x,y,1),y,0,1),z,0,1)%求三重积分
ans=
1/4
>>clear%绘图
>>symsx1x2x3x4y1y2y3y4z1z2z3z4
>>[x1,y1]=meshgrid(0:
0.05:
1);%生成矩形域格点坐标数组x1,y1
>>z1=x1.*y1;%生成对应的z1数组
>>mesh(x1,y1,z1)%作出z=xy图像
>>holdon%保持此图像不被下一个图像代替
>>[x2,y2]=meshgrid(0:
0.05:
1);%生成矩形域格点坐标数组x2,y2
>>z2=zeros(size(x1));%生成一个与x1同维的全零数组
>>mesh(x2,y2,z2)%作出z=0图像
>>[x3,z3]=meshgrid(0:
0.05:
1);%生成矩形域格点坐标数组x3,z3
>>y3=x3;%生成对应的y3数组
>>mesh(x3,y3,z3)%作出y=x图像
>>[y4,z4]=meshgrid(0:
0.05:
1);%生成矩形域格点坐标数组y4,z4
>>x4=ones(size(y4));%生成一个与y4同维的全1数组
>>mesh(x4,y4,z4)%作出x=1图像。
此四个图像所包围的空间即为积分区域
实验日期2014-04-16
一、实验名称
MATLAB绘图
二、实验目的
(1)掌握绘制二维图形的常用函数。
(2)掌握绘制三维图形的常用函数。
(3)掌握绘制图形的辅助操作
三、实验原理
1.绘制二维图形的常用函数
plot函数绘制二维曲线,常用格式有:
plot(x):
缺省自变量的绘图格式,x可为向量或矩阵。
plot(x,y):
基本格式,x和y可为向量或矩阵。
plot(x1,y1,x2,y2,…):
多条曲线绘图格式,在同一坐标系中绘制多个图形。
plot(x,y,‘s’):
开关格式,开关量字符串s设定了图形曲线的颜色、线型及标示符号。
2.绘制三维图形的常用函数
(1)三维曲线图——plot3函数
plot3(x1,y1,z1,'s1',x2,y2,z2,'s2'…)
(2)三维网格图——mesh函数为数据点绘制网格线:
mesh(z)——z为n×m的矩阵,x与y坐标为元素的下标位置
mesh(x,y,z)——x,y,z分别为三维空间的坐标位置
(3)三维曲面图——由surf函数完成的,用法和mesh类似。
3.绘制图形的辅助操作
title——给图形加标题
xlable——给x轴加标注
ylable——给y轴加标注
text——在图形指定的任意位置加标注
gtext——利用鼠标将标注加到图形任意位置
gridon——打开坐标网格线
gridoff——关闭坐标网格线
legend——添加图例
axis——控制坐标轴刻度
4.特殊坐标系
极坐标图形——polar(theta,rho(i,:
))
四、实验内容
1、绘制
和它的导数在[0,4
]的曲线,并用适当的字体、大小标注其x轴、y轴及其函数。
2、采用两种不同方法绘制
在
的三维(透视)网格曲面。
(提示:
ezmesh;mesh;hidden)
3、绘制下列极坐标图形
r=3(1-cos)
r=2(1+cos)
r=2(1+sin)
r=cos3
r=exp(4)
4、在同一坐标内,分别用不同线型和颜色绘制曲线
和
,标记两曲线交叉点。
五、实验过程及结果(含源代码)
1.
>>clear
>>symsty
>>y=sqrt(3)/2*exp(-2*t)*sin(2*sqrt(3)*t+pi/6);
>>DY=diff(y,'t');%求导
>>t=0:
pi/100:
4*pi;%先将变量t分成数组
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 符号 计算