数值计算基础、Matlab介绍 喻文健
- 格式:pdf
- 大小:3.20 MB
- 文档页数:42
第一讲 MatLab简介及基本运算教学目标:了解matlab主要功能,学习matlab的基本运算,熟练matlab主窗口,学会使用帮助系统,了解基本的符号概论.掌握用数学软件求解数学问题.教学重点:熟悉MATLAB的主窗口,运用matlab解决数学分析、高等代数中的计算,根据正在学习的相关知识,结合实例,编程计算,掌握相关符号计算命令及函数的使用方法和技巧.教学难点:使用MATLAB帮助系统.要掌握英语和数学专有名词.通过解说,演示以及举例子克服难点难关.一、MatLab简介MATLAB名字由MATrix和 LABoratory 两词的前三个字母组合而成.那是20世纪七十年代后期的事:时任美国新墨西哥大学计算机科学系主任的Cleve Moler教授出于减轻学生编程负担的动机,为学生设计了一组调用LINPACK和EISPACK库程序的“通俗易用”的接口,此即用FORTRAN编写的萌芽状态的MATLAB.经几年的校际流传,在Little的推动下,由Little、Moler、Steve Bangert合作,于1984年成立了MathWorks公司,并把MATLAB正式推向市场.从这时起,MATLAB的内核采用C语言编写,而且除原有的数值计算能力外,还新增了数据图视功能.MATLAB以商品形式出现后,仅短短几年,就以其良好的开放性和运行的可靠性,使原先控制领域里的封闭式软件包(如英国的UMIST,瑞典的LUND和SIMNON,德国的KEDDC)纷纷淘汰,而改以MATLAB为平台加以重建.在时间进入20世纪九十年代的时候,MATLAB 已经成为国际控制界公认的标准计算软件.在欧美大学里,诸如应用代数、数理统计、自动控制、数字信号处理、模拟与数字通信、时间序列分析、动态系统仿真等课程的教科书都把MATLAB作为内容.这几乎成了九十年代教科书与旧版书籍的区别性标志.在那里,MATLAB是攻读学位的大学生、硕士生、博士生必须掌握的基本工具.在国际学术界,MATLAB已经被确认为准确、可靠的科学计算标准软件.在许多国际一流学术刊物上,(尤其是信息科学刊物),都可以看到MATLAB的应用.在设计研究单位和工业部门,MATLAB被认作进行高效研究、开发的首选软件工具.如美国National Instruments公司信号测量、分析软件LabVIEW,Cadence公司信号和通信分析设计软件SPW等,或者直接建筑在MATLAB之上,或者以MATLAB为主要支撑.又如HP公司的VXI硬件,TM公司的DSP,Gage公司的各种硬卡、仪器等都接受MATLAB的支持.MATLAB具有用法简易、可灵活运用、程式结构强又兼具延展性.以下为其几个特色:∙功能强的数值运算 - 在MATLAB环境中,有超过500种数学、统计、科学及工程方面的函数可使用,函数的标示自然,使得问题和解答像数学式子一般简单明了,让使用者可全力发挥在解题方面,而非浪费在电脑操作上.∙先进的资料视觉化功能 - MATLAB的物件导向图形架构让使用者可执行视觉数据分,并制作高品质的图形,完成科学性或工程性图文并茂的文章.∙高阶但简单的程式环境 - 作为一种直译式的程式语言,MATLAB容许使用者在短时间内写完程式,所花的时间约为用 FORTRAN 或 C 的几分之一,而且不需要编译(compile)及联结 (link) 即能执行,同时包含了更多及更容易使用的内建功能.∙开放及可延伸的架构 - MATLAB容许使用者接触它大多数的数学原使码,检视运算法,更改现存函数,甚至加入自己的函数使 MATLAB成为使用者所须要的环境.∙丰富的程式工具箱 - MATLAB的程式工具箱融合了套装前软体的优点,与一个灵活的开放但容易操作之环境,这些工具箱提供了使用者在特别应用领域所需之许多函数.现有工具箱有:符号运算(利用Maple V的计算核心执行)、影像处理、统计分析、讯号处理、神经网路、模拟分析、控制系统、即时控制、系统确认、强建控制、弧线分析、最佳化、模糊逻辑、mu分析及合成、化学计量分析.二、MatLab界面表1 MATLAB系统命令命令含义help在线帮助helpwin在线帮助窗口helpdesk在线帮助工作台demo运行演示程序ver版本信息readme显示Readme文件who显示当前变量whos显示当前变量的详细信息clear清空工作间的变量和函数pack整理工作间的内存load把文件调入变量到工作间save把变量存入文件中退出MATLABquit/exitwhat显示指定的matlab文件lookfor在HELP里搜索关键字which定位函数或文件path获取或设置搜索路径echo命令回显cd改变当前的工作目录pwd显示当前的工作目录dir显示目录内容unix执行unix命令dos执行dos命令!执行操作系统命令computer显示计算机类型在MATLAB系统中使用帮助方式有三:1、是利用help指令,如果你已知要找的题材 (topic) 为何的话,直接键入help <topic>.所以即使身旁没有使用手册,也可以使用help指令查询不熟悉的指令或是题材之用法,例如help sqrt2、是利用lookfor指令,它可以从你键入的关键字(key-word)(即使这个关键字并不是MATLAB的指令)列出所有相关的题材,例如lookfor cosine, lookfor sine.3、是利用指令视窗的功能选单中的Help,从中选取Table of Contents(目录)或是Index(索引).三、基本数学运算在MATLAB下进行基本数学运算,只需将运算式直接打在提示号 >> 后面,并按入Enter键即可.MATLAB将计算的结果以ans显示.例求23[÷12⨯+的算术运算结果.-)]247((1)用键盘在MATLAB指令窗中输入以下内容>> (12+2*(7-4))/3^2(2)在上述表达式输入完成后,按【Enter】键,该就指令被执行.(3)在指令执行后,MATLAB指令窗中将显示以下结果.ans =2我们也可给运算式的结果设定一个变量x:x = (5*2+1.3-0.8)*10^2/25x =42变量x的值可以在下个语句中调用:y= 2*x+1y =851. 变量命名规则:(1)变量名的大小写是敏感.(2)变量的第一个字符必须为英文字母,而且不能超过31个字符.(3)变量名可以包含下连字符、数字,但不能为空格符、标点.2. 系统预定义的变量ans预设的计算结果的变量名eps MATLAB定义的正的极小值=2.2204e-16pi内建的π值(= 3.1415926...)inf∞值,无限大 (1/0)NaN无法定义一个数目 (0/0)i 或 j虚数单位i=j=1nargin函数输入参数个数nargout函数输出参数个数realmax最大的正实数realmin最小的正实数flops浮点运算次数而键入clear则是去除所有定义过的变量名称.3. 表达式MATLAB书写表达式的规则与“手写算式”差不多相同,但要求所有表达式都是以纯文本形式输入.如果一个指令过长可以在结尾加上...(代表此行指令与下一行连续). 例>> 1*2+3*4+5*6+7*8+9*10+11*12+...13*14+15*16ans =744若不想让MATLAB每次都显示运算结果,只需在运算式最后加上分号(;)即可, 如:y = 1034*22+3^5;若要显示变数y的值,直接键入y即可:>>yy =22991MATLAB会忽略所有在百分比符号(%)之后的文字,因此百分比之後的文字均可视为程式的注解(Comments).例:计算圆面积Area = ,半径r = 2,则可键入>> r=2;% 圆半径r = 2,>> area=pi*r^2; % 计算圆面积area>> area =12.5664MATLAB提供基本的算术运算有:加 (+)、减 (-)、乘 (*)、除 (/)、幂次方 (^),范例为:5+3, 5-3, 5*3, 5/3, 5^3.MATLAB提供了6种关系运算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(等于)、~=(不等于).MATLAB提供了3种逻辑运算符:&(与)、|(或)和~(非).4、MATLAB常用数学函数●三角函数和双曲函数名称含义名称含义名称含义sin正弦csc余割atanh反双曲正切cos余弦asec反正割acoth反双曲余切tan正切acsc反余割sech双曲正割cot余切sinh双曲正弦csch双曲余割asin反正弦cosh双曲余弦asech反双曲正割acos反余弦tanh双曲正切acsch反双曲余割atan反正切coth双曲余切atan2四象限反正切acot反余切asinh反双曲正弦sec正割acosh反双曲余弦●指数函数名称含义名称含义名称含义exp E为底的指数log1010为底的对数pow22的幂log自然对数log22为底的对数sqrt平方根●复数函数名称 含义 名称 含义 名称 含义 abs 绝对值 conj 复数共轭 real 复数实部 angle 相角 imag 复数虚部● 圆整函数和求余函数 名称 含义 名称 含义ceil 向+∞圆整 rem 求余数 fix 向0圆整 round 向靠近整数圆整 floor 向-∞圆整 sign 符号函数mod模除求余● 矩阵变换函数 名称 含义 名称 含义fiplr 矩阵左右翻转 diag 产生或提取对角阵 fipud 矩阵上下翻转 tril 产生下三角 fipdim 矩阵特定维翻转 triu 产生上三角 Rot90矩阵反时针90翻转det行列式的计算● 其他函数 名称 含义 名称 含义min 最小值 max 最大值 mean 平均值 median 中位数 std 标准差 diff 相邻元素的差sort 排序length 个数 norm 欧氏(Euclidean )长度sum 总和 prod 总乘积 dot 内积cumsum 累计元素总和cumprod 累计元素总乘积cross 外积例:>>y = sin(10)*exp(-0.3*4^2) y =-0.0045例:复数ie z i z i z 63212,21,43π=+=+=表达,及计算321z z z z =. (1)经典教科书的直角坐标表示法 z1= 3 + 4i z1 =3.0000 +4.0000i(2)采用运算符构成的直角坐标表示法和极坐标表示法z2 = 1 + 2 * i %运算符构成的直角坐标表示法 z3=2*exp(i*pi/6) %运算符构成的极坐标表示法 z=z1*z2/z3 z2 =1.0000 +2.0000i z3 =1.7321 + 1.0000i z =0.3349 + 5.5801i例:复数矩阵的生成及运算 A=[1,3;2,4]-[5,8;6,9]*iB=[1+5i,2+6i;3+8*i,4+9*i] C=A*B A =1.0000 - 5.0000i 3.0000 - 8.0000i2.0000 - 6.0000i 4.0000 - 9.0000i B =1.0000 + 5.0000i2.0000 + 6.0000i3.0000 + 8.0000i4.0000 + 9.0000i C =1.0e+002 *0.9900 1.1600 - 0.0900i 1.1600 + 0.0900i 1.3700 例:求上例复数矩阵C 的实部、虚部、模和相角. C_real=real(C) C_imag=imag(C)C_magnitude=abs(C)C_phase=angle(C)*180/pi %以度为单位计算相角 C_real = 99 116 116 137 C_imag = 0 -9 9 0 C_magnitude =99.0000 116.3486 116.3486 137.0000 C_phase =0 -4.4365 4.4365 0 例:指令行操作过程示例. (1)若用户想计算51)3.0sin(21+=πy 的值,那末用户应依次键入以下字符y1=2*sin(0.3*pi)/(1+sqrt(5))(2)按【Enter 】键,该指令便被执行,并给出以下结果 y1 =0.5000 若又想计算51)3.0cos(22+=πy ,可以简便地用操作键获得指令,具体办法是: 先用键调回已输入过的指令 y1=2*sin(0.3*pi)/(1+sqrt(5)) ;然后移动光标,把y1改成y2;把 sin 改成 cos 便可.即得 y2=2*cos(0.3*pi)/(1+sqrt(5)) y2 =0.3633注:设置精度值. t = 2.8957e-007digits(8) %精确到小数点后8位 sym(t,'d') ans =.28957372e-6四、阵列与矩阵MATLAB 的运算事实上是以阵列 (array) 及矩阵 (matrix) 方式在做运算.阵列强调元素对元素的运算,而矩阵则采用线性代数的运算方式.宣告一变量为阵列或是矩阵时,须用中括号[ ] 将元素置于其中.阵列为一维元素所构成,而矩阵为多维元素所组成.例如: » x=[1 2 3 4 5 6 7 8] ;% 一维 1x8 阵列例:简单矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=987654321A 的输入步骤.(1)在键盘上输入下列内容:( 以 ; 区隔各列的元素)A = [1,2,3; 4,5,6; 7,8,9](2)按【Enter 】键,指令被执行.(3)在指令执行后,MATLAB 指令窗中将显示以下结果: A =1 2 3 4 5 6 7 8 9 例:矩阵的分行输入 A=[1,2,3 4,5,6 7,8,9](以下是显示结果)A =1 2 34 5 67 8 9>>a=[1,4,6,8,10] %一维矩阵>>a(3) % a的第三个元素ans =6»x =[1 2 3 4 5 6 7 84 5 6 7 8 9 10 11]; %二维2x8 矩阵» x(3) % x的第三个元素ans =2» x([1 2 5]) % x的第一、二、五个元素ans =1 4 3>> x(2,3) % x的第二行第三列的元素ans =6x(1:5) % x的第前五个元素ans =1 42 5 3» x(10:end) % x的第十个元素后的元素ans =8 6 9 7 10 8 11» x(10:-1:2) % x的第十个元素和第二个元素的倒排ans =8 5 7 4 6 3 5 2 4» x(find(x>5)) % x中大于5的元素ans =6 7 8 6 9 7 10 8 11» x(4)=100 %给x的第四个元素重新给值x =1 2 3 4 5 6 7 84 100 6 7 8 9 10 11» x(3)=[] %删除第三个元素(不是二维数组)x =Columns 1 through 121 4 100 3 6 4 7 5 8 6 9 7Columns 13 through 1510 8 11» x(16)=1 %加入第十六个元素x =Columns 1 through 121 4 100 3 6 4 7 5 8 6 9 7Columns 13 through 1610 8 11 1当元素很多的时候,则须采用以下的方式:» x=(1:2.5:120); % 以:起始值=1,增量值=2,终止值=120的矩阵» x=linspa ce(0,1,100);% 利用linspace,以区隔起始值=0,终止值=1之间,元素数目=100»a=[]%空矩阵a =[]» zeros(2,2)%全为0的矩阵ans =0 000» ones(3,3) %全为1的矩阵ans =1 1 11 1 11 1 1» rand(2,4);%随机矩阵»a=1:7, b=1:0.2:5; %更直接的方式»c=[b a];%可利用先前建立的阵列 a 及阵列 b ,组成新阵列注:以下将阵列的运算符号及其意义列出,除了加减符号外其余的阵列运算符号均须多加. 符号.1. 阵列运算功能(注意:一定要多加. 符号)+加-减.*乘./左除.\右除.^次方.'转置>> a=1:5; a-2 % 从阵列a减2ans =-1 0 1 2 3>> 2*a-1 % 以2乘阵列a再减1ans =1 3 5 7 9>> b=1:2:9; a+b % 阵列a加阵列bans =2 5 8 11 14>> a.*b % 阵列a及b中的元素与元素相乘ans =1 6 15 28 45>> a./b % 阵列a及b中的元素与元素相除ans =1.0000 0.66667 0.6000 0.5714 0.5556>> a.^2 % 阵列中的各个元素作二次方ans =1 4 9 16 25>> 2.^a % 以2为底,以阵列中的各个元素为次方ans =2 4 8 16 32>> b.^a % 以阵列b中的各个元素为底,以阵列a中的各个元素为次方ans =1 9 125 2401 59049>> b=a' % 阵列b是阵列a的转置结果b =123452. 矩阵的几种基本变换操作(1) 通过在矩阵变量后加’的方法来表示转置运算>>a=[10,2,12;34,2,4;98,34,6];>>a'ans =10 34 982 2 3412 4 6(2) 矩阵求逆>>inv(a)ans =-0.0116 0.0372 -0.00150.0176 -0.1047 0.03450.0901 -0.0135 -0.0045(3) 矩阵求伪逆>>pinv(a)ans =-0.0116 0.0372 -0.00150.0176 -0.1047 0.03450.0901 -0.0135 -0.0045(4) 左右反转>>fliplr(a)ans =12 2 104 2 346 34 98(5) 矩阵的特征值>>[u,v]=eig(a)u =-0.2960 0.3635 -0.3600-0.2925 -0.4128 0.7886-0.9093 -0.8352 0.4985v =48.8395 0 00 -19.8451 00 0 -10.9943 (6) 上下反转>>flipud(a)ans =98 34 634 2 410 2 12(7) 旋转90度>>rot90(a)ans =12 4 62 2 3410 34 98(8) 取出上三角和下三角>>triu(a)ans =10 2 120 2 40 0 6>>tril(a)ans =10 0 034 2 098 34 6>>[l,u]=lu(a)l = 0.1020 0.1500 1.00000.3469 1.0000 01.0000 0 0u = 98.0000 34.0000 6.00000 -9.7959 1.91840 0 11.1000 (9) 正交分解>>[q,r]=qr(a)q =-0.0960 -0.1232 -0.9877-0.3263 -0.9336 0.1482-0.9404 0.3365 0.0494r =-104.2113 -32.8179 -8.09890 9.3265 -3.19410 0 -10.9638 (10) 奇异值分解>>[u,s,v]=svd(a)u =0.1003 -0.8857 0.45320.3031 -0.4066 -0.86180.9477 0.2239 0.2277s =109.5895 0 00 12.0373 00 0 8.0778v =0.9506 -0.0619 -0.30410.3014 0.4176 0.85720.0739 -0.9065 0.4156 (11) 求矩阵的范数>>norm(a)ans =109.5895>>norm(a,1)ans =142>>norm(a,inf)ans =138(12) 子矩阵提取已知A=magic(4),提取A矩阵全部奇数行,所有列;提取A矩阵 3,2,1 行、2,3,4 列构成子矩阵;将A矩阵左右翻转; 上下翻转;旋转 90°; 旋转180°. >> A=magic(4)A=16 2 3 135 11 10 89 7 6 124 14 15 1>> B=A(1:2:end,:)B =16 2 3 139 7 6 12>> B2=A([3 2 1],[2 3 4])B2 =7 6 1211 10 82 3 13>> fliplr(A)ans =13 3 2 168 10 11 512 6 7 91 15 14 4>> flipud(A)ans =4 14 15 19 7 6 125 11 10 816 2 3 13>> rot90(A)ans =13 8 12 13 10 6 152 11 7 1416 5 9 4>> rot90(ans)ans =1 15 14 412 6 7 98 10 11 513 3 2 16习题1、求解线性方程组XA=b正确的命令格式是(),其中A,b分别是已知的3×3的可逆矩阵和1×3向量.(A)A/b (B)b/A (C)b\A (D)A\b2、用户可以用命令()设置数据以有理分式的格式输出.3、已知V=-3:3,则逻辑表达式V>2&V<-1|V==3的返回结果是4、已知A=reshape(1:10,2,5),使用单下标提取数值为3的元素的方法是A( ) .5、下面定义元胞数组的语句是().(A)S=zeros(4) (B)S=’struct’(C)S=cell(4) (D)S= struct('Struct',[])6、MATLAB语句A=[1,2,3;4,5,6;7,8,0];A(2,:)*A(:,1)的结果显示为7、运行下面语句,其中一行有错误,在右边下划线上说明错误的原因.A=magic(4);B=A(1:3,:);C=A(:,end:-2:1)D=[B,C]8、运行下面语句,其中一行有错误,在右边下划线上说明错误的原因.A=magic(4);B=A(1:3,:);C=A(:,end:-2:1)D=[B,C]。
第一讲Matlab 基本数值计算一、矩阵在Matlab中,一个矩阵可以使数学意义上的矩阵,也可以是标量或者向量。
对于一个标量(一个数)可以将之作为11⨯的矩阵,而向量(一行或一列)则可以认为是1n⨯⨯或者1n⨯的矩阵。
另外,一个00矩阵在Matlab中被认为是空矩阵,用“[]”表示。
1、矩阵的创建矩阵的创建可以有以下几种形式⑴直接输入>> A=[1 2 3;4 3 7;2 4 1]注意:每行间的元素用逗号或空格分开,行与行之间用分号或回车分开,矩阵标示是一对中括号[ ]。
也可以采用数组编辑器(Array Editor)像在Excel电子表格中据那样输入数据。
⑵通过语句和函数产生常用的特殊矩阵:zeros:全零矩阵,ones:全1矩阵,eye:单位矩阵,rand:随机矩阵,diag:对角阵等。
例:>> A=ones(3,4)>> E=eye(3)>> D=diag([3 5 2])⑶对矩阵进行裁剪或拼接⑷从外部文件装入数据外部数据文件可以是以保存的Matlab工作空间,也可以是文本(.txt)文件,或者是电子表格创建的文件(.xls).例:已知一个文本格式的数据文件E:\Mathmodel\data1.txt>> load e:\Mathmodel\data1.txt得到一个变量名与文件名相同的矩阵(data1)。
注意:文件的扩展名不能省略。
例:已知一个Excel文件的路径为E:\Mathmodel\data2.xlsa. 缺省操作:>> NUMBER=xlsread('E:\Mathmodel\data2.xls')>>[NUMBER,TXT]=xlsread('E:\Mathmodel\data2.xls')默认操作是从第一个工作表(sheet1)中提取数据。
b. 从指定的工作表(而不是第一个)中提取数据:>> NUMBER=xlsread('E:\Mathmodel\data2.xls','S2')或者>> NUMBER=xlsread('E:\Mathmodel\data2.xls',2)c.从指定的工作表中读取指定区域的数据:>> NUMBER=xlsread('E:\Mathmodel\data2.xls',2,'g3:i8')2、Matlab的矩阵运算⑴基本运算矩阵的加(+)、减(-)、乘(*)、乘方(^)运算法则与代数中的定义完全一致。
学习使用MATLAB进行数值计算和数据分析---第一章:MATLAB的基本介绍MATLAB是一种强大的数值计算和数据分析软件,广泛应用于科学研究、工程设计等领域。
它的主要特点是简洁直观的用户界面和丰富的数学函数库。
在本章中,我们将介绍MATLAB的基本特性和使用方法。
1.1 MATLAB的历史与发展MATLAB是由MathWorks公司于1984年首次推出的。
起初,它作为一个用于矩阵计算的工具被广泛使用。
随着时间的推移,MATLAB逐渐拓展了功能,加入了许多其他数学和工程计算的功能,如符号计算、数据统计和可视化。
如今,MATLAB已经成为一种非常受欢迎的工具。
1.2 MATLAB的安装和环境设置要开始使用MATLAB,首先需要从MathWorks官网下载并安装MATLAB软件。
安装完成后,打开MATLAB并设置工作目录和默认工作文件夹。
工作目录是指存储MATLAB代码和数据文件的文件夹,而默认工作文件夹是指MATLAB打开时默认选择的文件夹。
1.3 MATLAB的基本语法和命令MATLAB的基本语法和命令非常简单易懂。
它采用类似于其他编程语言的命令行交互方式,用户可以直接在命令行输入MATLAB语句并执行。
例如,可以输入"2+2"并按回车键得到结果4。
此外,MATLAB还具有许多内置的数学函数和运算符,可以进行各种数值计算和数据分析。
1.4 MATLAB脚本和函数在MATLAB中,可以使用脚本和函数来组织和执行一系列MATLAB命令。
脚本是一系列命令的集合,可以一次性运行。
函数是一段可以重复使用的代码,可以接受输入参数并返回输出结果。
通过编写脚本和函数,可以提高MATLAB代码的可重复性和可维护性。
第二章:数值计算MATLAB作为一种数值计算工具,提供了丰富的数学函数和算法,可以用于解决各种数值计算问题。
在本章中,我们将介绍MATLAB在数值计算方面的一些常用功能和技巧。
2.1 数值计算方法MATLAB中包含了许多数值计算方法,如数值积分、数值微分、线性代数求解等。