Matlab复习资料_第1页
Matlab复习资料_第2页
Matlab复习资料_第3页
Matlab复习资料_第4页
Matlab复习资料_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、大家好!这是一份matlab复习资料,在里面可能有几道模拟题的答案(注意模拟题中的变化);对于其他的答案,恕我的能力有限,无法满足大家的需求,我在此致以崇高的歉意。最后祝愿每个人取得理想的成绩2011年06月29日刘自迪Matlab复习资料一、基本概念、命令、语句格式、程序结构1. MATLAB是一种用于科学工程计算的高级语言,其基本的数据单位是矩阵,它的命令表达式与数学、工程中常用的习惯表达形式十分相似;2. MATLAB高效方便的矩阵和数组运算,使之在数字信号处理、建模、系统识别、自动控制、优化等领域的问题时,显得十分简洁、高交,具有其他高级语言不可比拟的优势;3. MATLAB的典型应用

2、包括以下几个方面:数学计算、算法设计、建模与仿真、数据分析与可视化、科学及工程绘图和应用开发;4.MATLAB最显著的特点是其基本数据是不需要定义大小的数组;5. MATLAB语言是以矩阵和向量为基本数据单位,包括控制流程语句、函数、数据结构、输入输出及面向对象等特点的高级语言;6. MATLAB的工作空间指运行MATLAB的所有变量和MATLAB提供的常量构成的空间;7.在命令窗口中键入who和whos命令可以看到目前工作空间里的所有变量,命令clear可以删除工作空间里的变量;8.MATLAB用%实现注释功能;可以把多条命令放在同一行,只要中间用逗号或分号隔开,逗号告诉MATLAB显示结果

3、;分号说明除了这一条命令外还有下一条命令等待输入,MATLAB这时将不会给出运行的中间结果;9.MATLAB的类”目录名都以符为引导,其上存放类构造”函数和重载”函数;10.用path命令扩展的搜索路径仅在当前MATLAB环境下有效;11.MATLAB有两种最常用的创建数组的方式:冒号表示形式直接定义数据点之间的增量而不是数据点;linspace直接定义数据点数,而不是数据点之间的增量;12. MATLAB数组中以空格或逗号分隔的元素指定的是不同列的元素,而以分号分隔的元素指定了不同行的元素;另:MATLAB的数组存储,也表现在绝对索引上,是按从上到下、从左到右的顺序进行的。13.点乘符号.*

4、对数组c和d施加元素对元素的乘法运算,不带点的乘号表示矩阵乘法;14.数组除法同时使用了正斜杠和反斜杠两种定义:两种情况下,斜杠下的数组都被斜杠上的数组所除;15.B.A表示对应元素相除;16.reshape函数用于在总元素不变的前提下,改变数组的行数、列数;-2-17.为了生成比较复杂的数组,MATLAB提供了诸如反转、插入、提取、收缩、重组等对数组和矩阵的操作方式;18.函数find用于返回数组或矩阵中满足某关系表达式的那些元素的位置或下标;19.可用命令class和ischar来查看变量是否为字符数组;20.采用输入数值矩阵的方法输入字符矩阵时,应保证矩阵的每行字符串的长度相同;21.函

5、数cellstr可把字符矩阵转换成元胞数组;22.函数mat2str把数值数组组转换为字符串,用eval函数又可把这种字符串转换成数值数组;23.元胞数组的每一个元素可为类型不同、维数不同的矩阵、向量、标量或多维数组,所有元素用大括号括起来;24.中括号对“口用来形成矩阵,大括号对“是元胞数组的标志。两者不同之处在于,大括号可以嵌套,而中括号不可;25.函数celldisp用来显示元胞数组的每个元素的值,函数cellplot将画出元胞数组的每个元素的结构图;26.当给已经定义的元胞数组下标范围外的元素赋值时,MATLAB自动扩维,对于没有赋值的元素,赋值为空矩阵;27.在赋值语句中,每次只能给

6、元胞数组的一个元素赋值,采用形如“a1,:二的赋值语句是不合法的;28.结合使用冒号运算和大括号可以方便地引用元胞数组中的多个元素,并把引用的元素分为不同的变量;29.数据不能直存放于结构体,而只能存放在域中。结构体的域可以存放任何类型、任何大小的数组;30.在矩阵下标的表达式里使用冒号表示矩阵的一部分,如A(:,j)表示矩阵A的第j列的所有元素。由于有了冒号运算符,在MATLAB里编程变得特别简便、快捷;31.在MATLAB里,可通过把矩阵的列或行赋值为空矩阵来删除某行或某列;32.A(1:2:5)表示删除下标为1、3、5的三个元素;33.在MATLAB里,当行向量乘以列向量时为标量积(内积

7、),当列向量乘以行向量时为向量积(外积);34.函数cond(A)计算矩阵的条件数;35.V,D=eig(A)求特征值与特征向量;36.det(A)计算行列式;37.Inv(A)求矩阵的逆;38.poly(A)求特征多项式;39.函数polyfit从最小二乘的意义上,拟合出所给数据的多项式系数;40.x(any(isnan(x),:)二口作用是删除所有包含NaN的行;41.any(x)的功能是:如果在一个向量x中,任何元素是非零,返回1;42.all(x)的功能是:如果在一个向量x中,所有元素非零,返回1;43.函数工作空间变量nargin包含输入参量个数,函数工作空间变量nargout包含输

8、出参量个数;44.局部(local)变量是存在于函数空间内部的中间变量,产生于该函数的运行过程中,其影响范围也仅限于该函数本身;45.全局(global)变量是在不同的工作空间以及基本工作空间中可以被共享的变量;46.私有函数只能被private目录的直接父目录上的M函数文件所调用;47.数值数组的预定维一般采用zeros函数,元胞数组预定维采用cell函数,结构型数组用struct函数预定维;48.clear命令从内存中删除变量;49.pack命令把内存中的变量存入磁盘,再用内存中的连续空间载回这些变量;50.在MATLAB里,对象是用结构体数组来存储的;51.函数figure可建立新的图形

9、窗口,并把新建的窗口指定为当前窗口用于输出图形;52.命令subplot可以把多个图形绘在一个图形窗口中;53.命令what列出当前目录或文件夹下的所有M文件和MAT文件;54.help、lookfor等命令都不能提供关于私有函数的任何帮助信息;55.MATLAB还提供了两种演算函数来提高计算的灵活性:一种是串演算函数eval,另一种是函数句柄演算函数feval;56.编程时,把循环向量化,不但能缩短程序的长度,更能提高程序的执行效率;57.在MATLAB里运行C语言的可执行文件,应在文件名前加上感叹号58.函数meshgrid(x,y)对y中行的每一行复制x,同样也对x中列的每一列复制y;5

10、9.MATLAB提供了一个称为fplot的巧妙的绘图函数,该函数细致地计算要绘图的函数,并且确保在输出的图形中表示出所有的奇异点;60.在图形窗口里,legend、zoom、ginput都响应鼠标的单击。二、MATLAB矩阵运算基础创建行矢量:在一对方括号中输入元素,并用空格或是逗号分隔开。创建列矢量:使用分号分割开。转置运算符(),若数组中包含复数元素,那么产生复共轲转置。可以使用点转置运输符(.),所有元素是实数,它们的运算结果相同。数组索引:行号总是列在前面。V(:,2:4)表示矩阵中第二列,到第五列的所有元素。通过让矩阵的某些行或列赋值空数组,就可以删除相应的行或列。A(14,:)=;

11、删除矩阵A的第1行和第4行。多维数组前二维是行和列,较高维称为页。创建三维数组的一个方法是使用cat命令。C=cat(3,A,B),可以任务C由两层数组构成,第一层是A,第二层是B。,一,5731在MATLAB中如何建立矩阵,并将其赋予变量a?491a=573;4912有几种建立矩阵的方法?各有什么优点?可以用四种方法建立矩阵:直接输入法,如a=2573,优点是输入方法方便简捷;通过M文件建立矩阵,该方法适用于建立尺寸较大的矩阵,并且易于修改;由函数建立,如y=sin(x),可以由MATLAB的内部函数建立一些特殊矩阵;通过数据文件建立,该方法可以调用由其他软件产生数据。3在进行算术运算时,数

12、组运算和矩阵运算各有什么要求?进行数组运算的两个数组必须有相同的尺寸。进行矩阵运算的两个矩阵必须满足矩阵运算规则,如矩阵a与b相乘(a*b)时必须满足a的列数等于b的行数。4数组运算和矩阵运算的运算符有什么区别?在加、减运算时数组运算与矩阵运算的运算符相同,乘、除和乘方运算时,在矩阵运算的运算符前加一个点即为数组运算,如a*b为矩阵乘,a.*b为数组乘。5352425计算矢I阵 374 与 679 之和。798836a=535;374;798;b=242;679;836;a+bans=x=4+8i3+5i2-7i1+4i7-5i;3+2i7-6i9+4i3-9i4+4i;xans=一 693,

13、241,一7计算 a 与 b 的数组乘积。275468a=693;275;b=241;468;a.*bans=12363842408左除”与右除”有什么区别?x=ab是a*x=b的解,右除x=b/a是x*a=b的解,一般情况下,abb/a。3726,求解X。28A=492;764;357;B=372628;X=ABX=-0.51184.04271.33189156求 x141248i32i131435i27i76i94i14i39i5i4的共轲转置。4.0000-8.0000i3.0000-5.0000i2.0000+7.0000i1.0000-4.0000i7.0000+5.0000i3.0

14、000-2.0000i7.0000+6.0000i9.0000-4.0000i3.0000+9.0000i4.0000-4.0000i在通常情况下,左除9对于 AXB,如果A123456,分别计算a的数组平方和矩阵平方,并观察其结果。789a=123;456;789;a.A2ans=149162536496481aA2ans=30364266819610212615074,观察a与b之间的六种关系运算的结果。62a=123;456;b=874;362;abans=010101a=bans=010101aaa=bans=000000a=b10已知:a125811a,b3643ans=111111

15、12a50.2080.7,在进行逻辑运算时,相当于a=11011。13在sin(x)运算中,x是角度还是弧度?在sin(x)运算中,x是弧度,MATLAB规定所有的三角函数运算都是按弧度进行运算。14角度x304560,求x的正弦、余弦、正切和余切。x=304560;x1=x/180*pi;sin(x1)ans=0.50000.70710.8660cos(x1)ans=0.86600.70710.5000tan(x1)ans=0.57741.00001.7321cot(x1)ans=1.73211.00000.577415用四舍五入的方法将数组2.45686.39823.93758.5042取

16、整。ans=,一,4271 一16将矩阵 a、b 和 c7583b=2.4568round(b)6.39823.93758.5042;(1)组合成一个43的矩阵,第一列为按列顺序排列的a矩阵元素,第二列为按列a相当于什么样的逻辑量。组合成两个新矩阵:(2)按照a、b、c的列顺序组合成一个行矢量,即a=42;57;b=71;83;c=59;62;%(1)d=a(:)b(:)c(:)d=475586219732%(2)e=a(:);b(:);c(:)e=45277或利用(1)中产生的de=reshape(d,1,12)ans=4527781三、重要函数/命令/变量clc清空命令窗口clear从工作

17、空间(计算机内存)中删除变量closeall关闭(删除)全部图形窗口load从磁盘中调入数据变量save把内存变量存入磁盘function函数文件头global定义全局变量input提示键盘输入format格式化显示命令窗口输出信息cumsum顺序排列的b矩阵元素,第三列为按列顺序排列的c矩阵元素,即475586219732452778135698135692阵列累计和diag方阵的对角线;创建对角阵dot两向量的点积end阵列最后项的指针find满足逻辑表达式的阵列索引和阵列值length向量长度size阵列的阶次或长度min确定阵列中的最小值max确定阵列中的最大值rank确定矩阵线性无关

18、的行或列值eig矩阵特征方程的特征值和特征向量det方阵行列式inv方阵的逆poly特征多项式plot应用线型坐标绘制平面曲线mesh绘三维网线图sum计算阵列兀素的和值mean计算阵列兀素的均值var计算阵列兀素的方差std计算阵列兀素的标准差corrcoef相关系数矩阵sym定义基本符号对象syms定义基本符号对象!执行外部应用程序基本矩阵(Elementarymatrices)eye单位矩阵ones所有兀素全为1的矩阵zeros所有兀素全为0的矩阵rand均匀分布随机阵randn正态分布随机阵compan伴随矩阵magic创建任意行和列的和值相等的方阵meshgrid用于三维曲面的分格线

19、坐标linspace线性等分向量logspace对数等分向量repmat铺放模块数组信息显示(Messagedisplay)disp显示矩阵和文字内容display显示矩阵和文字内容的重载函数error显示错误信息fprintf把格式化数据写到文件或屏幕sprintf按格式把数字转换为串控制语句(Controlflow)break终止最内循环case向switch一起使用catch向try一起使用continue将控制转交给外层的for或while循环else向iff 使用elseif向iff 使用end结束for,while,if语句for按规定次数重复执行语句if条件执行语句otherwi

20、se可向switch一使用return返回switch多个条件分支trytry-cathch结构while特殊变量不确定次数重复执行语句ans用于结果的缺省变量名Pi圆周率eps计算机的最小数,当和1相加就产七flops浮点运算数inf无穷大,如1/0NaN不定量,如0/0i,ji=j=,1nargin所用函数的输入变量数目nargout所用函数的输出变量数目realmin最小可用止实数realmax最大可用正实数时间和日期(Timeanddates)clock时钟cputmeMATLAB占用CPU时间date日期etime用CLOCK计算的时间now当前时钟和日期pause暂停tic计时开始

21、toc计时终止和显示符串操作(Stringoperations)ischar若是字符串则为真个比1大的数isletter串中是字母则为真isspace串中是空格则为真isempty若是空矩阵则为真isequal若对应兀素相等则为1islogical若是逻辑数则为真isnumeric若是数值则为真int2str将整数转换为字符串str2num将字符串转换为数值lower把字符串变成小写upper把字符串变成大写MATLA取整和求余函数(Roundingandremainder)ceil朝正无穷大方向取整fix朝零方向取整floor朝负无穷大方向取整mod模数求余rem求余数round四舍五入取整

22、sign符号函数文件输入/输出(Fileinput/output)fopen打开文件fclose关闭文件fread从文件中读取二进制数据fwrite把二进制数据写到文件里fscanf从文件中读入格式化数据fprintf把规格化数据写到文件或屏幕fgetl读文件的行,忽略回车符fgets读文件的行,包括回车符exist检查文件是否存在ferror查询文件I/O的错误状态feof测试文件是否结束fseek设置文件位置指示符ftell获取文件位置指示符frewind返回到文件开始delete删除磁盘文件微积分(Calculus)diff求导数limit求极限int计算积分jacobianJacobi

23、an矩阵symsum符号序列的求和trylorTrylor级数方程求解(SolutionofEquation)dsolve求解符号常微分方程finverse求反函数fminunc拟牛顿法求多元函数极值点fsolve解非线性方程组lsqnonlin解非线性最小二乘问题solve求解方程组四、M文件编程1命令文件与函数文件的主要区别是什么?(1)命令文件是一系列命令的组合,函数文件的第一行必须用function说明;(2)命令文件没有输入参数,也不用返回参数,函数文件可以接受输入参数,也可以返回参数;(3)命令文件处理的变量为工作空间变量,函数文件处理的变量为函数内部的局部变量,也可以处理全局变量

24、。2如何定义全局变量?用关键字global可以把一个变量定义为全局变量,在M文件中定义全局变量时,如果在当前工作空间已经存在了相同的变量,系统将会给出警告,说明由于将该变量定义为全局变量,可能会使变量的值发生改变,为避免发生这种情况,应该在使用变量前先将其定义为全局变量。3如果x是一个结构型数组,如何观察其中的内容?结果数组用于存储一组相关的数据元素(域),这些元素可以是不同类型、不同尺寸的,结构数组不能用数组编辑器观察和修改其中的元素。对于明为x的结构型数组,可以直接键入x以观察其中所包含的域名及内容,也可以键入X.域名观察指定域名的内容,例如xX=name:linecolor:reddat

25、a:12.700035.90008.400012.200016.600018.800026.2000 x.colorans=red4if语句有几种表现形式?(1)if表达式语句体end(2)if表达式语句体1else语句体2end(3)if表达式1语句体1elseif表达式2语句体2end(4)if表达式1elseif表达式2语句体2else语句体3end5说明break语句和return语句的用法。break语句用于终止for循环和while循环的执行。如果遇到break语句,则退出循环体,继续执行循环体外的下一彳T语句。在嵌套循环中,break只存在于最内层的循环中。return语句用于终

26、止当前的命令序列,并返回到调用的函数或键盘,也用于终止keyboad方式,在MATLAB中,被调用的函数运行结束后会自动返回调用函数,使用return语句时将return插入被调用函数的某一位置,根据某种条件迫使被调用函数提前结束并返回调用函数。6有一周期为4的正弦波上叠加了方差为0.1的正态分布的随机噪声的信号,用循环结构编制一个三点线性滑动平均的程序。(提示:用0.1*randn(1,n)产生方差为0.1的正态分布的随机噪声;三点线性滑动平均就是依次取每三个相邻数的平均值作为新的数据,如x1(2)=(x(1)+x(2)+x(3)/3,x1(3)=(x(2)+x(3)+x(4)/3)t=0:

27、pi/50:4*pi;n=length(t);y=sin(t)+0.1*randn(1,n);ya(1)=y(1);fori=2:n-1ya(i)=sum(y(i-1:i+1)/3;endya(n)=y(n);plot(t,y,c,t,ya,r,linewidth,2)1.57编制一个解数论问题的函数文件:取任意整数,若是偶数,则用2除,否则乘3加1,重复此过程,直到整数变为1。functionc=collatz(n)%collatz%Classic“3n+1Ploblemfromnumbertheoryc=n;whilen1ifrem(n,2)=0n=n/2;elsen=3*n+1;endc

28、=cn;end8有一组学生的考试成绩(见表),根据规定,成绩在100分时为满分,成绩在9099之间时为优秀,成绩在8089分之间时为良女?,成绩在6079分之间为及格,成绩在60分以下时为不及格,编制一个根据成绩划分等级的程序。学生姓名王张刘李陈杨于黄郭赵成绩728356941008896685465Name=王,张,刘,李,陈,杨,于,黄,郭,赵;Marks=72,83,56,94,100,88,96,68,54,65;%划分区域:满分(100),优秀(90-99),良好(80-89),及格(60-79),不及格(,可以在命令窗口或工作空间浏览器中观察和修改变量内容,如果keyboard命令

29、设置在函数中, 则可以观察和修改函数中的局部变量, 检查或修改完成后, 键入return命令, 退出keyboard状态,控制权交还给系统,程序将继续运行。11.函数M文件当调用一个函数时,所用的输入和输出的参量的数目,在函数内是规定好的。函数工作空间变量nargin包含输入参量个数;函数工作空间变量nargout包含输出参量个数。事实上,这些变量常用来设置缺省输入变量,并决定用户所希望的输出变量。例如,考虑MATLAB函数linspace:functiony=linspace(d1,d2,n)%LINSPACELinearlyspacedvector.%LINSPACE(x1,x2)gene

30、ratesarowvectorof100linearly%equallyspacedpointsbetweenx1andx2.%LINSPACE(x1,x2,N)generatesNpointsbetweenx1andx2.%SeealsoLOGSPACE,%Copyright(c)1984-94byTheMathWorks,Inc.ifnargin=2n=100;endy=d1+(0:n-2)*(d2-d1)/(n-1)d2;这里,如果用户只用两个输入参量调用linspace,例如linspace(0,10),linspace产生100个数据点。相反,如果输入参量的个数是3,例如,linsp

31、ace(0,10,50),第三个参量决定数据点的个数。五、MATLAB勺符号运算功能1 .求和symsum(S)对通项S求和,其中k为变量。且从0变到k-1。symsum(S,v)对通项S求和,指定其中v为变量。且v从0变到v-1symsum(S,a,b)对通项S求和,其中k为变量。且从a变到bosymsum(S,v,a,b)对通项S求和,指TE其中v为变重。且v从a变到b。例:键入k=sym(k);symsum(k)得ans=1/2*kA2-1/2*k又例如:键入symsum(kA2,0,10)得ans=385又例如:键入symsum(xAk/sym(k!),k,0,inf)得ans=exp

32、(x)这最后的一个例子是无穷项求和。2.求导数diff(S,v)求表达式S对变量v的一阶导数。diff(S,v,n)求表达式S对变量v的n阶导数。例如:键入命令A=sym(1/(1+a),(b+x)/cos(x);1,exp(xA2);diff(A,x)得ans=0,1/cos(x)+(b+x)/cos(x)A2*sin(x)0,2*x*exp(xA2)又如求sin(x)+ex的三阶导数,键入命令diff(sin(x)+x*exp(x),3)得ans=-cos(x)+3*exp(x)+x*exp(x)再如:求A=x*sin(y),xAn+y1/x/y,exp(i*x*y)的先对x再对y的混合偏

33、导数。可键入命令:S=sym(x*sin(y),xAn+y;1/x/y,exp(i*x*y);dsdxdy=diff(diff(S,x),y)得dsdxdy=cos(y),01/xA2/yA2,i*exp(i*x*y)-y*x*exp(i*x*y)求y=(lnx)x的导数可键入命令:p=(log(x)Ax;p1=diff(p,x)得pl=log(x)Ax*(log(log(x)+1/log(x)求y=xf(x2)的导数,可键入命令:p=x*f(xA2),;p1=diff(p,x)得p1=f(xA2)+2*xA2*D(f)(xA2)求xy=ex+y的导数,可键入命令:p=x*y(x)-exp(x

34、+y(x);p1=diff(p,x)p1=y(x)+x*diff(y(x),x)-(1+diff(y(x),x)*exp(x+y(x)p2=y+x*dy-(1+dy)*exp(x+y)=0;dy=solve(p2,dy)%把dy作为变量解方程得dy=-(y-exp(x+y)/(x-exp(x+y)3.求极限limit(P)表达式P中自变量趋于零时的极限。limit(P,a)表达式P中自变量趋于a时的极限。-21-limit(P,x,a,left)表达式P中自变量x趋于a时的左极限。limit(P,x,a,right)表达式P中自变量x趋于a时的右极限。例如:键入P=sym(sin(x)/x);

35、limit(P)得ans=1键入P=sym(1/x);limit(P,x,0,right)得ans=inf键入P=sym(sin(x+h)-sin(x)/h);h=sym(h);limit(P,h,0)得ans=cos(x)键入v=sym(1+a/x)Ax,exp(-x);limit(v,x,inf,left)得ans=exp(a),04.求积分int(P)对表达式P进行不定积分。int(P,v)以v为积分变量对P进行不定积分。int(P,v,a,b)以v为积分变量,以a为下限,b为上限对P进行定积分。例如:键入int(-2*x/(1+xA2)A2)得ans=1/(1+xA2)键入int(x/

36、(1+zA2),z)得ans=atan(z)*x键入int(x*log(1+x),0,1)得ans=1/4定积分的上下限可以是(符号)函数。例如,键入:int(2*x,sin(t),log(t),)得ans=log(t)A2-sin(t)A2可以对(符号)矩阵进行积分,例如输入int(exp(t),exp(a*t)得ans=exp(t),1/a*exp(a*t)5.求符号方程的解(1)线性方程组的求解线性方程组的形式为A*X=B;其中A至少行满秩。X=linsolve(A,B)输出方程的特解X例如:键入A=sym(cos(t),sin(t);sin(t),cos(t);B=sym(1;1);c

37、=linsolve(A,B)c=1/(sin(t)+cos(t)1/(sin(t)+cos(t)例如:键入a=sym(2,7313522;9,4,1,7);b=sym(6;4;2);X=linsolve(a,b)Warning:Systemisrankdeficient.Solutionisnotunique.X=0020(2)代数方程的求解13y=solve(P,v)solve(p1,P2,,Pn,v1,v2,,vn)v1,v2对方程P中的指定变量v求解。对方程P1,P2,,Pn中的指定变量,vn求解。例:要求解方程p+sin(x)=r,可输入solve(p+sin(x)=r)得:ans=-

38、asin(p-r)2,、一,xxyy3又例:要求解方程组,,可输入:x4x30P1=xA2+x*y+y=3;P2=xA2-4*x+3=0;x,y=solve(P1,P2)得:1-3/222再例:要求解方程组auv0,可输入:uv1P1=a+uA2+vA2=0;P2=u-v=1;u,v=solve(P1,P2,u,v)得:u=1/2+1/2*(-1-2*a)A(1/2)1/2-1/2*(-1-2*a)A(1/2)v=-1/2+1/2*(-1-2*a)A(1/2)-1/2-1/2*(-1-2*a)A(1/2)对于有些无法求出解析解的非线性方程组,MATLAER给出一个数值解。这一点可以从表 示 解

39、 的 数 字 不 被 方 括 号 括 住 而 确 定 。 例 如 : 键 入 :x,y=solve(sin(x+y)-exp(x)*y=0,xA2-y=2)得 :x=-6.0173272500593065641097297117905y=34.208227234306296508646214438330由于这两个数字没有被括住,所以它们是数值解。另外,可利用solve来解线性方程组的通解。例如:键入P1=2*x1+7*x2+3*x3+x4=6;P2=3*x1+5*x2+2*x3+2*x4=4;P3=9*x1+4*x2+x3+7*x4=2;u=solve(P1,P2,P3,x1,x2,x3,x4

40、)Warning:3equationsin4variables.u=x1:1x1symx2:1x1symx3:1x1symx4:1x1sym可以看到:屏幕提示a3个方程4个变量”,意为解不唯一。(有时会提示解不唯一)且输出的是解的结构形式。为进一步得到解,可输入:u.x1,u.x2,u.x3,u.x4,得:ans=x1ans=-5*x1-4*x4ans=11*x1+9*x4+2ans=x4这样就得到了原方程组的通解。6.解符号微分方程dsolve(eq1,eq2,其中eq表示相互独立的常微分方程、初始条件或指定的自变量。默认的自变量为to如果输入的初始条件少于方程的个数,则在输出结果中出现常数

41、c1,c2,等字符。关于微分方程的表达式有如下的约定:字母y表式函数,Dy表示y对t的一阶导数;Dny表示y对t的n阶导数。xy例如:求y的解。可键入:yxx,y=dsolve(Dx=y,Dy=-x)得x=cos(t)*C1+sin(t)*C2y=-sin(t)*C1+cos(t)*C2dsoke中的输入宗量最多只能有12个,但这并不妨碍解具有多个方程的方程组,因为可以把多个方程或初始条件定义为一个符号变量进行输入。例如求,f3f4g,g4f3g,f(0)=0,g(0)=1的解,可输入指令:P=Df=3*f+4*g,Dg=-4*f+3*g;v=f(0)=0,g(0)=1;f,g=dsolve(

42、P,v)f=exp(3*t)*sin(4*t)g=exp(3*t)*cos(4*t)注意:微分方程表达式中字母D必须大写。yyy(0)1求解微分方程八),可输入y(0)0y(0)0y=dsolve(D3y=y,y(0)=1,Dy(0)=0,D2y(0)=0,x)得:y=(1/3+2/3*exp(1/2*x)*cos(1/2*3A(1/2)*x)*exp(x)/exp(x)最后看一个解非线性微分方程的例子:dsolve(Dy)A2+yA2=1,y(0)=0,x)ans=sin(x)-sin(x)对于无法求出解析解的非线性微分方程,屏幕将提示出错信息。六、MATLA除图I.二维图形plot:x轴和

43、y轴均为线性刻度(Linearscale)loglog:x轴和y轴均为对数刻度(Logarithmicscale)semilogx:x轴为对数刻度,y轴为线性刻度semilogy:x轴为线性刻度,y轴为对数刻度=若要画出多条曲线,只需将座标对依次放入plot函数即可:plot(x,sin(x),x,cos(x);若要改变颜色,在座标对彳麦面加上相关字串即可:plot(x,sin(x),c,x,cos(x),g);若要同时改变颜色及图线型态(Linestyle),也是在座标对彳麦面加上相关字串即可:plot(x,sin(x),co,x,cos(x),g*);=Matlab绘图中用到的直线属性包括

44、:II)LineStyle:线形(2)LineWidth:线宽(3)Color:颜色(4)MarkerType:标记点的形状(5)MarkerSize:标记点的大小(6)MarkerFaceColor:标记点内部的填充颜色(7)MarkerEdgeColor:标记点边缘的颜色1、线形标记符-:-.线形实线虚线点线点横线2、点形标记符+o*.xsd点形加号圆圈星号实心点r叉号P止方形钻石形标记符Avt=0:0.5:10;y1=exp(-0.1*t);y2=exp(-0.2*t);y3=exp(-0.5*t);plot(t,y1,-ob,t,y2,:*r,t,y3,-.Ag)title(ityrm

45、=eA-itat)title(ityrm=eA-itat,FontSize,12)text(t(6),y1(6),leftarrowitarm=0.1,FontSize,11)text(t(6),y2(6),leftarrowitarm=0.2,FontSize,11)text(t(6),y3(6),leftarrowitarm=0.5,FontSize,11)2.三维图形plot3基本的三维图形指令调用格式:plot3(x,y,z)x,y,z是长度相同的向量plot3(X,Y,Z)X,Y,Z是维数相同的矩阵plot3(x,y,z,s)带开关量plot3(x1,y1,z1,s1,x2,y2,z

46、2,s2,)gridon(off)绘制三维网格text(x,y,z,stri的维图形标注pie3三维饼图fill3三维多边形的绘制和填色mesh三维网线绘图函数调用格式:mesh(z)z为nXm的矩阵,x与y坐标为元素的下标;或x,y=meshgrid(x,y生成2维网格点mesh(x,y,z)绘三维网线图,x,y,z分别为三维空间的坐标位置surf三维曲面绘图函数,与网格图看起来一样调用格式:surf(x,y,z)绘制三维曲面图,x,y,z为图形坐标向量surfc(X,Y,Z)带等高线的曲面图surfl(X,Y,Z)被光照射带阴影的曲面图axis(xminxmaxyminymaxzminzm

47、ax)设置图形大小三维图形效果修饰:shadingfaceted网格修饰,缺省方式shadingflat去掉黑色线条,根据小方块的值确定颜色shadinginterp颜色整体改变,根据小方块四角的值差补过度点的值确定颜色22例:zxexy,当x和y的取值范围均为-2到2时,用建立子窗口的方法在同一个图形窗口中绘制出三维线图、网线图、表面图和带渲染效果的表面图。解答:x,y=meshgrid(-2:.2:2);z=x.*exp(-x.A2-y.A2);mesh(x,y,z)subplot(2,2,1),plot3(x,y,z)title(plot3(x,y,z)subplot(2,2,2),mesh(x,y,z)title(mesh

温馨提示

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

评论

0/150

提交评论