第2章基本语法优秀PPT.ppt
第2章基本语法现在学习的是第1页,共139页第1节 变量及常用函数现在学习的是第2页,共139页2.1.1、基本运算MATLAB基本运算符运算符号范例加12减12乘12除/或1/2或12幂次方12现在学习的是第3页,共139页2.1.2、变量n n命名规则uu变量名由字母、数字和下划线组成,字母间不可留空格,而且第一个字母必须为字母。uu变量名中的英文字母大小写是有区别的。(A1B和a1b是有区别的)uu变量名的上限是19个字母。现在学习的是第4页,共139页特殊变量名意义ans如果用户没有定义变量名,系统用于计算结果存储的默认变量名。pi圆周率(=3.1415926)inf无穷大值,如1/0eps浮点数的精度,也是系统运算时所确定的极小值(=2.2204e-16)Nan或nan不定量,如0/0或inf/infi或j虚数i=j=sqrt(-1)保留变量名现在学习的是第5页,共139页n n变量名的查看与删除uu直接键入变量名uu使用who和whos命令可以查看所有定义的变量的情况,其中who命令可以查看当前工作区内的变量,whos用来查看当前工作区内的变量和详细信息。uu使用clear命令来删除所有定义过的变量,如果只是要去除其中的某几个变量,则应在clear命令后面指明要删除的变量名称。现在学习的是第6页,共139页2.1.3、常用函数n n1、调用格式:变量名函数名(参数)n n2、三角函数 sin,cos,tan,cot,sec,csc;asin,acos,atan,acot,asec,acsc.现在学习的是第7页,共139页2.1.4、其他函数fix朝零方向取整ceil朝正无穷大取整floor朝负无穷大取整 rem除后取余数round四舍五入abs绝对值angle复数相角image复数虚部 real复数实部conj复数共轭现在学习的是第8页,共139页log10常用对数log自然对数exp指数sqrt平方根Lcm(x,y)整数x和y的最小公倍数Gcd(x,y)整数x和y的最大公约数现在学习的是第9页,共139页uu函数一定是出现在等式的右边。uu每个函数对其自变量的个数和格式都有一定的要求,如使用三角函数时要注意角度的单位是“弧度”而非“度”。例如sin(1)表示的不是sin1而是sin57.28578 uu函数匀许嵌套,例如:可使用形如sqrt(abs(sin(225*pi/180)的形式。2.1.5、使用函数注意事项现在学习的是第10页,共139页例1:设两个复数a=1+2i,b=3-4i,计算a+b,a-b,ab,a/b。a=1+2i;b=3-4i;?a+bans=4.0000-2.0000i?a-bans=-2.0000+6.0000i?a*bans=11.0000+2.0000i?a/b ans=-0.2000+0.4000i现在学习的是第11页,共139页例2:计算下式的结果,其中x=-3.5,y=6.7。x=pi/180*(-3.5);?y=pi/180*6.7;?z=sin(abs(x)+abs(y)/sqrt(cos(abs(x+y)z=1772 现在学习的是第12页,共139页例3:我国人口按2000年第五次全国人口普查的结果为12.9533亿,如果年增长率为1.07%,求公元2010年末的人口数。计算人口的公式为:p1=p0(1+r)n,其中:p1为几年后的人口,p0为人口初值,r为年增长率,n为年数。r=0.0107;?n=2010-2000;?p0=12.9533e8;?p1=p0*(1.0+r)np1=1.4408e+009现在学习的是第13页,共139页例4:求解方程ax2+bx+c=0的根,其中a=1,b=2,c=3。a=1;b=2;c=3;?d=sqrt(b*b-4*a*c);?x1=(-b+d)/(2*a)x1=-1.0000+1.4142i?x2=(-b-d)/(2*a)x2=-1.0000-1.4142i现在学习的是第14页,共139页2.1.6习题习题1:设A=1.2,B=-4.6,C=8.0,D=3.5,E=-4.0,计算习题2:设a=5.67,b=7.811,计算现在学习的是第15页,共139页习题3:已知圆的半径为15,求其直径,周长及面积。习题4:已知三角形三边a=8.5,b=14.6,c=18.4,求三角形面积。提示 其中:s=(a+b+c)/2。现在学习的是第16页,共139页例5:计算1996/18的结果例6:计算:现在学习的是第17页,共139页例7:已知y=x2,求x=时的y值。例8:计算现在学习的是第18页,共139页第2、3节 MATLAB的矩阵计算现在学习的是第19页,共139页2.2.1、矩阵n n矩阵的构造要用MATLAB做矩阵运算,必须要将矩阵直接输入到MATLAB中去,其中最方便的是将矩阵直接输入。须遵循以下规则:用中括号用中括号 把所有矩阵元素括起来。把所有矩阵元素括起来。同一行的不同元素之间数据元素用空格或逗号间隔。用分号(;)指定一行结束。也可分成几行输入,用回车代替分号。也可分成几行输入,用回车代替分号。数据元素可是表达式,系统将自动计算。数据元素可是表达式,系统将自动计算。现在学习的是第20页,共139页方法1:直接输入A=1,2,3,4;5 6 7 8;9 10 11 12;13 14 15 16A=1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16uu注意逗号、分号和空格的用法。现在学习的是第21页,共139页方法2:利用表达式输入B=1,sqrt(25),9,132,6,10,7*23+sin(pi),7,11,154 abs(-8)12 16B=1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16uu注意回车键的用法。现在学习的是第22页,共139页方法3:利用内部函数产生矩阵内部函数列表如下:函数功能eye产生单位矩阵zeros产生全部元素为0的矩阵ones产生全部元素为1的矩阵产生空矩阵rand产生随机元素的矩阵linspace产生线性等分的矩阵compan产生伴随矩阵现在学习的是第23页,共139页x=linspace(2,12,6)x=2 4 6 8 10 12ones(3)ones(3,4)F=5*ones(3)z=zeros(2,4)R=rand(4,4)现在学习的是第24页,共139页x=0:0.5:2y=linspace(0,2,7)z=0 x 1u=y;z现在学习的是第25页,共139页2.2.2、矩阵元素采用下标来表示矩阵元素,同时可用下标对矩阵元素进行修改A=1,2,3;4,5,6;7,8,9A=A=1 2 3 1 2 3 4 5 6 4 5 6 7 8 9 7 8 9A(1,1)A(1,1)ans=ans=1现在学习的是第26页,共139页A(2,3)ans=6A(1,1)=0;A(2,3)=A(1,2)+A(3,2);AA=0 2 3 4 5 10 7 8 9现在学习的是第27页,共139页2.2.3、矩阵运算MATLAB对矩阵的运算类似于线性代数。矩阵的加减运算1)1)运算符运算符2)2)对应元素的加减3)3)适用于两矩阵同阶或其一是标量的情况。适用于两矩阵同阶或其一是标量的情况。例:已知矩阵A和B,计算CAB,DAB和EA3。现在学习的是第28页,共139页A=21,2,4;7,13,19;1,8,17;B=12 25 24;11 13 9;6 8 1;B=12 25 24;11 13 9;6 8 1;C=A+BC=C=33 27 28 18 26 28 18 26 28 7 16 18D=A-BD=D=9 -23 -20 9 -23 -20 -4 0 10 -5 0 16 -5 0 16现在学习的是第29页,共139页E=A+3E=24 5 7 10 16 22 4 11 20矩阵乘法1.1.运算符2.2.适用于前一矩阵的列数和后一矩阵行数相同或者其中为标量的情况。现在学习的是第30页,共139页例:矩阵A A和和B B同上例,试求同上例,试求CAB和DA3。C=A*BC=A*BC=C=298 583 526 341 496 304 202 265 113 202 265 113D=A*3D=A*3D=D=63 6 12 21 39 57 3 24 51现在学习的是第31页,共139页矩阵除法1.1.运算符左除/右除2.2.若A矩阵是非奇异方阵,则AB和B/A运算均可以实现,且左除和右除一般不同,这是因为:AB=inv(A)*bB/A=B*inv(A)其中inv函数用来求某一个矩阵的逆阵。例:已知矩阵A和B,试计算AB和A/B。现在学习的是第32页,共139页ABans=0.5081 1.1168 1.1429 0.3216 -0.6186 0.2857 0.1717 0.6960 -0.1429A/Bans=-1.8336 5.6985 -3.2801 0.5535 0.7891 -1.3871 0.7496 0.0478 -1.4201现在学习的是第33页,共139页矩阵的乘方矩阵的乘方运算符:运算符:例:已知A是一方阵,P是一个正整数,则是一个正整数,则APAP表示A自乘自乘P P次。次。A=1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16;A=1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16;A1A1A2A2ans=ans=90 100 110 120 202 228 254 280 314 356 398 440 426 484 542 600A3A3现在学习的是第34页,共139页矩阵的点运算(元素群运算)1.1.为实现与矩阵相关的标量运算而设计的。2.2.运算符:.3.3.与矩阵的常规运算不同,是针对于矩阵中的元素与矩阵的常规运算不同,是针对于矩阵中的元素定义的。定义的。4.4.分类:分类:点乘点乘.点乘方.点除./元素群函数见书元素群函数见书p23p23现在学习的是第35页,共139页例:已知矩阵A和B,试求AB,A.B和A.3.A=1 2;3 4;B=5 6;7 8;C=A*BC=19 22 43 50D=A.*BD=E=5 12 1 8 21 32 27 64现在学习的是第36页,共139页矩阵转置矩阵转置运算符:运算符:例:已知矩阵例:已知矩阵A A,求其转置矩阵。求其转置矩阵。A=1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16A=1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16A=A=1 2 3 4 1 2 3 4 5 6 7 8 5 6 7 8 9 10 11 12 9 10 11 12 13 14 15 16 13 14 15 16AAans=ans=1 5 9 13 1 5 9 13 2 6 10 14 2 6 10 14 3 7 11 15 3 7 11 15 4 8 12 16 4 8 12 16现在学习的是第37页,共139页同上例(验证复数转置后为它的复共轭)D=A*iD=A*iD=0+1.0000i 0+2.0000i 0+3.0000i 0+4.0000i0+1.0000i 0+2.0000i 0+3.0000i 0+4.0000i 0+5.0000i 0+6.0000i 0+7.0000i 0+8.0000i 0+5.0000i 0+6.0000i 0+7.0000i 0+8.0000i 0+9.0000i 0+10.0000i 0+11.0000i 0+12.0000i 0+9.0000i 0+10.0000i 0+11.0000i 0+12.0000i 0+13.0000i 0+14.0000i 0+15.0000i 0+16.0000i 0+13.0000i 0+14.0000i 0+15.0000i 0+16.0000iDDans=0-1.0000i 0-5.0000i 0-9.0000i 0-13.0000i0-1.0000i 0-5.0000i 0-9.0000i 0-13.0000i 0-2.0000i 0-6.0000i 0-10.0000i 0-14.0000i 0-2.0000i 0-6.0000i 0-10.0000i 0-14.0000i 0-3.0000i 0-7.0000i 0-11.0000i 0-15.0000i 0-3.0000i 0-7.0000i 0-11.0000i 0-15.0000i 0-4.0000i 0-8.0000i 0-12.0000i 0-16.0000i 0-4.0000i 0-8.0000i 0-12.0000i 0-16.0000i现在学习的是第38页,共139页求逆矩阵矩阵矩阵A A可逆,则矩阵A A的逆矩阵是唯一的。例:求一矩阵的逆矩阵,并验证所得结果。G=1 2 0;2 5-1;4 10-1;G=1 2 0;2 5-1;4 10-1;X=inv(G)X=inv(G)X=X=5 2 -2 5 2 -2 -2 -1 1 -2 -1 1 0 -2 1 0 -2 1I=inv(G)*GI=I=1 0 0 1 0 0 0 1 0 0 1 0 0 0 1现在学习的是第39页,共139页求特征值设A为为n n阶矩阵,是一个数,如果方程Ax=Ax=x存在非零解向量,则称为A的一个特征值,相应的非零向量x称为特征值对应的特征向量。例:已知矩阵G,求其特征值。G=1 2 0;2 5-1;4 10-1;eig(G)ans=3.7321 0.2679 1.0000现在学习的是第40页,共139页求特征多项式MATLAB提供了求特征多项式的函数poly。例:根据一向量的值,构造一多项式。G=1 2 0;2 5-1;4 10-1;poly(G)ans=1.0000 -5.0000 5.0000 -1.0000round(poly(G)ans=1 -5 5 -1现在学习的是第41页,共139页求方阵的行列式若将矩阵看做是行列式,可求相应的行列式值,函数为det。例:已知矩阵G,求其对应的行列式值。G=1 2 0;2 5-1;4 10-1G=1 2 0 2 5 -1 4 10 -1det(G)现在学习的是第42页,共139页求解线性方程组线性方程组的一般矩阵形式表示如下:AXB(XAB)若方程组有解,则X=AB(XB/A)。例:求下列线性方程组的根要解上述的联立方程式,可以使用“”,即XAB。现在学习的是第43页,共139页A=2 1-3;3-2 2;5-3-1;B=5;5;16;X=ABX=1 -3 -2现在学习的是第44页,共139页n n向量矩阵在一定的程度上可以看作是向量的组合,因而,矩阵运算可看作是向量的计算。向量的产生类似于矩阵,也可采用“:”生成。例:x=1:5%初值1,终值5,步长1x=1 2 3 4 5y=1:2:9%初值1,终值9,步长2y=1 3 5 7 9z=9:-2:1%初值9,终值1,步长-2z=9 7 5 3 1现在学习的是第45页,共139页vv常用的矩阵函数函数功能det计算矩阵所对应的行列式值inv求矩阵的逆矩阵rank求矩阵的秩eig求特征值和特征向量orth正交化poly求特征多项式lu用高斯消元法所得的系数矩阵qr正交三角矩阵分解现在学习的是第46页,共139页2.2.4、应用举例例1:矩阵相乘已知已知求:CAB。A=1 2 3;-2 0 0;1 0 1;-1 2-3A=1 2 3;-2 0 0;1 0 1;-1 2-3A=A=1 2 3 1 2 3 -2 0 0 1 0 1 -1 2 -3 -1 2 -3现在学习的是第47页,共139页B=-1,3;-2 2;2 1B=-1 3 -2 2 2 1C=A*BC=1 10 2 -6 1 4 -9 -2现在学习的是第48页,共139页例2:设矩阵A和B B满足关系式满足关系式ABA2B。已知求矩阵求矩阵B。提示:由提示:由AB=A+2BAB=A+2B可得(A-2E)B=A,故B(A-2E)-1A AA=4 2 3;1 1 0;-1 2 3;A=4 2 3;1 1 0;-1 2 3;B=inv(A-2*eye(3)*AB=3.0000 -8.0000 -6.0000 3.0000 -8.0000 -6.0000 2.0000 -9.0000 -6.0000 -2.0000 12.0000 9.0000现在学习的是第49页,共139页例3:求解线性方程组。提示:将该线性方程组变换为AXB形式。其中:现在学习的是第50页,共139页A=2-1 3;3 1-5;4-1 1A=2 -1 3 3 1 -5 4 -1 1B=5;5;9;X=ABX=2 -1 0现在学习的是第51页,共139页2.2.5、习题qq习题1:已知矩阵A和B求(1)2AB(2)4A23B2(3)AB(4)BA(5)ABBA现在学习的是第52页,共139页qq习题2:设三阶矩阵A、B,满足A1BA6ABA其中求矩阵B。现在学习的是第53页,共139页qq习题3:设(2EC-1B)AT=C-1,其中E是4阶单位矩阵,AT是4阶矩阵A的转置。求矩阵A现在学习的是第54页,共139页qq习题4:设二阶矩阵A,B,X,满足X2ABX其中求矩阵X。现在学习的是第55页,共139页qq习题5:求解线性方程组现在学习的是第56页,共139页第4节 逻辑判断及流程控制现在学习的是第57页,共139页2.4.1、关系运算n n关系运算结果只有两种可能:关系运算结果只有两种可能:0 0或或1 1n n它是对矩阵的各个元素进行运算它是对矩阵的各个元素进行运算uuA=magic(6)A=magic(6)uup=rem(A,3)p=rem(A,3)uup=(rem(A,3)=0)p=(rem(A,3)=0)uuj,k=find(p)uufind(p)find(p)uulp=find(p)lp=find(p)=小于小于等于大于大于等于等于不等于现在学习的是第58页,共139页2.4.2、逻辑运算n n与(&);或(|);非();异或(xor)n nall(全为真);any(不全为真)输入量为矩阵,按列进行运算uuu=p|puuall(p)uuall(u)uuany(p)现在学习的是第59页,共139页2.4.3、流程控制语句Matlab提供了三种常用控制结构:顺序结构、分支结构和循环结构。由于这些结构经常包含大量的Matlab命令,故经常出现在命令文件中,而不是直接出现在Matlab提示符后面。做为一名Matlab使用者来说,编程序的一个主要内容就是如何解决一个应用问题所使用的算法用Matlab的语言和函数来描述。换句话说,也就是组织Matlab程序的结构。现在学习的是第60页,共139页(1)顺序结构顺序结构是由多个程序结构串联而成的,每一个程序顺序结构是由多个程序结构串联而成的,每一个程序模块可以是一条语句、一段程序、一个函数等。模块可以是一条语句、一段程序、一个函数等。由顺序结构编写的程序,命令执行时是从前至后依次完成的,严格遵循一定的规则:依次执行。在用在用MATLAB编写程序时,实现顺序结构的方法非常编写程序时,实现顺序结构的方法非常简单:只需将多个要执行的命令段(程序模块)顺简单:只需将多个要执行的命令段(程序模块)顺序即可序即可现在学习的是第61页,共139页(2)选择结构选择结构又称分支结构。在实际编程过程中,并不能仅仅依靠顺序结构。在求解实际问题时,常常要根据输入数据的实际情况进行逻辑叛断,对不同的结果分别进行不同的处理;或者需要反复执行某些程序段落,以避免重复编写结构相似的程序段落带来的程序结构上的臃肿。这就需要在程序中引入选择结构和循环结构。所有的程序都是由这三种基本程序结构交替综合而实现的。现在学习的是第62页,共139页很多情况下,命令的序列必须根据关系的检验有条件地执行。在MATLAB语言中,这种判断主要由If-Else-End结构和Switch-Case-End结构来完成。n nIf-Else-End结构结构最简单的If-Else-End结构是:if expression commands end如果在表达式中的所有元素为真如果在表达式中的所有元素为真(非零非零),那,那么就执行么就执行if和和end语言之间的语言之间的commands。现在学习的是第63页,共139页较复杂的If-Else-End结构具体结构如下:if expression commands evaluated if True else commands evaluated if False end如果表达式为真,则执行第一组命令;如果表达式是假,则执行第二组命令。结构If-Else-End在使用过程中也程序嵌套,具体应用格式如下所示:现在学习的是第64页,共139页if expression1 commands evaluated if expression1 is True elseif expression2 commands evaluated if expression2 is True commands evaluated if expression2 is True elseif expression3 elseif expression3 commands evaluated if expression3 is True else commands evaluated if no other expression is True end现在学习的是第65页,共139页例:输入一个数,小于100100大于0就打印这个数,否则就打印这个数,否则就打印就打印“n100”n100”或“n0”。%This program can print a number%This program can print a number%when it is lesser than 100 and%when it is lesser than 100 and%larger than 0.n=input(enter a number,n=)if n0if n0 n nelseelse if n100 if n100 sprintf(n100)sprintf(n100)else sprintf(n0)end endend现在学习的是第66页,共139页Switch-Case-End结构结构Switch-Case-End结构用于实现多重选择,其应用格式如下:switch case command1 case command2 otherwise end现在学习的是第67页,共139页其中的otherwise模块可以省略;switch语句的执行过程是:首先计算表达式的值,然后将其结果与每一个case后面的数值常量依次进行比较,如果相等则执行该case模块中的语句,在执行完该case模块以后就跳出switch语句。如果表达式的值与所有case模块的进入值无一相同,则执行otherwise模块中的语句。Switch也可以在一个case语句中,处理多值情况,通过将多值用大括号扩起来作为一个单元实现。例:编写一个函数,将百分制的学生成绩转换为五级制的成绩。现在学习的是第68页,共139页function f=TranGrade(x)function f=TranGrade(x)switch fix(x/10)switch fix(x/10)case 10,9 f=A;case 8case 8 f=B;case 7case 7 f=C;case 6 f=D;f=D;otherwise f=E;f=E;endend现在学习的是第69页,共139页(3)循环结构在三种常用的控制结构中,还有一种是循环结构。与其它高级一样,循环结构又分为ForFor语句和WhileWhile语句两种,首先介绍一下语句两种,首先介绍一下ForFor结构。结构。n nFor 循环循环 ForFor循环允许一组命令以固定的和预定的次数重复。ForFor循环的一般形式是:循环的一般形式是:for x=arraycommandsend现在学习的是第70页,共139页在在for和和end语句之间的语句之间的commands按数组按数组中的每一列执行一次中的每一列执行一次。在每一次迭代中,x被指定为数组的下一列,即在第n次循环中,x=array(:,n)。例:for n=1:10 x(n)=sin(n*pi/10);endx=Columns 1 through 7 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.80900.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 Columns 8 through 10 0.5878 0.3090 0.00000.5878 0.3090 0.0000现在学习的是第71页,共139页分析:换句话,第一语句是说:对n等于1到10,求所有语句的值,直至下一个end语句。第一次通过For循环n=1,第二次,n=2,如此继续,直至n=10。在n=10以后,For循环结束,然后求end语句后面的任何命令值,在这种情况下显示所计算的x的元素。例:求1+2+3+100的和。s=0;for i=1:100 s=s+i;ends现在学习的是第72页,共139页ForFor 循环使用过程中的注意事项:(1)(1)ForFor循环不能用循环不能用ForFor循环内重新赋值循环变量循环内重新赋值循环变量n n来终止。例:for n=1:10for n=1:10 x(n)=sin(n*pi/10);n=10;n=10;Endx=Columns 1 through 7 Columns 1 through 7 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.80900.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090Columns 8 through 10 Columns 8 through 10 0.5878 0.3090 0.0000现在学习的是第73页,共139页(2)语句1:10 是一个标准的MATLAB数组创建语句。在For循环内接受任何有效的MATLAB数组。data=3 9 45 6;7 16 -1 5data=3 9 45 6 7 16 -1 5 for n=data x=n(1)-n(2)Endx=-4 x=-7 x=46 x=1现在学习的是第74页,共139页(3)For(3)For循环可按需要嵌套。循环可按需要嵌套。for n=1:5 for m=5:-1:1 A(n,m)=n2+m2;end end disp(n)end (4)当有一个等效的数组方法来解给定的问题时,应避免当有一个等效的数组方法来解给定的问题时,应避免当有一个等效的数组方法来解给定的问题时,应避免当有一个等效的数组方法来解给定的问题时,应避免用用用用For循环。循环。循环。循环。例如,上面的第一个例子可被重写为n=1:10;x=sin(n*pi/10)x=sin(n*pi/10)两种方法得出同样的结果,而后者执行更快,更直观,要求较少的输入。现在学习的是第75页,共139页(5)为了得到最大的速度,在为了得到最大的速度,在For循环循环(While循环循环)被执行之前,应预先分配数组。被执行之前,应预先分配数组。例如,前面所考虑的第一种情况,在For循环内每执行一次命令,变量x的大小增加1。迫使MATLAB每通过一次循环要花费时间对x分配更多的内存。为了消去这个步骤,For循环的例子应重写为 x=zeros(1,10);%preallocated memory for xfor n=1:10 x(n)=sin(n*pi/10);end现在,只有x(n)的值需要改变。现在学习的是第76页,共139页当循环(当循环(While循环)循环)与For循环以固定次数求一组命令的值相反,While 循环以不定的次数求一组语句的值。While循环的一般形式是:while expressioncommandsend 只要在表达式里的所有元素为真,就执行只要在表达式里的所有元素为真,就执行while和和end 语句之间的语句之间的commands。通常,表达式表达式的求值给出一个标量值,但数组值也同样有效。存在:死循环问题现在学习的是第77页,共139页例:矩阵指数的幂级数展开式如下式所示,试利用while循环求矩阵的指数.function f=myexpm(a)e=eye(size(a);f=zeros(size(a);k=1;while norm(e,1)0 f=f+e;e=a*e/k;k=k+1;end现在学习的是第78页,共139页分析:本例的计算结果可通过MATLAB函数expm(a)进行验证。程序思想是逐项求和,直到第n项趋于零为止。例:求1+2+3+100的和。i=0;s=0;while i100 i=i+1;s=s+i;ends现在学习的是第79页,共139页2.4.4、应用举例例1:Fibonacci数组满足Fibonacci规则:ak+2=ak+ak+1,(k=1,2);且a1=a2=1。要求该数组中第一个大于10000的元素。a(1)=1;a(2)=1;s=2;while a(s)=10000 a(s+1)=a(s-1)+a(s);s=s+1;endi,a(i)现在学习的是第80页,共139页第5节 基本绘图方法现在学习的是第81页,共139页在科学研究和工程实践中经常会遇到大批量复杂的数据,在科学研究和工程实践中经常会遇到大批量复杂的数据,如果不借助图表来表现它们之间的关系,一般很难看出这如果不借助图表来表现它们之间的关系,一般很难看出这些数据的意义。因此,数据的可视化是进行这方面工作不些数据的意义。因此,数据的可视化是进行这方面工作不可缺少的有效手段。但可视化并不像我们想像的那么简单,可缺少的有效手段。但可视化并不像我们想像的那么简单,如果采用传统的编程语言,要想在程序中产生一个图形是如果采用传统的编程语言,要想在程序中产生一个图形是相当复杂的过程,完成它不仅需要用户掌握一定的编程技相当复杂的过程,完成它不仅需要用户掌握一定的编程技巧,同时也要耗费大量的时间和精力(这一点对任何使用巧,同时也要耗费大量的时间和精力(这一点对任何使用过过C或Fortran编程的人都应该有所体会),这必然会影编程的人都应该有所体会),这必然会影响用户对数据本身的注意力,导致一些不必要的人力资响用户对数据本身的注意力,导致一些不必要的人力资源浪费。一个好的科技应用软件不但能提供给用户功能源浪费。一个好的科技应用软件不但能提供给用户功能完善的数值计算能力,而且应该具备操作简单、内容完完善的数值计算能力,而且应该具备操作简单、内容完善的图形绘制功能,这样就能使用户高效地进行数据处善的图形绘制功能,这样就能使用户高效地进行数据处理。理。2.5.0 简介现在学习的是第82页,共139页MATLABMATLAB正是完全考虑了这方面因素的一个成功的软件,正是完全考虑了这方面因素的一个成功的软件,它不仅在数值和符号运算方面功能强大,而且在数据可它不仅在数值和符号运算方面功能强大,而且在数据可视化方面的表现能力也极为突出。它具有对线型、曲面、视化方面的表现能力也极为突出。它具有对线型、曲面、视角、色彩、光线阴影等丰富的处理能力,并能以二维、视角、色彩、光线阴影等丰富的处理能力,并能以二维、三维乃至多维的形式显示图形数据,可以将数据的各方三维乃至多维的形式显示图形数据,可以将数据的各方面特征表现出来。面特征表现出来。MATLAB的图形处理充分考虑了高低不同层次用户的不同需求。系统具有两个层次的绘图指令:一个层次是直接对图形句柄进行操作的低层绘图指令,它具有控制和表现数据图形能力强,控制灵活多变等优点,对于有较高或特殊需求的用户而言,该层次能够完全满足他们的要求;另一个层次是在底层指令基础上建立起的高层绘图指令,它的指令简单明了,易于掌握,适用于普通用户。现在学习的是第83页,共139页2.5.1 二维平面图形n n基本图形函数绘制二维图形的最基本函数是plot,它是针对向量或矩阵的列来绘制曲线的。也就是说,使用plot函数之前,必须首先定义好曲线上每一点的x及y坐标,常用格式有:plot(x)当x为一向量时,以x元素的值为纵坐标,x的序号为横坐标值绘制曲线。plot(x,y)以x元素为横坐标值,y元素为纵坐标值绘制曲线。plot(x,y1,x,y2,)以公共的x元素为横坐标值,以y1,y2等为纵坐标值,绘制多条曲线。现在学习的是第84页,共139页例:画出一条正弦曲线和一条余弦曲线。x=0:pi/10:2*pi;y1=sin(x);y2=cos(x);plot(x,y1,x,y2)现在学习的是第85页,共139页一般绘制曲线图形时,人们常常采用多种颜色或线型一般绘制曲线图形时,人们常常采用多种颜色或线型来区分不同的数据组,来区分不同的数据组,MATLAB系统中专门提供了这系统中专门提供了这方面的参数选项(方面的参数选项(p32p32)。)。色彩字符所定颜色线型字符线型格式y黄-实线m紫:点线c青-.点划线r红-虚线g绿b蓝w白k黑现在学习的是第86页,共139页标记符号数据点形式标记符号数据点形式.点大于号现在学习的是第87页,共139页例:x=0:pi/10:2*pi;y1=sin(x);y2=cos(x);plot(x,y1,r+-,x,y2,k*:)%组1曲线采用红色实线并用号显示数据点位置%组2曲线采用黑色点线并用号显示数据点位置。现在学习的是第88页,共139页n n图形修饰图形修饰MATLABMATLAB为用户提供了一些图形修饰函数,详细情况见下表。函数意义grid on(/off)给当前图形标记添加(取消)网格给当前图形标记添加(取消)网格xlabel(string)标记横坐标ylabel(string)标记纵坐标title(string)给图形添加标题text(x,y,string)在图形的任意位置添加说明性文本在图形的任意位置添加说明性文本gtext(string)利用鼠标添加说明性文本信息axis(xmin xmax axis(xmin xmax ymin ymax)ymin ymax)设置坐标轴的最小最大值现在学习的是第89页,共139页例:x=0:pi/10:2*pi;y1=sin(x);y1=sin(x);y2=cos(x);plot(x,y1,x,y2)grid on%grid on%添加网格xlabel(Independent Variable X)ylabel(Dependent Variable Y1&Y2)ylabel(Dependent Variable Y1&Y2)title(Sin and Cosine Curve)text(1.5,0.3,cos(x)text(1.5,0.3,cos(x)gtext(sin(x)axis(0 2*pi-0.9 0.9)axis(0 2*pi-0.9 0.9)现在学习的是第90页,共139页使用了图形修饰的正弦、余弦曲线现在学习的是第91页,共139页设置坐标轴最大最小值的正弦、余弦曲线现在学习的是第92页,共139页n n图形屏幕控制默认情况下,MATLAB每一次使用plot函数进行图形绘制,将重新产生一个图形窗口。但有时希望后续的图形能够和前面所绘制的图形进行比较。MATLAB提供了两种方法:采用hold on(/off)指令,将新产生的图形曲线叠加到已有的图形上。采用subplot(n,m,k)函数,将函数窗口进行分割,然后在同一个视图窗口中画出多个小图形。(3)figure(n)打开多个窗口(4)clf 清除当前窗口内容例:在同一窗口中绘制线段。现在学习的是第93页,共139页x=0