1、MATLAB 数学软件第 1 页 共 14 页数学建模暑期培训MATLAB 软件庄思发1 熟悉软件操作界面1.1 命令窗口MATLAB 执行命令的主窗口,命令于提示符 “”之后输入,回车确认执行;1.2 命令历史窗口显示用户过去所使用过全部命令,可双击后重新执行,避免重新输入命令,或使用上、下方向键调出修改后再重新执行;MATLAB 数学软件第 2 页 共 14 页1.3 工作空间窗口显示当前 MATLAB 在计算机内存中存在的变量、数据等详细信息,以便用户查看,可删除其中若干个或全部删除;1.4 当前工作目录窗口显示用户当前工作时所处在的目录位置,该目录是用户存放及打开文件时 MATLAB
2、指向的默认目录,可通过其目录选择器重新指向新用户目录;在该窗口中可以观察到当前目录中所有文件的详细情况,可以直接选定某人文件,通过单击右键运行或打开该文件进行编辑。MATLAB 数学软件第 3 页 共 14 页2 基本运算2.1 四则运算 + - * / 2.2 乘方、开方 “” sqrt( )例: :23 :2(1/3) 323122.3 指数函数 exp(x), :exp(1); ; :exp(2);e2e2.4 标点符号 逗号( ,)输出结果;分号 (;)不输出结果2.5 常量与变量 常量圆周率 :pi;无穷大 :inf;等 变量定义变量不必事先声明,MATLAB 会通过变量所获得的值自
3、动识别,变量名必须以字母开头,后可接字母、数字或下划线,不可使用空格与标点符号;注意:变量名区分大、小写;2.6常用函数: 三角函数sin(x)、 cos(x)、asin(x)、acos(x)、tan(x)、atan(x)、cot(x) acot(x). 指数、对数函数exp(x) log(x) log10(x) log2(x). 四舍五入round(x) 求余mod(x,y):余数符号与 y 相同;rem(x,y):余数符号与 x 相同 . 舍入函数MATLAB 数学软件第 4 页 共 14 页fix(x):与零最接近的整数;floor(x):不大于 x 的整数;ceil(x):不小于 x
4、的整数. 求模(绝对值)abs(x)3 数值运算3.1 向量运算 向量(数组)表示元素用中括号括起,元素间用逗号或空格或分号隔开;例:a=2 4 6 7 8 b=1;4;7;9 等差向量冒号生成法 初值:步长:终值;例:c=1:10; d=1:0.5:10linspace(初值,终值,分段数)例:e=linspace(1,10,10) linspace(0,10,6) 向量(数组)运算向量(数组)与常数的加、减例:a=2 3 5 a+3,a-2向量(数组)与常数的乘、除例:a*2,a/3 向量与向量的加、减法:元素个数必须相同例:a=1 3 5,b=2,4,6,c=1:4,a+b,a-b,a+
5、c向量点积:dot(a,b);向量维数不超过 3例:dot(a,b)向量叉积:cross(a,b) ;向量维数不超过 3MATLAB 数学软件第 5 页 共 14 页例:cross(a,b)数组的乘、除:.*;./;例:a.*b, a./b 数组的乘方:.例:a.2 向量(数组)元素的选取单下标 a( )例:a=1:10;a(7) %选取向量 a 的第七个元素例:a(1 3 7)% 选取向量 a 的第 1、3、7 个元素 向量(数组)排序sort(a):从小到大;例:a=rand(1,10),sort(a)%产生 10 个元素的行向量,并进行升序排列 向量(数组)长度或大小的检测length(
6、a);例:length(a)%显示向量元素个数size(a)例:size(a) %将以向量形式显示矩阵 a 的行数与列数 向量(数组)求和sum(a)例:sum(a) %求向量 a 的元素总和 向量与多项式表示: : (降幂排列)nnxaxp10)( ,10nap例: , ,则该多项32)(341 2)(32x式在 MATLAB 中可如下表示p1=1 3 0 2 3,p2=0 1 2 0 1多项式相加、减:向量的相加、减(注意补零)MATLAB 数学软件第 6 页 共 14 页例:p1+p2,p1-p2多项式的积:conv(p1,p2);例:conv(p1,p2)多项式的除:deconv(p1
7、,p2) ;q,r=deconv(p1,p2)例:deconv(p1,p2)%只输出商式q,r=deconv(p1,p2)%输出商式与余式3.2 矩阵(多元数组)运算 矩阵(多元数组)表示元素用中括号括起,元素间用逗号或空格分列,用分号分行;例:矩阵 ,在 MATLAB 中可如下输入:26849351A=1 6 5;3 9 4;8 6 2 特殊矩阵全 1 矩阵与全零矩阵:ones(m,n) ;zeros(m,n) ;作用:预分配空间例:ones(3) %产生 3 阶全 1 方阵ones(3,4)%产生 3 行 4 列的全 1 矩阵随机矩阵:rand(m,n) :产生元素介于 0,1 之间的矩阵
8、例:rand(3),rand(3,4)%分别产生 3 阶与 3 行 4 列随机矩阵 矩阵(多元数组)的运算矩阵(多元数组)与常数的加、减 例:A+3 A-3,5-A矩阵(多元数组)与常数的乘、除例:A*3 A/2矩阵与矩阵的加、减法:形状大小必须相同例:A+B %A,B 行、列数相同矩阵与矩阵的乘、除法:*;与/ 或 :遵循矩阵乘除运算法则例:A*B,A/B %矩阵 B 的行列式不为 0矩阵的乘方:要求为方阵MATLAB 数学软件第 7 页 共 14 页例:A2多元数组的乘、除法:.*;.;./;例:C.*3 C./2 %矩阵 C 的每个元素与常数相乘除;多元数组的乘方:.例:C.3 %计算
9、C 的第个元素的立方。 矩阵(多元数组)元素的选取单下标 A(m)或双下标 A(i,j) A(1 3,2 4) 矩阵(多元数组)的排序sort(A,1):按列方向排序;sort(A,2) :按行方向排序 矩阵(多元数组)大小的检测size(A):显示行数与列数 矩阵(多元数组)的求和sum(a,1):按列方向求和; sum(a,2):按行方向求和; 矩阵与线性代数矩阵的行列式:det(A)矩阵的逆:inv(A) ,其中 A 的行列式不为 0矩阵的转置:A矩阵的特征值与特征向量:v,d=eig(A):线性方程组的解:Ab:A:系数矩阵;b:常数列向量3.3 简单数理统计 算术平均值mean(a)
10、或 mean(a,1)或 mean(a,2):a 是向量或矩阵 方差var(a):a 是向量或矩阵 标准差std(a) :a 是向量或矩阵MATLAB 数学软件第 8 页 共 14 页4 符号运算4.1 符号变量、表达式的定义 符号变量的定义sym(a) sym(a*x+b) %用 sym 直接定义符号表达式;syms x y z t %用 syms 函数定义多个符号变量 符号表达式输入syms xy=f(x)或sym(f(x)4.2 符号表达式的操作 四则运算使用通常运算符:+ - * / 化简simplify(S) 合并同类项collect(S,v) 因式分解factor(S):S 为符号
11、表达式则进行因式分解,S 为常数则进行因子分解 替换求值subs(S,v,a) %用数值 a 的值替换表达式中指定变量 v;subs(S,v,t)%用新变量 t 替换表达式中指定变量 v。4.3 微积分运算 极限limit(S,v,a,right或left) 微分diff(S,v,n) 积分MATLAB 数学软件第 9 页 共 14 页int(S,v,lb,ub)4.4 方程求解运算 一般方程(组)solve(eq,v)v1,v2,vn=solve(eq1,eq2,eqn,v1,v2,vn) 线性方程组linsolve(A,b):A 为系数矩阵, b 为常数列向量 微分方程(组):Dy; :D
12、2y; :Dny;y)(ny求通解dsolve(deq,v)或 dsolve(deq1,deq2,deqn,v1,v2,vn)求特解dsolve(deq1,deq2,deqn, y(x0)=y0,Dy(x0)=y1,D2y(x0)=y2,, v1,v2,vn,)5 简单作图5.1 二维曲线plot(X,Y)5.2 三维曲线plot3(X,Y,Z)5.3 多个图形subplot(m,n,k), 1 = k = m*n5.4 特殊图形 饼形图pie(Y);pie(Y, EXPLODE), EXPLODE:为要突出显示的数据向量 条形图bar(Y):默认横坐标为自然数;bar(X ,Y):X 为自定
13、义横坐标MATLAB 数学软件第 10 页 共 14 页 曲线拟合polyfit(X,Y,N):多项式拟合,X,Y 为原始数据,N 为拟合多项式的次数6 程序设计6.1 M 文件介绍脚本文件 命令集合文件,批量执行函数文件 第一行以字句:function 开头(7.0 以上版本取消)6.2 控制结构 顺序结构 选择结构单个选择if 条件表达式执行语句end两个选择if 条件表达式 1 执行语句 1else 条件表达式 2执行语句 2end多个选择if 条件表达式 1执行语句 1elseif 条件表达式 2MATLAB 数学软件第 11 页 共 14 页执行语句 2elseif 条件表达式 2执
14、行语句 3else 条件表达式 n执行语句 nend 循环结构for 循环 适合循环次数确定的情况for 循环变量 =初值:步长:终值循环体endwhile 循环 适合循环次数不确定的情况while 条件表达式循环体end注意:while 循环容易出现死循环,使用时一定要注意.若出现死循环,则按键盘:Ctrl+C 强制结束程序.提示:与各种编程语言一样,各种结构之间可以互相嵌套使用.7 数据拟合与插值7.1 多项式最小二乘法拟合polyfit(X,Y,N):X,Y 为原始数据,N 为拟合的阶数(次数)7.2 一维线性插值 Y0=interp1(X,Y,X0):用于计算插值 X0 处的函数值,若
15、省略 X,则默认为自然数 1-length(Y). Y0= interp1(X,Y,X0, methord):使用methord参数指定插MATLAB 数学软件第 12 页 共 14 页值方法, methord可选为:nearest - 线性最近项插值linear - 线性插值spline - 3 次样条插值pchip - 3 次 Hermite 插值cubic - 立方插值7.3 lagrange 插值Y0=Lagrange(X,Y,x0),用法与 interp1 类似.7.4 三次样条插值YY=spline(X,Y,XX):计算插值点向量 XX 的三次样条插值多项式所对应的值.8 规划问题
16、求解符号说明:f:目标函数中的方程的系数矩阵A:不等式约束中的系数矩阵b:不等式约束中的常数列向量Aeq:等式约束中的系数矩阵beq:等式约束中的常数列向量lb:决策变量的下界ub:决策变量的上界X0:初值(可省)opti:优化选项(可省)8.1线性规则标准模型:MATLAB 数学软件第 13 页 共 14 页ubXleqAtsf. min命令:X,fval=linprog(f,A,b,Aeq,beq,lb,ub,X0,opti)例:求解如下线性规则问题 3,21,034.65 min321ixxtsi代码: f=-5;-4;-6;A=1 -1 1;3 2 4;3 2 0;b=20;42;30
17、;Lb=zeros(3,1);x,fval=linprog(f,A,b,lb)8.2大规模二次规划标准模型: ubXleqABtsfHQ.21 min命令:X,fval=quadprog(H,f,A,b,Aeq,beq,lb,ub,X0,opti)例 1:求解如下二次规划问题2,1035. 4 min112ixtsxi代码: H=6 0;0 6;f=-4 0;A=1 1;2 3;MATLAB 数学软件第 14 页 共 14 页b=20;35;lb=0;0;X,fval=quadprog(H,f,A,b,lb,)提示:规划问题中的常数与计算无关,因此可忽略.例 2:求解如下二次规划问题2,103. 621 min2211ixtsxxi代码: H=1 -1;-1 2;f=-2;-6;A=1 1;-1 2;2 1;b=2;2;3;lb=zeros(2,1);X,fval=quadprog(H,f,A,b,lb)