《数学建模软件求解入门幻灯片.ppt》由会员分享,可在线阅读,更多相关《数学建模软件求解入门幻灯片.ppt(83页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数学建模软件求解入门第1页,共83页,编辑于2022年,星期六Matlab简介简介第2页,共83页,编辑于2022年,星期六n1997年仲春,MATLAB5.0版问世,紧接着是5.1、5.2,以及和1999年春的5.3版。与 4.x相比,现今的MATLAB拥有更丰富的数据类型和结构、更友善的面向对象、更加快速精良的图形可视、更广博的数学和数据分析资源、更多的应用开发工具。n 发展至今,Matlab7.0版已经问世Matlab简介简介第3页,共83页,编辑于2022年,星期六Matlab简介简介第4页,共83页,编辑于2022年,星期六nMatlab软件主要由三部分组成:Matlab主包,Sim
2、ulink和工具箱Matlab软件的组成软件的组成第5页,共83页,编辑于2022年,星期六第第1章章 矩阵及其基本运算矩阵及其基本运算n1实数值矩阵输入nMATLAB的强大功能之一体现在能直接处理向量或矩阵。当然首要任务是输入待处理的向量或矩阵。n不管是任何矩阵(向量),我们可以直接按行方式输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔,且空格个数不限;不同的行用分号(;)分隔。所有元素处于一方括号()内;当矩阵是多维(三维以上),且方括号内的元素是维数较低的矩阵时,会有多重的方括号。如:1)Time=11 12 1 2 3 4 5 6 7 8 9 10Time=11 12 1
3、2 3 4 5 6 7 8 9 102)A=1 2 3;2 3 4;3 4 5A=1 2 32 3 43 4 53)Null_M=%生成一个空矩阵4)A=A;1 2 3,1;2;3;4第6页,共83页,编辑于2022年,星期六特殊矩阵的生成特殊矩阵的生成命令命令 全零阵全零阵函数函数 zeros格式 B=zeros(n)%生成nn全零阵B=zeros(m,n)%生成mn全零阵B=zeros(m n)%生成mn全零阵B=zeros(size(A)%生成与矩阵A相同大小的全零阵命令命令 单位阵单位阵函数函数 eye格式 Y =eye(n)%生成nn单位阵Y =eye(m,n)%生成mn单位阵Y =
4、eye(size(A)%生成与矩阵A相同大小的单位阵第7页,共83页,编辑于2022年,星期六命令命令 均匀分布随机矩阵均匀分布随机矩阵函数 rand 格式 Y=rand(n)%生成nn随机矩阵,其元素在(0,1)内Y=rand(m,n)%生成mn随机矩阵命令命令 全全1阵阵函数 ones格式 Y=ones(n)%生成nn全1阵Y=ones(m,n)%生成mn全1阵Y=ones(m n)%生成mn全1阵Y=ones(size(A)%生成与矩阵A相同大小的全1阵思考:如何产生思考:如何产生20至至50间的随机数?间的随机数?第8页,共83页,编辑于2022年,星期六向量生成方法向量生成方法第9页
5、,共83页,编辑于2022年,星期六第10页,共83页,编辑于2022年,星期六2.定数线性采样法该采样法在给定的范围内确定等距离的一个样本数。该方法很实用,特别适合定义大的数组例如:在例如:在 之间取之间取5个点个点linspace(-pi,pi,5)3.利用随机数发生器定义一维数组例如:产生5个(0,1)均匀分布随机数,并定义一维数组x。x=rand(1,5)第11页,共83页,编辑于2022年,星期六Matlab常用命令常用命令第12页,共83页,编辑于2022年,星期六Matlab常用命令常用命令第13页,共83页,编辑于2022年,星期六n若要检视现存於工作空间(若要检视现存於工作空
6、间(Workspace)的变数,可键入)的变数,可键入who:nwho nYour variables are:ntestfile x n这些是由使用者定义的变数。若要知道这些变数的详细资料,可键入:这些是由使用者定义的变数。若要知道这些变数的详细资料,可键入:nwhos nName Size Bytes Class nA 2x4 64 double array nB 4x2 64 double array nans 1x1 8 double array nx 1x1 8 double array ny 1x1 8 double array nz 1x1 8 double array nGra
7、nd total is 20 elements using 160 bytes n使用使用clear可以删除工作空间的变数:可以删除工作空间的变数:nclear A nA n?Undefined function or variable A.Matlab常用命令应用第14页,共83页,编辑于2022年,星期六n 变量与常量变量与常量n变量是任何程序设计语言的基本要素之一,MATLAB语言当然也不例外。与常规的程序设计语言不同的MATLAB并不要求事先对所使用的变量进行声明,也不需要指定变量类型,MATLAB语言会自动依据所赋予变量的值或对变量所进行的操作来识别变量的类型。在赋值过程中如果赋值变
8、量已存在时,MATLAB语言将使用新值代替旧值,并以新值类型代替旧值类型。n在MATLAB语言中变量的命名应遵循如下规则:n(1)变量名区分大小写。n(2)变量名长度不超31位,第31个字符之后的字符将被MATLAB语言所忽略。n(3)变量名以字母开头,可以是字母、数字、下划线组成,但不能使用标点。n与其他的程序设计语言相同,在MATLAB语言中也存在变量作用域的问题。在未加特殊说明的情况下,MATLAB语言将所识别的一切变量视为局部变量,即仅在其使用的M文件内有效。若要将变量定义为全局变量,则应当对变量进行说明,即在该变量前加关键字global。一般来说全局变量均用大写的英文字符表示。nMA
9、TLAB语言本身也具有一些预定义的变量,这些特殊的变量称为常量。第15页,共83页,编辑于2022年,星期六n另外MATLAB有些永久常数(Permanent constants),虽然在工作空间中看不 到,但使用者可直接取用,例如:npi nans=n3.1416 n=n下表即为MATLAB常用到的永久常数。n 小整理:MATLAB的永久常数 n i或j:基本虚数单位(即)n eps:系统的浮点(Floating-point)精确度 n inf:无限大,例如1/0 n nan或NaN:非数值(Not a number),例如0/0 n pi:圆周率 p(=3.1415926.)n realm
10、ax:系统所能表示的最大数值 n realmin:系统所能表示的最小数值 n nargin:函数的输入引数个数 n nargout:函数的输出引数个数 第16页,共83页,编辑于2022年,星期六特别注意第17页,共83页,编辑于2022年,星期六实现Matlab与word的无缝连接步骤:1)在命令窗口输入notebook-setup 2)选择word版本 3)在命令窗口输入notebook 4)word中输入文字以及Matlab语句,全部选中,选中下拉菜单,点选define input cell,再选择evaluate cell第18页,共83页,编辑于2022年,星期六作出泊松分布的密度图
11、形x=0:20;y=poisspdf(x,5);stem(x,y)第19页,共83页,编辑于2022年,星期六将硬盘的数据读入变量现在有一组数据保存在three.xls文件中,要在Matlab中读入这组数据a=xlsread(e:three.xls)如果保存在文件soil.txt中只要输入a=load(e:soil.txt)第20页,共83页,编辑于2022年,星期六矩阵的简单运算矩阵的简单运算结果显示:结果显示:A+B=9 2 74 7 105 12 8AB=-7 0 -5-2 -3 -4-3 -6 4运算符:“”和“”分别为加、减运算符。运算规则:对应元素相加、减,即按线性代数中矩阵的“十
12、”,“一”运算进行。加、减运算加、减运算例例A=1,1,1;1,2,3;1,3,6B=8,1,6;3,5,7;4,9,2AB=A+BA-=A-B第21页,共83页,编辑于2022年,星期六运算符:*运算规则:按线性代数中矩阵乘法运算进行,即放在前面的矩阵的各行元素,分别与放在后面的矩阵的各列元素对应相乘并相加。1两个矩阵相乘乘法乘法例例X=2 3 4 5;1 2 2 1;Y=0 1 1;1 1 0;0 0 1;1 0 0;Z=X*Y结果显示为:结果显示为:Z=8 5 6 3 3 3 第22页,共83页,编辑于2022年,星期六上例中:a=2*X则显示:a=4 6 8 102 4 4 2矩阵的数
13、乘:数乘矩阵矩阵的数乘:数乘矩阵维数相同的两个向量的点乘。数组乘法:A.*B表示A与B对应元素相乘。向量的点乘(内积)向量的点乘(内积)需要注意的是点乘与矩阵的乘法是有区别的需要注意的是点乘与矩阵的乘法是有区别的第23页,共83页,编辑于2022年,星期六例:a=1 2 3;4 2 6;7 4 9b=4;1;2;x=ab则显示:x=-1.5000 2.00000.5000如果a为非奇异矩阵,则ab和b/a可通过a的逆矩阵与b阵得到:ab=inv(a)*b b/a=b*inv(a)数组除法:A./B表示A中元素与B中元素对应相除。矩阵除法矩阵除法Matlab提供了两种除法运算:左除()和右除(/
14、)。一般情况下,x=ab是方程a*x=b的解,而x=b/a是方程x*a=b的解。同样此时也要注意除法和点除之间的区别同样此时也要注意除法和点除之间的区别第24页,共83页,编辑于2022年,星期六运算符:运算规则:(1)当A为方阵,P为大于0的整数时,AP表示A的P次方,即A自乘P次;P为小于0的整数时,AP表示A-1的P次方。(4)标量的数组乘方P.A,标量的数组乘方定义为数组乘方:A.P:表示A的每个元素的P次乘方。矩阵乘方矩阵乘方矩阵的乘方要求矩阵矩阵的乘方要求矩阵A是方阵是方阵第25页,共83页,编辑于2022年,星期六例 A=1 2 3;4 5 6;7 8 9A=1 2 3 4 5
15、6 7 8 9 D=det(A)D=0运算符:运算规则:若矩阵A的元素为实数,则与线性代数中矩阵的转置相同。若A为复数矩阵,则A转置后的元素由A对应元素的共轭复数构成。若仅希望转置,则用如下命令:A.。矩阵转置矩阵转置方阵的行列式方阵的行列式函数 det格式 d=det(X)%返回方阵X的行列式的值第26页,共83页,编辑于2022年,星期六函数 inv格式 Y=inv(X)%求方阵X的逆矩阵。若X为奇异阵或近似奇异阵,将给出警告信息。例1-43 求的逆矩阵方法一A=1 2 3;2 2 1;3 4 3;Y=inv(A)或Y=A(-1)则结果显示为 Y=1.0000 3.0000 -2.0000
16、 -1.5000 -3.0000 2.5000 1.0000 1.0000 -1.0000方法二:由增广矩阵进行初等行变换B=1,2,3,1,0,0;2,2,1,0,1,0;3,4,3,0,0,1;C=rref(B)%化行最简形X=C(:,4:6)%取矩阵C中的A(-1)部分矩阵求逆矩阵求逆命令命令 逆逆第27页,共83页,编辑于2022年,星期六子矩阵的提取和运算子矩阵的提取和运算使用命令:使用命令:BA(v1,v2),其中,其中,v1向量表示子矩阵要包含的行号向量表示子矩阵要包含的行号构成的向量,构成的向量,v2表示要包含的列号构成的向量。若表示要包含的列号构成的向量。若v1为:,则表示要
17、为:,则表示要提取所有的行,同样使用列号。关键词提取所有的行,同样使用列号。关键词end表示最后一行(或列)表示最后一行(或列)例如:例如:B1A(1:2:end,:)表示提取表示提取A矩阵的全部奇数行、所有列矩阵的全部奇数行、所有列B2=A(3,2,1,2,3,4)表示提取表示提取A矩阵矩阵3,2,1行、行、2,3,4列构成子矩阵。列构成子矩阵。B3=A(:,end:-1:1)表示将表示将A矩阵左右翻转,即最后一列排在最前面。矩阵左右翻转,即最后一列排在最前面。第28页,共83页,编辑于2022年,星期六 A(:,2)=%删除第二列(:代表所有行)删除第二列(:代表所有行)例例 A=1 2
18、3 4 5 6 7 8 9 10 11 12 我们可以对矩阵进行各种处理:我们可以对矩阵进行各种处理:A(2,3)=5%改变位於第二列,第三行的元素值改变位於第二列,第三行的元素值 A=1 2 3 4 5 6 5 8 9 10 11 12 B=A(2,1:3)%取出部份矩阵取出部份矩阵B B=5 6 5 A=A B%将将B转置後以行向量并入转置後以行向量并入A A=1 2 3 4 5 5 6 5 8 6 9 10 11 12 5 第29页,共83页,编辑于2022年,星期六A=A;4 3 2 1%加入第四行加入第四行 A=1 3 4 5 5 5 8 6 9 11 12 5 4 3 2 1 A(
19、1 4,:)=%删除第一和第四行(:代表所有列)删除第一和第四行(:代表所有列)A=5 5 8 6 9 11 12 5第30页,共83页,编辑于2022年,星期六数组操作函数数组操作函数Repmat(D,1,3)命令:在水平方向)命令:在水平方向“铺放铺放”三个矩阵三个矩阵D1 0 00 1 00 0 1则则Repmat(D,1,3)结果为)结果为ans=1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1Diag(A,1)命令:对矩阵命令:对矩阵A取第一上对角元素取第一上对角元素可运行可运行diag(A,-1),查看运行结果查看运行结果T
20、riu(A)命令:取命令:取A的上三角阵;的上三角阵;tril(A)命令:取命令:取A的下三角阵的下三角阵第31页,共83页,编辑于2022年,星期六矩阵的逻辑运算矩阵的逻辑运算矩阵的比较运算:用表示等于关系,用矩阵的比较运算:用表示等于关系,用=表示大于等于关系,用表示大于等于关系,用=表示不等于关系等。表示不等于关系等。A=1 2 3;4,5,6;7,8,0Find(A=5)找出矩阵中元素大于等于找出矩阵中元素大于等于5的下标的下标ans=3 5 6 8该函数先将该函数先将A按列构成列向量,然后判断哪些元素按列构成列向量,然后判断哪些元素大于等于大于等于5,返回其下标。,返回其下标。i,j
21、=find(A=5);i,j同时返回行和列坐标同时返回行和列坐标all(A=5)判断判断A矩阵的某列元素是否全部大于等于矩阵的某列元素是否全部大于等于5,是返回,是返回1,否则为,否则为0any(A=5)你能猜测表示什么含义吗?你能猜测表示什么含义吗?第32页,共83页,编辑于2022年,星期六nabs(x):纯量的绝对值或向量的长度 nangle(z):复数z的相角(Phase angle)nsqrt(x):开平方 n real(z):复数z的实部 nimag(z):复数z的虚部 nconj(z):复数z的共轭复数 nround(x):四舍五入至最近整数 nfix(x):无论正负,舍去小数至
22、最近整数 nfloor(x):地板函数,即舍去正小数至最近整数 nceil(x):天花板函数,即加入正小数至最近整数 nrat(x):将实数x化为分数表示 nrats(x):将实数x化为多项分数展开 nsign(x):符号函数(Signum function)。n当x0时,sign(x)=1。nrem(x,y):求x除以y的馀数 ngcd(x,y):整数x和y的最大公因数 nlcm(x,y):整数x和y的最小公倍数 MATLAB常用的基本数学函数常用的基本数学函数第33页,共83页,编辑于2022年,星期六第第2章章 绘图与图形处理绘图与图形处理n命令1 plotn功能 线性二维图。在线条多于
23、一条时,若用户没有指定使用颜色,则plot循环使用由当前坐标轴颜色顺序属性(current axes ColorOrder property)定义的颜色,以区别不同的线条。在用完上述属性值后,plot又循环使用由坐标轴线型顺序属性(axes LineStyleOrder property)定义的线型,以区别不同的线条。n用法 plot(X,Y)当X,Y均为实数向量,且为同维向量(可以不是同型向量),X=x(i),Y=y(i),则plot(X,Y)先描出点(x(i),y(i),然后用直线依次相连。二维图形的绘制二维图形的绘制1 散点图的绘制散点图的绘制画散点图一般使用命令画散点图一般使用命令sc
24、atter,其调用格式为:,其调用格式为:scatter(x,y)2 二维曲线的绘制二维曲线的绘制第34页,共83页,编辑于2022年,星期六plot(X1,Y1,LineSpec1,X2,Y2,LineSpec2)将按顺序分别画出由三参数定义Xi,Yi,LineSpeci的线条。其中参数LineSpeci指明了线条的类型,标记符号,和画线用的颜色。例7-1 t=0:pi/20:2*pi;plot(t,t.*cos(t),-.r*)hold on plot(exp(t/100).*sin(t-pi/2),-mo)plot(sin(t-pi),:bs)hold off第35页,共83页,编辑于2
25、022年,星期六绘图中的一些线型和颜色定义符-:-.线型实线(缺省值)划线点线点划线定义符R(red)G(green)b(blue)c(cyan)颜色红色绿色兰色青色定义符M(magenta)y(yellow)k(black)w(white)颜色品红黄色黑色白色第36页,共83页,编辑于2022年,星期六特殊标记定义符+o(字母)*.x标记类型加号小圆圈星号实点交叉号定义符dv=1 y=10;elseif x-1&x1 y=0;else y=-10;end编程如下编程如下Matlab ifprom第62页,共83页,编辑于2022年,星期六条件语句条件语句第63页,共83页,编辑于2022年,
26、星期六条件语句条件语句 t=-pi:0.1:pi;trigname=input(input trig function name:);switch trigname case sin plot(t,sin(t)case cos plot(t,cos(t)case tan plot(t,tan(t)otherwise breakendMatlab switchprom第64页,共83页,编辑于2022年,星期六【*例8.1-1】通过M脚本文件,画出下列分段函数所表示的曲面。(1)编编写写M脚本文件的步脚本文件的步骤骤图 8.1-1-1 MATLAB Editor/Debugger 窗口M文件文件
27、M文件有两种形式:一是命令文件;另一种是文件有两种形式:一是命令文件;另一种是M函数文件。函数文件。第65页,共83页,编辑于2022年,星期六n点击点击MATLAB指令窗工具条上的指令窗工具条上的New File图标图标,就可打开如图,就可打开如图8.1-1-1所所示的示的MATLAB文件编辑调试器文件编辑调试器MATLAB Editor/Debugger。其窗口名为。其窗口名为untitled,用户即可在空白窗口中编写程序。比如输入如下一段程序,用户即可在空白窗口中编写程序。比如输入如下一段程序nzx81.mn%zx81.mThis is my first example.na=2;b=2
28、;%nclf;nx=-a:0.2:a;y=-b:0.2:b;nfor i=1:length(y)n for j=1:length(x)n if x(j)+y(i)1n z(i,j)=0.5457*exp(-0.75*y(i)2-3.75*x(j)2-1.5*x(j);n elseif x(j)+y(i)=-1n z(i,j)=0.5457*exp(-0.75*y(i)2-3.75*x(j)2+1.5*x(j);M脚本文件脚本文件第66页,共83页,编辑于2022年,星期六n else z(i,j)=0.7575*exp(-y(i)2-6.*x(j)2);n endn endnendnaxis(
29、-a,a,-b,b,min(min(z),max(max(z);ncolormap(flipud(winter);surf(x,y,z);n点击编辑调试器工具条图标,在弹出的Windows标准风格的“保存为”对话框中,选择保存文件夹,键入新编文件名(如zx81),点动【保存】键,就完成了文件保存。n(2)运行文件)运行文件n使zx81.m所在目录成为当前目录,或让该目录处在MATLAB的搜索路径上n然后运行以下指令,便可得到图形。nzx81 M脚本文件脚本文件Matlab zx81第67页,共83页,编辑于2022年,星期六M脚本文件脚本文件第68页,共83页,编辑于2022年,星期六M函数文
30、件函数文件M函数是由函数是由function语句引导的,其基本结构如下:语句引导的,其基本结构如下:1)function返回变量列表返回变量列表函数名函数名(输入变量列表输入变量列表)注视说明语句段,由引导注视说明语句段,由引导输入、返回变量格式的检测输入、返回变量格式的检测函数体语句函数体语句2)还可以运用)还可以运用nline()函数来直接编写程序,其调用格式为:函数来直接编写程序,其调用格式为:fun=inline(函数内容函数内容,自变量列表,自变量列表)例如:例如:可以用可以用f=inline(sin(x.2+y.2),x,y)直接定义。直接定义。3)还可以借助匿名函数,其定义形式更
31、为简洁)还可以借助匿名函数,其定义形式更为简洁,调用格式如下:调用格式如下:f=(变量列表变量列表)函数内容函数内容例如:例如:f=(x,y)sin(x.2+y.2),第69页,共83页,编辑于2022年,星期六练习:应用上面给出的三个定义函数的方法计算函数练习:应用上面给出的三个定义函数的方法计算函数在在(2,3)处的函数值处的函数值第70页,共83页,编辑于2022年,星期六M函数文件函数文件设可逆方阵设可逆方阵A,试编写同时求,试编写同时求 的的M函数文件。函数文件。在编辑窗口输入以下的代码在编辑窗口输入以下的代码Function da,a2,inva,traa=comp4(x)da=d
32、et(x);a2=x2;inva=inv(x);traa=x保存该文件,文件名为保存该文件,文件名为comp4.M在命令窗口输入下列语句:在命令窗口输入下列语句:M文件的调用文件的调用A1 2;5 8;comp4(A)Matlab comp4第71页,共83页,编辑于2022年,星期六M函数文件函数文件第72页,共83页,编辑于2022年,星期六n题目1:Fibonacci数组的元素满足Fibonacci 规则:,;且 。现要求该数组中第一个大于10000的元素。n用for循环指令来寻求Fibonacc数组中第一个大于10000的元素。n n题目2:利用while循环来计算1!+2!+50!两
33、个编程的小例子两个编程的小例子第73页,共83页,编辑于2022年,星期六na(1)=1;a(2)=1;i=2;nwhile a(i)=10000n a(i),n break;%跳出所在的一级循环。跳出所在的一级循环。n end;nend,i nans=n 10946ni=n21 两个编程的小例子两个编程的小例子第75页,共83页,编辑于2022年,星期六n题2编程:nsum=0;i=1;nwhile i51nprd=1;nj=1;nwhile j=in prd=prd*j;n j=j+1;nendnsum=sum+prd;nendndisp(1!+2!+50!的和为:)nsum两个编程的小例
34、子两个编程的小例子第76页,共83页,编辑于2022年,星期六多项式拟合例如:对下表数据进行多项式拟合例如:对下表数据进行多项式拟合 x123456789y9763-125720 x=1 2 3 4 5 6 7 8 9y=9 7 6 3-1 2 5 7 20;p=polyfit(x,y,3);xi=0:0.2:10;yi=polyval(p,xi);plot(xi,yi,x,y,r*)第77页,共83页,编辑于2022年,星期六函数插值第78页,共83页,编辑于2022年,星期六第79页,共83页,编辑于2022年,星期六第80页,共83页,编辑于2022年,星期六第81页,共83页,编辑于2
35、022年,星期六第82页,共83页,编辑于2022年,星期六1)有一个)有一个 矩阵矩阵,编程求出其最大值及其所处的位置编程求出其最大值及其所处的位置.今天的作业今天的作业2)编程求)编程求3)有一函数)有一函数 ,写一程序写一程序,输入自变量的值输入自变量的值,输出函数值输出函数值.4)在在word文档中直接计算完成:文档中直接计算完成:)生成向量生成向量a=1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 12)生成矩阵生成矩阵b,b的每行元素就是向量的每行元素就是向量a,矩阵,矩阵b为为17行行17列的方阵列的方阵3)将)将b的第三行元素去掉的第三行元素去掉第83页,共83页,编辑于2022年,星期六