《2022年数学建模编程-重要知识点 .pdf》由会员分享,可在线阅读,更多相关《2022年数学建模编程-重要知识点 .pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、学习必备欢迎下载1建立符号变量和符号常量MATLAB提供了两个建立符号对象的函数:sym和 syms ,两个函数的用法不同。(1) sym 函数sym函数用来建立单个符号量,一般调用格式为:符号量名 =sym(符号字符串 ) 该函数可以建立一个符号量,符号字符串可以是常量、变量、函数或表达式。应用 sym 函数还可以定义符号常量,使用符号常量进行代数运算时和数值常量进行的运算不同。下面的命令用于比较符号常量与数值常量在代数运算时的差别。(2) syms 函数函数 sym 一次只能定义一个符号变量,使用不方便。MATLAB提供了另一个函数syms,一次可以定义多个符号变量。syms函数的一般调用
2、格式为:syms 符号变量名1 符号变量名2 符号变量名n 用这种格式定义符号变量时不要在变量名上加字符串分界符( ),变量间用空格而不要用逗号分隔。矩阵187624323A, 矩阵333222111B; 分别求出 A x B 及 A与 B中对应元素之间的乘积的程序语句。答案: A=3 2 3;4 2 6;7 8 1;B=1 1 1;2 2 2;3 3 3; A*B,A.*B ans = 16 16 16 26 26 26 26 26 26 ans = 3 2 3 8 4 12 21 24 3 方阵的行列式:det(A)方阵的逆: inv(A)方阵的特征值与特征向量:V ,D=eigA 例绘制
3、 y=x3 的函数图、对数坐标图、半对数坐标图x=1:1:100; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 14 页学习必备欢迎下载subplot(2,3,1); plot(x,x.3); grid on; title plot-y=x3; subplot(2,3,2); loglog(x,x.3); grid on; title loglog-logy=3logx; subplot(2,3,3); plotyy(x,x.3,x,x); grid on; title plotyy-y=x3,logy=3logx; subplot
4、(2,3,4); semilogx(x,x.3); grid on; title semilogx-y=3logx; subplot(2,3,5); semilogy(x,x.3); grid on; title semilogy-logy=x3; 在数据处理和分析应用的其他函数名称含义名称含义min 最小值max 最大值Mean 平均值median 中位数std 标准差diff 相邻元素的差精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 14 页学习必备欢迎下载sort 排序length 个数norm 欧氏(Euclidean )长度
5、sum 总和prod 总乘积dot 内积cumsum 累计元素总和cumprod 累计元素总乘积cross 外积(叉积)下面是矩阵操作的一些例子:a=1,4,6,8,10 %一维矩阵a(3) % a 的第三个元素ans = 6 ?x =1 2 3 4 5 6 7 8 4 5 6 7 8 9 10 11; % 二维 2x8 矩阵? x(3) % x 的第三个元素ans = 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 14 页学习必备欢迎下载2 ? x(1 2 5) % x 的第一、二、五个元素ans = 1 4 3 x(2,3) %
6、x 的第二行第三列的元素ans = 6 x(1:5) % x 的第前五个元素ans = 1 4 2 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(x5) % x 中大于 5 的元素ans = 6 7 8 6 9 7 10 8 11 ? x(4)=100 %给 x 的第四个元素重新给值x = 1 2 3 4 5 6 7 8 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - -
7、-第 4 页,共 14 页学习必备欢迎下载4 100 6 7 8 9 10 11 ? x(3)= % 删除第三个元素(不是二维数组)x = Columns 1 through 12 1 4 100 3 6 4 7 5 8 6 9 7 Columns 13 through 15 10 8 11 ? x(16)=1 % 加入第十六个元素x = Columns 1 through 12 1 4 100 3 6 4 7 5 8 6 9 7 Columns 13 through 16 10 8 11 1 当元素很多的时候,则须采用以下的方式:? x=(1:2.5:120); % 以:起始值 =1,增量值
8、 =2,终止值 =120 的矩阵例建立矩阵A,然后找出大于4 的元素的位置。(1) 建立矩阵A。A=4,-65,-54,0,6;56,0,67,-45,0 (2) 找出大于4 的元素的位置。find(A4) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 14 页学习必备欢迎下载例 3-1 分别建立命令文件和函数文件,将华氏温度f 转换为摄氏温度c。程序 1:首先建立命令文件并以文件名f2c.m 存盘。clear; % 清除工作空间中的变量f=input(Input Fahrenheit temperature: ); c=5*(f-3
9、2)/9 然后在 MATLAB的命令窗口中输入f2c,将会执行该命令文件,执行情况为:Input Fahrenheit temperature :73 c = 22.7778 例 3-2 输入 x,y 的值,并将它们的值互换后输出。程序如下:x=input(Input x please.); y=input(Input y please.); z=x; x=y; y=z; disp(x); disp(y); 例 3-3 求一元二次方程ax2 +bx+c=0 的根。程序如下:a=input(a=?); b=input(b=?); c=input(c=?); d=b*b-4*a*c; x=(-b+
10、sqrt(d)/(2*a),(-b-sqrt(d)/(2*a); disp(x1=,num2str(x(1),x2=,num2str(x(2); 例 3-4 计算分段函数的值。程序如下:x=input( 请输入 x 的值 :); if x=0 y= (x+sqrt(pi)/exp(2); else y=log(x+sqrt(1+x*x)/2; end y 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 14 页学习必备欢迎下载例 3-6 某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price 来表示 ):price200
11、没有折扣200price500 3%折扣500price1000 5%折扣1000price2500 8%折扣2500price5000 10%折扣5000price 14% 折扣输入所售商品的价格,求其实际销售价格。price=input( 请输入商品价格); switch fix(price/100) case 0,1 % 价格小于200 rate=0; case 2,3,4 % 价格大于等于200 但小于 500 rate=3/100; case num2cell(5:9) % 价格大于等于500 但小于 1000 rate=5/100; case num2cell(10:24) % 价
12、格大于等于1000 但小于 2500 rate=8/100; case num2cell(25:49) % 价格大于等于2500 但小于 5000 rate=10/100; otherwise % 价格大于等于5000 rate=14/100; end price=price*(1-rate) % 输出商品实际销售价格3try 语句语句格式为:try 语句组 1 catch 语句组 2 end try 语句先试探性执行语句组1,如果语句组1 在执行过程中出现错误,则将错误信息赋给保留的 lasterr 变量,并转去执行语句组2。例 3-7 矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩
13、阵的乘积,若出错,则自动转去求两矩阵的点乘。程序如下:A=1,2,3;4,5,6; B=7,8,9;10,11,12; try C=A*B; catch 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 14 页学习必备欢迎下载C=A.*B; end C lasterr % 显示出错原因例5-6 在 同一 坐标 内, 分别 用不 同线 型和颜色绘制 曲线y1=0.2e-0.5xcos(4 x) 和y2=2e-0.5xcos( x),标记两曲线交叉点。程序如下:x=linspace(0,2*pi,1000); y1=0.2*exp(-0.5
14、*x).*cos(4*pi*x); y2=2*exp(-0.5*x).*cos(pi*x); k=find(abs(y1-y2)New-M-file 2. 在编辑窗口中输入程序内容3. 点: File-Save,存盘, M 文件名必须与函数名一致。例:定义函数f(x1,x2)=100(x2-x12)2+(1-x1)2 1.建立 M 文件: fun.m function f=fun(x) f=100*(x(2)-x(1)2)2+(1-x(1)2 2. 可以直接使用函数fun.m 例如:计算f(1,2), 只需在 Matlab 命令窗口键入命令:x=1 2 fun(x) 例 3-4 计算分段函数的
15、值。程序如下:x=input( 请输入 x 的值 :); if xui交易费= piuixiui 而题目所给定的定值ui(单位 :元)相对总投资M 很小 , piui更小 , 可以忽略不计 ,这样购买Si的净收益为 (ri-pi)xi 3要使净收益尽可能大,总体风险尽可能小,这是一个多目标规划模型: 目标函数MAXniiiixpr0)(MINmax qixi 约束条件niiixp0)1 (=M 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 14 页学习必备欢迎下载xi0 i=0,1,n a在实际投资中,投资者承受风险的程度不一样,若
16、给定风险一个界限a,使最大的一个风险 qixi/M a,可找到相应的投资方案。这样把多目标规划变成一个目标的线性规划。模型 1固定风险水平,优化收益目标函数: Q=MAX11)(niiiixpr约束条件:Mxqiia Mxpii)1 (,xi 0 i=0,1,n b若投资者希望总盈利至少达到水平k 以上,在风险最小的情况下寻找相应的投资组合。模型 2固定盈利水平,极小化风险目标函数:R= minmax qixi 约束条件:niiiixpr0)(k,Mxpii)1 (, xi 0 i=0,1,n c投资者在权衡资产风险和预期收益两方面时,希望选择一个令自己满意的投资组合。因此对风险、收益赋予权重
17、s(0 s1),s 称为投资偏好系数. 模型 3目标函数: min smaxqixi - (1-s)niiiixpr0)(约束条件niiixp0)1 (=M, xi0 i=0,1,2,n 模型 1 为: minf = (-0.05, -0.27, -0.19, -0.185, -0.185) (x0 x1 x2x3x 4 ) T x0 + 1.01x1 + 1.02x2 +1.045x3 +1.065x4 =1 s.t. 0.025x1a 0.015x2a 0.055x3a 0.026x4a xi0 (i = 0,1, .4)由于 a 是任意给定的风险度,到底怎样给定没有一个准则,不同的投资者
18、有不同的风险度。我们从a=0 开始,以步长a=0.001 进行循环搜索,编制程序如下:a=0; while(1.1-a)1 c=-0.05 -0.27 -0.19 -0.185 -0.185; Aeq=1 1.01 1.02 1.045 1.065; beq=1; A=0 0.025 0 0 0;0 0 0.015 0 0;0 0 0 0.055 0;0 0 0 0 0.026; b=a;a;a;a; vlb=0,0,0,0,0;vub=; x,val=linprog(c,A,b,Aeq,beq,vlb,vub); 精选学习资料 - - - - - - - - - 名师归纳总结 - - - -
19、 - - -第 12 页,共 14 页学习必备欢迎下载a x=x Q=-val plot(a,Q,.) ,axis(0 0.1 0 0.5) ,hold on a=a+0.001; end xlabel(a),ylabel(Q) 例 1-4 求解线性方程组。a=2,-3,1;8,3,2;45,1,-9; b=4;2;17; x=inv(a)*b 矩阵的逆对于一个方阵A,如果存在一个与其同阶的方阵B,使得:A B=B A=I (I 为单位矩阵 ) 则称 B 为 A 的逆矩阵,当然,A 也是 B 的逆矩阵。求一个矩阵的逆是一件非常烦琐的工作,容易出错, 但在 MATLAB中,求一个矩阵的逆非常容易
20、。求方阵A 的逆矩阵可调用函数inv(A) 。例 2-11 用求逆矩阵的方法解线性方程组。Ax=b 其解为:x=A-1b 方阵的行列式把一个方阵看作一个行列式,并对其按行列式的规则求值,这个值就称为矩阵所对应的行列式的值。在MATLAB中,求方阵A 所对应的行列式的值的函数是det(A)。1求标准方差在 MATLAB中,提供了计算数据序列的标准方差的函数std。对于向量X,std(X)返回一个标准方差。 对于矩阵A,std(A)返回一个行向量,它的各个元素便是矩阵A 各列或各行的标准方差。 std 函数的一般调用格式为:Y=std(A,flag,dim) 其中 dim 取 1 或 2。当 di
21、m=1 时,求各列元素的标准方差;当dim=2 时,则求各行元素的标准方差。 flag 取 0 或 1,当 flag=0 时,按 1 所列公式计算标准方差,当flag=1 时,按 2 所列公式计算标准方差。缺省flag=0, dim=1。2, 一般的曲线拟合 :p=lsq curvefit(Fun,p0,xdata,ydata)其中 Fun表示函数 Fun(p,data) 的 M函数文件,p0表示函数的初值lsqcurvefit()命令的求解问题形式是2).),(minydataxdatapFunsump若要求解点 x 处的函数值可用程序f=Fun(p,x)计算例如,已知函数形式dxbxceaey, 并且已知数据点,2, 1),(niyxii要确定四个未知参数a,b,c,d使用 curvefit命令,数据输入,;,2121nnyyyydataxxxxdata;精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 14 页学习必备欢迎下载初值输,00000dcbap;并且建立函数dxbxceaey的 M文件(Funm ) 若定义dpcpbpap4321,,则输出,4321ppppp精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 14 页