




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数学建模数学建模电子教案电子教案重庆邮电大学重庆邮电大学数理学院数理学院沈世云沈世云第一节第一节 MATLAB简介简介n什么是什么是 MATLAB?nMATLAB 能干什么能干什么?n掌握掌握 MATLAB n运用实例运用实例重庆邮电大学重庆邮电大学-数学建模数学建模学习 MATLABn什么是什么是 MATLAB?nMATLAB 能干什么能干什么?n掌握掌握 MATLAB n运用实例运用实例重庆邮电大学重庆邮电大学-数学建模数学建模什么是 MATLAB?1 .MATLAB 代表MATrix LABoratory它的首创者是美国新墨西哥大学计算机系的系主任Cleve Moler博士,他在教授线性
2、代数课程发现其他言语很不方便,篇构思开发了MATLAB。最初采用FORTRAN言语编写,20世纪80年代后出现了MATLAB的第二版,全部采用C言语编写.1984年Moler博士和一批数学家及软件专家创建了MathWorks公司,专门开发MATLAB。1993年出现了微机版,到2019年是6.5版重庆邮电大学重庆邮电大学-数学建模数学建模2 .一种演草纸式的科学计算言语3 .MATLAB 是一高性能的技术计算言语. 强大的数值计算和工程运算功能符号计算功能强大的科学数据可视化才干 多种工具箱 重庆邮电大学重庆邮电大学-数学建模数学建模MATLAB 能干什么?MATLAB可以进展:数学计算、算法
3、开发、数据采集建模、仿真、原型 数据分析、开发和可视化科学和工程图形运用程序的开发,包括图形用户界面的创建。MATLAB广泛运用于:数值计算、图形处置、符号运算、数学建模、系统辨识、小波分析、实时控制、动态仿真等领域。重庆邮电大学重庆邮电大学-数学建模数学建模掌握 MATLAB MATLAB的构成:的构成:MATLAB开发环境:进展运用研讨开发的交互式平台开发环境:进展运用研讨开发的交互式平台MATLAB 数学与运算函数库:用于科学计算的函数数学与运算函数库:用于科学计算的函数MATLAB 言语:进展运用开发的编程工具言语:进展运用开发的编程工具图形化开发:二维、三维图形开发的工具图形化开发:
4、二维、三维图形开发的工具运用程序接口运用程序接口 (API):用于与其他预言混编:用于与其他预言混编面向专门领域的工具箱:小波工具箱、神经网络工具箱、面向专门领域的工具箱:小波工具箱、神经网络工具箱、信号处置工具箱、图像处置工具箱、模糊逻辑工具箱、信号处置工具箱、图像处置工具箱、模糊逻辑工具箱、优化工具箱、鲁棒控制工具箱等几十个不同运用的工优化工具箱、鲁棒控制工具箱等几十个不同运用的工具箱。具箱。重庆邮电大学重庆邮电大学-数学建模数学建模开发环境 包括:命令窗口、图形窗口、编辑窗口、包括:命令窗口、图形窗口、编辑窗口、协助窗口。协助窗口。重庆邮电大学重庆邮电大学-数学建模数学建模命令窗口n可在
5、提示符后输入交互式命令可在提示符后输入交互式命令 n结果会自动的产生结果会自动的产生n例如:例如:MATLAB prompt () and cursor (|)command (typed at prompt)MATLAB output重庆邮电大学重庆邮电大学-数学建模数学建模图形窗口在窗口中输入:Plot(1,2,4,9,16,1,2,3,4,5)MATLAB 划出如以下图形:编辑窗口n用来创建和修正M-files (MATLAB 脚本)协助窗口重庆邮电大学重庆邮电大学-数学建模数学建模The MATLAB Language MATLAB 言语的特点言语的特点Matlab的根本数据单元是不需
6、指定维数的矩的根本数据单元是不需指定维数的矩阵。阵。Matlab的一切计算都是经过双精度进展的,的一切计算都是经过双精度进展的,在内存中的数都是双精度的。在内存中的数都是双精度的。double 是一个双精度浮点数,每个存储的双是一个双精度浮点数,每个存储的双精度数用精度数用64位。位。char用于存储字符,每个存储的字符用用于存储字符,每个存储的字符用16位。位。 重庆邮电大学重庆邮电大学-数学建模数学建模程序程序M文件与文件与m函数函数图形显示图形显示流程控制流程控制其它输出其它输出函数函数语句语句变量变量各种运算符各种运算符MATLABMATLAB的程序构成:的程序构成:重庆邮电大学重庆邮
7、电大学-数学建模数学建模常变量及其命名规那么常变量及其命名规那么n变量名可以有数字、字母、下划线构成;变量名可以有数字、字母、下划线构成;n变量的首字符必需是字母;变量的首字符必需是字母;n区分变量名的大小写区分变量名的大小写n每个变量名最长只能包含每个变量名最长只能包含19个字符。个字符。重庆邮电大学重庆邮电大学-数学建模数学建模一. 矩阵:1.矩阵的建立与表示法:在命令窗口中输入:A=1,2,3;4,5,6;7,8,9 可以得到: A = 1 2 3 4 5 6 7 8 9假设要显示整行或整列,那么可以用(:)冒号来表示。冒(:)代表矩阵中行(ROWS)或列(COLUMNS)的全部。例如执
8、行命令:A(:,2),就会显示第2列的全部,结果为: ans = 2 5 8重庆邮电大学重庆邮电大学-数学建模数学建模n其他特殊矩阵的生成方法: n1、eye (m,n)或eye (m) 产生m*n 或 m*m的单位矩阵。例如:n eye (3,4)与eye (3)分别产生如下矩阵:n 1 0 0 0 1 0 0n 0 1 0 0 0 1 0n 0 0 1 0 0 0 1n2、zeros (m,n) 或 zeros (m) 产生m*n 或m*m 的零矩阵。例如: zeros (3,4) 与zeros (3) 分别产生如下矩阵:n 0 0 0 0 0 0 0n 0 0 0 0 0 0 0n 0
9、0 0 0 0 0 0重庆邮电大学重庆邮电大学-数学建模数学建模3、ones (m,n) 或ones (m) 产生m*n或m*m的全部元素为1的矩 阵。例如:ones (3,4)与ones(3)分别产生如下矩阵: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12.常用矩阵函数: 1、d=eig (A) 前往矩阵A的特征值所组成的列向量; v,d=eig (A) 前往分别由矩阵A的特征向量和特征值以其为主对角线元素,其他元素为零的两个矩阵。 例如执行命令:v,d=eig (A) 结果为:重庆邮电大学重庆邮电大学-数学建模数学建模 v = d = 0.2320
10、0.7858 0.4082 16.1168 0 0 0.5253 0.0868 -0.8165 0 -1.1168 0 0.8187 -0.6123 0.4082 0 0 -0.0000 其中v (:,i) 为d (i,i)所对应的特征向量。 2、det (A) 计算行列式A的值。例如:det (A) 结果为: ans = 0重庆邮电大学重庆邮电大学-数学建模数学建模 3、expm (A) 对矩阵A求幂。例如:expm (A) 结果为: ans = 1.0e+006 * 1.1189 1.3748 1.6307 2.5339 3.1134 3.6929 3.9489 4.8520 5.7552
11、4、inv (A) 求矩阵A的逆。例如:inv (A) 结果为: Warning: Matrix is close to singular or badly scaled.Results may be inaccurate. RCOND = 2.055969e-018.ans = 1.0e+016 * -0.4504 0.9007 -0.4504 0.9007 -1.8014 0.9007 -0.4504 0.9007 -0.4504重庆邮电大学重庆邮电大学-数学建模数学建模5、orth (A) 前往对应于A的正交化矩阵。例如:orth (A) 结果为: ans = 0.2148 0.8872
12、 0.5206 0.2496 0.8263 -0.38796、poly (A) 假设A为一矩阵,那么前往A的特征多项式。例如:poly (A) 结果为: ans = 1.0000 -15.0000 -18.0000 -0.0000 假设A为一向量,那么前往以A的元素为根的特征多项式。例如: r=1,2,3; p= poly (r) 结果为: p = 1 -6 11 -67、rank (A) 计算矩阵A的秩。例如:r=rank (A) 结果为:r = 2 重庆邮电大学重庆邮电大学-数学建模数学建模3.矩阵的四那么运算符号: 加 “+ 减 “ 乘 “* 除 “/ 共轭转置 “ 非共轭转置 “.例如
13、:b=1+2i;3+4ib = 1.0000 + 2.0000i 3.0000 + 4.0000ibans = 1.0000 - 2.0000i 3.0000 - 4.0000ib.ans = 1.0000 + 2.0000i 3.0000 + 4.0000i重庆邮电大学重庆邮电大学-数学建模数学建模4.矩阵分解: 1、q,r=qr (A) 将矩阵A做正交化分解,使得A=q*r。q为单位矩阵 (unitary matrix),其范数norm为1。r为对角化的上三角矩阵。例如: q,r=qr(A) q = -0.1231 0.9045 0.4082 -0.4924 0.3015 -0.8165
14、-0.8616 -0.3015 0.4082 r = -8.1240 -9.6011 -11.0782 0 0.9045 1.8091 0 0 -0.0000 norm(q) ans = 1.0000重庆邮电大学重庆邮电大学-数学建模数学建模2、L,U=lu (A) 将矩阵A做对角线分解,使得A=L*U,L为下三角矩阵lower triangular matrix,U为上三角矩阵(upper triangular matrix)。 例如: L,U=lu(A) L = 0.1429 1.0000 0 0.5714 0.5000 1.0000 1.0000 0 0 U = 7.0000 8.000
15、0 9.0000 0 0.8571 1.7143 0 0 0.0000重庆邮电大学重庆邮电大学-数学建模数学建模二、多项式: 多项式是用向量方式来表示,从最右边算起,第一个为0阶系数,第二个为1阶系数,依次类推。例如一个一元三次多项式:4x3+3x2+2x+1 用4 3 2 1来表示。1.多项式的运算: 1、乘:conv指令执行多项式的相乘运算,指令格式为:z=conv (x,y) 例如: x=1 3 5; y=2 4 6; z=conv(x,y) z = 2 10 28 38 30重庆邮电大学重庆邮电大学-数学建模数学建模假设要对两个以上的多项式进展相乘,以反复运用conv指令,例如:x,y
16、同上conv(conv(x,y),x) ans = 2 16 68 172 284 280 1502、分解:与1相反,用deconv指令,其指令格式为:z,r=deconv (x,y)表示x除以 y商为z,余数为r。例如: z,r=deconv(z,x) z = 2 4 6 r = 0 0 0 0 0重庆邮电大学重庆邮电大学-数学建模数学建模3、求根:roots指令用于求多项式的根。例如:fx=1 3 2; rootoffx=roots(fx) rootoffx = -2 -1 4、polyval (p,x) 计算多项式p在x出的值,其中x可以是点或向量或矩阵。 例如: p = 1 -6 11
17、 -6; x=1; p1=polyval (p,x) 结果为: p1 = 0 x=1,2,3; p2=polyval (p,x) 结果为: p2 = 0 0 0重庆邮电大学重庆邮电大学-数学建模数学建模 x=A; p3=polyval (p,x) 结果为:结果为: p3 = 0 0 0 6 24 60 120 210 336 5、polyder (p) 求求p的微分多项式。的微分多项式。 例例如:如: p=1 -6 11 -6; dp=polyder(p) dp = 3 -12 11重庆邮电大学重庆邮电大学-数学建模数学建模 6、r,p,k=residue (x,y) 求x/y的部分因式分解。
18、假设多项式x,y都没有重根,那么可把x/y的比值表示为x/y=r1/(s-p1)+r2/ (s-p2)+.+rn/ (s-pn)+ks例如 用residue指令求x/(x2+3x+2)的部分因式分解: x=1 0; y=1 3 2; r,p,k=residue(x,y) r = 2 -1 p = -2 -1 k = 重庆邮电大学重庆邮电大学-数学建模数学建模n当输入三个参数 r,p,k 时,该函数又会生成原来的函数。例如:n ?x,y=residue(r,p,k)n x =n 1 0n y =n 1 3 2重庆邮电大学重庆邮电大学-数学建模数学建模三 符号变量、符号表达式、笼统函数: 函数sy
19、m用于生成符号变量和符号表达式,如: x=sym(x) a=sym(alpha)分别创建变量x, alpha f=sym(a*x2+b*x+c)创建变量表达式f ,但要留意此式并没有自动创建变量a, b, c, x。可以用函数syms对多个变量同时定义,如 : syms a b c x 函数sym也可以用来表示确定的函数,如 f=sym (f(x) 生成函数f (x) 。重庆邮电大学重庆邮电大学-数学建模数学建模四 常见符号计算:1.微分:diff是求微分最常用的函数。其输入参数既可以是函数表达式,也可以是符号矩阵。Diff (f, x, n)表示对f关于x求n阶导数。例如:1).下面程序段将
20、生成表达式sin (ax), 并分别对其中的x和a求导。 ?syms a x ?f=sin(a*x); ?df=diff(f,x) df = cos(a*x)*a ?dfa=diff(f,a) dfa = cos(a*x)*x重庆邮电大学重庆邮电大学-数学建模数学建模2、假设输入参数为矩阵,将对矩阵中的每个元素求导。 ?syms a x ?A=-sin(a*x),sin(a*x);cos(a*x),cos(a*x) A = -sin(a*x), sin(a*x) cos(a*x), cos(a*x) ?dy=diff(A,x) dy = -cos(a*x)*a, cos(a*x)*a -sin
21、(a*x)*a, -sin(a*x)*a重庆邮电大学重庆邮电大学-数学建模数学建模3、可用函数jacobian来计算Jacobi矩阵。 ?syms r l f ?x=r*cos(l)*cos(f); ?y=r*cos(l)*sin(f); ?z=r*sin(l); ?J=jacobian(x;y;z,r l f) J = cos(l)*cos(f), -r*sin(l)*cos(f), -r*cos(l)*sin(f) cos(l)*sin(f), -r*sin(l)*sin(f), r*cos(l)*cos(f) sin(l), r*cos(l), 0 重庆邮电大学重庆邮电大学-数学建模数学
22、建模2.积分:用函数int来求符号表达式的积分。命令格式为: int (f, r, x0, x1)其中f为所要积分的表达式,r为积分变量,假设为定积分,那么x0,x1为积分上下限。例: ?sym x; ?sym k real ?f=exp(-(k*x)2) f = exp(-k2*x2) ?int(f,x,-inf,inf) ans = signum(k)/k*pi(1/2)重庆邮电大学重庆邮电大学-数学建模数学建模3.级数求和:函数用于对符号表达式求和。例: ?syms k; ?s1=symsum(1/k2,1,inf) s1 = 1/6*pi2 重庆邮电大学重庆邮电大学-数学建模数学建模4
23、.极限:用函数limit来求表达式的极限。 函数limit的常用调用格式: 数学表达式 命令格式 Limit (f ),或limit (f , x ) Limit (f , x , a) , 或 limit (f , a ) Limit (f , x , a , left) Limit (f , x , a , right)(lim0 xfx)(limxfax)(limxfax)(limxfax重庆邮电大学重庆邮电大学-数学建模数学建模5.化简: 1、collect (f ) 将表达式中一样次幂的项合并,也可以再输入一个参数指定以哪个变量的幂次合并。 2、expand ( f ) 将表达式展开
24、。 3、horner ( f ) 将表达式转换为嵌套格式。 4、factor ( f ) 将表达式分解因式,并且分解后的多项式的一切系数都为有理数。 5、simplify ( f ) 利用函数规那么对表达式进展化简。重庆邮电大学重庆邮电大学-数学建模数学建模重庆邮电大学重庆邮电大学-数学建模数学建模第二节第二节MATLAB的程序设计的程序设计 重庆邮电大学重庆邮电大学-数学建模数学建模1 脚本文件和函数文件脚本文件和函数文件11 M脚本文件脚本文件 对于一些比较简单的问题对于一些比较简单的问题 ,在指令窗中直接输入指令计算,在指令窗中直接输入指令计算 。 对于复杂计算,采用脚本文件对于复杂计算
25、,采用脚本文件Script file最为适宜最为适宜 。 MATLAB只是按文件所写的指令执行只是按文件所写的指令执行 。 M脚本文件的特点是:脚本文件的特点是: 脚本文件的构成比较简单,只是一串按用户意图陈列而成脚本文件的构成比较简单,只是一串按用户意图陈列而成的包括控制流向指令在内的的包括控制流向指令在内的MATLAB指令集合。指令集合。 脚本文件运转后脚本文件运转后 ,所产生的一切变量都驻留在,所产生的一切变量都驻留在 MATLAB根本任务空间根本任务空间Base workspace中。只需用户不运用去除中。只需用户不运用去除指令指令clear, MATLAB指令窗不封锁,这些变量将不断
26、指令窗不封锁,这些变量将不断保管在根本任务空间中。保管在根本任务空间中。M文件有两种方式文件有两种方式 :脚本文件:脚本文件Script File和函数文件和函数文件Function File 。这两种文件的扩展名,均为。这两种文件的扩展名,均为“ . m 。重庆邮电大学重庆邮电大学-数学建模数学建模1 脚本文件和函数文件续脚本文件和函数文件续112 M函数文件函数文件 与脚本文件不同与脚本文件不同 ,函数文件犹如一个,函数文件犹如一个“黑箱,把一些数据黑箱,把一些数据送进并经加工处置,再把结果送出来。送进并经加工处置,再把结果送出来。 MATLAB提供的函数指令大部分都是由函数文件定义的。提
27、供的函数指令大部分都是由函数文件定义的。 M函数文件的特点是:函数文件的特点是: 从方式上看从方式上看 ,与脚本文件不同,与脚本文件不同 ,函数文件的笫一行总是,函数文件的笫一行总是以以 “function引导的引导的“函数声明行。函数声明行。从运转上看从运转上看 ,与脚本文件运转不同,与脚本文件运转不同 ,每当函数文件运转,每当函数文件运转, MATLAB就会专门为它开辟一个暂时任务空间,称为函数就会专门为它开辟一个暂时任务空间,称为函数任务空间任务空间 Function workspace 。当执行文件最后一条。当执行文件最后一条指令时指令时 ,就终了该函数文件的运转,同时该暂时函数空间,
28、就终了该函数文件的运转,同时该暂时函数空间及其一切的中间变量就立刻被去除。及其一切的中间变量就立刻被去除。 MATLAB允许运用比允许运用比 “标称数目标称数目 较少的输入输出宗量,较少的输入输出宗量,实现对函数的调用实现对函数的调用 。重庆邮电大学重庆邮电大学-数学建模数学建模1 脚本文件和函数文件续脚本文件和函数文件续213 M文件的普通构造文件的普通构造 由于从构造上看由于从构造上看 ,脚本文件只是比函数文件少一个,脚本文件只是比函数文件少一个“函数声函数声明行,所以只须描画清楚函数文件的构造明行,所以只须描画清楚函数文件的构造 。 典型典型 M函数文件的构造如下函数文件的构造如下 :
29、函数声明行:位于函数文件的首行,以关键字函数声明行:位于函数文件的首行,以关键字 functio 开头,开头,函数名以及函数的输入输出宗量都在这一行被定义。函数名以及函数的输入输出宗量都在这一行被定义。 笫一注释行:紧随函数声明行之后以笫一注释行:紧随函数声明行之后以%开头笫一注释行。开头笫一注释行。该行供该行供lookfor关键词查询和关键词查询和 help在线协助运用在线协助运用 。 在线协助文本区在线协助文本区 :笫一注释行及其之后的延续以:笫一注释行及其之后的延续以%开头的开头的一切注释行构成整个在线协助文本。一切注释行构成整个在线协助文本。 编写和修正记录:与在线协助文本区相隔一个编
30、写和修正记录:与在线协助文本区相隔一个“空行,也空行,也以以%开头,标志编写及修正该开头,标志编写及修正该M文件的作者和日期等文件的作者和日期等 。 函数体:为明晰起见,它与前面的注释以函数体:为明晰起见,它与前面的注释以“空行相隔。空行相隔。重庆邮电大学重庆邮电大学-数学建模数学建模2 函数调用和参数传送函数调用和参数传送21 部分变量和全局变量部分变量和全局变量 部分部分Local变量:它存在于函数空间内部的中间变量,变量:它存在于函数空间内部的中间变量,产生于该函数的运转过程中,其影响范围也仅限于该函数本产生于该函数的运转过程中,其影响范围也仅限于该函数本身身 。 全局全局Global变
31、量:经过变量:经过 global 指令,指令,MATLAB也允许几也允许几个不同的函数空间以及根本任务空间共享同一个变量,这种被个不同的函数空间以及根本任务空间共享同一个变量,这种被共享的变量称为全局变量。共享的变量称为全局变量。22 函数调用函数调用 在在MATLAB中,调用函数的常用方式是:中,调用函数的常用方式是:输出参数输出参数1,输出参数输出参数2, = 函数名函数名(输入参数输入参数1,输入参数输入参数2, ) 函数调用可以嵌套,一个函数可以调用别的函数,甚至调函数调用可以嵌套,一个函数可以调用别的函数,甚至调用它本人用它本人 递归调用。递归调用。重庆邮电大学重庆邮电大学-数学建模
32、数学建模2 函数调用和参数传送续函数调用和参数传送续23 参数传送参数传送 MATLAB在函数调用上有一个与众不同之处在函数调用上有一个与众不同之处 :函数所传送的:函数所传送的参数具有可调性参数具有可调性 。 传送参数数目的可调性来源于如下两个传送参数数目的可调性来源于如下两个MATLAB永久变量:永久变量: 函数体内的函数体内的 nargin 给出调用该函数时的输入参数数目。给出调用该函数时的输入参数数目。 函数体内的函数体内的 nargout 给出调用该函数时的输出参数数目。给出调用该函数时的输出参数数目。 只需在函数文件中包括这两个变量,就可以知道该函数文件只需在函数文件中包括这两个变
33、量,就可以知道该函数文件调用时的输入参数和输出参数数目。调用时的输入参数和输出参数数目。 值得留意:值得留意:nargin、 nargout 本身都是函数,不是变量,所本身都是函数,不是变量,所以用户不能赋值,也不能显示。以用户不能赋值,也不能显示。 “变长度输入输出宗量:变长度输入输出宗量:varargin 、 varrgout。具有接受。具有接受 “恣意多输入恣意多输入 、前往、前往“恣意多输出的才干恣意多输出的才干 。 跨空间变量传送:跨空间变量传送:evalin。参考参考 : circle .m,am1.m重庆邮电大学重庆邮电大学-数学建模数学建模23 MATLAB的程序构造和控制流的
34、程序构造和控制流231 程序构造程序构造 循环构造:循环构造: MATLAB提供两种循环方式。提供两种循环方式。 顺序构造顺序构造 分支构造:分支构造: ifelseend 。forend 循环和循环和while-end循环。循环。232 程序流控制程序流控制 常用指令:常用指令:return,echo,input,pause,keyboard,break。 switch-case 构造。构造。 try-catch 构造。构造。 警示指令:警示指令:error, warning 。重庆邮电大学重庆邮电大学-数学建模数学建模23 MATLAB的程序构造和控制流续的程序构造和控制流续233 图形用
35、户界面图形用户界面GUI编程编程 现代的主流运用程序曾经从命令行的交互方式转变为以图现代的主流运用程序曾经从命令行的交互方式转变为以图形界面为主的交互方式,这主要是由于它给用户带来了操作形界面为主的交互方式,这主要是由于它给用户带来了操作和控制的方便与灵敏性。面向对象编程和控制的方便与灵敏性。面向对象编程 MATLAB可以以比较简单的方式实现一系列的图形界面功可以以比较简单的方式实现一系列的图形界面功能。经过对控件、菜单属性的设置和能。经过对控件、菜单属性的设置和 Callback 的编写,就可的编写,就可以满足大多数用户的需求。以满足大多数用户的需求。 控件的控件的 Callback 属性:
36、属性: Callback 属性的取值是字符串,可属性的取值是字符串,可以是某个以是某个M文件名或一小段文件名或一小段MATLAB语句。当用户激活控件语句。当用户激活控件对象例如对象例如 :在控件对象图标上单击鼠标左键:在控件对象图标上单击鼠标左键 时,运用程时,运用程序就运转序就运转 Callback 属性定义的子程序。属性定义的子程序。 菜单的菜单的 Callback 属性:属性: Callback 属性的取值是字符串,可属性的取值是字符串,可以是某个以是某个M文件名或一小段文件名或一小段MATLAB语句。当用户激活菜单语句。当用户激活菜单对象时,假设没有子菜单就运转对象时,假设没有子菜单就
37、运转 Callback 属性定义的子程序。属性定义的子程序。假设有,先运转假设有,先运转 Callback 属性定义的子程序,再显示子菜单。属性定义的子程序,再显示子菜单。重庆邮电大学重庆邮电大学-数学建模数学建模24 M文件的调试文件的调试 编写编写 M文件时,错误文件时,错误Bug在所难免。错误有两种:语法在所难免。错误有两种:语法Syntax错误和运转错误和运转Run-time错误。错误。 语法错误是指变量名、函数名的误写,标点符号的缺、漏等。语法错误是指变量名、函数名的误写,标点符号的缺、漏等。对于这类错误,通常能在运转时发现,终止执行,并给出相应对于这类错误,通常能在运转时发现,终止
38、执行,并给出相应的错误缘由以及所在行号。的错误缘由以及所在行号。 运转错误是算法本身引起的,发生在运转过程中。相对语法运转错误是算法本身引起的,发生在运转过程中。相对语法错误而言,运转错误较难处置错误而言,运转错误较难处置 。尤其是。尤其是M函数文件,它一旦运函数文件,它一旦运转停顿,其中间变量被删除一空,错误很难查找。转停顿,其中间变量被删除一空,错误很难查找。 有两种调试方法:直接调试法和工具调试法。有两种调试方法:直接调试法和工具调试法。重庆邮电大学重庆邮电大学-数学建模数学建模24 M文件的调试续文件的调试续1 直接调试法:可以用下面方法发现某些运转错误。直接调试法:可以用下面方法发现
39、某些运转错误。 在在M文件中,将某些语句后面的分号去掉,文件中,将某些语句后面的分号去掉, 迫使迫使M文件输文件输出一些中间计算结果,以便发现能够的错误。出一些中间计算结果,以便发现能够的错误。 在适当的位置,添加显示某些关键变量值的语句包括运在适当的位置,添加显示某些关键变量值的语句包括运用用 disp 在内。在内。 利用利用 echo 指令,使运转时在屏幕上逐行显示文件内容。指令,使运转时在屏幕上逐行显示文件内容。echo on 能显示能显示M脚本文件;脚本文件;echo FunNsme on 能显示名为能显示名为FunNsme 的的M函数文件。函数文件。 在原在原M脚本或函数文件的适当位
40、置,增添指令脚本或函数文件的适当位置,增添指令 keyboard 。 keyboard 语句可以设置程序的断点语句可以设置程序的断点 。 经过将原经过将原M函数文件的函数声明行注释掉,可使一个中间函数文件的函数声明行注释掉,可使一个中间变量难于察看的变量难于察看的M函数文件变为一个一切变量都保管在根函数文件变为一个一切变量都保管在根本任务空间中的本任务空间中的M脚本文件。脚本文件。重庆邮电大学重庆邮电大学-数学建模数学建模第三节第三节 优化问题解法优化问题解法重庆邮电大学重庆邮电大学-数学建模数学建模一、无约束优化问题无约束极小化问题的标准性为:)(minxF其中x 为n 维变元向量。用 MA
41、TLAB 求解以上问题的基本步骤为: 1、首先建立函数形式的 M-文件 fun.m: function f=fun(x) f=F(x) 2、命令的基本格式: (1), min(21xxfunfx (2), (min0 xfunufx ;或), (min0 xfunsfx (3), (min0optionsxfunufx ; 或), (min0optionsxfunsfx (4) ), (0 xfunleastsqx 或), (0optionsxfunleastsqx 重庆邮电大学重庆邮电大学-数学建模数学建模例1: Rosenbrock函数21221221)1 ()(100),(xxxxxf的
42、最优解(极小)为) 1 , 1 (x,极小值为0f。试用不同算法求数值最优解。初始值选为)2 , 2 . 1()0(x。 二、线性规划问题重庆邮电大学重庆邮电大学-数学建模数学建模例 2、 6 , 2 , 1,90008. 003. 010005. 002. 070005. 002. 085003. 003. 003. 001. 001. 001. 0. .6 . 064. 072. 032. 028. 04 . 0max0635241654321654321jxxxxxxxxxxxxxtsxxxxxxzj 三、非线性规划问题二次规划的标准型为: bAxtsxcHxxzTT. .21min 重
43、庆邮电大学重庆邮电大学-数学建模数学建模例 3、 0, 0222. .2262),(min2121212221212121xxxxxxtsxxxxxxxxf 重庆邮电大学重庆邮电大学-数学建模数学建模一般非线性规划的标准型为: VUBxVLBxGtsxF0)(. .0)(min 其中x为n维变元向量,)(xG为m维非线性函数组成的向量。 用 MATLAB 软件求解的基本步骤如下: 1、首先建立函数形式的 M 文件 fun.m: function f,g=fun(x); f=F(x); g=G1(x);G2(x);Gm(x); 2、命令的基本格式有如下三个: (1) x=constr(fun,x
44、0); (2) x=constr(fun,x0,options); (3) x=constr(fun,x0,options,VLB,VUB) 重庆邮电大学重庆邮电大学-数学建模数学建模重庆邮电大学重庆邮电大学-数学建模数学建模第四节第四节图形处置图形处置重庆邮电大学重庆邮电大学-数学建模数学建模 基基 本本 绘绘 图图 函函 数数1 plot ,plot3 建立向量或矩阵的图形2 Loglog x、y轴都取对数标度建立图形3 Semilogx x轴用于对数标度,y轴线性标度绘制图形4 Semilogy y轴用于对数标度,x轴线性标度绘制图形5 Title 给图形加标题6 Xlabel,Ylab
45、el 给x,y轴加标志7 Text 在图形指定的位置上加文本字符串8 gtext 在鼠标的位置上加文本字符串9 grid 翻开网格线重庆邮电大学重庆邮电大学-数学建模数学建模 绘绘 图图 入入 门门1 plot的根本调用格式 2 对於变化猛烈的函数,可用fplot来进展较准确的绘图 3 对符号函数作图可用ezplot 重庆邮电大学重庆邮电大学-数学建模数学建模特 殊 二三维 绘 图 函 数1 bar(x,y) (barh(x,y),bar3,bar3h) 直方程度图2 comet (x,y) (comet3) 建立彗星流动图3 errorbar(x,y,l,u) 图形加上误差范围4 polar
46、 (theta,rho) 极坐标图hist (y,x) 向量统计的直方图,其中y为要统计的。当x为标 量时,x指定了统计的区间数;当x为向量时,以该向量中 各元素为中心进展统计,区间数等于x向量的长度。6 rose(theta) 极坐标频数累计柱状图重庆邮电大学重庆邮电大学-数学建模数学建模9 fill 实心图7 stairs (x,y) 阶梯图8 stem(x,y,fill) 针状图11 compass 罗盘图10 feather 羽毛图quiver,quiver3 向量场图,通常与contour(),gradient() 配合运用.13 pie,pie3 饼图重庆邮电大学重庆邮电大学-数学
47、建模数学建模绘绘 制制 三三 维维 曲曲 面面mesh(z)语句给出矩阵语句给出矩阵Z元素的三消隐图,元素的三消隐图,surf和和mesh的的用法类似。为了方便测试立体绘图,用法类似。为了方便测试立体绘图,MATLAB提供了一个提供了一个peaks函数,可产生一个凹凸有致的曲面,包函数,可产生一个凹凸有致的曲面,包 含了三个部分含了三个部分极大点及三个部分极小点,极大点及三个部分极小点, 要画出此函数的最快方法即是要画出此函数的最快方法即是直接键入直接键入peaks. 三维函数还有三维函数还有meshc(), meshz(), surfc(), surfl(), contourf(), wat
48、erfall()等等. 重庆邮电大学重庆邮电大学-数学建模数学建模第五节第五节 解方程解方程重庆邮电大学重庆邮电大学-数学建模数学建模一 般 的 代 数 方 程 函数solve用于求解普通代数方程的根,假定S为符号表达式,命令solve (S)求解表达式等于0的根,也可以再输入一个参数指定未知数。例: syms a b c x S=a*x2+b*x+c; solve(S)ans = 1/2/a*(-b+(b2-4*a*c)(1/2) 1/2/a*(-b-(b2-4*a*c)(1/2)b=solve(S,b) b = -(a*x2+c)/x重庆邮电大学重庆邮电大学-数学建模数学建模线 性 方 程
49、 组 线性方程组的求解问题可以表述为:给定两个矩阵A和B,求解满足方程AX=B或XA=B的矩阵X。方程AX=B的解用X=AB或X=inv (A)*B表示;方程XA=B的解用X=B/A或X=B*inv (A)表示。不过斜杠和反斜杠运算符计算更准确,占用内存更小,算得更快。 线 性 微 分 方 程 函数dsolve用于线性常微分方程组的符号求解。在方程中用大写字母D表示一次微分,D2,D3分别表示二阶、三阶微分,符号D2y相当于y关于t的二阶导数。 函数dsolve 的输出方式 格式 阐明y=dsolve (Dyt=y0*y ) 一个方程,一个输出参数u,v=dsolve (Du=v,Dv=u)
50、两个方程,两个输出 参数S=dsolve (Df=g,Dg=h,Dh=-2*f ) 方程组的解以S.f S.g S.h 构造数组的方式输出例例 1 求 21udtdu 的通解.解解 输入命令:dsolve(Du=1+u2,t) 结 果:u = tg(t-c)例例 2 求微分方程的特解. 15)0( , 0)0(029422yyydxdydxyd 解解 输入命令输入命令: y=dsolve(D2y+4*Dy+29*y=0,y(0)=0,Dy(0)=15,x)结 果 为 : y =3e-2xsin5x 例例 3 求微分方程组的通解. zyxdtdzzyxdtdyzyxdtdx244354332解解
51、 输入命令输入命令 : x,y,z=dsolve(Dx=2*x-3*y+3*z,Dy=4*x-5*y+3*z,Dz=4*x-4*y+2*z, t); x=simple(x) % 将将x化简化简 y=simple(y) z=simple(z)结 果 为:x = (c1-c2+c3+c2e -3t-c3e-3t)e2t y = -c1e-4t+c2e-4t+c2e-3t-c3e-3t+(c1-c2+c3)e2t z = (-c1e-4t+c2e-4t+c1-c2+c3)e2t 非 线 性 微 分 方 程 t,x=solverf,ts,x0,optionsode45 ode23 ode113ode1
52、5sode23s由待解方程写成的m-文件名ts=t0,tf,t0、tf为自变量的初值和终值函数的初值ode23:组合的2/3阶龙格-库塔-芬尔格算法ode45:运用组合的4/5阶龙格-库塔-芬尔格算法自变量值函数值用于设定误差限(缺省时设定相对误差10-3, 绝对误差10-6),命令为:options=odesetreltol,rt,abstol,at, rt,at:分别为设定的相对误差和绝对误差. 1、在解、在解n个未知函数的方程组时,个未知函数的方程组时,x0和和x均为均为n维向量,维向量,m-文件中的待解方程组应以文件中的待解方程组应以x的分量方式写成的分量方式写成. 2、运用Matla
53、b软件求数值解时,高阶微分方程必需等价地变换成一阶微分方程组.留意留意:例例 4 0)0( ; 2)0(0)1 (1000222xxxdtdxxdtxd解解: 令令 y1=x,y2=y1则微分方程变为一阶微分方程组:0)0(, 2)0()1 (1000211221221yyyyyyyy1、建立m-文件vdp1000.m如下: function dy=vdp1000(t,y) dy=zeros(2,1); dy(1)=y(2); dy(2)=1000*(1-y(1)2)*y(2)-y(1); 2、取t0=0,tf=3000,输入命令: T,Y=ode15s(vdp1000,0 3000,2 0)
54、; plot(T,Y(:,1),-)3、结果如图050010001500200025003000-2.5-2-1.5-1-0.500.511.52 例例 5 解微分方程组. 1)0(, 1)0(, 0)0(51. 0321213312321yyyyyyyyyyyy解解 1、建立、建立m-文件文件rigid.m如如下:下: function dy=rigid(t,y) dy=zeros(3,1); dy(1)=y(2)*y(3); dy(2)=-y(1)*y(3); dy(3)=-0.51*y(1)*y(2);2、取t0=0,tf=12,输入命令: T,Y=ode45(rigid,0 12,0
55、1 1); plot(T,Y(:,1),-,T,Y(:,2),*,T,Y(:,3),+)3、结果如图024681012-1-0.8-0.6-0.4-0.200.20.40.60.81图中,y1的图形为实线,y2的图形为“*线,y3的图形为“+线.NoImage第六节第六节回归分析回归分析一:一元线性与非线性回归分析 引例:钢材消费量与国民收入的关系 一元回归模型与回归分析 MATLAB软件实现 简介一元非线性回归模型 实验 为了研讨钢材消费量与国民收入之间的关系,在统计年鉴上查得一组历史数据。引例:钢材消费量与国民收入的关系 年 份196419651966197819791980消费(吨)69
56、8872988144627362825收入(亿)109712841502294831553372 试分析预测假设1981年到1985年我国国民收入以4.5%的速度递增,钢材消费量将到达什么样的程度? 钢材消费量-实验目的(因变量)Y;国民收入-自变量 x;建立数据拟合函数 y = EY | x= f(x);作拟合曲线图形分析。 问题分析:10001500200025003000350050010001500200025003000 钢材消费量y与国民收入x的散点图y=a+bx回归分析是研讨变量间相关关系的一种统计分析。特点:实验目的因变量是随机变量。图形解释:y = EY | x= f(x)假
57、设:f(x) = ax+bxx0E(Y|x0)y0 x1E(Y|x1)假设: y = EY | x= f(x)1Y是一个正态随机变量,即Y服从正态分 布,并且有方差 D(Y)=2。2根据观测值作的散点图,察看出函数f(x) 是线性方式还是非线性方式。 回归模型及回归分析1、一元线性回归模型、一元线性回归模型), 0(;2NbxaY),(2bxaNY或需求处理的问题: 1 在回归模型中如何估计参数a、b和2?知识引见 2 模型的假设能否正确?需求检验。3利用回归方程对实验目的y进展预测或控制?),(,0000dydyxbay区间估计估计量参数估计 设观测值为(xi, yi)i=1,2,n), 代
58、入模型中,yi = a + bxi +i解出的参数记为ba, 那么回归方程:xbay21)(),(mininiibxaybaQ最小二乘法:残差值iiiiyyxbay回归模型的假设检验0:; 0:10bHbH提出问题:1、相关系数检验DYDXYXr),cov(niiniiniiiyyxxyyxxr12121)()()(| r |1| r |1,线性相关| r |0,非线性相关模型:Y = a + bx +H0的回绝域为: )2(| |0nrr-11 |0r(n-2)-r(n-2)2、F-检验法平方和分解公式:niiniiiniiyyyyyy121212)()()(UQLyy记为)2, 1 ()2
59、, 1 ()2/(10nFFnFnQUF拒绝域实测值 估计值残差值,剩余平方和,越小越好以为线性回归效果好预测与控制给定的自变量x0,给出E(y0)的点估计量: 00 xbayy0的置信度为(1)%的预测区间为: ),(00nndydyxxnLxxnntd202)(11)2(22nQ 设y在某个区间(y1, y2)取值时, 应如何控制x的取值范围, 这样的问题称为控制问题。 小结:), 0(;2NbxaY),(2bxaNY或 模型1、估计参数a,b,2;2、检验模型正确与否;即b03、预测或控制; 知数据(xi, yi)(i =1,2,n), 如何利用MATLAB软件实现以上的统计计算?MAT
60、LAB软件实现运用命令regress实现一元线性回归模型的计算 b = regress (Y, X) 或 b, bint, r, rint, stats = regress(Y, X, alpha)nnyyxx11Y,11X回归系数a,b以及它们的置信区间残差向量e=Y-Y及它们的置信区间相关系数R2,F-统计量和与0对应的概率p。残差及其置信区间可以用rcoplot(r,rint)画图。默许值是0.05引例求解引例求解输入:输入:(hg1.m)x=1097 1284 1502 4 1303 1555 1917 2051 2111 2286 2311 2019 2435 2625 2948 3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 六一活动便利店活动方案
- 六一活动啦啦队活动方案
- 六一活动室内活动方案
- 六一活动透明伞活动方案
- 六一社区趣味活动方案
- 六一策划活动方案
- 六一舞蹈推广活动方案
- 六一节超市活动方案
- 六一进超市活动方案
- 六一麦当劳活动策划方案
- 下肢神经阻滞麻醉课件
- 2022-2023学年北京市昌平区八年级(下)期末英语试卷(含解析)
- 佛山市顺德区2023年数学六下期末学业质量监测试题含解析
- 读《断离舍》有感
- 2022贵州省专业技术人员继续教育公需科目考试题库课件二
- 2022-2023学年广东省云浮市高二物理第二学期期末统考试题含解析
- 《Python少儿编程》PPT课件(共11章)第二章 Python 编程基础
- 配对样本t检验表格
- 2021年汽车吊载人吊篮作业安全专项措施
- 质量管理之CAPA教学课件
- 泌尿外科健康教育2膀胱冲洗健康宣教
评论
0/150
提交评论