MATLAB符号计算.docx

上传人:b****8 文档编号:9566535 上传时间:2023-02-05 格式:DOCX 页数:44 大小:1.49MB
下载 相关 举报
MATLAB符号计算.docx_第1页
第1页 / 共44页
MATLAB符号计算.docx_第2页
第2页 / 共44页
MATLAB符号计算.docx_第3页
第3页 / 共44页
MATLAB符号计算.docx_第4页
第4页 / 共44页
MATLAB符号计算.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

MATLAB符号计算.docx

《MATLAB符号计算.docx》由会员分享,可在线阅读,更多相关《MATLAB符号计算.docx(44页珍藏版)》请在冰豆网上搜索。

MATLAB符号计算.docx

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分成数组

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1