数学实验 课件 第3、4章 MATLAB符号运算、MATLAB图形功能_第1页
数学实验 课件 第3、4章 MATLAB符号运算、MATLAB图形功能_第2页
数学实验 课件 第3、4章 MATLAB符号运算、MATLAB图形功能_第3页
数学实验 课件 第3、4章 MATLAB符号运算、MATLAB图形功能_第4页
数学实验 课件 第3、4章 MATLAB符号运算、MATLAB图形功能_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

3.1符号变量及表达式

MATLAB中定义的数据默认为数值类型,要进行符号运算必须先将数值型的数字或变量转为符号类型.3.1.1符号变量的创建

符号对象的类型在MATLAB中称为sym,而且定义符号对象的常见命令就是sym.sym函数常见的调用语法如下:①x=sym('x')创建符号变量x②symsvar1...varN创建符号变量var1...varN③

A=sym('a',[mn])创建一个符号矩阵A,矩阵的维度为m×n.若m=n,则可以简写为A=sym('a',n),还可以利用%d设置元素下标的格式.④sym(num)将数值常数或数值矩阵转换成符号常数或符号矩阵⑤A=double(B)将符号常数或符号矩阵转换成数值常数或数值矩阵注:sym函数一次只能定义一个符号变量,使用不方便.而syms函数一次可以定义一个符号变量,也可以一次定义多个符号变量.syms函数使用起来比sym函数更加简洁.例3.1使用syms函数创建符号变量.>>symsxyz>>whosNameSizeBytesClassAttributesx1x18symy1x18symz1x18sym例3.2创建符号矩阵.>>A=[1/3+5,pi/4;sqrt(5),pi+exp(2)]%A是数值矩阵A=5.33330.7854

2.236110.5306>>B=sym(A)B=[16/3,pi/4][5^(1/2),5928228224727581/562949953421312]%B是符号矩阵>>double(B)%将B转换成数值矩阵,即为Aans=5.33330.78542.236110.5306>>c=sym('a',[2,3])c=[a1_1,a1_2,a1_3][a2_1,a2_2,a2_3]>>A=sym('a',[24])A=[a1_1,a1_2,a1_3,a1_4][a2_1,a2_2,a2_3,a2_4]>>A=sym('a%d%d',[24])A=[a11,a12,a13,a14][a21,a22,a23,a24]>>A=hilb(3)A=1.00000.50000.33330.50000.33330.25000.33330.25000.2000>>A=sym(A)A=[1,1/2,1/3][1/2,1/3,1/4][1/3,1/4,1/5]3.1.2符号表达式的创建创建符号表达式,首先创建符号变量,然后使用变量进行操作.例定义符号表达式.>>symsabcx>>f=a*x^2+b*x+cf=a*x^2+b*x+c在表3-1中列出了符号表达式的常见格式与易错写法.正确格式错误格式symsx;x+1sym('x+1')exp(sym(pi))sym('exp(pi)')symsf(var1,…,varN)f(var1,…,varN)=sym(‘f(var1,…,varN)’)表3-1符号表达式的常见格式与易错写法3.2符号表达式的运算1.基本运算

(1)符号矩阵的四则运算:+,-,*,\,/.和数值矩阵的四则运算完全相同.

(2)符号矩阵的其他一些基本运算:和数值矩阵的运算格式相同,包括转置(')、行列式(det)、逆(inv)、秩(rank)、幂(^)和指数(exp)等运算.2.符号表达式的化简与替换

(1)符号表达式的因式分解factor(S)因式分解符号矩阵S的各个元素,如果S包含的所有元素为整数,则最佳因式分解式将被计算.例3.4因式分解.>>symsx>>factor(x^9-1)ans=[x-1,x^2+x+1,x^6+x^3+1]>>f=factor(200)f=22255>>prod(f)ans=200(2)符号表达式的展开expand(S)对符号矩阵的各个元素的符号表达式进行展开例3.5将(x+1)3和sin(x+y)展开.

>>symsxy

>>expand((x+1)^3)

ans=

x^3+3*x^2+3*x+1

>>expand(sin(x+y))ans=

sin(x)*cos(y)+cos(x)*sin(y)可知(x+1)3=x3+3x2+3x+1,

sin(x+y)=sin(x)*cos(y)+cos(x)*sin(y)(3)合并符号表达式的同类项collect(S,v)将符号矩阵S中的各个元素v的同幂项系数合并.

例3.6将x2y+yx-x2-2x合并同类项.

>>collect(x^2*y+y*x-x^2-2*x)

ans=

(y-1)*x^2+(y-2)*x

可知x2y+yx-x2

-2x=(y-1)x2+(y-2)x.(4)符号表达式的化简simplify(S)简化符号表达式S例3.7simplify函数的使用.

>>symsx

>>simplify(cos(x)^2+sin(x)^2)

ans=

1

>>simplify((1-x^2)/(1-x))

ans=

x+1(5)符号表达式的替换subs(s,old,new)将符号表达式s中的old变量替换为new变量.例3.8subs函数的使用.

>>symsab

>>subs(a+b,a,5)

ans=

b+5例3.9验证三角函数等式>>symsab>>y=simplify(cos(a)*cos(b)-sin(a)*sin(b))y=

cos(a+b)3.精度计算

符号表达式与数值表达式分别使用函数digits和函数vpa进行精度设置.

digits(n)

设置n个有效数字的近似解精度,.vpa(s,d)

求符号表达式s的数值解,该数值解的有效数字位数由d指定.如果不指定d,则求digits函数设置的精度的数值解.例3.10将

显示4位有效数字,

显示8位有效数字.>>digits(4);>>a=vpa(1/3)a=

0.3333>>vpa(sqrt(7),8)ans=

2.64575134.符号方程求解

MATLAB中利用solve函数求解线性方程组的符号解析解.

S=solve(eqn,var)对变量var求解方程eqn,若var缺省,默认求解一元方程

Y

=solve(eqns,vars)对变量vars求解方程组eqns例3.11求解方程>>symsabcx>>eqn=a*x^2+b*x+c==0%注意方程的表示方式eqn=

a*x^2+b*x+c==0>>S=solve(eqn)S=

-(b+(b^2-4*a*c)^(1/2))/(2*a)

-(b-(b^2-4*a*c)^(1/2))/(2*a)方程的解为例3.12求解如下线性方程组>>symsxyz>>eqn1=x-2*y-z==4;>>eqn2=2*x-10*y+z==5;>>eqn3=3*x+8*y==6;>>s=solve(eqn1,eqn2,eqn3,x,y,z)s=

包含以下字段的struct:

x:[1×1sym]

y:[1×1sym]

z:[1×1sym]>>[s.xs.ys.z]ans=

[12/5,-3/20,-13/10]%得到的是解析解可知方程组的解为4.1二维图形

二维图形是在X-Y平面上绘制的图形,主要是由一些基本图形元素组成,如点、直线、圆、多边形等几何元素.MATLAB系统提供了绘制曲线函数plot.由于MATLAB作图是通过描点、连线来实现的,故在绘制曲线之前,需要先取图形上的一系列点的坐标,即横坐标与纵坐标,然后利用plot函数绘制曲线.plot(X,Y,LineSpec)X和

Y都是向量,则它们的长度必须相同.绘制以数据(Xi,Yi)为节点的折线图.其中LineSpec用于设置线型、标记符号和颜色,见表4.1.plot(X1,Y1,LineSpec1,...,Xn,Yn,LineSpecn)同时绘制多条折线,相当于绘制plot(X1,Y1,LineSpec1),……plot(Xn,Yn,LineSpecn)注意:表4-1中属性可以全部指定,也可以只指定其中某几个,并且排列顺序任意.表4-1图形的线型、标记符号和颜色

数学上,绘制[a,b]区间上的函数y=f(x)图形,有以下步骤:

①找点:在x轴上的找点x1,x2,x3,……

②计算函数值:计算这些点处的函数值y1=f(x1),y2=f(x2),y3=f(x3),……

③描点:在坐标系中画出这些离散点;

④连线:用直线或曲线连接这些点,得到函数的大致图形.在MATLAB中,绘制平面图形可以采用以下步骤:

①给出x轴上的离散点列:x=[a:step:b];

②计算函数值:y=f(x);

③绘图:plot(x,y)例4.1绘制0到2之间的正弦函数图象.>>x=0:pi/20:pi*2;>>y=sin(x);>>plot(x,y,'r-*')%设置线型是实线,标记点是型号,颜色是红色得到图形如图4-1.图4-1(2)图形的属性

MATLAB可以用subplot划分绘图区域,调用格式如下:subplot(m,n,p)将一个绘图窗口分割成m*n个子区域,并按行从左至右依次编号.p表示第p个绘图子区域.例4.2使用subplot绘图.

>>x=-pi:pi/10:pi;

>>subplot(2,2,1);plot(x,sin(x));

>>subplot(2,2,2);plot(x,cos(x));

>>subplot(2,2,3);plot(x,x.^2);

>>subplot(2,2,4);plot(x,exp(x));图4-2subplot绘图

在绘制图形的过程中,若对图形加一些说明,如图形名称、曲线标注、坐标轴显示等,一种方法是使用MATLAB图形命令进行处理,表4-2给出了常用图形说明命令;另外一种方法,可以在图形操作窗口下,选择菜单栏中Insert选项,再按提示进行操作即可.命令意义title添加图形标题xlabel添加x坐标轴标注ylabel添加y坐标轴标注xlim设置当前坐标区或图的x坐标轴范围ylim设置当前坐标区或图的y坐标轴范围axis指定当前坐标区的范围text添加数据点标注legend添加图例holdon保持当前窗口的图像gridon对图形加网格控制figure新建绘图窗口表4-2常用图形命令例4.3常用图形命令.

x=linspace(0,2*pi,100);

y1=sin(x);

y2=cos(x);

plot(x,y1,'r-',x,y2,'k:')

axis([02*pi-11])

title('正弦和余弦曲线')

xlabel('x')

ylabel('y')

text(pi,0,'\leftarrowsin(x)')

text(pi/2,0,'\leftarrowcos(x)')

legend('sin(x)','cos(x)')

得到的图形见图4-3.

图4-3正弦和余弦曲线

例4.4随机抽取了11个城市居民家庭关于收入与食品支出的样本,数据见表4-3,绘制出收入x与支出y的关系图.收入x(元)8293105130144150160180270300400支出y(元)758592105120130145156200200240表4-3收入x与支出y的关系解x=[8293105

130

144

150

160

180

270

300

400];

y=[758592

105

120

130

145

156

200

200

240];

plot(x,y,'bo')

title('城市居民家庭消费情况')

xlabel('收入x(元)')

ylabel('支出y(元)')

gridon关系图如图4-4所示.

图4-4城市居民家庭消费情况2.符号函数绘图

fplot(f,xinterval,LineSpec)

在指定区间xinterval=[xminxmax]绘制由函数

y=f(x)

定义的曲线,LineSpec设置线型、标记符号和线条颜色,见表4-1.

fplot的绘图数据点是自适应产生的.在函数平坦处,所取数据点比较稀疏;在函数变化剧烈处,它将自动取较密的数据点.

例4.5绘制参数化曲线x=cos(3t)和y=sin(2t).

解>>xt=@(t)cos(3*t);

>>yt=@(t)sin(2*t);

>>fplot(xt,yt)

得到图形如图4-5.图4-5绘制参数曲线例4.6绘制分段函数.解新建脚本文件f.m,输入以下MATLAB命令后保存并执行后得到图4-6.fplot(@(x)exp(x),[-30],'b')holdonfplot(@(x)cos(x),[03],'b')holdoffgridon图4-6分段函数例4.7利用plot、fplot函数绘制

的图像,并作比较.解MATLAB程序代码如下

subplot(2,1,1)

x=-1:.1:1;y=sin(1./x);

plot(x,y)

subplot(2,1,2)

fplot(@(x)sin(1./x),[-1,1])得到的图形见图4-7.图4-7利用plot、fplot函数绘图

从图4-7可以看出plot函数根据指定的数据点,但是

在x=0处没有意义,所以不能绘出x=0处的点.对于导数变化比较大的函数,用fplot比plot指令要更真实.4.1.2其他绘图函数polar(t,r,‘s’)在极坐标下绘制图形,t为极角theta,r为极径rho.s表示线条的线型、标记符号和颜色等,s可省略.fill(X,Y,ColorSpec)

填充

X和

Y

指定的二维多边形(颜色由

ColorSpec

指定)其他绘图函数见表4-4.函数名功能函数名功能area填充面积图pie圆饼图bar条形图plotmatrix散点图矩阵barh水平柱图ribbon以三维带形式画二维线comet慧星形轨线stem火柴杆图errorbar误差条形图stairs台阶图gplot以图论方式绘图clabel等高线图仰角标签quiver场图polar极坐标图表4-4其他绘图函数例4.8绘制心形线和四叶玫瑰线.解clf

t=0:pi/100:6*pi;

s1=2*sin(2*t);s2=2*(1-cos(t));

subplot(1,2,1)

polar(t,s1,'.')

title('心形线')

subplot(1,2,2)

polar(t,s2)

title('四叶玫瑰线')得到图形如图4-8.图4-8心形线和四叶玫瑰线例4.9使用

fill

函数创建一个红色八边形.解

t=(1/16:1/8:1)'*2*pi;

x=cos(t);y=sin(t);

fill(x,y,'r')

axissquare得到图形如图4-9.图4-9红色八边形4.2三维图形1.三维曲线

plot3(X,Y,Z,LineSpec)

函数绘出三矩阵的列向量的,其中X,Y,Z为3个大小相同的矩阵.函数给出通过这些向量所表示的点的图形.其中X,Y,Z为3个相同长度的向量.其中LineSpec为定义线型的字符串,形式同plot函数.

plot3(X1,Y1,Z1,LineSpec1,...,Xn,Yn,Zn,LineSpecn)

可为每个X、Y、Z三元组指定特定的线型、标记和颜色.可以对某些三元组指定LineSpec,而对其他三元组省略它.

绘制三维曲线的方法同平面曲线的类似,属性设置见表4-1和4-2.例4.10绘制螺旋线解

t=0:0.5:10*pi;

x=t;y=sin(t);z=cos(t);

plot3(x,y,z,'.-')

title('螺旋线')

xlabel('x');ylabel('y');zlabel('z')得到图形如图4-10.图4-10螺旋线例4.11绘制蓝宝石项链图.解

t=0:0.02*pi:2*pi;

x=sin(t);y=cos(t);z=cos(2*t);

plot3(x,y,z,'bd-')

boxon

view([-82,58])

legend('链','宝石')得到图形如图4-11.图4-11蓝宝石项链图2.三维曲面

MATLAB中利用meshgrid、mesh和surf函数可以方便绘制三维曲面图形.在MATLAB中绘制由函数z=z(x,y)确定的曲面时,首先利用meshgrid产生一个网格矩阵,然后计算函数在各网格点上的值,再利用mesh和surf函数绘制曲面图形.调用格式如下:

[X,Y]=meshgrid(x,y)

x,y为给定的向量,X,Y是网格划分后得到的网格矩阵;

若x=y,则可简写为[X,Y]=meshgrid(x).mesh(X,Y,Z,C)

绘制由X,Y,Z,C所确定的曲面网格面图形.surf(X,Y,Z,C)

绘制由矩阵X,Y,Z,C所确定的曲面图,参数含义同mesh.mesh绘制网格图,surf绘制着色的三维表面图.例4.12使用向量

x

定义的

x

坐标和向量

y

定义的

y

坐标创建二维网格坐标,并在二维网格上计算函数z=

x2+y2.解

>>x=1:2;

>>y=1:3;

>>[X,Y]=meshgrid(x,y)

X=

12

12

12Y=112233>>Z=X.^2+Y.^2Z=25581013

例4.12中例用直线x=1,x=2,y=1,y=2,y=3对[1,2]×[1,3]进行网格划分,得到网格点(1,1),(1,2),(1,3),(2,1),(2,2),(2,3),见图4-12.例4.12中的X和Y是同型矩阵,分别存储网格点的横坐标和纵坐标.利用X和Y的点幂运算计算网格点对应的函数值矩阵Z,即X中的(i,j)元素和Y中的(i,j)元素进行计算得到Z中的元素(i,j),如当X(3,1)=1,Y(3,1)=3时,Z(3,1)=10.

Z也和X、Y是同型矩阵.图4-12meshgrid绘制二维网格例4.13(1)利用mesh绘制巴拿马草帽(2)利用surf绘制椭球面解(1)x=[-8:0.5:8];y=[-8:0.5:8];

[X,Y]=meshgrid(x,y);

r=sqrt(X.^2+Y.^2)+eps;

Z=sin(r)./r;

mesh(X,Y,Z)

title(‘巴拿马草帽')

xlabel('x');ylabel('y');zlabel('z')得到图形见图4-13a.图4-13a(2)clear

r=linspace(0,pi,100);t=linspace(0,2*pi,100);

[r,t]=meshgrid(r,t);

X=3*sin(r).*cos(t);Y=2*sin(r).*sin(t);Z=cos(r);

surf(X,Y,Z)

axisequal

xlabel('x');ylabel('y');zlabel('z')

title('椭球面')

得到图形见图4-13b.图4-13bMATLAB命令如下:t=0:0.1:2*pi;r=-3:0.1:3;[t,r]=meshgrid(t,r);x=r.*cos(t);y=r.*sin(t);z=r;mesh(x,y,z)holdonu=-pi:0.1:pi;v=-3:0.1:3;[u,v]=meshgrid(u,v);x1=1+cos(u);y1=sin(u);z1=v;mesh(x1,y1,z1)得到图形如图4-14.图4-14锥面和柱面的相交图形解MATLAB命令如下:r=-1/2:0.1:1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论