数值计算基础、Matlab介绍 喻文健
第一讲MatLab简介及基本运算解读

第一讲 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数值计算

自然对数〔以e为底〕
常用对数〔以10为底〕
12
2.2 矩阵和数组
2.2.1 矩阵的赋值 2.2.2 向量的生成 2.2.3 矩阵元素 2.2.4 复数表示
13
2.2.1 矩阵的赋值
(1). 直接输入法创立矩阵
矩阵的全部元素必需放在方括号“[]”内;
矩阵元素之间必需用逗号“,”或空格隔开;
30
〔2〕.矩阵的赋值
全下标方式:A(i,j)=B给A矩阵的局部元素赋值 则B矩阵的行列数必需等于A矩阵的行列数。
A(1:2,1:3)=[1 1 1;1 1 1] A=1 1 1 6 2
1 1147 7 5715 0 3454 23 13 6 0 3
31
单下标方式:A(s)=b,b为向量,元素个数必需等 于A矩阵的元素个数。
44
〔6〕. 矩阵的翻转
矩阵的翻转及对角化操作函数
命令
说明
flipud(A) 矩阵作上下翻转
fliplr(A) rot90(A)
矩阵作左右翻转 矩阵逆时针翻转90°
diag(A) 提取矩阵A的对角元素,返回列向量
diag(V) 以列向量V作对角元素创建对角矩阵
tril(A)
提取矩阵A的下三角矩阵
triu(A)
61
关系运算的规章
当参与运算的矩阵是两同维矩阵A和B时, 关系运算的结果是将矩阵A 和B 下标一样的对 应元素逐一进展关系比较,假设关系成立则比 较结果值为“1”,假设关系不成立则比较结 果值为“0”。也即关系运算的结果是生成一 个与A 和B 维数一样的矩阵,其元素值为“0” 或“1”。 算术运算比关系运算具有更高的优先权。
取值 用于结果的缺省变量名 圆周率 计算机的最小数,当和1相加就产生一个比1大的数 浮点运算数 无穷大,如1/0 不定量,如0/0
第二章 MATLAB数值计算

{矩阵(Matrix):是一个矩形的数组,即二维 数组,其中向量和标量都是矩阵的特例,0×0矩 阵为空矩阵([])。
{数组(Array):是指n维的数组,为矩阵的延 伸,其中矩阵和向量都是数组的特例。
复数(Complex)
以m×n的矩阵a为例,若元素a(i,j)则 对应的“单下标”为s= (j-1)×m+i。
a(1,2) a(4)
a(2,3) a(8)
2. 子矩阵块的产生
子矩阵是从对应矩阵中取出一部 分元素构成的。 (1)全下标方式
例 设矩阵A是已知的66矩阵
A(1:3,2:5) A的前3行,及第2到5列元素构成的子矩阵
数值采用十进制表示,可以用带小 数点的形式直接表示,也可以用科学计 数法,数值的表示范围是10-309~10309 。 例如:
-2、5.67、2.56e-56(表示2.56×10-56)、 4.68e204(表示4.68×10204)
矩阵和数组的概念
{标量(Scalar):是指1×1的矩阵,即只含一个 数的矩阵。
表示数组A和B中的对应元素相乘。A和B数组必 须大小相同,除非其中有一个是标量。
(3) 矩阵和数组的除法(division) 矩阵的除法运算表达式有两种:“A\B”和“A/B”, 运算符为“\”和“/”分别表示左除和右除。 X=B/A是X*A=B的解,B/A=B*A-1。 X=A\B是方程A*X=B的解, A\B=A-1*B。 数组的除法运算表达式有两种:“A.\B”和“A./B”, 表示数组相应元素左除和右除。 A和B数组必须大小相同,除非其中有一个是标量。
产生均匀分布的随机矩阵,元素取值 范围0.0~1.0。 产生正态分布的随机矩阵
MATLAB数值计算

•求多项式 求多项式p=[1 0 -3 5]在x=5时的值 时的值p(5),可以用函数 可以用函数 求多项式 在 时的值 可以 polyval(p,5).其中第一个参数是多项式的系数向量 第 其中第一个参数是多项式的系数向量,第 其中第一个参数是多项式的系数向量 二个是自变量的取值(可以是矩阵 可以是矩阵). 二个是自变量的取值 可以是矩阵 •函数 函数polyvalm(p,X)的第二个参数是方阵 求以矩阵为 的第二个参数是方阵,求以矩阵为 函数 的第二个参数是方阵 自变量的多项式的值. 自变量的多项式的值 •函数 函数roots(p)可以找一个多项式的根 可以找一个多项式的根. 函数 可以找一个多项式的根
湖 北 科 技 职 业 学 院
•矩阵的调用 矩阵的调用 假如A是一个已知 是一个已知10*10的方阵 那么 的方阵,那么 假如 是一个已知 的方阵 那么: A(:,3)是A的第 列元素构成的列向量 的第3列元素构成的列向量 是 的第 列元素构成的列向量; A(5,:)是A的第 行元素构成的行向量 的第5行元素构成的行向量 是 的第 行元素构成的行向量; A(1:5,3)是A的前 行的第 列元素构成的列向量 的前5行的第 列元素构成的列向量; 是 的前 行的第3列元素构成的列向量 A(1:5,7:10)是A的前 行,第7到第 列元素构成的子矩阵 的前5行 第 到第 列元素构成的子矩阵; 到第10列元素构成的子矩阵 的前 A([1 3 5 ],[2 4 6])是A的第 、3、5行,第2、4、6列元素构成的子矩阵 的第1、 、 行 第 、 、 列元素构成的子矩阵 列元素构成的子矩阵; 的第 A(:,7:-1:3)是A的第 、6、5、4、3列元素构成的子矩阵. 的第7、 、 、 、 列元素构成的子矩阵. 的第 列元素构成的子矩阵 A(:,[2 4])=[]用于把 的第 、4列删除 形成 的一个子矩阵 用于把A的第 的第2、 列删除 形成A的一个子矩阵 列删除,形成 的一个子矩阵. 矩阵运算 •矩阵的四则运算 矩阵的四则运算 ①矩阵相加减 矩阵相加减. 矩阵相加减 同型矩阵相加减等于对应矩阵的元素相加减,用符号 同型矩阵相加减等于对应矩阵的元素相加减 用符号 表示. “+”和“-”表示 和 表示
MATLAB的数值运算

05
线性代数运算
向量和矩阵的运算
向量减法
向量减法是指将一个向量的对 应元素减去另一个向量的对应 元素,得到一个新的向量。
向量点乘
向量点乘是指将两个向量的对 应元素相乘,并求和,得到一 个标量。
向量加法
向量加法是指将两个向量的对 应元素相加,得到一个新的向 量。
标量乘法
标量乘法是指将一个标量与一 个向量的每个元素相乘,得到 一个新的向量。
数据可视化
MATLAB内置绘图函数,支持多种图形类型, 包括散点图、线图、曲面图等。
算法开发
MATLAB支持脚本编程和函数封装,方便用户实 现自定义算法。
数据分析
MATLAB提供了数据导入、清洗、处理和统计分析 等功能。
机器学习
MATLAB集成了机器学习工具箱,支持多种机器 学习算法和模型训练。
信号处理
1980年代中
MATLAB正式发布,成为工程计算领 域的标准工具。
1990年代
MATLAB不断扩展,增加了更多功能 和工具箱,成为多学科领域的计算平 台。
21世纪
MATLAB持续发展,支持更多算法和 编程语言,广泛应用于科研、工程和 商业领域。
MATLAB的主要功能和特点
数值计算
MATLAB提供了丰富的数值计算函数,支持 矩阵运算、线性代数、数值积分、微分等。
向量叉乘
向量叉乘是指将两个向量的对 应元素相乘,并按照一定规则 排列,得到一个新的向量。
特征值和特征向量
特征值
特征值是指一个矩阵所对应的一元二次方程的根,也是该矩阵对一个非零向量的缩放因 子。
特征向量
特征向量是指一个矩阵所对应的特征值对应的非零向量。
线性方程组的求解
第六章matlab数值计算

➢一维插值方法比较
例6-10 用不同插值法对数据进行一维插值
x=0:1:10; y =[0 0.8415 0.9093 0.1411 -0.7568 -0.9589 -0.2794 0.657 0.9894 0.4121 -0.5440]; plot(x,y,'co'),hold on fplot(@sin,[0 10]) xi=0:0.15:10; yi=interp1(x,y,xi); figure,plot(xi,yi,'r+'),text(0.7028,0.4649,'线性插值\rightarrow') yi2=interp1(x,y,xi,'nearst'); figure,plot(xi,yi2,'c*'),text(3.537,0.1374,'\leftarrow最近插值') yi3=interp1(x,y,xi,'cubic'); plot(xi,yi3,'md'),text(2.408,0.8333,'\leftarrow三次插值') yi4=interp1(x,y,xi,'spline'); figure,plot(xi,yi4,'kh'),text(4.62,0.8158,'三次样条插值 \rightarrow')
[x,y]=meshgrid(-3:0.8:3); z=peaks(x,y); [xi,yi]=meshgrid(-1:0.25:3); zi_nearest=interp2(x,y,z,xi,yi,'nearset'); zi_linear=interp2(x,y,z,xi,yi); zi_spline=interp2(x,y,z,xi,yi,'spline'); figure; hold on; subplot(2,2,1); meshc(x,y,z); title(‘原始数据'); subplot(2,2,2); meshc(xi,yi,zi_nearest); title(‘最邻近插值'); subplot(2,2,3); meshc(xi,yi,zi_linear); title(‘线性插值'); subplot(2,2,4); meshc(xi,yi,zi_spline); title(‘三次样条插值');
数值计算第六讲

曲线拟合的最小二乘法
多项式插值
(拉格朗日, 牛顿) 分段多项式插值 样条函数插值
Wenjian Yu 2
函数逼近问题的例子
1.4
sqrt(1+t2)
1.3 1.2 1.1 1 0 0.2 0.6 t cos(t) /2-4/ 0.4 0.8 1
傅里叶变换, 信号的频谱分析
3 2.5 2 1.5 1 0.5 -3 -2 -1 0 t 1 2 3
Wenjian Yu 68
样条插值及其他
B-样条函数
有k-1阶连续导数的分段k次多项式为k次样条函数 可写成基函数的线性组合,
基函数为B-样条函数 1次样条函数为分段线性函数 1 B-样条基函数应用广泛(计算机图形 学, 几何建模, 数值求解微分方程)
Matlab
yi
= interp1(x,y,xi,method) „nearest’, „linear‟, „spline‟, „pchip‟ interp2, interp3, pchip, spline, “Spline toolbox”
定义6.6
DFT
Wenjian Yu
40
插值与多项式插值
解存在、唯一吗?
Th6.6
(Vandermonde阵)
Wenjian Yu
41
Lagrange插值法
不便于计算、以及理论分析
“两点式”直线公式:
Wenjian Yu
42
Lagrange插值法
Lagrange 插值函数
(一个常用的技巧)
数值分析与算法 (6)
Numerical Analysis & Algorithms
(完整版)第一讲Matlab基本数值计算

第一讲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的矩阵运算⑴基本运算矩阵的加(+)、减(-)、乘(*)、乘方(^)运算法则与代数中的定义完全一致。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数值计算(科学计算、计算模拟、数值模拟)
◦ 没有解析解的问题: ◦ 虽有解析表达式(解),但无法(难以)计算: sin(x) ◦ 模拟通常难以达到的实验条件 (时间、金钱成本)
天体物理研究 汽车碰撞实验,芯片投片前的性能仿真
Байду номын сангаас
数值模拟的步骤
建立数学模型(需要相关学科背景) 研究数值求解方程的算法 通过计算机程序(软件)实现算法
◦ 使用数值求解非线形方程的命令fzero求������
19
其他窗口
变量空间
命令历史 命令窗口,将Matlab作 为计算器使用
20
程序编辑窗口
帮助窗口
注释语句%
多个文件
21
如何“上手”?
◦ 安装Matlab软件,版本R2009a/b或更新的 ◦ 获取NCM程序包,并设置路径
(网络学堂-”教学资源”第1项)
>> ncmgui
◦ 阅读课本第1章 ◦ 多动手实验 ◦ 熟悉“命令历史”键: “”, “” ,以及help, doc命令
通过求解几个例子问题熟悉Matlab
◦ 第1.1 ~ 1.4节
22
0.6180… ,可能是世界上最有趣的数 ? ������=1/0.6180… 1.6180 Matlab功能
◦ ◦ ◦ ◦ ◦ ◦ 表示、显示数的格式 数值、符号求解多项式方程 符号变量转为数值 函数句柄与函数的绘制 脚本程序与绘图功能 一个较复杂的函数程序(连续分数)
将地球近似成球体 计算地球的表面积:
A 4 r
2
模型误差 取半径������ ≈ ������������������������������������ 数据误差 数据误差 ������的值只能截取到有限位 计算4������������ 2 涉及到浮点数的乘法 舍入误差
15
课程重点
在计算机上运行程序(软件),
进行数值实验
13
数值模拟的步骤(续)
将计算结果用较直观的方式输出,如图形可视化方法 解释和验证计算结果。若需要,重复上面的某些步骤
上述各步骤相互间紧密地关联,影响着最终的计算结果 和效率(问题的实际应用背景也左右着方法的选择)
问题的适定性(well-defined, well-posed)
(绝对)误差, 相对误差 ������(������) = ������ − ������ 数据误差, 计算误差 数据误差引起的 以计算������(������)为例: ������ ������ − ������ ������ = ������ ������ − ������ ������ + ������ ������ − ������ ������ 计算误差由截断误差与舍入误差组成
序算法(Quicksort) 8.1965 IBM Watson研究中心的J. Cooley与Princeton大学及 AT&T Bell实验室的J. Tukey共同提出了的FFT算法 9.1977 Brigham Young大学的H. Ferguson和R. Forcade提 出的整数关系侦察算法 (实验数学, 简化量子场理论的计算) 10.1987 Yale大学的L. Greengard和V. Rokhlin发明了快速多 极算法(fast multipole algorithm,多体问题, 线性复杂度) 大多数都属于或涉及数值计算的范畴!
网络学堂”教学资源”-”课本勘误”
Where What Why
更多信息参考课程网站: :8080/2003990088/anaa.htm
3
How
◦ 课堂讲授、作业(上机解题)、期末考核
如何评分?
◦ 课程参与: 5% ◦ 作业(共5次): 60% ◦ 期末大作业/Project:40% (两者选一)
◦ 解方程: ������ − 1 1 = 1 ������
������ 2 − ������ − 1 = 0
24
求解多项式方程
������ 2 − ������ − 1 = 0
◦ 用降次排列的系数表示多项式,再用roots命令数值求解 >> p = [1 -1 -1]; ◦ 用Symbolic Math Toolbox >> r = roots(p) ◦ 用solve命令求解方程: ������ − 1 1 = 1 ������ ◦ 符号运算时间较长 ◦ 无法求解复杂方程 >> r = solve('x-1=1/x') >> phi = r(1) 符号变量转化为数值 ◦ vpa, double 命令 ◦ 注意:抑制输出符 “;” 字符串的表示, 不需申明变量类型
>> vpa(phi, 50) >> phi = double (phi)
25
函数句柄与函数的绘制
◦ 有时要将函数作为参数传递,例如积分、绘曲线、解方程 ◦ 匿名函数@ (注: inline命令在新版Matlab中已废除) ◦ ������ ������ = ������ − 1 − 1 , ������ ������ = 0 >> f = @(x) x-1-1/x ������ ◦ 在[0, 4]区间绘制������ ������ 的曲线 >> ezplot(f, [0, 4])
对象
核心
数值计算:研究求解连续数学问题的算法的学科(其中包 含、但不局限于计算误差的研究)
7
“Algorithm”
◦ 源于九世纪阿拉伯学者的名字al-Khwarizmi ◦ 其著作“al-jabr wa’l muqabalah”是现代高中代 数(algebra)课本的雏形 ◦ 他强调解决问题时,系统的过程的重要性
- 数值计算基础、Matlab介绍 喻文健
课程简介 数值计算的基础知识 Matlab与数值计算软件
浮点算术体系与误差分析
2
Who When
◦ 喻文健(东主楼8区403室),对数值计算感兴趣的你们 ◦ 周五上午9:50-12:15 (第1~16周) ◦ 六教6B407 ◦ 《Matlab数值计算》,补充内容 ◦ 增强动手实践能力
◦ 例: 用差商近似一阶导数 ������ ������ + ℎ − ������(������) ′ ������ (������) ≈ ℎ ◦ 截断误差估计为������ℎ 2,������是 ������ ′′ ������ 的上界; 舍入误差估计为 2������/ℎ,������ 是算一次函数值的误差 ◦ 随着h减小,总误差先减小后增大
11
5.1957 IBM的J. Backus领导的小组开发的Fortran优化编译器 6.1959-61 伦敦Ferranti Ltd.的J.G.F. Francis发明的QR算法,
稳定地计算中、小规模矩阵的所有特征值 7.1962 伦敦Elliott Brothers, Ltd.的Tony Hoare提出快速排
病态问题
(相对条件数) ◦ 条件数是针对问题而言的,不涉及求解的具体方法
算法的稳定性
◦ 反映了“计算过程中”的扰动对计算结果的影响程度,也 称为数值稳定性,是算法的一个重要属性 ◦ 若计算结果对舍入误差不敏感,则算法稳定
◦ 对于含一系列步骤的计算过程,若计算中的小扰动不被放 大(传播)、或放大不严重,则算法稳定
23
������ =
Matlab默认采用双精度浮点数,但有多种显示格式 format命令, 或通过File-Preferences菜单设置
1+ 5 2
>> phi = (1+sqrt(5)) / 2 黄金矩形 >> format long ◦ 裁去正方形后,小矩形形状不变
◦ 根据这一点求������
f(x)=sinx, x=1
������ − ������ ������������ (������ ) = ������
16
问题的敏感性 (衡量数据传递误差)
问题的解的相对变化量 ◦ 条件数cond = 输入数据的相对变化量 ◦ 例如函数求值问题,
������ ������ − ������(������) ������(������) cond = ������ − ������ ������
问题的解连续地依赖于问题数据 问题数据的小改变不会导致解的突然(大)变化 另外的一类计算问题:Stochastic
反例:地震 的物理模型
在数值计算中该条件非常重要,因为数据扰动必然存在
Computation
14
近似造成误差
◦ 模型误差:建模时的近似 ◦ 数据误差:测量等原因造成误差、输入数据是前一步计算 的结果 ◦ 截断误差(方法误差):数学上的近似 ◦ 舍入误差:实数用有限位来表示 (数值计算中总存在)
Editors
1.1946 Los Alamos科学实验室的J. von Neumann, S. Ulam 和N. Metropolis提出的Metropolis算法 (Monte Carlo方法 中最成功、最有影响的一个) 2.1947 RAND公司的G. Dantzig创造的线性规划的单纯型算 法 (simplex method) 3.1950 美国UCLA大学与美国国家标准局数值分析所的M. Hestenes, E. Stiefel和C. Lanczos开创的Krylov子空间迭代 法 (Lanczos过程, CG算法) 4.1950’s 橡树岭(Oak Ridge)国家实验室的A. Householder 形式化的矩阵分解方法 (表示成矩阵分解起了革命性作用)