理学matlab教程_第1页
理学matlab教程_第2页
理学matlab教程_第3页
理学matlab教程_第4页
理学matlab教程_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

1、1.1 MATLAB使用入门 MATLAB 简介MALAB是MathWorks公司于1982年推出的一套高性能数值计算的可视化软件,它集数值分析、矩阵计算、信号处理和图形显示于一体,构成一个使用方便、界面友好的用户环境。在这种环境下,用户只需要简单地列出数学表达式,结果便以数值或图形的方式显示在计算机屏幕上,用户也可以将结果保存在文件中。MALAB的名称源自Matrix Laboratory,是一门计算语言。MALAB将计算与可视化集成到一个灵活的计算机环境中,并提供了大量的内置函数,可以在广泛的工程问题中直接调用这些函数获得数值解。MALAB有许多工具箱,这些工具箱成为一些领域的实用工具。M

2、ALAB具如下特点:1)易学习性MALAB语言不要求用户有较高深的数学和程序语言知识,不需要用户深刻了解算法及编程技巧。用户只需输入求解问题的数学表达式,就能得到计算结果。MALAB既是一种编程环境,又是一种程序设计语言。这种语言同高级程序语言(如C、Fortran)一样,有其特定的语法规则,但它的规则更接近于数学表示,因而使用起来更为方便。MALAB的语句功能更为强大,一条语句就可以完成一个复杂的任务,如inv(A)可以得到矩阵A的逆矩阵,这相当于几十条C语言语句的功能。2)实用方便性MALAB包含了被称作Toolbox(工具箱)的各类问题求解工具,它实际上是对MALAB进行扩展应用的一系列

3、MALAB函数(称作M文件)。利用工具箱可以解特定学科的问题,如线性规划、信号处理、小波分析等。3)易扩展性MALAB允许用户建立指定功能的M文件,从而可以产生特定功能的工具箱。用户不仅可以使用MALAB提供的函数及基本工具箱函数,而且可以方便地编写出专用函数,因此大大扩展了MALAB的应用范围。4)先进的可视化工具MALAB提供了强大的、交互式的二维和三维绘图功能,可使用户创建富有表现力的彩色图形。可视化工具包括曲面渲染、线框图、光源动画等。 MATLAB使用入门1 启动与退出在Windows平台启动MATLAB(以7.0版为例)可以选择“开始程序MATLAB7.0MATLAB7.0”命令或

4、双击在安装时在操作系统桌面创建的快捷方式。启动后会出现如图1.1.1所示的桌面,桌面上包含一些MATLAB工具。MATLAB是一种指令式语言,用户可以通过界面、指令改变初始化设置。表列出了一些MATLAB桌面工具。退出MATLAB只需单击“关闭”按钮,也可以在命令窗键入quit或exit。图MATLAB桌面表MATLAB7.0桌面工具桌面工具功 能Array Editor数组编辑器Command Window命令窗Command History命令历史窗Current Directory Browser当前路径浏览器Editor/Debugger编辑器/调试器Figures图形窗Help Br

5、owser帮助浏览器Profiter图形界面分析M文件效率Start Button开始按钮Web Browser网页浏览器Workspace Browser工作空间浏览器2MATLAB常用命令和技巧1)一些通用命令使用MATLAB之前,最好先了解一些通用命令。这里只给出最常用的几个命令,见表。表通用命令表命令功能命令功能cd显示或改变工作目录hold图形保持开关dir显示目录下文件disp显示变量或文件内容type显示文件内容path显示搜索路径clear清理内存变量save保存内存变量到指定文件clf清理图形窗口load加载指定文件的变量pack收集内存碎片diary日志文件命令clc清理工

6、作窗quit退出MATLAB命令echo工作窗信息显示开关!调用DOS命令2)一些常用操作技巧在MATLAB的使用过程中经常会用到一些输入技巧,可以在输入命令的过程中起到事半功倍的效果。表列出了一些常用技巧。表 键盘按键功能表键盘按键功能键盘按键功能Ctrl+p 调用上一行HomeCtrl+a 光标置于当前行头Ctrl+n 调用下一行EndCtrl+e 光标置于当前行尾 Ctrl+b 光标右移一字符EscCtrl+u 清除当前输入行Ctrl+f 光标左移一字符DelCtrl+d 删除光标处的字符Ctrl+Ctrl+r光标右移一单词BackspaceCtrl+h 删除光标前的字符Ctrl+Ctr

7、l+l光标左移一单词Alt+Backspace恢复上一次操作3)标点在MATLAB语言中一些标点符号也被赋以特殊的意义,或代表一定的运算,见表。表MATLAB语言的标点符号名称用 途.句点小数点、向量或矩阵的一种运算, 逗号参数分隔符、矩阵元素分隔,表达式放在同一行时的分隔;分号表达式的末尾处,不显示计算结果;矩阵行结束:冒号创建向量的表达式的分隔符;用于矩阵,如z(:,1)表示第一列( )括号算数表达式分隔;函数参数分隔;矩阵元素下标指示 中括号用于创建向量、矩阵、字符串 大括号创建单元矩阵或结构%百分号注释分隔符撇号向量或矩阵转置引号用于字符串省略号续行标志=等号赋值标记空格字符串语句的一

8、个字符;数据创建语句的分隔符例1 1)计算的值;2)求的逆矩阵。解:只需在MATLAB命令提示符“>>”下输入>>a=sqrt(2)*sin(pi/3)/(1+exp(2.1)a= 0.1336>> b=1 3 5;2 5 8;0 0 5b= 1 3 5 2 5 8 0 0 5>> c=inv(b)c = -5.0000 3.0000 0.2000 2.0000 -1.0000 -0.4000 0 0 0.2000图显示了该题的操作过程。说明:本书后面所有例子中形如“>> b=1 3 5;2 5 8;0 0 5”,只写成“b=1 3

9、5;2 5 8;0 0 5”,即略去“>>”;输出结果写成形如“a=0.1336”的形式。图 MATLAB运算示例3 MATLAB的帮助系统在命令窗口输入help命令,是获得帮助最快捷的方法。help的用法如下:help 列出主要的帮助主题。help 帮助主题 列出指定主题下的函数。help 函数名 对指定函数的功能、调用格式及相关函数给出说明。例>> helpHELP topicsmatlabgeneral - General purpose commands.matlabops - Operators and special characters.matlablan

10、g - Programming language constructs.matlabelmat - Elementary matrices and matrix manipulation.matlabelfun - Elementary math functions.matlabspecfun - Specialized math functions.>>help wavelet Wavelet Toolbox Version 3.0 (R14) 05-May-2004 Wavelet Toolbox GUI (Graphical User Interface). wavemenu

11、 - Start Wavelet Toolbox graphical user interface tools. Wavelets: General. biorfilt - Biorthogonal wavelet filter set. centfrq - Wavelet center frequency.>> help sin SIN Sine. SIN(X) is the sine of the elements of X. See also asin, sind. Overloaded functions or methods (ones with the same nam

12、e in other directories) help sym/sin.m Reference page in Help browser doc sin当希望查找具有某种功能的函数但不知道该函数准确名称时,help就无能为力了,这时可利用lookfor命令进行查询。例 >> lookfor odeISDEPLOYED tests if the code is running in deployed mode or MATLAB modePCODE Create pre-parsed pseudo-code file (P-file).SAVEAS Save Figure or m

13、odel to desired output format.BVP4C Solve boundary value problems for ODEs by collocation. DECIC Compute consistent initial conditions for ODE15I.ODE113 Solve non-stiff differential equations, variable order method.ODE15I Solve fully implicit differential equations, variable order method.ODE15S Solv

14、e stiff differential equations and DAEs, variable order method.ODE23 Solve non-stiff differential equations, low order method.4 MATLAB的演示系统除了帮助系统外,MATLAB还提供了演示系统,该系统是读者学习MATLAB的好工具,如图。在演示系统中提供了大量MATLAB应用示例,这些示例具有很强的代表性,是学好MATLAB的好帮手。图MATLAB演示系统1.2 MATLAB的语言程序设计简介MATLAB的语言程序设计由赋值、数值运算、关系运算、逻辑运算和程序流程控

15、制语句等部分构成。本节重点介绍程序流程控制语句。1 关系运算与逻辑运算在程序设计中经常涉及逻辑判断和模糊推理,而在逻辑判断和模糊推理中,都需要对一类是非问题作“真假”的回答。为此,MATLAB提供了关系与逻辑运算的相关函数。运算的输出值将判断为真者以1表示,而判断为否者以0表示。表列出了一些关系运算和逻辑运算指令。表关系运算符及逻辑运算符条 件数学符号MATLAB符号关系等于= =不等于 =小于<<大于>>小于等于<=大于等于>=逻辑与and&或or|非not例1 a=-1 2 4;5 4 -8;b=a>0b = 0 1 1 1 1 0x=1:

16、2:9;y=3:7;z=x<=yz = 1 1 1 0 0w=(x>4)&(y<6)w = 0 0 1 0 0E=x+(x>4)|(y<6)E =1 1 1 1 12 关系与逻辑运算函数除了上面介绍的关系与逻辑运算符外,MATLAB还提供了一些关系与逻辑运算函数。表列出了一些逻辑关系运算函数。表逻辑关系运算函数函数说明xor异或,不相同取1,否则为0any只要有非0就取1,否则为0all全为1取1,否则为0isnan为数NaN取1,否则为0isinf为数inf取1,否则为0isfinite有限大小元素取1,否则为0ischar是字符串取1,否则为0iseq

17、ual相等取1,否则为0ismember两个矩阵是属于关系取1,否则取0isempty矩阵为空取1,否则取0isletter是字母取1,取0isstudent学生版取1isprime素数取1,否则取0isreal实数取1,否则取0isspace空格位置取1,否则取0例2 a=1 inf NaN;isinf(a)ans =0 1 0isletter(a)ans = 0 0 03 程序的控制语句MATLAB中除了按正常顺序执行程序中的命令和函数以外,还提供了一些控制程序流程的语句,这些语句包括for、while、if、switch、try、continue、break、return等。这些语句实现

18、程序的循环结构、选择结构、多分支选择结构和程序流程控制功能。下面介绍for、while、if、switch语句的用法,其它语句读者可通过help查阅其功能和格式。循环结构 在实际问题中会遇到许多有规律地重复运算,因此在程序设计中需要将某些语句重复执行。一组被重复执行的语句成为循环体,每循环一次,都必须做出是否继续重复的决定,这个决定所依据的条件成为循环的终止条件。MATLAB提供了两种循环方式:for-end循环和while-end循环。for-end循环语句的格式for循环变量=初值:增量:终值初值开始,终值结束语句循环体中的执行语句end循环结束while-end循环语句的格式while条

19、件%当条件成立时执行下面的语句,否则跳过语句end例3简单的for循环例子。n=8;for i=1:1:nx(i)=(i+1).2;endxx = 4 9 16 25 36 49 64 81例4for循环嵌套例子。m=3;n=4;for i=1:m for j=1:n a(i,j)=1/(i+j-1);endendformat rat; aa = 1 1/2 1/3 1/4 1/2 1/3 1/4 1/5 1/3 1/4 1/5 1/6 例5利用while循环,求使n!达到200位数的最小n解: n=1;while prod(1:n)<1e200n=n+1;endnn =121 条件语句

20、在复杂的运算中常常需要判断是否满足某些条件,以选择下一步的方法和策略。一般使用条件语句完成这类判断和选择。常用的语句有if-end、if-else-end、if-elseif-elseend等。if-end是最简单的条件语句,其格式为if表达式语句体end如果表达式的值为1,则执行语句体,否则跳过if结构,执行end后面的语句。if-else-end语句只是在if和end之间增加一个else选择,其格式为if表达式语句体1else语句体2end其执行规则为:当表达式的值为1则执行语句体1,否则,则执行语句体2。在else语句中也可嵌套if语句,构成elseif结构,elseif结构可实现多重条

21、件选择,例如if表达式1语句体1elseif表达式2语句体2else语句体3end例6 随机生成100个随机数,并统计小于等于0.3、大于0.3而小于0.7和大于0.7的个数。解:a=rand(1,100);n1=0;n2=0;n3=0; for i=1:1:100if a(i)<=0.3n1=n1+1;elseif a(i)<=0.7n2=n2+1;elsen3=n3+1;endend n1,n2,n3n1 = 21n2 = 49n3 = 30分支语句分支语句switchcaseend通过对某个表达式的值进行比较,根据比较结果做不同的选择,以实现程序的分支功能。其格式为switc

22、h表达式(数值或字符串)case数值或字符串1语句体1case数值或字符串2语句体2otherwise 语句体nendswitch后面的表达式的值为数值变量或字符变量,通过这些值与case后面的值进行比较,与哪一个case后面的值相同就执行哪一个case下面的语句体,如果与所有case后面的值都不相同,则执行otherwise下面的语句体。otherwise语句可以省略,如果省略otherwise,当所有case都不满足时跳出分支结构,另外,switch必须与end配对使用。例7 从键盘上输入一个数,检查输入数据的值。switch input('input_num')case

23、-1disp('negative one');case 0disp('zero');case 1disp('positive one');otherwisedisp('other value');endinput_num3other value要编写一个应用程序,还应简要知道M文件与M函数调用和变量传递,亦应知道一些有关程序设计方面的功能语句及MATLAB所提供的大量内部函数,这需要读者查阅相关资料逐步积累。1.3 特殊量与特殊函数MATLAB中预定义了一些特殊量和特殊函数,本小节介绍这些特殊量和特殊函数。这些特殊量和特殊函数在今

24、后实验中经常用到,这里以表格的形式给出,读者可以通过help了解这些特殊量和特殊函数的功能和用法。表MATLAB预定义的变量变量说明ans预设的计算结果的变量名epsMATLAB定义的正的极小值2.2204e-016pi内建的值inf值,无穷大NaN无法定义的一个数i或j虚数单位intmax8位、16位、32位或64位整型的最大值intmin8位、16位、32位或64位整型的最小值realmax最大的正实数1.7977e+308realmin最小的正实数2.2251e-308computer计算机类型versionMATLAB版本例1a=0 1 0;b=1 0 0;c=a./bWarning:

25、 Divide by zero.c = 0 Inf NaN表 部分常用标量函数函数说明函数说明fix向0方向取整mod模除求余floor向方向取整rem除后取余数ceil向方向取整sign符号函数round四舍五入取整rats有理逼近例2 a=-2.34;floor(a)ans = -3rats(sqrt(2)ans = 1393/985sign(-0.1)ans = -1rem(34,5)ans = 4 有些函数只有作用于向量时才有意义,这样的函数称为向量函数。常用的向量函数见下表。表 MATLAB部分常用向量函数函数说明函数说明max最大值median中位数min最小值prod总乘积len

26、gth长度sort从小到大排序mean均值sum总和std标准差diff差分例3 a=3.1 4.3 3.5 3.1 4.2 3.8;b=sort(a)b =3.1000 3.1000 3.5000 3.8000 4.2000 4.3000s=sum(a)s = 22m=median(a)m = 3.6500在MATLAB最核心的内容就是数组及数组运算,这里只列出部分常用矩阵函数。表 MATLAB部分常用矩阵函数函数说明函数说明zeros全0矩阵flipud矩阵上下翻转eye对角线为1的矩阵fliplr矩阵左右翻转ones全1矩阵tril下三角矩阵rand均匀分布的随机矩阵triu上三角矩阵r

27、andn正态分布随机矩阵hilbHilbert矩阵diag对角矩阵magic魔方矩阵空矩阵norm矩阵范数例4 a=zeros(2,4)a = 0 0 0 0 0 0 0 0b=eye(2,3)b =1 0 0 0 1 0randn(3,3) ans = -0.4326 0.2877 1.1892-1.6656 -1.1465 -0.03760.1253 1.1909 0.32731.4 图形功能MATLAB提供了很多灵活易用的二维和三维绘图函数。这些函数可分为三类:图形处理、曲线和曲面的创建、注释和图形的特性。表-1.4.6列出了一些常用绘图函数,读者可通过help详细了解这些函数的功能和用

28、法。本节简单介绍二维和三维绘图方法,在后面的章节读者可陆续实践。表 部分绘图函数管理类生成类注释和特性类figureplotxlabelsubplotpolarylabelzoomfillzlabelholdplotyytextviewplot3text3rotate3dsurftitlesurfclegendcontourbox, setcontour3axis, axis equal,axis offcontourfgridmesh,meshzcolorbarwaterfallclabelcylindercolormap表 部分曲线色彩与线型符号选项说明选项说明-实线.点:点线o圆-.点划

29、线xx-符号-虚线+号b蓝色*星号y黄色s方形m紫红色d菱形c蓝绿色v下三角r红色上三角g绿色<左三角w白色>右三角k黑色p正五边形表 部分绘制特殊图形函数函数名说明函数名说明area填充绘图fplot函数绘制图bar条形图hist直方图barh水平条形图paretoPareto图comet彗星图pie柄状图errorbar误差带图plotmatrix分散矩阵绘图ezplot简单绘制函数图ribbon三维图的二维条状显示ezpolar简单绘制极坐标图scatter散射图feather矢量图stem离散序列柄状图fill多边形填充stairs阶梯图表 图形标注函数函数说明函数说明ti

30、tle图形标题text任意位置加注文本xlabelx轴标识gtext鼠标定位加注文本ylabely轴标识legend标注图例zlabelz轴标识clabel轮廓线标识表 坐标轴控制命令函数函数说明axis(xmin xmax ymin ymax)制定坐标轴的范围axis manual 或 (axis(axis)刻度范围不随数据大小变化axis tight以数据的大小为坐标轴的范围axis ij坐标原点在左上角axis equal各坐标轴增量相同axis square坐标轴长度相同axis normal自动调节坐标轴与数据的比例axis off坐标轴隐去axis on保留坐标轴axis auto

31、设置坐标轴为自动刻度axis xy使坐标轴回到直角坐标系表 常用样式控制函数函数说明linewidth线宽markersize点型大小fontsize图形标注大小1二维曲线绘图plot 是最基本的二维绘图命令,其调用格式如下:plot(y) 绘制以y元素为纵坐标,以相应元素下标为横坐标的连线图。plot(x,y) 绘制以x、y元素为横纵坐标的连线图。plot(x1,y1,x2,y2,) 意义同上,绘制多条曲线。plot(x,y,linespec,.) 按照linespec所指定的要求绘图。plot(.,'propertyname',propertyvalue) 为plot创建的

32、图形设置属性值。例1 绘制数据点确定的曲线。y=0 0.2 0.8 1.9 3.6 5.8 7.0 7.5 7.6;plot(y)运行结果为图1.4.1。图1.4.1例2 绘制sin(x) 和cos(x) 曲线。解: x=0:0.1:2*pi;y1=sin(x);y2=cos(x); plot(x,y1,x,y2);本题也可以这样解答x=0:0.1:2*pi;y1=sin(x);y2=cos(x);plot(x,y1);hold on; plot(x,y2);图1.4.2 正弦和余弦曲线例3 使用不同线型绘图。x=0:0.5:2*pi;y1=sin(x);y2=cos(x); plot(x,y

33、1,':',x,y2,'-.')图1.43 使用不同线型绘图例4 使用不同标记绘图。x=0:0.25:2*pi;y1=sin(x);y2=cos(x);plot(x,y1,'-+',x,y2,'-d')图1.4.4使用不同标记绘图例5 综合绘图。clear allx=0:0.25:2*pi; y=sin(x);plot(x,y,'-s','linewidth',3,'markersize',8);title('y=sin(x)','fontsize',

34、24)xlabel('x','fontsize',20);ylabel('y','fontsize',20);图1.4.5 综合绘图2 三维曲线图函数 plot3用于绘制三维曲线图,其调用格式如下:plot3(x1,y1,z1,.) 绘制由数据点x1,y1,z1,.确定的三维曲线。plot3(x1,y1,z1,linespec,.) 按照linespec所定义的内容绘图。plot3(.,'propertyname',propertyvalue,.) 为plo3创建的图形设置属性值。例6 绘制x、y和z均为向量时的三

35、维曲线图。t=0:0.1:2*pi; x=exp(-t/10).*sin(t); y=exp(-t/10).*cos(t); z=2*t; plot3(x,y,z); axis square; grid on;图1.4.6x、y和z均为向量时的三维曲线图例7 绘制x、y和z均为矩阵时的三维曲线图。X,Y=meshgrid(-2:0.1:2); %生成网格矩阵Z=X.*exp(-X.2-Y.2);plot3(X,Y,Z); grid on;图1.4.7x、y和z均为矩阵时的三维曲线图例8 按指定线型、标记点绘制三维曲线图。t=0:0.2:4*pi; plot3(sin(t),cos(t),t,&

36、#39;:d');图1.4.8 指定线型、标记点的三维曲线图3 子图在绘图过程中,经常需要将几个图形在同一个窗口显示出来,而不是简单的叠加,这就需要调用函数subplot。其调用格式如下:subplot(m,n,p) 将图形窗口分割成个子窗口并把第个子窗口当作当前窗口,子窗口按从左上角行的顺序排列。例9 在同一窗口绘制,。解:命令如下figure; % 新打开一个窗口,并且默认为当前窗口x=0:0.1*pi:2*pi;subplot(2,2,1);plot(x,sin(x),'-*');title('sin(x)');subplot(2,2,2);plo

37、t(x,cos(x),'-o');title('cos(x)');subplot(2,2,3);plot(x,cos(x).*sin(x),'-x');title('sin(x)*cos(x)');subplot(2,2,4);plot(x,cos(x)+sin(x),'-h');title('sin(x)+cos(x)');图1.4.9 图形窗口分割-子图1.5 M文件MATLAB文件可分命令文件和函数文件两种,扩展名为“.m”,通常称之为M文件。M文件为纯文本文件,可以用任何文本编辑器编辑,但M

38、ATLAB开发环境中包含了专门的M文件编辑器。该编辑器不但提供了M文件的编辑功能,同时还与MATLAB开发环境一起实现了MATLAB文件的运行和调试。新建或打开一个MATLAB文件时,M文件编辑器自动打开(如图)。图1.5.1 M文件编辑器M文件编辑器的菜单栏和工具栏下面有3个区域,右侧的大块区域是程序窗口,用于编写程序;最左边的区域显示行号,每行均有数字,包括空行,行号是自动出现的,随行数的增加而增加;在行号和程序窗口之间有一些小横线,这些小横线只在可执行行上才有,空行、注释行、函数定义行等前面没有,在进行程序调试时,可以直接在这些横线上点击鼠标以设置或取消断点。1 命令M-文件(scrip

39、ts)若要一次执行大量的MATLAB命令,可将这些命令存放于一个扩展名为m的文件中,使用时只需在MATLAB提示符下输入此文件的文件名即可。此种包含MATLAB命令的文件都以m为扩展名,因此通称M文件。建立文本文件可在File菜单中选择New,这是MATLAB将打开一个文本编辑窗口,可在这里输入命令和数据,存盘时文件名遵循MATLAB变量命名规则,但必须以m为扩展名,其一般形式为<M-文件名>.m如 z01.m,asd_01e.m等。编辑文件:% This is a M-file.fprintf('filename is exam01.m!n ');for i=1:

40、1:3 fprintf('i=%2d i5=%5dn',i,i5);endfprintf('End of exam01.m!n ');>> fm01filename is exam01.m!i= 1 i5= 1i= 2 i5= 32i= 3 i5= 243End of exam01.m!>>该文件第一行为注释行,可以使程序易于被了解和管理。上面的exam01.m为命令集,其功能和将命令逐一输入完全一样,这类文件中的变量均为全局变量。因此这类文件可以使用工作区(又称工作空间)中的变量,文件中的变量成为工作区中的一部分。当文件执行完毕后,这些

41、变量都将驻留在工作区内,这是我们不希望的,其解决方法之一是将命令M-文件改写为函数M-文件(functions)。2 函数M-文件(functions)函数M-文件是另一种M-文件,它能像库函数一样方便调用,从而极大扩展MATLAB的能力,如果对于一类特殊问题,建立起许多M-文件,最终可形成解决该类问题的工具箱。函数M-文件的第一行有其特定形式,它必须是function <因变量>= <函数名>(自变量)其余各行为利用自变量计算因变量的语句,并最终将计算结果赋予因变量。而这个文件的文件名必须是<函数名>.m,下面举两个简单例子。例1 计算阶乘,文件名为 fa

42、ct.m。function result=fact(n) result=1; for i=1:n result=result*i; end调用:y=fact(10)输出结果:y =3628800例2 计算阶乘,文件名为 rec.m。同上例一样,计算阶乘,但是本程序采用递归式写法。function result=rec(n) if n=1 result=1; return; endresult=n*rec(n-1);调用: y=rec(8)输出结果:y = 403201.6 符号运算与应用1 定义符号对象在用MATLAB进行符号运算时必须先定义基本的符号对象,它可以是通常的数字常数、变量和表达式

43、。声明符号对象的基本指令函数有sym和syms。下面运用这两个命令简单介绍如何创建符号变量、符号表达式、符号方程和符号函数的。sym的调用格式为sym('x') 创建一个符号变量x,它可以是字符、字符串、表达式或字符表达式。sym('x','real') 创建一个实变量sym('x','positive') 创建一个正变量syms函数可以方便地一次创建多个变量syms的调用格式为syms 变量1 变量2 . 创建多个变量syms 变量1 变量2 . 类型说明 类型说明可以是real或positive。例1 将字符x

44、x和a、b、c转换为符号变量。解: syms('xx'); sym a b c例2 定义a为实符号变量,b为正符号变量。解: a=sym('a','real') 或 syms a realb=sym('b','positive') 或syms b positive例3 创建符号表达式。解:创建该表达式的可以用三种方式实现法1 f=sym('a*x2+b*x+c')法2 f= 'a*x2+b*x+c'法3 syms a b c xf= 'a*x2+b*x+c'对于上面第

45、二种创建方式,在当前工作区中是作为字符串形式存在的。在符号运算时,有的函数能识别把它作为符号对象进行操作,如int()。但有些函数则不能,如diff()。例4 创建符号方程。解:符号方程的创建与符号表达式相同,它们的区别仅在于:符号方程必须带等号“=”,而符号表达式不包含等号。本例的解为sym(' a*x2+b*x+c=0')按照数学上的习惯,在数学表达式中,字母表中比较靠前的字母表示常量,比较靠后的字母如x、y、z表示自变量,例如表达式中,通常认为为自变量,、是常量或参数。MATLAB中也采用了类似规定,以最接近的顺序排列默认自变量的顺序,可以使用函数findsym对默认自变

46、量进行查询。例5 syms a b n t xf=a*xn+b*t;findsym(f,1)ans =xfindsym(f,2)ans =x,tfindsym(f,5)ans =x,t,n,b,afindsym(f)ans =a, b, n, t, x2 符号表达式的化简和简化MATLAB符号数学工具箱提供了表达式的因式分解、展开、合并、化简、通分等操作。因式分解 factor(S):因式分解S,如果S的所有元素为整数,则计算其最佳分解。horner(f):将符号表达式f分解成嵌套形式例6对进行因式分解。解:syms x f; f=x6-1;f=factor(f)f=(x-1)*(x+1)*(

47、x2+x+1)*(x2-x+1)例7 对整数123456789进行因式分解。解:factor(sym('123456789')ans =(3)2*(3803)*(3607)例8 将分解成嵌套形式。解: g=sym('2*x4-3*x2+x-8');f2=horner(g)f2 =-8+(1+(-3+2*x2)*x)*x符号表达式的展开符号表达式的展开函数为expand,其调用格式为expand(S) 因式展开表达式S例9 将、展开。解:syms x a f g h;f=(x+a)3;g=cos(x+y);h=cos(3*x);f=expand(f);g=expa

48、nd(g);h=expand(h);输出结果f =x3+3*x2*a+3*x*a2+a3g =cos(x)*cos(y)-sin(x)*sin(y)h =4*cos(x)3-3*cos(x)符号表达式的同类项合并符号表达式的同类项合并的函数为collect,其调用格式为collect(S,t)对符号表达式S中自变量t的同次幂项的系数合并collect(S)对符号表达式S中默认变量(findsym(S,1))同次幂项的系数合并例10 将按自变量和展开。解:syms x t f fx ft;f=x*(x*(x-t)2+12);ft=collect(f,t);fx=collect(f);输出结果ft

49、=x2*t2-2*x3*t+x*(x3+12)fx=x4-2*x3*t+x2*t2+12*x符号表达式的化简符号表达式的化简可由函数simple 和simplify实现,调用格式为simple(S)simplify(S)例11化简 解:syms x f f1 f2;f=cos(x)2+sin(x)2;f1=simplify(f);f2=simple(f);输出结果f1 =1f2 =1符号表达式的通分符号表达式的通分函数为numden,其调用格式为n d=numden(S) 将符号表达式S转换为分子和分母都是整系数的最佳多项式。例12 对表达式进行通分。解:syms x y f; f=x/y+y

50、/x; n d=numden(f)输出结果n =x2+y2d =x*y符号表达式的替换函数subs用特定符号替换表达式中的某一特定符号,其调用格式为subs(S,old,new) 用新的符号变量new代替符号表达式S中的变量old。例13 syms x y z;y=sin(x);z=subs(y,x,pi)输出结果z = 1.2246e-016符号表达式的转换符号函数sym()可将一个数字转换为符号表达式,而函数single()恰好相反,它能把一个常数转换为一个数值,格式如为single(f)。例14 f=sym('1-sqrt(5.1)+4.8')f = 1-sqrt(5.1

51、)+4.8f = single(f)f = 3.54173 符号函数的运算这里只简单介绍符号函数的复合运算和反函数运算,MATLAB函数分别为compose 和finverse。compose函数的调用格式为compose(f,g) 返回当f=f(x)和g=g(y)时的复合函数f(g(y)。compose(f,g,z) 返回的复合函数以z为自变量。finverse的调用格式为g=finverse(f) 返回符号函数f的反函数。g=finverse(f,v) 返回的符号函数表达式的自变量为v。例15 syms x y z t u;f=1/(1+x2);g=sin(y); 则 fg=compose

52、(f,g)fg = 1/(1+sin(y)2)gf=compose(g,f)gf = sin(1/(1+x2)fgz=compose(f,g,t)fgz = 1/(1+sin(t)2)例16 syms x y;f=2*x-1;则g=finverse(f)g =1/2+1/2*xh=x2+y;g=finverse(h,y)g =-x2+y多项式在MATLAB中,使用行向量来表示多项式的系数,行向量中各元素按多项式系数由高到低排列。即的系数向量为。因此,在MATLAB中,将多项式问题转化为矢量问题。生成多项式的基本函数为poly,poly2sym将多项式转换为矢量形式。多项式的创建主要有以下三种方法。1 系数矢量的直接输入法例1 创建多项式。解:p=1 -4 0 2;p=poly2sym(p)p =x3-4*x2+22 特征多项式输入法多项式也可由通过矩阵的特征多项式取得,为阶方阵,得特征多项式为。的特征多项式创建的命令为:p=poly(A),p=poly2sym(poly(A)。例2 求的特征多项式。解:A=1 2 3;4 4 6;7 8 9;p=poly(A)p = 1.0000 -14.0000 -28.0000 -12.0000 %特征多项式的系数p

温馨提示

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

评论

0/150

提交评论