Matlab-2014软件教程(完美版)_第1页
Matlab-2014软件教程(完美版)_第2页
Matlab-2014软件教程(完美版)_第3页
Matlab-2014软件教程(完美版)_第4页
Matlab-2014软件教程(完美版)_第5页
已阅读5页,还剩147页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

PAGEPAGE1Matlb软件录1、Mtlb帮助的使用...32、Mtlb数据输入与类型..43、Mtlb中的M文件及程序调试..124、Mtlb绘图命令...175、Mtlb在高等数学中的应用..346、Mtlb在线性代数中的应用..607、Mtlb数据处理...679、评价方法...8210、预测方法..971、蒙特卡洛方法...1012、智能算法..12213、分形...12914、iulink初步...13415、Mtlb在概统计中的应用.147参考文献...151作为和MathmaticMple并列的三大数学软件其强项就是其强大的矩阵计算以及仿真能力。要知道Matlb的由来就是Matix+bortory=Matlab,所以这个软件在国内也被称作《矩阵实验室。每次Mathoks发布Matlb的同时也会发布仿真工具Simulink。在欧美很大公司在将产品投入实际使用之前都会进行仿真试验,他们所主要使用的仿真软件就是SimulinkMatlb提供自己的编译器全面兼容C以及otrn两大语言。所以Matlb是工程师,科研工作者手上最好的语言,最好的工具和环境。Matlb已经成为广大科研人员的最值得信赖的助手和朋友!目前MTAB产品族可以用来进行:-数值分析-数值和符号计算-工程与科学绘图-控制系统的设计与方针-数字图像处理-数字信号处理-通讯系统设计与仿真-财务与金融工程...Simulink是基于MAB的框图设计环境,可以用来对各种动态系统进行建模、分析和仿真它的建模范围广泛可以针对任何能够用数学来描述的系统进行建模例如航空航天动力学系统卫星控制制导系统通讯系统船舶及汽车等等其中了包括连续、离散,条件执行,事件驱动,单速率、多速率和混杂系统等等。Simulink提供了利用鼠标拖放的方法建立系统框图模型的图形界面,而且Simulink还提供了丰富的功能块以及不同的专业模块集合,利用Simulnk几乎可以做到不书写一行代码完成整个动态系统的建模工作。1、Mtlb帮助的使用11ephlp帮助总览hlpelun关于基本函数的帮助信息hlpexp指数函数xp的详细信息1.2lkfor指令当要查找具有某种功能但又不知道准确名字的指令时hlp的能力就不够了lookfor可以根据用户提供的完整或不完整的关键词,去搜索出一组与之相关的指令。lookforintgl%查找有关积分的指令lookforourier%查找能进行傅里叶变换的指令1.3文本式的助文件在Matlb中关于一个函数的帮助信息可以用doc命令以超文本的方式给出如docdocdocdocigig求矩阵的特征值和特征向量1.4pdf帮助件可从MathWoks网站上下载有关的pdf帮助文件。网站地址:HYPERLINK/http://ww.mathwoks.cm/2、Mtlb数据输入与类型2.1Mlab中的量MTAB程序中的基本数据单元称为阵列(Ara)是一个分为行与列的数据集合。变量被看作是只有一行一列的阵列。MTAB语言不需要对变量进行事先声明,也不需要指定变量类型它会自动根据所赋予变量的值或对变量所进行的操作来确定变量的类型。其命名规则为:(1)变量名的大小写是敏感的。(2)变量的第一个字符必须为英文字母,而且不能超过31个字符。(3)变量名可以包含下划线、数字,但不能为空格符、标点。(4)命名变量时可以取一个容易记忆并且能表达出其含义的名称,如汇率,可以定义为xhng_te。对于变量作用域,默认情况是局部变量,用global定义全局变量,而且全局变量常用大写的英文字母表示。TLAB预定义的变如下表所示:ans预设的计算结果的变量名psATLAB定义的正的极小值=2.2204e16pi内建的π值inf∞值,无限大NaN无法定义一个数目i或j虚数单位i=j=√1nagin函数输入参数个数nagout函数输出参数个数alax最大的正实数203alin最小的正实数202flops浮点运算次数注1:在定义变量时要尽量与避免与这些名字相同,以免改变它们的值,如果已经改变可以通过clear变量名来恢复它初始值也可以通过重新启动TLAB恢复这些值。注2:数字的输入输出格式。所有数据均按EEE浮点标准的长型格式存储。输入格式沿用了C语言的风格和规则;输出格式使用foat数据格式命令控制,只影响在屏幕上的显示结果,不影响内部的存储和运算。2.2向及其算1、向量的生成①命令窗口直接输入,使用[],元素之间空格、逗号或者分号隔。②使用冒号表达式基本形式为x=x0:sp:xn其中xn为尾元素值限而不一定是尾元素的值。当step1时可省略步长。③生成线性等分向量,使用linspae函数。Ylinspa(x1,x2,n)④生成对数等分向量,使用logspae函数。Ylospe(x1,x2,n)2、向量的基本运算PAGEPAGE6数加(减、数乘、点积(dot函数、叉积(ross函数、混合积dot(,crossb,))2.3矩及其算1、简单矩阵的输入(1)要直接输入矩阵时,矩阵一行中的元素用空格或逗号分隔;矩阵行与行之间用分号隔离,整个矩阵放在方括号[]”里。A[1,2,3;4,5,6;7,8,9]说明:指令执行后,矩阵A被保存在Matlb的工作空间中,以备后用。如果用户不用lr指令清除它,或对它进行重新赋值,那么该矩阵会一直保存在工作空间中,直到本次指令窗关闭为止。(2)矩阵的分行输入,此时回车键作为分行标志,A[1,2,34,5,67,8,9](3)使用M文件创建大矩阵,当矩阵维数非常大时,可以创建m文件,在m文件中输入数据或者导出数据文件。2、矩阵的基本运算①矩阵的四则运算其中乘法运算要注意相乘的双方有相邻公共维除法分为左除“\”\B=inv()*B和右除”/(A/B=A*invB))需要计算逆矩阵)②矩阵的逆运算。inv函数。③矩阵的幂运算。^。④矩阵的指数运算。xp返回每个元素的指数值,xp[,D]=EG()ndEXPM(X)=V*dia(xpdiagD))/V,xp1expx)1)⑤矩阵的对数运算。logm⑥矩阵的特征值函数。ig和igs适合于大型稀疏方阵)⑦矩阵的奇异值函数。svd([U,S,V]=SV(),X=U*S*V)和svds⑧矩阵的条件数函数on(矩阵A的条件数等于A的范数与A的逆的范数的乘积c=ond(A,p等价于normA,p)*norminv(A),pondst1范数的条件数的估计值,rond⑨特征值的条件数函数。odig([,D,s]=ondi(A)等价于[,D]=i(A;sPAGEPAGE7ondi(A;)⑩范数函数no(1-范数即列范数矩阵的各列绝对值之和的最大值2范数:所有元素的平方和开根号默认;无穷范数:即行范数,矩阵各行的绝对值之和的最大值,nost矩阵的2范数的估计值)其他还有秩函数ank迹函数tae零空间函数nul(又称为核空,Xnull(),则A*0X*X=正交空间函数othB=oth(),则B*B=ee(rank()))伪逆数pinv等。3、特殊向量和特殊矩阵(1)特殊向量t=[0:0.1:1]%产生从0到10的行向量,元素之间间隔为0.1t=linsp(n1,2,n)产生n1和n2之间线性均匀分布的n个数缺省n时,产生100个数)t=lospa(n1,2,n)(缺省n时,产生50个数)在和之间按照对数距离等间距产生n个数。(2)特殊矩阵i单位矩阵y(,y(,n)可得到一个可允许的最大单位矩阵而其余处补0,y(siz(a)可以得到与矩阵a同样大小的单位矩阵。ii所有元素为1的矩阵ons(n),ons(siz()),ons(m,n。iii)所有元素为0的阵os(n),zrosm,n)。iv)空矩阵是一个特矩阵,这在线性代数中是不存在的。例如q=[]矩阵q在工作空间之中但它的大小为零过空矩阵的办法可以删除矩阵的行与列。例如a:,3=[]表示删除矩阵a的第3列。v)随机数矩阵PAGEPAGE9and(,n)产生mn矩阵,其中的元素是服从[0,1]上均匀分布的随数。andint,n,[in,ax])产生mn矩阵,其中的元素是[min,mx]上随机整数。nond(u,siga,,n)产生mn矩阵,其中的元素是服从均值为mu,标准差为sima的正态分布的随机数。xpnd(u,,n)产生mn矩阵,其中的元素是服从均值为mu的指数分布的随机数。poissnd(u,,n)产生mn矩阵其中的元素是服从均值为mu的泊(Poisson)分布的随机数。unfnd(a,b,,n)产生mn矩阵其中的元素是服从区间[,b]上均分布的随机数。r=vnnd(U,SIGMA,ases)产生ss对均值向量为MU,协方差阵为SGMA的多维正态分布的随机数。vi)随机置换andp(n)产生1到n的一个随机全排列。prs(1:n]产生1到n的所有全排列。vii稀疏矩阵稀疏矩阵是指矩阵中零元素很多非零元素很少的矩阵对于稀疏矩阵只要存放非零元素的行标、列标、非零元素的值即可,可以按如下方式存储(非零元素的行地址,非零元素的列地址),非零元素的值。在Matlb中无向图和有向图邻接矩阵的使用上有很大差异。对于有向图只要写出邻接矩阵直接使用Matlb的命令spase命令就可以把邻接矩阵转化为稀疏矩阵的表示方式。对于无向图,由于邻接矩阵是对称阵,Matlb中只需使用邻接矩阵的下三角元素,即Matlb只存储邻接矩阵下三角元素中的非零元素。稀疏矩阵只是一种存储格式。Matlb中,普通矩阵使用spase命令变成稀疏矩阵,稀疏矩阵使用full命变成普通矩阵。例1zros5;(1,[2,4])[3,4];(3,[2:4])[13];(5,[1,5])[6,7]bspase()%普通矩阵转化成稀疏矩阵full(b)稀疏矩阵转化成普通矩阵其他一些特殊矩阵如下表所示:函数功能函数功能ompan伴随阵maic魔方阵lleryHihm测试阵rossr经典对称特征值测试阵hdmadHrdmard矩阵toeplitzoplitz矩阵hnklHnkl矩阵pslPsl矩阵hilbHilbet矩阵vndr范德蒙矩阵invhilb反Hilbet矩阵wilkinsonilkinson’s特征值测矩阵4、矩阵的特殊操作①变维。有两种方法,使用冒号()和使用函数shape使用“”表达式对两个矩阵进行变维操作,需要预先定义两个矩阵的维数(例如A:,3=[;rshape有两种形式,分别为rshp(,M,N)和rshp(X,M,,P…)②变向主要函数如下表所示:函数功能函数功能fiplr矩阵左右翻转diag产生或提取对角阵fipud矩阵上下翻转tril产生下三角fipdim矩阵特定维翻转triu产生上三角Rot90矩阵反时针90翻转③矩阵的抽取对角线元素抽取函数dag(,k)/diag(,k)抽取矩阵X的第k条对角线的元素向量/使得向量v为所得矩阵的第k条对角线元素。上三角元素抽取til(,k)和下三角元素抽取tiu(,k)④扩展两种方法:用对矩阵标示块的赋值命令Xm1:m2,n1:n2)a生成大矩阵,其中m2m1+1必须等于a的行维数,n2n1+1必须等于a的列维数,生成m2n2维的矩阵;利用小矩阵组合生成大矩阵,要严格注意矩阵大小的匹配。(示例:X1:10,1:10)zros10,10),X[X,;X,X])alab中冒号()的使用方法小结:(1)用于生成向量,:b,一般要求b,否则生成空矩阵。(2如果ba不是整数时则向量的最后一位数为n其中nfix(b)向零取整)(3:c:b表示[,+,…,n*]其中n=fix(b)/)当c0且b或者0且ab时出现空矩阵。(4)A:)以一列的方式显示A中所有的元素(5)bAi,:)表示将A中第i行存入b中(6)bA:,j)表示将A中第j列存入b中(7)bAj:k)表示将A中第j到第k个元素存入b中(Matlb中矩阵按列存储)(8)bA:,c:d表示将A中第c列到第d列存入b中,要求,d不能超过A的列数。(9)当矩阵很大时,不知道矩阵的维数,可以使用nd作为矩阵的最后一行或者一列或者最后一个元素。例如bA1:2,2:nd)获取矩阵A右上角的元素。2.4数及其算数组与矩阵在形式上完全一致只是运算与矩阵不同同型矩阵之间的运算通常称为数组运算(矩阵数组运算)1、基本数组运算①四则运算。数组的乘除法是指两个同维数组间对应元素之间的乘除法,运算符为.*,./和.\。数组与常数之间的运算可以加”.”,也可以不加。②幂运算。.,对每个数组元素的幂运算。③指数运算ep,对数运算log和开方运算srt。2、数组函数运算只要把运算的数组带入到函数中就可以了,通用形式为funae(A)3、数组的逻辑运算和关系运算指令含义函数名<小于lt小于等于le>大于t大于等于e等于q~=不等于ne&逻辑与nd|逻辑或or~逻辑非not指令含义指令含义xor不相同就取1,否则取0isequl相等取1,否则取0ny只要有非0就取1,否则取0ismmber两个矩阵是属于关系取1否则取0ll全为1取1,否则为0isempty矩阵为空取1,否则取0isnan为数NN取1,否则为0islttr是字母取1否则取(可以是字符串)isinf为数inf取1,否则为0isstudent学生版取1isfinite有限大小元素取1,否则为0isprime质数取1,否则取0ischr是字符串取1,否则为0isrl实数取1,否则取0find寻找非零元素坐标isspe空格位置取1,否则取0isnumric判断数值矩阵isloicl判断逻辑数组PAGEPAGE123、Mtlb中的M文件及程序调试M文件分为两种一种是脚本文件由一系列Matlb的命令组成可以直接运行;一种是函数文件,必须由其他M文件或者在命令行窗口中调用执行。函数文件具有一定的通用性,并且可以进行递归调用。3.1Mtlb中控制语句(1)if语句有三种形式:if表达式)语句组A;ndif表达式)语句组A,else语句组,ndif表达式1)语句组A,lseif表达式2)语句组,lse语句组C,end(2)循环语句whil(表达式)语句组A,ndfork初值:增量:终值语句组A,nd循环语句可以结合bak命令来控制程序的执行顺序。(3)swith语句switch表达式标量或者字符串)se值1语句组Ase值2语句组B…othewise语句组Nnd用法示例:示例一:输入数n,判断其奇偶性解Matlb程序如下:ninputn‟ifm(n,2)0求余数,与mod函数的区别,当同符号时两者相同,否则不同Avn;lseAodd,nd示例二:求Matlb中的最大实数解:Matlb程序如下:x1;whilex~inf,x1x;x2x;%为了获取更接近rlmx的值,可以改为x1.01xndx1示例三:求Matlb的相对精度解:matlab程序如下:=1;while1+11=;=/2;nd32脚文件主要特征如下:(1一般由lc,ler命令开始清除掉屏幕和工作空间中原有的变量和图形以避免其他已执行的程序残留数据对本程序的影响。程序中应该添加有注释。(2接下来是程序的主体,如果文件中有全局变量,则需要使用Globl在程序的起始部分注明。为了提高程序的可读性,注意语句的缩进。(3整个程序应按照Matlab标识符的要求起文件名,扩展名为m。示例:列出求素数的程序解Matlb程序如下:le,lcNinput(N=),x2:N;%列出从2到N的全部自然数foru2:sqrt(N)依次列出除数nfindrm(x,u)0x~u;%找到能被u整除而不等于u的数序号x(n[];%剔除该数ndx33函文件函数文件与脚本文件的区别:(1由funtion开头,后跟的函数名必须与文件名相同;(2有输入变量和输出变量,可进行变量传递;(3除非使用Globl声明,程序中的变量均为局部变量,运行后不保存在工作空间中。示例1:使用函数文件写出求素数的程序解:Matlb程序如下:funtion=qiuprim(N)求出1到N之间的素数,返回素数组成的向量x2:N;%列出从2到N的全部自然数foru2:sqrt(N)依次列出除数nfindrm(x,u)0x~u;%找到能被u整除而不等于u的数序号x(n)[];剔除该数ndx;示例2:写一个递归函数求n!解:funtionfftorn)ifn1f1;nd

lsend

ffatorn1*n;3.4函参数可性Matlb中有两个永久变量nin和naout分别记录调用该函数时的输入实参和输出实参的个数只要在函数中包含这两个变量就可以准确的知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。其他类似的变量还有vraout,vrain。示例1:funtionfut=xmp(,b,)ifnin=1fout;lseifnin2foutb;lseifnin3foutb;nd示例2:funtion[x,,z]xmp(,b,)ifnrout=1x;lseifnrout=2x;b;lseifnrout=3x;b;z;nd

nd示例3:funtionvrtst(rA,arg,vrrin)optain=siz(vrrin,2;可选输入stdain=nrin-optrgin;标准输入fpintf(Numberofinputs=%dn,nrin)fpintf('nputsfomindividulaumnts(d:n,...stdain)ifstdain=1fpintf('dn,rA)ndifstdain=2fpintf('dn,rB)ndfpintf('nputspakaedinvarin(d:n,optarin)fork=1:siz(vrrin,2)printf('dn,varrin{k})nd

nd35程调试M文件编辑器中提供了强大的程序调试功能,使用方式如同VC程序中的调试器。在M文件编辑器中的工具栏中有如下程序调试图标:这些图标的使用和菜单Dbug中的一些命令相同。4、Mtlb绘图命令41维绘命令二维绘图的基本命令有plotlolosmiloxsmilogy和polar它们的使用方法基本相同其不同特点是在不同的坐标中绘制图形plot命令使用线性坐标空间绘制图形;loglog命令在两个对数坐标空间中绘制图形;而seilogx或semilogy命令使用x轴(或y轴)为对数刻度,另外一个轴为线性刻度的坐标空间绘制图形;polar使用极坐标空间绘制图形。二维绘图命令plot为了适应各种绘图需要提供了用于控制线色数据点和线型的3组基本参数。它的使用格式如下:plotx,,‘olor_point_linstyle’)该命令是绘制y对应x的轨迹的命令。y与x均为向量,且具有相同的元素个数。用字符串,olor_point_linstle‟完成对上面3个参数的设置。线色:-d,ggen,bbue,wwit,kblack,invisble,y-llow,yan(青色,紫色。数据点(圆点(小圆圈(叉号(加号(星号(squae方形,(hxrm六角星,(diamond菱型(pntarm五角星v(下三角(上三角,(左三角,>(右三角。线型:(实线,(虚线,.(点画线,:(点线。当plot(x,)中的x和y均为n矩阵时,plot命令将绘制n条曲线。plott,x1,x2,x3在同一坐标轴内同时绘制三条曲线。如果多重曲线对应不同的x轴向量绘制,可用命令plott1,x,2,x2,3,x3)式中x1对应t1x2应t2等等在这种情况下t1t2和t3可以具有不同的元素个数,但要求x1x2和x3必须分别与t1,2和t3具有相同的元素个数。subplot命令使得在个屏幕上可以分开显示n个不同坐标系,且可分别在每一个坐标系中绘制曲线。其命令格式如下subplot,,p)该命令将屏幕分成rc个子窗口而p表示激活第p个子窗口窗口的排号是从左到右,自上而下。下面对几个特殊的坐标系统进行简要介绍:①对数坐标曲线,主要有semilog,smiloy和loglog,前两个分别以x坐标和y坐标为对数坐标,后一个是双对数坐标。例如:x1:0.1*pi:2*p;=sin(x);smilox(x,,'*)x=0:.1:10;smilog(x,10.^x)x=lospae(1,2);lolo(x,xpx),s)ridon②双纵坐标(双y轴坐标系)函数plotyy,调用形式为:plot(X1,1,X2,2)plot(X1,1,X2,2,fun)fun可以是plot、semilox、smilogy或lologplot(X1,1,X2,2,fun1,fu2)un1绘制(1,Y1),fun2绘制(2,Y2)③极坐标绘图函数polar调用形式为:polarthea,ho)例1:绘制极坐标下的平面曲线ab),并讨论参数,b,n对曲线的影响。解Mtlb程序如下:N100;thetlinspae(0,2pi,N;fori=1:2(iinput(a=bi)input(b=ni)input(n=rhoi,:)a(i*os(b(ini)*thta);subplot(1,2,i),polr(thet,ho(i,:);nd几个比较漂亮的极坐标系下的图形:(1蝴蝶图案t=0:0.01:36;fxpos(tpi/2)2*os(4*(tpi/2)sin((t-pi/2/12.^5;pola(t,,r')(2枫叶图案tpi/2:0.05:1.5*pi;f100./(100+(tpi/2.^8)*2sin(7*t)os(30*t/2;pola(t,,r')在图形绘制完毕后执行如下命令可以再在图中加入标题标号说明和分格线等。这些命令有tile,xlabl,ylab,tx,gxt,legnd等。它们的令格式如下titl(“Myitle”),xlabl(“MyXxisbl”,labl(“Myxisbl”,xlabl({fistline;sondlin})text(x,,xtfornnotation'),text(extfornnotation),ridongxt命令是使用鼠标器定位的文字注释命令。当输入命令后,可以在屏幕上得到一个光标然后使用鼠标器控制它的位置按鼠标器的左键即可确定文字设定的位置。holdon是图形保持令,可以把当前图形保持在屏幕上不变,同时在这个坐标系内绘制另外一个图形holdon命令是一个交替转换命令即执行一次转变一个状(相当于holdon、holdo还可以设置坐标轴的范围,使用命令axis,其格式为:xis(xminxmxminmax])xis(xminxmxminmaxminmaxminx])示例:x=0:.01:pi/;plot(x,tanx),ro')图形效果如下所示:默认情况下横纵坐标轴的范围是根据函数自变量和因变量的值自动变化的有时效果不好,此时需要设定横纵坐标轴的范围:axis([0pi/20]),效果如上右图所示。解画图的Matlb程序如下,画出的图见图1。lc,lerx2*pi:0.1:2*pi;1sin(x);2sin(xpi/32;3os(x);plot(x,1,.-';holdon%图形保持命令plot(x,2,*-';plot(x,3,'o';hlend(sin($x$),sin($x+fra{pi}{3}$),'os($x$)latx格式显示st(h,'nteprter,ltex)设置Intrpretr的属性值为lat,可以使用数学公式xlabl($x$,'nterpter,ltex)latx格式显示lbl($$,'nterpter,ltex)latx格式显示图1解画图的Matlb程序如下,画出的图形结果见图2。lc,lerx2*pi:0.1:2*pi;1sin(x);2sin(xpi/32;3os(x);subplot(3,1,1,plot(x,1,'.',titl(sin($x$),'nterprter,latx)subplot(312,plot(x,2,*')titl(sin($x+fr{pi}{3}$),'nteprter,ltex)lbl($$,'nterpter,ltex)latx格式显示subplot(313,plot(x,3,-o)titl(os($x$),'nterpter,ltex)latx格式显示xlabl($x$,'nterpter,ltex)latx格式显示4.2复绘图plot(z):z为复数时当于plot(l(z),ima(z));如果是双变量如plot(t,z),则z中的虚数部分将丢弃。复平面中绘出多条曲线,必须使用holdon令,或者把多条曲线的实部和虚部明确的写出。即plotal(z1,iag(1,al(2,iag(z2)Matlb中专门用来绘制复变量函数图形的相关命令是plxapplxgridplxoot,格式如下:z=plxrid(m)%产生(m1*2m+1)的极坐标下的复数数据网格plxmap(z,(z),optionlbound)绘制复变函数的图形,以xy平面为自变量所在的复平面,以z轴表示变函数的实部,颜色表示复变函数的虚部。plxroot:画复数的n次函数曲面plxrootn)画复数n次根的函数曲面,复数为最大半径为1的圆面plxrootn,m)画复数n次根的函数曲面,复数为最大半径为1的圆面,(m+1*(2m+)的方阵例1:绘制zxp(0.1i)*t)的复数图形解Matlb程序如下:t=0:0.1:15;zxp(0.1i)*t);subplot(2,2,1)plot(z),puse;%pause可以暂停程序的执行通过按任意键可使程序继续进行也可以在pusen中设置时间使执行结果出现动态效果。titl(复数绘图plot(z));subplot(2,2,2)plot(t,z),pusetitl(plot(t,z))subplot(2,2,3)pola(nle(z),bs(z);pause;titl(polar(nle(z),bs(z)))subplot(2,2,4)smilox(t,z);titl(smilox(t,z))注:Matlb中使用函数C=oplxA,B)构造复数。例2:绘图=os(xi)的图形解法一:xpi:0.1:pi;fun@x)os(xi);如果直接使用plot(x,),会忽略虚部。plot(un(x))解法二:plot(os(xi);例3:绘制z^4的图形,其中z为复数解:zplxrid30);plxmapzz.^4)43显数,号数或隐数的图fplotfun,is)绘制由字符串fun指定函数名的函数在x轴区间为lm[xmin,xmx]的函数图。若lims=xin,xmx,min,mx]则y轴也被限制。解(1)首先用M文件fun1m定义函数fx)如下funtion=Aun1(x);ifx1x1;lse=11./x;nd在matlab命令窗口输入fplot(Afun1,[3,3])就可画出函数fx)的图形。(2)可以使用匿名函数,编写程序如下fun2@x)x1*x1(11/x)*x1;fplot(un2,[3,3])plotf)绘制符号函数或者隐函数f(x的图形,x轴的近似范围为[2,2。zplot(,xminxmx])使用输入参数来代替默认横坐标范围[2,2zplot函数的其他格式有:zplot(un2)绘制fun2x,)=0的隐函数曲线,默认x,y的范围是2,2zplot(un2,xminxmxmin,mx])示例:funtionz=mfunx,,k)建立M文件z=x.^k-.^k-1;在命令窗口中输入:zplot((x,)mfun(x,,2);解zplot(ot(x))解zplot(x^2+^2/41')例61:同一坐标系下绘制曲线x^2+^21和x^2-^21的曲线解:zplot(x^2-^21');holdon;zplot(x^2+^21');olormp[0,0,1]);44三图形在实际工程计算中,最常用的三维绘图是三维曲线图、三维网格图和三维曲面图3种基本类型与此对应Matlb也提供了一些三维基本绘图命令如三维曲线命令plot,三维网格图命令mesh和三维表面图命令surf。1.三维曲线plot3x,y,通过描点连线画出曲线这里x,,z都是n维向量分别表示该曲线上点集的横坐标、纵坐标、竖坐标。例7t=0:0.05:20*pi;xsin(t);=cos(t);zt.*sint).*os(t);plot3x,,z),titl('inein3DSpae')xlabl(X),labl(Y'),zlbl('Z),gidon2.三维网格图命令sh(x,y,)画网格曲面。这里x,,z是三个同维数的数据矩阵,分别表示数据点的横坐标纵坐标竖坐标命令meshx,,z)将该数据点在空间中描出并连成网格。解x3:0.1:3;=5:0.1:5;x1ons(siz(')*x;1='*ons(siz(x);[x2,2]meshrid(x,);meshgid函数生成2D/3D网格矩阵,用于分割空间,在绘制3D网格图或者表面图时都需要调用该函数对生成绘图时所用的数据。z1(sin(x1.*1)ps)./(x1.*1+ps);z2(sin(x2.*2)ps)./(x2.*2+ps);subplot(1,2,1,meshx1,1,z1)subplot(1,2,2,meshx2,2,z2)例81:绘制两个空间相交的平面zx2-1和zx-2解:x3:0.1:3;=-3:0.1:3;[X,]meshridx,);meshX,,X2*Y1)holdonmeshX,,X-Y2)3.表面图命令suf(x,y,)画三维表面图这里x,,z是三个同维数的数据矩阵分别表示数据点的横坐标、纵坐标、竖坐标。解[x,]meshrid([3:0.2:3]);z(sin(x.*)ps)./(x.*ps);sur(x,,z)4.旋转曲面方法一:使用命令函数ylindr[X,,]=clindr()这里的r表示构成旋转曲面的曲线。解Matlb程序如下。x0:10:600;[X,,]clindr(30*xp(x/400).*sin(x25*pi)/100)130);sur(,Y,Z)方法二:将旋转曲面用参数方程表示。解因为这里的函数是隐函数,化成显函数后有两支,必须使用参数方程,旋转面的参数方程为画图的Matlb程序如下:lpha[0:0.1:2*pi];bet0:0.1:2*pi;x4*os(lpha*ons(siz(bta);=(54*sin(lpha))*os(bta;z(54*sinlpha))*sin(bta;sur(x,,z)或者利用绘制三维隐函数曲面图形的命令suf或者zsh,其命令格式如下:zmeshfun)zmeshfun,omain)domain要求是一个向量,指定x,y轴的范围zmeshfunx,un,unz)参数方程绘图funx(s,t),fun(s,t),ndfunz(s,t)vrthesqua:2π<s<2,2π<t<2.zsur(un)zsur(un,domain)zsur(unx,un,funz)画图的Matlb程序也可以写成x@lpha,bta)4*os(alpha;=@(lpha,bta)(54*sinlpha)*os(bt);z@lpha,bta)54*sinlpha)*sin(bta;zsur(x,,z)对于形如fx,,z)0的三维隐函数的图像没有现成的函数可以画,但可以利用isosufae函数绘制三角网格图。例如f@x,,z)x.^2+.^2z.^210;%定义函数fx^2^2z^210[x,,z]meshridlinspac(4,4,25));设定格子大小和范围vl=(x,,z);[p,v]isosuf(x,,z,val,0);%用isosufce得到函数f0图形的点和面PAGEPAGE29ptch(fs,p,vrtics,v,fvrtxdta,jt(siz(v,1),fceolor,w,'deolor,flt);用ptch绘制三角网格图并设定色彩vie(3;ridon;xisequl5、绘制柱面柱面平行于某个坐标轴方程中不出现某个坐标轴的变量方程表示为(x,)0或者(x,z)0或者(,z)=0示例一:画出方程z2x2表示的柱面解:方程中的x是自量矩阵,z是因变量则另一个自变量矩阵为,自变量平面是xoy面,x轴是真正的自变量,y轴是柱面方向。Matlb程序如下:ulinspa(5,5,10);%设定参数列向量uvlinspa(5,10,10;%设定参数行向量vXu*ons(siz(v));%构成自变量矩阵XYons(siz(u))*v;%构成自变量矩阵Y2X.^2;%求因变量ZmeshX,,)2示例二:画出方程x2y1表示的柱面24解:方程整理为显示函数:y21x2,分别绘制正负两个分量。ler,lculinspa(5,5,10);%设定参数列向量uvlinspa(5,10,10;%设定参数行向量vX1u*ons(siz(v));%构成自变量矩阵X1Y12*sqrt1+X1.^2;%求因变量Y1Y22*sqrt1X1.^2;1ons(siz(u))*v;%求因变量meshX1,1,1,holdonmeshX1,2,1)6.其它二次曲面对于旋转面如果母线的方程可以表示成关于旋转轴变量的显式函数则可以直接使用Matlb工具箱中的命令ylindr,否则必须把旋转面化成参数方程,然后使用zmesh或zsurf命令绘图。对于其它的二次曲面,如果可以写成显函数直接使用命令zmesh或zsur,否则必须先化成参数方程。还有一些特殊的绘制函数如ylind,llipsoid等令。解:(1)x@s,t)3*s(s*os(t);化为参数方程=@(s,t)*se(s*sin(t);z@s,t)2*tans);zmeshx,,z)(2)x@s,t)3*s(s;=@(s,t)*tans)*os(t);z@s,t)2*tans)*sin(t;zmeshx,,z)(3)zsur((,z).^2,50)直接调用zsurf(4)x@s,t)3*tans)*os(t);=@(s,t)*tans)*sint);z@s,t)tans);zsur(x,,z)(5)llipsoid(0,0,,3,2sqrt())专门绘制椭球面(6)zsur((x,)x*)(7)x@s,t)3*os(s;=@(s,t)*sin(s);z@s,t)t;zmeshx,,z)7、绘制空间两曲面的交线示例绘制由水平截面与方程zx22y2构成的马鞍面形成的交线并讨论等高线和方向导数(梯度)的意义解水平平面与曲面的交线就是等高线在Matlb中绘制等高线有两个命令ontour和ontour3,前者把等高线画在xoy平面上,后者把等高线画在一定高度的平面上,使之成为立体的,与所在曲面对应。Matlb程序如下:lc,ler[x,]meshrid(10:.2:10);%确定计算和绘图的定义域网格z1(x.^22*.^2)+ps;%第一个曲面方程input(=(50<50));z2*ons(siz(x);%水平面方程z2,z2必须与x,y具有相同的维数,subplot(1,3,1,meshx,,z1;holdon;msh(x,,z2;%分别画出两个曲面v[10101010100100];xis(v)rid;%确定第一个分图的坐标系olormp(ra);holdof;r0bs(z1z2<1;%求两曲面z坐标只差小于0.5的网格zzr0.*z2;r0.*;xxr0.*x;%求这些网格上坐标值,即交线坐标值subplot(1,3,2,plot3xx,,zz,x';%画出这些点xis(v)rid;%使第二个分图取第一个分图的坐标系puse,subplot(1,3,3);ontour3x,,z1,20;%用等高线命令求出20条不同高度的交线。等高线与方向导数和梯度的概念密切相关,函数z1在每一点的梯与该处的等高线垂直也就是指向最陡的方向Matlb中求梯度用gadient函数quiver函数画出梯度向量,这两个函数要求在给定的点阵上求梯度和画梯度向量。Matlb程序如下:[x,]meshrid(10:2:10);z1(x.^22*.^2)+ps;ontourx,,z1,20;holdon;[x,p]=rdientz1,2,2;%以步长为2求z1的梯度的x,y分量quive(x,,px,p);%绘制梯度向量8、离散点的图形绘制相关函数giddaa,ipSatIntp,sater(sat3)giddaa用来对离散数据进行曲面拟合(1)ZI=giddat(x,,z,X,Y)用二元函数zfx,)的曲面拟合有不规则的数据向量PAGEPAGE32x,,zriddta将返回曲面z在(X,Y处的插值曲面总是经过这些数据(x,,z)的输入参(X,YI通常是规则的格(像用命令meshrid生成的一样XI可以是一行向量,这时XI指定一有常数列向量的矩阵。类似地,YI可以是一列向量,它指定一有常数行向量的矩阵。(2[X,Y,Z]=riddta(x,,z,xi,i)返回的矩阵ZI含义同上同时返回的矩阵X,YI是由行向量xi与列量i用命令meshrid生成的。(3[X,Y,Z]=riddta(,method)用指定的算法method计算:„liner:基于三角形的线性插值(缺省算法;„ubic:基于三角形的三次插值;„nrst‟:最邻近插值法;示例:x=nd(10,1)42;y=rnd(10,1)42;z=x.xp(x.^2-.^2);ti=2:.25:2;[xi,i]=meshridti,ti);zi=riddta(x,,z,xi,i);meshxi,i,zi),holdon,plot3(x,,z,o),holdof在新版本的Matlb中,该函数逐渐被riScttednterp函数所代替,riScttrdnterp的示例如下:x=nd(10,1)42;y=rnd(10,1)*42;z=x.*xp(x.^2-.^2);F=TiScttrdntepx,,z);ti=2:.25:2;[x,q]=meshrid(ti,ti);qz=(qx,q);计算指定位置的插值meshqx,q,qz);holdon;plot3x,,z,o';Matlb中绘制散点图的命令是sate(sater3,命令格式如下:sttrX,,S,C)XY对应散点值S代表标记大小C代表颜色值它都可以是向量。sttr3X,,,S,C)示例:A[1.486,3.059,0.1;2.121,4.041,0.1;2.570,3.959,0.1;3.439,4.396,0.1;4.505,3.012,0.1;3.402,1.604,0.1;2.570,2.065,0.1;2.150,1.970,0.1;1.794,3.059,0.2;2.121,3.615,0.2;2.570,3.473,0.2;3.421,4.160,0.2;4.271,3.036,0.2;3.41,1.876,0.2;2.561,2.562,0.2;2.179,2.420,0.2;2.757,3.024,0.3;3.439,3.970,0.3;4.084,3.036,0.3;3.402,2.077,0.3;2.879,3.036,0.4;3.421,3.793,0.4;3.953,3.036,0.4;3.402,2.219,0.4;3.000,3.047,0.5;3.430,3.639,0.5;3.822,3.012,0.5;3.41,2.385,0.5;3.103,3.012,0.6;3.430,3.462,0.6;3.710,3.036,0.6;3.402,2.562,0.6;3.224,3.047,0.7;3.41,3.260,0.7;3.542,3.024,0.7;3.393,2.763,0.7];xA:,1);A(:,2;zA:,3;sttrx,,5,z)散点图45动可视图形Matlb中的动画命令,oviein,getfae和ovie,用tfrme把Matlb产生的图形存储下来,每个图形成一个很大的列向量;再用N行这样的列保存N幅图,成为一个大矩阵movie命令把他们连接起来重放产生动画效果moviin用来预留存储空间以加快运行的速度。有些情况也需要借助puse命令和循环语句来实现点轨迹的动态演示。绘制彗星图的命令omet或者omet3也可以实现点的运动轨迹,不过这种方式速度较快。示例1:xisequl,%把坐标设成相等比例Mmoviin(16;%为变量M预留16幅图的存储空间forj=1:16plot(ftee(j16)));M(:,j)=tfrme;返回当前坐标轴下的一帧图像ndmovi(M,30)%以每秒30帧的速度播放M中的图形示例2:使用omet/comet3绘制彗星图(1)t=0:.01:2*pi;x=os(2*t.*(os(t)^2);y=sin(2*t).*sin(t).^2ometx,);(2)n10;t=n*pi*0:0.0005:1;xsin(t);=cos(t);plot(x,,'gxissqua;holdon;ometx,,0.01;holdo;示例3:极坐标下一个点沿着图形移动的轨迹0:.01:2*pi;b3;pola(,b*(1os(),*r);holdon;for0:0.05:2*pilafindobj(c,olo,'r';%findobj函数用来使用特定的属性获取图形句柄la用来清理由函数句柄指定的图形所在的坐标轴。h2pola(,b*(1-os(),b';st(h2,linstle,.,'makrsize,30);设置句柄指定函数图形的属性puse0.001)nd示例4普通二维坐标下一个点沿着曲线移动的轨迹程序与上面的结果基本相同。x2*pi:0.1:2*pi;=sin(x);plot(x,,b-';holdonform2*pi:0.05:2*pilafindobj(c,olo,b');la清除当前坐标轴上面的子对象hplot(m,sin(m),'r);st(h,'inStle,.,'Makr,*,MrkerSiz,20);puse0.001;nd示例5:普通三维坐标下一个点沿着曲线移动的轨迹。解:三维螺旋线坐标t1=10*pi*0:1000)/1000;x1os(t1;1sin(t1);z1t1;绘制曲线下面的水平直线t2=0:10)/10;x2x1nd)*1t2);2=1(nd)*(1t2);z2z1nd)*ns(siz(x2);绘制垂直直线t3=t2;z3(t3)*z1nd);x3zrossiz(z3);3x3;绘制曲线上面的水平直线t4=t2;x4t4;4zros(siz(x4);z4=4;绘制曲线x[x1x2x3x];=[1,2,3,4];z[z1,z2z3,z];plot3x,,z,b,linewidth,3)xisoff绘制移动的点hlin(Color,[100],Makr,.,MarkrSize,40,ErsMode,xor);nlenth(x);i=1;j=1;while1st(h,xdta,x(i,'dta,(i,zdta,z(i);dwnow使Mtlb暂停目前的任务序列而去刷新屏幕puse0.0005;f=tfrme(gf;i=i1;j=j1;ifin&j>450bk;nd

nd5、Mtlb在高等数学中的应用5.0Mtlb中号表示1、建立符号变量Matlb提供了sym和sys两个建立符号对象的函数1)sm函数,用来建立单个符号变量,调用格式为:符号变量名sm(„符号字符串注:符号字符串可以是常量、变量、函数或者表达式。2)sms函数,依次可以定义多个符号变量,调用格式为:sms符号变量1符号变量2……符号变量n注意符号变量名之间不能使用任何标点符号,只能用空格隔开。例如:fsm(os(x)),sm(„sin(x)^20);smsx;fsin(x)os(x),2、建立符号表达式利用单引号来生成表达式利用sm函数建立符号表达式使用已经定义过的符号变量组成符号表达式注意:符号表达式包括符号函数和符号方程,区别在于是否带有等号。3、符号表达式的运算(1四则运算四则运算分别使用smdd,smsub,smmul和smdiv来实现加减乘除运算,使用smpow实现幂运算(注:6.5以后的版本中已经没有了这些函数,而直接使用+-*/即可)(2提取分子和分母如果符号表达式是一个有理分式或可以展开为有理分式可利用nudn函数来提取符号表达式中的分子或者分母,调用格式为:[n,d]numdens)[n,d]=numdensm(4/5))turnsn=4ndd=5.[n,d]=numdenx/y+/x)turnsn=x^2+^2,d=*x(3因式分解与展开1)fatos(s分解因式2)xpand(s展开3)ollt(s)合并同类项4)ollt(s,v)按变量v进行合并同类项(4符号表达式的化简1)siplify(S)应用函数规则对S进行化简2)siple(S)进行综合化简(5)符号表达式与数值表达式之间的转换1)利用函数sm可以将数值表达式表示成符号表达式2)nuic或者val函数可以将符号表达式转换成数值表达式3)函数digits和vpa配合替换函数subs行转换。diits函数,diits()函数设置有效数字个数为D的近似解精度。vpa函数,Rvp(S)符号表达式S在diits函数设置下的精度的数值解。vp(S,D)符号表达式S在diits()精度下的数值解。subs函数,subs(S,NE,OD)4、符号函数的相关运算(1)复合函数运算。opose函数(2)反函数运算。fivse函数5、符号代数方程求解(1线性方程组的求解,函数linsolve,slve,可以得到方程的精确解(2多变量的非线性方程的符号解法,使用函数fsolve,调用格式:Xfsolv(„un‟,0)Xfsolv(„un‟,0,options)options为选择参数输入向量Xfsolv(„un‟,0,options,‟gdun‟,rdun为输入函数在X处的偏导数Xfsolv(„un‟,0,options,‟gdfun‟,P1,P2,…P1,P2为问题定性参数[X,option]fsolv(fun,X0,…)返回使用的优化方法的参数注意:fun必须使用指定示例:定义一个函数funtionF=mfun(x,)F=[2*x(1)-x2)-xp*x(1)x(1)+2*x(2)-xp*x(2)];nd求解该函数:c=1;%定义输入参数x=solve@x)mfunx,c),[5;5])6、多项式的表示方法(1)多项式的表示方法——转化为向量问题对于多项式

P(x)0x

1naxn11

.n1x

an用行向量表示:

P[0,1,,n1,n]①系数向量直接输入法MTAB自动将向量元素按降幂顺序分配各系数值函数poly2sym可以将向量表示的多项式转化为符号多项式表示。注:由特征多项式生成的多项式首项系数一定为1;n阶矩阵一般产生n次多项式。③由根创建多项式由函数ply实现注若要生成实系数多项式则根中的复数必定对应共轭;生成的多项式向量包含很小的虚部时可用rl命令将其过滤掉。(2)多项式的运算①多项式求值输入变量值代入多项式计算时以数组为单元的使用函数polyva(对应元素计算);以矩阵须为方阵为计算单求多项式的值用函数polyval;②多项式求根两种方法一种是调用函数oos另一种是通过建立多项式的伴随矩阵再求其特征值的方法得到多项式的所有根(使用ompan和ig函数)③多项式的乘除法运算。乘法使用函数onv(向量卷积,除法使用函数donv④多项式微分。微分函数polydr⑤多项式拟合两种方法一种是由矩阵的除法求解超定方程来进行另一种是用拟合函数polyfit,调用式为polfit(,,n)和[p,s]polfit(,,n)5.1求限Matlb求极限的命令为limit(xp,x,)limit(xp,)limit(xp)limit(xp,x,,let)limit(xp,x,,riht')其中limit(xp,x,)表示求符号表达式xpr关于符号变量x趋于a时的极限,limit(xp)求表示缺变量趋近于0时的极限。例15求下列表达式的极限解(1)lc,lersmsxf(3*sinx)x^2*cs(1/x)/(1+os(x)*log(1x);slimit(,x,0)ssimplif(s)(2)cc,cearssxas1=tx+2axax,x,n)s2=tx+2axax,x,n)5.2求数Matlb的求导数命令为dif(xp)dif(xp,v)dif(xp,sm(v')dif(xp,n)dif(xp,v,n)dif(xp,n,v)其中dif(xp)表示求表达式xpr关于默认变量的1阶导数,dif(xp,v,n)和dif(xp,n,v都表示求表达式,xpr关于符号变量v的n阶导数。解(1)lc,lersmsx=logxsqrt(x^2);sdif(,x,2)ssimples)对符号函数进行化简(2)[1,0.5,3.5,6];dadif(a)5.3求元函极值计算的Matlb程序如下smsxx^36*x^28*x-1;ddif();d_zrosolv(d),d_zro_nm=doubl(d_zro)%变成数值类型zplot()符号函数画图5.4求分1.求不定积分Matlb求符号函数不定积分的命令为int(xp)int(xp,v)解smsxint(1/1sqrt(1x^2));ptt()%写成符号表达式的形式2.求定积分(1)求定积分的符号解Matlb求符号函数的定积分命令为int(xp,,b)int(xp,v,,b)解smsxint(os(x)*os(2*x),pi/2,pi/2)(2)求定积分的数值解例20求下列积分的数值解输入quadl((t)t3*t.^2+2*t.^3.^(1/3),ps,0.5)得到1.4396。注:quad(函数使用smpson法,即用二次曲线逼近被积函数,qual采用更高阶的逼近方法。它们的调用方法是:qqudfun,,b,tol)或者qudl(un,,b,tol),fun可以是符号方程,也可以是匿名函数。ⅱ)输入dblquad((x,)sqt(1x.^2-.^2).*(x.^2+.^2<x),0,1,0.5,0.5)得到=0.6028。注Matlb中计算二重积分的函数形式为qdblqud(un,xinxmax,min,mx,tol),一般只用于积分区域为矩形的情况为了使该函数有时需要将非矩形区域化成矩形区域。示例:计算二重积分

(x2y2)y积分区域由x1,x及=0围成。解:首先绘制积分区域,Matlb程序如下:le,lcfill([0,1,1,0][0,0,1,],'');holdon%绘制积分区域fill([0.55,0.6,0.6,0.55,0.5],[0,0,0.6,0.55,],r)%绘制单元条text('x);pus;text(x1);pusetext('=0)按照矩形区域调用dblquad函数,程序如下:=dblquad((x.^2+.^2).*(x0),0,1,0,1)求得0.3333(3)输入fun3@x,,z)z.^2*lo(x.^2+.^2z.^21./(x.^2+.^2z.^21.*(z0...zsqrt1x.^2-.^2);%该语句使用了续行符...=tiplequad(un3,1,1,-1,1,0,1)三重积分计算函数得到=0.1273。Matlb符号求解的程序如下lc,lersmsrztheta1int(r^2z^2)*,z,^2,sqrt(2r^2);%求最内层积分2int(1,r,01);%求中间层的积分int(2,thet,0,2*pi)%求最终的积分结果ptt()分数线中间显示的格式numdouble()%把符号解化成数值解解法二求数值解的Matlb程序如下lc,lerf@x,,z)x+z).^2.*(zx.^2+.^2&x.^2+.^2z.^22;triplqud(f,sqrt(2),sqrt2,sqrt(2),sqt(2,0,sqrt(2)求得积分的值为2.4486。注qud与int的区别int可以求具有解析的不定积分和定积分qud只能求解定积分。5.5求微分程组)1、微分方程组的解析解在MATAB中用D表示导数例如Dy表示D2y表示‟‟D(0)=5表示‟(05等,符号常微分方程求解通过函数dsolve实现,调用格式为:dsolv(‟,‟‟,‟v)包括微分方程初始条件和指定变量三个部分求解常微分方程e在初始条件c下的特解,v描述方程中的自变量,省略则默认以t为自变量,若没有初始条件,则获得通解。例1:求u1u2的通解解:Matlb程序为:dsolv(Du1u^2,t')d2ydy例2:求微分方程dx2

429y0dx的特解y(0),y(0)15解:Matlb程序为:dsolv(D24*D+29*0,'(00,D(0)15,x)dx2x3y3zdtdt例3:求常微分方程组的通解dy4x5ydtdz4x4y2zdt解:Matlb程序为:[x,,z]dsolv(Dx2*x3*3*z,D4*x5*+3*z,'Dz4*x4*2*z)一阶齐次线性常微分方程组和非齐次线性方程组可以直接通过矩阵操作求解。n,A对于一阶齐次线性微分方程组:XX,Xn,A

j)n其解的形式为:0Xt)eA(t0)X000对于非齐次线性方程组:XXft,Xt)00

解的形式为:0Xt)eA(t0)X0

eA(ts)f(s)s2131例4:X02

X,X(0)2003

1解:smst;a[2,1,3;0,2,1;0,0,2];x0[1;;1]xxpm(*t)*x0ptt(x);化简结果1000

0例5:X21

2X0

,X(0)1321解:smsts;

etost)

1[100;212;321];f[0;0;xps)*os(2*s];x0[0;;1];txint(xpm(*ts)*s,s);%先求不定积分,再计算定积分的结果,提高速度xstasubs(tx,st)subs(tx,s,0);xxpm(*t)x0xta;xsimples),ptt(x)simple直接显示化简结果,simplify显示化简过程,ptty修改显示格式2、微分方程(组)的数值解当难以求得微分方程的解析解时可以求其数值解Matlb中求解微分方程数值解的方法有以下几个:od45,od23,od113,od23s,od15s。调形式如下:[,x]=solvrf,s,x0,options)其中t是自量的值x是函数值olver表示上述5种求解器的一种‘f是由待解方程写成的m文件名ts=[t0,tf]示自变量的初值和终值,options用于设定误差限,通过函数options=odst(rltol,t,‘abstol,a分别设定相对误差和绝对误差。不同的函数代表不同的内部算法,od45表示4/5阶龙格库塔费尔贝格算法(RK算法),是解非刚性常微分方程的首选方法,od23采用2/3阶RK方法,od113采用多步法效率一般比od45高od15sod23s,od23t,d23tb用来解刚性常微分方程。注1在解n个未知函数的的方程组时x0和xn均为n为向量m文件中的待解方程组应以x分量形式写出;注2使用alab求数值解时高阶微分方程必须等价的变换成一阶微分方程组。d2x

2dx例1:求解vndrPol刚性微分方程dt210001x)dt

x0的数值解x(0);x(0)0解:令1x,2=1,则微分方程变为一阶微分方程组:1'y2y2'12)y21();y()0写成m文件如下所示:funtiond=fun1t,)dzros(2,1;d(1)=(2);d(2)1000*1-(1^2)*(2)-(1);取[t0,t][0,3000],入命令:[t,]od15s('un1,[0,3000],[2,]);plot(t,(:,1,-')1'y23例例2:求解微分方程组y2'133'0.511y21(0),y2(0);3(0)1解:建立方程组的m文件:funtiond=fun2t,)dzros(3,1;初始化d(1)=(2)*(3;d(2)=(1)*(3;d(3)0.51*(1*(2);取t0=0,tf12,Matlab命令如下:[t,]od45(fun2,[012][011])plot(t,(:,1,-,t,(:,2),*,t,(:,3,'+)yyxy例3:求解orz方程

x)x(yzzx(yzzy中,,8/3。解:rho10;bet29;lmd8/3;f@t,Y)[rho*(Y2)-Y1);bet*Y1)Y(2Y(1*Y3;lamd*Y3)Y1)*Y2];方程组必须使用列向量表示[t,]od45(,[0,30],[5,3,17])subplot(2,2,1)plot(t,(:,1,*)x曲线subplot(2,2,2)plot(t,(:,2,X')subplot(2,2,3)plot(t,(:,3,O')subplot(2,2,4)plot3((:,1,(:,2),(:,3)%绘制空间轨迹图3、边值问题的Matlb数值解Matlb中使用bvp4c(bvp5)和bvpinit命令求解常微分方程中的两点边值问题,其调用格式为:sol=bvp4(odefun,fun,solinit,options)solinit=bvpinitx,init,prmeters)该函数用来给sol提供初始猜测解。56数求和Matlb级数求和的命令为r=sysu(xp,v)r=sysu(xp,v,a,b)其中xpr为级数的通项表达式,v是求和变量,a和b分别为求和变量的起始点和终止点,若没有指明a和b,a的默认值为0,b的默认值为v1。无穷数列的累加称为级数当取其前面若干有限项时得到的是部分和数列a累加形成的新序列可用sumsum()实现a的长度为n则s的长度也为n即每一个s(k)是数组a中前k项的和。注意umsum与sum的区别,sum(得到的是一个数,即序列s中最后一项。示例:lc,lerk1:10;1./k.^2;sumsum()ss=sum()例22求如下级数的和解(1)smsnf1(2*1)/2^n;s1smsum(1,n,1,inf)(2)smsnf21/n^2;s2smsum(2,n,1,inf)补充一点Matlb求数组元素乘积的函数prodA)如果A是一个m行一列(向量),则这种用法即返回这m个元素的乘积;如果A是一个m行n列的矩阵,则A的每一列都被看做一个m行1列的向量,分别计算每个向量中元素的乘积,返回给,因此B是一个1行n列的数组。57Mlab求解问题Matlb求解各种形式的极值问题被集成在优化工具箱中。下面是优化工具箱4.0版本的功能示意图:47变量描述调用函数f线性规划目标函数f*X或二次规划的目标函数X’*H*+*X中线性项的系数向量linpro,qudprogfun非线性优化的目标函数.un必须为行命令对象或M文件嵌入函数或MEX文件的名称fminbnd,fminsrh,fminun,fminon,lsquvfit,lsqnonlin,folattain,minimxH二次规划目标函数X’*H*f*X中的二次项的系数矩阵qudprogA,bA矩阵和b向量分别为线性不等式约束:AX≤b中的系数矩阵和右端向量linpro,qudpro,folattin,fminon,fminimaxAq,bqAq矩阵和bq向量分别为线性等式约束Aq*Xbq中的系数矩阵和右端向量linpro,qudpro,folattin,fminon,fminimaxlb,vubX的下限和上限向量linpro,qudpro,folattin,fminon,fminimax,lsqcuvfit,lsqnonlinX0迭代初始点坐标除fminbnd外所有函数1,2函数最小化的区间fminbndoptions优化选项参数结构所有优化函数变量描述调用函数itflag描述退出条件:xitfl0表示目标函数收敛于xxitfl0表示已达到函数评价或迭代的最大次数xitfl0表示目标函数不收敛x由优化函数求的x值所有优化函数feal解x处的目标函数值linpro,qudpro,folattinfminon,fminimax,lsqcuvfitlsqnonlin,fminbndoutput包含优化结果信息的输出结构itrtions,Aloithm,unCount(函数评价次数)所有优化函数进行极值计算时有两种方式,通过命令optimool打开优化工具箱GUI求解和使用48PAGEPAGE50上述提供的命令函数进行求解。示例一:使用单纯形计算最小值in

f41

温馨提示

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

评论

0/150

提交评论