《Matlab基础与应用》PPT课件.ppt

上传人:s9****2 文档编号:570311596 上传时间:2024-08-03 格式:PPT 页数:85 大小:1.43MB
返回 下载 相关 举报
《Matlab基础与应用》PPT课件.ppt_第1页
第1页 / 共85页
《Matlab基础与应用》PPT课件.ppt_第2页
第2页 / 共85页
《Matlab基础与应用》PPT课件.ppt_第3页
第3页 / 共85页
《Matlab基础与应用》PPT课件.ppt_第4页
第4页 / 共85页
《Matlab基础与应用》PPT课件.ppt_第5页
第5页 / 共85页
点击查看更多>>
资源描述

《《Matlab基础与应用》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《Matlab基础与应用》PPT课件.ppt(85页珍藏版)》请在金锄头文库上搜索。

1、Matlab基础与应用报告人: 曹富军单 位: 内蒙古科技大学Office : 秋实楼A507Email : 内容提纲nMATLAB 语言的简洁高效性nMATLAB 语言的科学运算功能nMATLAB 语言的绘图功能nMATLAB 庞大的工具箱与模块集nMATLAB 强大的动态系统仿真功能Matlab简介n nMATLABMATLAB语言是当前国际上自动控制领域的首选语言是当前国际上自动控制领域的首选语言是当前国际上自动控制领域的首选语言是当前国际上自动控制领域的首选计算机语言,也是很多理工科专业最适合的计算计算机语言,也是很多理工科专业最适合的计算计算机语言,也是很多理工科专业最适合的计算计

2、算机语言,也是很多理工科专业最适合的计算机数学语言机数学语言机数学语言机数学语言. . . .nMATLAB作为线性系统的一种分析和仿真工具,作为线性系统的一种分析和仿真工具,是理工科大学生应该掌握的技术工具,它作为一是理工科大学生应该掌握的技术工具,它作为一种编程语言和可视化工具,可解决种编程语言和可视化工具,可解决工程工程、科学计科学计算算和和数学学科数学学科中许多问题。中许多问题。nMATLAB是一种交互式的以矩阵为基础的系统计是一种交互式的以矩阵为基础的系统计算平台算平台, ,它用于科学和工程的计算与可视化。它的它用于科学和工程的计算与可视化。它的优点在于快速开发计算方法,而不在于计算

3、速度优点在于快速开发计算方法,而不在于计算速度。Matlab的特点n高度适应性高度适应性、开放性:、开放性:MATLAB的工具箱可的工具箱可以任意增减,任何人可以自己生成以任意增减,任何人可以自己生成MATLAB工具箱工具箱n可扩充性可扩充性: MATLAB的函数大多为的函数大多为ASCII文文件,可以直接编辑、修改件,可以直接编辑、修改n基于矩阵运算的工作平台基于矩阵运算的工作平台。多版本:多版本:windows/unix/dos/Macintoshn极多的工具箱。极多的工具箱。能做什么?n基本的数据处理基本的数据处理n优化和解方程优化和解方程n动态过程仿真:实时的和非实时的动态过程仿真:实

4、时的和非实时的n数据来源:数据来源:ExcelExcel、数据库、数据库、A/DA/D等等等等n嵌入式的控制:嵌入式的控制:Pc/104Pc/104和和DSPDSPn神经元网络、小波分析、神经元网络、小波分析、GAGA等等等等n虚拟现实仿真虚拟现实仿真如何学习?nhelp 命令:已知命令不知道用法命令:已知命令不知道用法nlookfor命令:知道命令的关键词命令:知道命令的关键词nMatlabHelp: :命令查找,索引,说明命令查找,索引,说明书书nDemon有效的利用帮助有效的利用帮助Matlab变量n基本运算基本运算 q变量变量q逗号、分号的意义逗号、分号的意义q行内编辑、注释、运算规则

5、行内编辑、注释、运算规则n变量要求变量要求q变量区分字母的大小写变量区分字母的大小写q名字不能超过名字不能超过1919个字符,第个字符,第1919个字符后的字符被忽略个字符后的字符被忽略q变量必须以字母开头,之后可以是任意字母、数字或变量必须以字母开头,之后可以是任意字母、数字或者下滑线者下滑线q变量中不能含有标点符号。变量中不能含有标点符号。特殊变量显示格式nformatformat命令改变显示格式,常用的命令改变显示格式,常用的的格式有的格式有: : long (16long (16位位), bank(2), bank(2个十个十进制位进制位),hex(),hex(十六进制十六进制),sh

6、ort(),short(缺省缺省), ), short e(5short e(5位加指数位加指数) +() +(符号符号) long ) long e(16e(16位加指数位加指数) rat() rat(有理数近似有理数近似) )rand(3,3) 0.9501 0.4860 0.4565= 0.2311 0.8913 0.0185 0.6068 0.7621 0.8214rand(3,3) 382/859 1627/1765 583/1437 = 989/1607 313/424 2131/2278 609/769 355/2014 2571/2804 Format rat数组n矩阵矩阵是M

7、ATLAB的核心n创建简单的数组创建简单的数组x=abcdef 创建包含指定元素的行向量x=first:last 创建从first开始,加1计数,到last结束的行向量 x=first:increment:last 创建从first开始,加increment计数,last结束的 行向量数组的访问 访问一块元素访问一块元素: x(a :b :c)表示访问数组x的从第a个元素开始,以步长为b到第c个元素(但不超过c),b可以为负数,b缺损时为1. 矩阵建立矩阵建立 逗号逗号或或空格空格用于分隔某一行的元素,用于分隔某一行的元素,分号分号用于区分不用于区分不同的行同的行. . 除了分号,在输入矩阵时

8、,按除了分号,在输入矩阵时,按EnterEnter键也表键也表示开始一新行示开始一新行. . 输入矩阵时,严格要求所有行有相同输入矩阵时,严格要求所有行有相同的列的列. 访问一个元素访问一个元素: x(i)表示访问数组x的第i个元素Matlab科学运算功能n直接赋值语句n 矩阵定义Matlab科学运算功能n 特殊矩阵Matlab科学运算功能n矩阵表示n矩阵加减法n矩阵乘法Matlab科学运算功能n矩阵除法矩阵除法AX = B,求 Xn nMATLAB 求解:X=ABn非奇异非奇异: :n n矩阵右除:矩阵右除:XA =B,求求 Xn非奇异非奇异: :n nMATLAB求解:X=B/AMatla

9、b科学运算功能n 行列式 Determinentn 矩阵的秩 Rankn 矩阵的范数NormMatlab科学运算功能n矩阵特征值 EigenvalueE=eig(A):求矩阵:求矩阵A A的全部特征值,构成向量的全部特征值,构成向量E。n矩阵特征向量 EigenvectorV,D=eig(A):求矩阵:求矩阵A A的全部特征值,构成对的全部特征值,构成对角阵角阵D,并求,并求A的特征向量构成的特征向量构成V V的列向量。的列向量。Matlab科学运算功能n矩阵的逆 Inversen线性方程组的求解Matlab符号运算n建立符号对象建立符号对象 1 1建立符号变量和符号常量建立符号变量和符号常量

10、MATLAB提供了两个建立符号对象的函数:提供了两个建立符号对象的函数: sym和和syms,两个函数的用法不同。,两个函数的用法不同。n函数函数sym一次只能定义一个符号变量一次只能定义一个符号变量syman函数函数syms一次可以定义多个符号变量一次可以定义多个符号变量symsabcdA=ab;cd;det(A)=a*c-bd符号运算n极限极限(limits)limit函数的调用格式为: (1) limit(f, x, a):求符号函数f(x)的极限值。即计算当变量x趋近于常数a时,f(x)函数的极限值。(2) limit(f,x,a,right):求符号函数f的极限值。 right表示变

11、量x从右边趋近于a。 (3) limit(f,x,a,left):求符号函数f的极限值。left表示变量x从左边趋近于a。符号极限n【例5】求极限 syms x; %定义符号变量 f=(x*(exp(sin(x)+1)-2*(exp(tan(x)-)/sin(x)3; %确定符号表达式 w=limit(f) %求函数的极限, 默认趋于0 w = -1/2n例例: :求下列极限求下列极限。nProblem1:symsamx;f=(x*(exp(sin(x)+1)-2*(exp(tan(x)-1)/(x+a);limit(f,x,a)ans=(1/2*a*exp(sin(a)+1/2*a-exp(

12、tan(a)+1)/anProblem2:symsxt;limit(1+2*t/x)(3*x),x,inf)ans=exp(6*t)符号运算n符号导数符号导数(differential)(1)diff函数用于对符号表达式求导数。该函数的函数用于对符号表达式求导数。该函数的一般调用格式为:一般调用格式为:(2)diff(s,v):以:以v v为自变量,对符号表达式为自变量,对符号表达式s s求一阶导数。求一阶导数。(3)diff(s,v,n):以:以v v为自变量,对符号表达式为自变量,对符号表达式s s求求n n阶导数。阶导数。符号导数n【例6】求导数:x = sym(x); %定义符号变量t

13、 = sym(t);diff(sin(x2) %求导运算ans = 2*cos(x2)*x符号运算n符号积分符号积分(integral) (1) 符号积分由函数符号积分由函数intint来实现。该函数的来实现。该函数的一般调用格式为:一般调用格式为:(2)int(s):没有指定积分变量和积分阶数:没有指定积分变量和积分阶数时,系统按时,系统按findsym函数指示的默认变量对函数指示的默认变量对被积函数或符号表达式被积函数或符号表达式s s求不定积分。求不定积分。(3)int(s,v):以:以v v为自变量,对被积函数或为自变量,对被积函数或符号表达式符号表达式s s求不定积分。求不定积分。(

14、4)int(s,v,a,b):求定积分运算。:求定积分运算。a,ba,b分别分别表示定积分的下限和上限。该函数求被积表示定积分的下限和上限。该函数求被积函数在区间函数在区间 a,ba,b 上的定积分上的定积分符号积分n【例7】求下述积分。 求积分: syms x int(1/(1+x2) ans =atan(x)符号运算n因式分解(factorization) factor函函数数的的功功能能为为:把把多多项项式式 S分分解解为为多多个个因式,各多项式的系数均为有理数。格式为:因式,各多项式的系数均为有理数。格式为: factor(s)n【例9】将表达式(x9-1)分解为多个因式。 syms

15、x factor(x9-1) ans = (x-1)*(x2+x+1)*(x6+x3+1)级数求和n4. 级数(级数求和) 级数求和运算是数学中常见的一种运算。例 如: f(x)=a0+a1x+a2x2+a3x3+anxn 函数symsum可以用于此类对符号函数f的求和运算。该函数的引用时,应确定级数的通项式S,变量的变化范围a和b。该函数的引用格式为: symsum(s, a, b)级数求和n【例8】求级数的和: 1+1/22+1/32+1/42+ syms k symsum(1/k2,1,Inf) %k值为1到无穷大 ans = 1/6*pi2 其结果为: 1/12+1/22+1/32+1

16、/42+ =2/6二维图形功能Plot 基本绘图功能基本绘图功能nMatlabMatlab提供了强大的图形绘制功能。在大多提供了强大的图形绘制功能。在大多数情况下,用户只需要指定绘图的方式,提数情况下,用户只需要指定绘图的方式,提供绘图数据,利用供绘图数据,利用MatlabMatlab提供的丰富的二维,提供的丰富的二维,三维图形函数,就可以绘制出所需的图形。三维图形函数,就可以绘制出所需的图形。n1 1绘制二维连续函数绘制二维连续函数nMatlabMatlab中最常用的绘图函数是中最常用的绘图函数是plotplot,plotplot的的命令格式有以下几种:命令格式有以下几种:Plot绘图函数n

17、(1)plot(y) 当当y y为一向量时,以为一向量时,以y y的序号作为的序号作为x x轴,按轴,按 向量向量y y的值绘制曲线。的值绘制曲线。n(2)plot(x,y) x,y x,y均为向量时,以均为向量时,以x x向量作为向量作为X X轴,向量轴,向量y y 作为作为Y Y轴绘制曲线。轴绘制曲线。n注意:注意:x x和和y y种元素的个数必须相同!种元素的个数必须相同!Plot绘图n 例一:画出衰减震荡曲线 及其包 络线 t的取值范围是 n程序如下: t=0:pi/50:4*pi; y0=exp(-t/3);y=exp(-t/3).*sin(3*t);plot(t,y,-r,t,y0

18、,:b,t,-y0,:b)Plot绘图Plot绘图n例二.用图形表示连续调制波形 及其包络。t=(0:pi/100:pi) %长长 度度 为为 101的的 时时 间间 采采 样样 列列 向向 量量y1=sin(t)*1,-1;%包包络络线线函函数数值值,是是(101x2)的的矩矩阵阵y2=sin(t).*sin(9*t);%长度为长度为101的调制波列向量的调制波列向量t3=pi*(0:9)/9y3=sin(t3).*sin(9*t3);plot(t,y1,r:,t,y2,b,t3,y3,bo)axis(0,pi,-1,1)%控制轴的范围控制轴的范围n 程序如下:Plot绘图函数 m 文件n我

19、们可以根据自己的需要建立自己的函数文件,它与库文件一样方便调用,从而极大地扩展了Matlab的功能n函数m文件的第一行有特殊的要求,如下n文件名必须是 .mM函数举例 建立M函数: 调用函数实现求和:inline 函数和匿名函数ninline 函数,可以免去文件nMATLAB 7.0循环结构qfor 结构qwhile 结构循环结构n利用循环求和多项式插值多项式插值用用MATLABMATLAB作插值计算作插值计算yi=interp1(x,y,xi,method)插值方法插值方法被插值点被插值点插值节点插值节点xixi处的插处的插值结果值结果nearest :最邻近插最邻近插值值linear :

20、线性插线性插值;值;spline : 三次样条三次样条插值;插值;cubic : 立方插值。立方插值。缺省时:缺省时: 分段线性插值。分段线性插值。插值例:在例:在1-121-12的的1111小时内,每隔小时内,每隔1 1小时测量一次温度,小时测量一次温度,测得的温度依次为:测得的温度依次为:5 5,8 8,9 9,1515,2525,2929,3131,3030,2222,2525,2727,2424。试估计每隔。试估计每隔1/101/10小时的温度值。小时的温度值。hours=1:12;temps=5 8 9 15 25 29 31 30 22 25 27 24;h=1:0.1:12;t=

21、interp1(hours,temps,h,spline); plot(hours,temps,+,h,t,hours,temps,r:) %作图xlabel(Hour),ylabel (Degrees Celsius)二维数据插值二维数据插值n在在MATLAB中,二维插值问题的函数中,二维插值问题的函数interp2,其调,其调用格式为:用格式为:nZ1=interp2(X,Y,Z,X1,Y1,method)其中其中nX,Y是两个向量,分别描述两个参数的采样点,是两个向量,分别描述两个参数的采样点,nZ是与参数采样点对应的函数值,是与参数采样点对应的函数值,nX1,Y1是两个向量或标量,描述

22、欲插值的点。是两个向量或标量,描述欲插值的点。nZ1是根据相应的插值方法得到的插值结果。是根据相应的插值方法得到的插值结果。method的取值与一维插值函数相同。的取值与一维插值函数相同。nX,Y,Z也可以是矩阵形式。也可以是矩阵形式。注注: : X1,Y1的取值范围不能超出的取值范围不能超出X,YX,Y的给定范围,否则,的给定范围,否则, 会给出会给出“NaN”错误错误拟合n数数据据拟拟合合是是求求一一个个简简单单的的函函数数, ,例例如如是是一一个个低低次次多多项项式式, ,不不要要求求通通过过已已知知的的这这些些点点, ,而而是要求在整体上是要求在整体上“尽量好尽量好”的逼近原函数。的逼

23、近原函数。n用插值的方法对一函数进行近似用插值的方法对一函数进行近似, ,要求所得要求所得到的插值多项式经过已知插值节点到的插值多项式经过已知插值节点; ;在在n n比比较大的情况下较大的情况下, ,插值多项式往往是高次多项插值多项式往往是高次多项式式, ,这也就容易出现振荡现象(龙格现象),这也就容易出现振荡现象(龙格现象),即虽然在插值节点上没有误差即虽然在插值节点上没有误差, ,但在插值节但在插值节点之外插值误差变得很大点之外插值误差变得很大, ,从从“整体整体”上看上看, ,插值逼近效果将变得插值逼近效果将变得“很差很差”。拟拟 合合 问问 题题 1 1温度温度t(0C)20.532.

24、751.073.095.7电阻电阻R( )7658268739421032已知热敏电阻数据:已知热敏电阻数据:求求60600C时的电阻时的电阻R。 设设 R=at+ba,b为待定系数为待定系数多项式拟合polyfit用用MATLAB作线性最小二乘拟合作线性最小二乘拟合1. 1. 作多项式作多项式f(x)=a1xm+amx+am+1拟合拟合, ,可利用已有程序可利用已有程序:2. 2. 对超定方程组对超定方程组可得最小二乘意义下的解。可得最小二乘意义下的解。,用,用3.3.多项式在多项式在x x处的值处的值y y可用以下命令计算:可用以下命令计算: y=y=polyvalpolyval(a a,

25、x x)a=polyfit(x,y,m)输出拟合多项式系数输出拟合多项式系数a=a1, am , am+1(数组数组) ))输入同长度输入同长度的数组的数组X,Y拟合多项拟合多项式次数式次数n x0=-1+2*0:10/10; y0=1./(1+25*x0.2);n x=-1:.01:1; ya=1./(1+25*x.2);n p3=polyfit(x0,y0,3); n y1=polyval(p3,x);n p5=polyfit(x0,y0,5); n y2=polyval(p5,x);n p8=polyfit(x0,y0,8); n y3=polyval(p8,x);n p10=polyf

26、it(x0,y0,10); n y4=polyval(p10,x);n plot(x,ya,x,y1,x,y2,-.,x,y3,-,x,y4,:)多项式拟合的效果并不一定总是很精确的。最小二乘法拟合例例 x=0.1:0.1:1; y=2.3201,2.6470,2.9707,3.2885,3.6008,3.9090,4.2147,4.5191,4.8232,5.1275;function y=c8f3(a,x)y=a(1)*x+a(2)*x.2.*exp(-a(3)*x)+a(4); a=lsqcurvefit(c8f3,1;2;2;3,x,y); aMaximum number of fun

27、ction evaluations exceeded; increase options.MaxFunEvalsans = 2.4575 2.4557 1.4437 2.0720绘制曲线: y1=c8f3(a,x); plot(x,y,x,y1) x=0:.1:10; y=0.12*exp(-0.213*x)+0.54*exp(-0.17*x).*sin(1.23*x); f=inline(a(1)*exp(-a(2)*x)+a(3)*exp(- a(4)*x).*sin(a(5)*x),a,x); xx,res=lsqcurvefit(f,1,1,1,1,1,x,y); xx,resnOpt

28、imization terminated successfully:n Relative function value changing by less than OPTIONS.TolFunnans = 0.1197 0.2125 0.5404 0.1702 1.2300nres = 7.1637e-007绘制曲线: x1=0:0.01:10; y1=f(xx,x1); plot(x1,y1,x,y,o) lsqnonlin用以求含参量用以求含参量x x(向量)的向量值函数向量)的向量值函数 f(x)=(f1(x),f2(x),fn(x)T 中的参量中的参量x,使得使得 最小。最小。其中其中

29、fi(x)=f(x,xdatai,ydatai)=F(x,xdatai)-ydatai 非线性最小二乘拟合非线性最小二乘拟合lsqnonlin已知数据点:已知数据点: xdataxdata= =(xdata1,xdata2,xdataxdatan n) ydataydata= =(ydataydata1 1,ydataydata2 2,ydataydatan n)用下面一组数据拟合参数用下面一组数据拟合参数a,b,k该问题即解最优化问题:该问题即解最优化问题:1) 编写编写M-M-文件文件curvefun2.m functionf=curvefun2(x)tdata=100:100:1000;

30、cdata=1e-03*4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59;f=x(1)+x(2)*exp(-0.02*x(3)*tdata)-cdata2)输入命令输入命令: x0=0.2,0.05,0.05;x=lsqnonlin(curvefun2,x0)f=curvefun2(x)Lsqnonlin函数3 3)运算结果为)运算结果为 即拟合得即拟合得a=0.0063b=-0.0034k=0.25424)结论)结论:f=1.0e-003*(0.2322-0.1243-0.2495-0.2413-0.1668-0.07240.02410.11

31、590.20300.2792)X=0.0063-0.00340.2542数值积分与微分数值积分与微分n数值积分数值积分q数值积分基本原理数值积分基本原理求解定积分的数值方法多种多样,如简单的梯形求解定积分的数值方法多种多样,如简单的梯形法、辛普生法、辛普生(Simpson) 法、牛顿柯特斯法、牛顿柯特斯(Newton-Cotes)法等都是经常采用的方法。法等都是经常采用的方法。基本思想基本思想都是将整个积分区间都是将整个积分区间a,b分成分成n个子区个子区间间xi,xi+1,i=1,2,n,其中其中,x1=a,xn+1=b。这样求定积分问题就分解为求和问题。这样求定积分问题就分解为求和问题。数

32、值积分数值积分n变步长辛普生法变步长辛普生法基于变步长辛普生法,基于变步长辛普生法,MATLAB给出了给出了quad函数来求定积分。该函数的调用格式为:函数来求定积分。该函数的调用格式为:I,n=quad(fname,a,b,tol,trace)qfname是被积函数名是被积函数名qa和和b分别是定积分的下限和上限。分别是定积分的下限和上限。qtol用来控制积分精度,缺省时取用来控制积分精度,缺省时取tol=0.001。qtrace控制是否展现积分过程,若取非控制是否展现积分过程,若取非0则展现积分则展现积分过程,取过程,取0则不展现,缺省时取则不展现,缺省时取trace=0。q返回参数返回参

33、数I即定积分值,即定积分值,n为被积函数的调用次数。为被积函数的调用次数。数值积分数值积分n 例例: 求定积分求定积分q(1) 建立被积函数文件建立被积函数文件fesin.m。functionf=fesin(x)f=exp(-0.5*x).*sin(x+pi/6);q(2) 调用数值积分函数调用数值积分函数quad求定积分求定积分S,n=quad(fesin,0,3*pi)qS=0.9008qn=77牛顿柯特斯法牛顿柯特斯法n基于牛顿柯特斯法,基于牛顿柯特斯法,MATLAB给出了给出了quad8函数来求定积分。函数来求定积分。n该函数的调用格式为:该函数的调用格式为: I,n=quad8(fn

34、ame,a,b,tol,trace)n该函数可以更精确地求出定积分的值,且一般该函数可以更精确地求出定积分的值,且一般情况下函数调用的步数明显小于情况下函数调用的步数明显小于quadquad函数,从函数,从而保证能以更高的效率求出所需的定积分值而保证能以更高的效率求出所需的定积分值.二重积分二重积分n二重定积分的数值求解二重定积分的数值求解n使用使用MATLAB提供的提供的dblquad函数就可以直函数就可以直接求出上述二重定积分的数值解。该函数接求出上述二重定积分的数值解。该函数的调用格式为:的调用格式为: I=dblquad(f,a,b,c,d,tol,trace)n该函数求该函数求f(x

35、,y)在在a,bc,d区域上的二区域上的二重定积分。重定积分。n参数参数tol,trace的用法与函数的用法与函数quad完全相同。完全相同。二重积分二重积分n 计算二重定积分计算二重定积分q(1)建立一个函数文件建立一个函数文件fxy.m:functionf=fxy(x,y)globalki;ki=ki+1;%ki用于统计被积函数的调用次数用于统计被积函数的调用次数f=exp(-x.2/2).*sin(x.2+y);q(2)调用调用dblquad函数求解函数求解globalki;ki=0;I=dblquad(fxy,-2,2,-1,1)kiq(3)I=1.57449318974494ki=1

36、038数值微分数值微分n数值差分与差商数值差分与差商n在在MATLAB中,没有直接提供求数值导数的中,没有直接提供求数值导数的函数,只有计算向前差分的函数函数,只有计算向前差分的函数diff,其调用,其调用格式为格式为:nDX=diff(X):计算向量计算向量X X的向前差分的向前差分,DX(i)=X(i+1)-X(i),i=1,2,n-1。nDX=diff(X,n):计算计算X的的n阶向前差分阶向前差分。线性方程组求解n直接解法直接解法q左除运算符左除运算符对于线性方程组对于线性方程组Ax=b,利用左除运算符,利用左除运算符求解:求解:x=AbqLU分解分解nL,U=lu(X):产生一个上三

37、角阵:产生一个上三角阵U和一个变和一个变换形式的下三角阵换形式的下三角阵L(行交换行交换),使之满足,使之满足X=LU。注意,这里的矩阵。注意,这里的矩阵X必须是方阵。必须是方阵。n实现实现LU分解后,线性方程组分解后,线性方程组Ax=b的解的解x=U(Lb)这样可以大大提高运算速度这样可以大大提高运算速度线性方程组求解n迭代法求解q雅可比(Jacobi)(Jacobi)q高斯赛德尔(Gauss-(Gauss-SedialSedial) )q超松弛迭代法(SOR)(SOR)迭代法求解n雅可比(Jacobi)(Jacobi)q对于线性方程组对于线性方程组Ax=b,如果,如果A A为非奇异方阵,即

38、为非奇异方阵,即det(A)0(i=1,2,n),则可将则可将A A分解为分解为A=D-L-U,其,其中中D D为对角阵,其元素为为对角阵,其元素为A A的对角元素,的对角元素,L L与与U U为为A A的下的下三角阵和上三角阵,于是三角阵和上三角阵,于是Ax=b化为:化为: x=D-1(L+U)x+D-1bq与之对应的迭代公式为:与之对应的迭代公式为:x(k+1)=D-1(L+U)x(k)+D-1b 这就是这就是Jacobi迭代公式。迭代公式。q如果序列如果序列x(k+1)收敛于收敛于x x,则,则x x必是方程必是方程Ax=bAx=b的解。的解。nJacobi迭代法的迭代法的MATLAB函

39、数文件函数文件Jacobi.m如下:如下:nfunctiony,n=jacobi(A,b,x0,eps)nifnargin=3neps=1.0e-6;nelseifnargin=epsn x0=y;n y=B*x0+f;n n=n+1;nendGauss-SedialnGauss-Serdel迭代法迭代法q在在JacobiJacobi迭代过程中,迭代公式为迭代过程中,迭代公式为 Dx(k+1)=(L+U)x(k)+bq可以改进为可以改进为 Dx(k+1)=Lx(k+1)+Ux(k)+b,q于是得到:于是得到: x(k+1)=(D-L)-1Ux(k)+(D-L)-1b 该式即为该式即为Gauss

40、-Serdel迭代公式。迭代公式。q和和JacobiJacobi迭代相比,迭代相比,Gauss-Gauss-SerdelSerdel迭代用新分迭代用新分量代替旧分量,精度会高些量代替旧分量,精度会高些nGauss-Serdel迭代法的迭代法的MATLAB函数文件函数文件gauseidel.m如下:如下:nfunction y,n=gauseidel(A,b,x0,eps)nif nargin=3n eps=1.0e-6;nelseif nargin=epsn x0=y;n y=G*x0+f;n n=n+1;nend非线性方程数值求解非线性方程数值求解n单变量非线性方程求解单变量非线性方程求解n

41、在在MATLABMATLAB中提供了一个中提供了一个fzerofzero函数,可以用来求单变函数,可以用来求单变量非线性方程的根。该函数的调用格式为:量非线性方程的根。该函数的调用格式为: z=fzero(fname,x0,tol,trace) 其中其中nfnamefname是待求根的函数文件名,是待求根的函数文件名,nx0x0为搜索的起点。一个函数可能有多个根,但为搜索的起点。一个函数可能有多个根,但fzerofzero函数只给出离函数只给出离x0x0最近的那个根。最近的那个根。ntoltol控制结果的相对精度,缺省时取控制结果的相对精度,缺省时取toltol= =epseps,ntrace

42、trace指定迭代信息是否在运算中显示,为指定迭代信息是否在运算中显示,为1 1时显示,时显示,为为0 0时不显示,缺省时取时不显示,缺省时取trace=0trace=0。单变量非线性方程求解单变量非线性方程求解n例例6.33求求f(x)在在x0=-5和和x0=1作为迭代初值的零点。作为迭代初值的零点。q先建立函数文件先建立函数文件fz.m:functionf=fz(x)f=x-1/x+5;q然后调用然后调用fzero函数求根。:函数求根。:qfzero(fz,-5)%以以-5作为迭代初值作为迭代初值ans=-5.1926qfzero(fz,1)%以以1作为迭代初值作为迭代初值ans=0.19

43、26 非线性方程组的求解非线性方程组的求解n非线性方程组的求解非线性方程组的求解n对于非线性方程组对于非线性方程组F(X)=0,用,用fsolve函数求其数值解。函数求其数值解。fsolve函数的调用格式为:函数的调用格式为:X=fsolve(fun,X0,option)其中其中nX为返回的解,为返回的解,nfun是用于定义需求解的非线性方程组的函数文件名,是用于定义需求解的非线性方程组的函数文件名,nX0是求根过程的初值,是求根过程的初值,noption为最优化工具箱的选项设定。最优化工具箱提供为最优化工具箱的选项设定。最优化工具箱提供了了20多个选项,用户可以使用多个选项,用户可以使用op

44、timset命令将它们显示命令将它们显示出来。如果想改变其中某个选项,则可以调用出来。如果想改变其中某个选项,则可以调用optimset()函数来完成。例如,函数来完成。例如,Display选项决定函数调用时中间选项决定函数调用时中间结果的显示方式,其中结果的显示方式,其中off为不显示,为不显示,iter表表示每步都显示,示每步都显示,final只显示最终结果。只显示最终结果。optimset(Display,off)将设定将设定Display选项为选项为off。n例例6.34 求下列方程组在求下列方程组在(1,1,1)附近的解并对结果附近的解并对结果进行验证。进行验证。q首先建立函数文件首

45、先建立函数文件myfun.m。functionF=myfun(X)x=X(1);y=X(2);z=X(3);F(1)=sin(x)+y+z2*exp(x);F(2)=x+y+z;F(3)=x*y*z;q在给定的初值在给定的初值x0=1,y0=1,z0=1下,调用下,调用fsolve函数求方程的根。函数求方程的根。X=fsolve(myfun,1,1,1,optimset(Display,off)X=0.0224-0.0224-0.0000 最优化问题求解最优化问题求解n无约束最优化问题求解无约束最优化问题求解在实际应用中,许多科学研究和工程计算问题都可以在实际应用中,许多科学研究和工程计算问题

46、都可以归结为一个最小化问题,如能量最小、时间最短等。归结为一个最小化问题,如能量最小、时间最短等。MATLAB提供了提供了3个求最小值的函数,它们的调用格个求最小值的函数,它们的调用格式为:式为:n求一元函数在求一元函数在(xl,x2)区间中的极小值点区间中的极小值点x和最小值和最小值fvalx,fval=fminbnd(filename,x1,x2,option):n单纯形算法求多元函数的极小值点单纯形算法求多元函数的极小值点x和最小值和最小值fvalx,fval=fminsearch(filename,x0,option)n基于拟牛顿法求多元函数的极小值点基于拟牛顿法求多元函数的极小值点x

47、和最小值和最小值fvalx,fval=fminunc(filename,x0,option):n例例6.36 求函数在区间求函数在区间(-10,1)和和(1,10)上的最小值点。上的最小值点。q首先建立函数文件首先建立函数文件fx.m: function f=f(x) f=x-1/x+5;q上述函数文件也可用一个语句函数代替:上述函数文件也可用一个语句函数代替: f=inline(x-1/x+5)q再在再在MATLAB命令窗口,输入命令:命令窗口,输入命令: fminbnd(fx,-10,-1) %求函数在求函数在(-10,-1)内的最小值点和最小值内的最小值点和最小值 fminbnd(f,1

48、,10) %求函数在求函数在(1,10)内的最小值点。注意函数名内的最小值点。注意函数名f不用加不用加n例例6.37 求函数求函数f在在(0.5,0.5,0.5)附近的最小值。附近的最小值。q建立函数文件建立函数文件fxyz.m: function f=fxyz(u) x=u(1);y=u(2);z=u(3); f=x+y.2./x/4+z.2./y+2./z;q在在MALAB命令窗口,输入命令:命令窗口,输入命令: U,fmin=fminsearch(fxyz,0.5,0.5,0.5) %求函数的最小值点和最小值求函数的最小值点和最小值有约束最优化问题求解有约束最优化问题求解nMATLAB最

49、优化工具箱提供了一个最优化工具箱提供了一个fmincon函数,专函数,专门用于求解各种约束下的最优化问题。该函数的调用门用于求解各种约束下的最优化问题。该函数的调用格式为:格式为:x,fval=fmincon(filename,x0,A,b,Aeq,beq,Lbnd,Ubnd,NonF,option)其中其中nx、fval、filename、x0和和option的含义与求最小值函的含义与求最小值函数相同。数相同。n其余参数为约束条件,参数其余参数为约束条件,参数NonF为非线性约束函数为非线性约束函数的的M文件名。文件名。n如果某个约束不存在,则用空矩阵来表示。如果某个约束不存在,则用空矩阵来

50、表示。有约束最优化问题求解有约束最优化问题求解n求解有约束最优化问题。求解有约束最优化问题。q首先编写目标函数首先编写目标函数M文件文件fop.m。functionf=fop(x)f=0.4*x(2)+x(1)2+x(2)2-x(1)*x(2)+1/30*x(1)3;q设定约束条件,调用设定约束条件,调用fmincon函数求解此约束最优化问题函数求解此约束最优化问题x0=0.5;0.5;A=-1,-0.5;-0.5,-1;b=-0.4;-0.5;lb=0;0;option=optimset;option.LargeScale=off;option.Display=off;x,f=fmincon

51、(fop,x0,A,b,lb,option)常微分方程的数值求解常微分方程的数值求解n龙格库塔法龙格库塔法q基于龙格库塔法,基于龙格库塔法,MATLAB提供了求常微分方程数值解的提供了求常微分方程数值解的函数,一般调用格式为:函数,一般调用格式为:t,y=ode23(fname,tspan,y0)t,y=ode45(fname,tspan,y0)其中其中qfname是定义是定义f(t,y)的函数文件名,该函数文件必须返回一个的函数文件名,该函数文件必须返回一个列向量。列向量。qtspan形式为形式为t0,tf,表示求解区间。表示求解区间。qy0是初始状态列向量。是初始状态列向量。qt和和y分别

52、给出时间向量和相应的状态向量分别给出时间向量和相应的状态向量n设有初值问题,试求其数值解,并与精确解相设有初值问题,试求其数值解,并与精确解相比较。比较。q(1) 建立函数文件建立函数文件funt.m。functionyp=funt(t,y)yp=(y2-t-2)/4/(t+1);q(2) 求解微分方程。求解微分方程。 t0=0;tf=10;y0=2;t,y=ode23(funt,t0,tf,y0);%求数值解求数值解y1=sqrt(t+1)+1; %求精确解求精确解qy为数值解,为数值解,y1为精确值,显然两者近似。为精确值,显然两者近似。n已知一个二阶线性系统的微分方程,绘制系统的时间响已

53、知一个二阶线性系统的微分方程,绘制系统的时间响应曲线和相平面图。应曲线和相平面图。n函数函数ode23和和ode45是对一阶常微分方程组设计的,因此是对一阶常微分方程组设计的,因此对高阶常微分方程,需先将它转化为一阶常微分方程组,对高阶常微分方程,需先将它转化为一阶常微分方程组,即状态方程。即状态方程。q建立一个函数文件建立一个函数文件sys.m:functionxdot=sys(t,x)xdot=-2*x(2);x(1);q取取t0=0,tf=20,求微分方程的解求微分方程的解:t0=0;tf=20;t,x=ode45(sys,t0,tf,1,0);t,xsubplot(1,2,1);plot(t,x(:,2);%解的曲线,即解的曲线,即t-xsubplot(1,2,2);plot(x(:,2),x(:,1)%相平面曲线,即相平面曲线,即x-xaxisequal

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号