好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

matlab及在数学建模中应用.pps

46页
  • 卖家[上传人]:第***
  • 文档编号:67686447
  • 上传时间:2019-01-08
  • 文档格式:PPS
  • 文档大小:789.50KB
  • / 46 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第1讲 MATLAB及 在数学建模中的应用 MatLab简介及基本运算 常用计算方法 应用实例,一、 MatLab简介及基本运算,1.1 MatLab简介 1.2 MatLab界面 1.3 MatLab基本数学运算 1.4 MatLab绘图,1.1 MatLab简介,MATLAB名字由MATrix和 LABoratory 两词组成20世纪七十年代后期, 美国新墨西哥大学计算机科学系主任Cleve Moler教授为减轻学生编程负担,为学生设计了一组调用LINPACK和EISPACK库程序的“通俗易用”的接口,此即用FORTRAN编写的萌芽状态的MATLAB经几年的校际流传,在Little的推动下,由Little、Moler、Steve Bangert合作,于1984年成立了MathWorks公司,并把MATLAB正式推向市场从这时起,MATLAB的内核采用C语言编写,而且除原有的数值计算能力外,还新增了数据图视功能1997年春,MATLAB5.0版问世,紧接着是5.1、5.2、5.3、6.0、6.1、6.5、7.0版现今的MATLAB拥有更丰富的数据类型和结构、更友善的面向对象、更加快速精良的图形可视、更广博的数学和数据分析资源、更多的应用开发工具。

      20世纪九十年代的时候,MATLAB已经成为国际控制界公认的标准计算软件MATLAB具有用法简易、可灵活运用、程式结构强又兼具延展性以下为其几个特色: ①可靠的数值运算和符号计算在MATLAB环境中,有超过500种数学、统计、科学及工程方面的函数可使用 ②强大的绘图功能 MATLAB可以绘制各种图形,包括二维和三维图形 ③简单易学的语言体系 ④为数众多的应用工具箱1.2 MatLab界面,1.3 MatLab基本数学运算,MATLAB的基本算术运算有: +(加)、-(减)、*(乘)、/(右除)、\(左除)、^(乘方) 还有一种特殊的运算,点运算:.*、./、.\和.^ 输入方式: 在MATLAB命令窗中输入 (12+2*(7-4))/3^2 z=2*exp(2)+sin(pi/6) B=[1+5i,2+6i;3+8*i,4+9*i] 在M文件中输入 例1.1 求方程 3x4+7x3 +9x2-23=0的全部根 p=[3,7,9,0,-23]; %建立多项式系数向量 x=roots(p) %求根,例1.2 求一元二次方程ax2 +bx+c=0的根 a=input('a='); b=input('b='); c=input('c='); d=b*b-4*a*c; x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)]; disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);,变量命名规则: 1. 变量名区分大小写。

      2. 变量的第一个字符必须为英文字母 3. 变量名可以包含下连字符、数字,但不能为空格符、标点1.4 MatLab绘图,二维数据曲线图 例1.3 绘制曲线 x=tsin(3t),y=tsin2(t), 0≤t≤2π t=0:0.1:2*pi; x=t.*sin(3*t); y=t.*sin(t).*sin(t); plot(x,y);,其他二维图形 极坐标图 polar(theta,rho,选项) 条形图 bar(x,y,选项) 阶梯图 stairs(x,y,选项) 杆图 stem(x,y,选项) 填充图 fill(x1,y1,选项1,x2,y2,选项2,…) 饼图 pie(x),三维图形 三维曲线 plot3(x1,y1,z1,选项1,…,xn,yn,zn,选项n) 三维曲面 利用meshgrid函数产生平面区域内的网格坐标矩阵其格式为: x=a:d1:b; y=c:d2:d; [X,Y]=meshgrid(x,y); mesh(x,y,z)和surf(x,y,z)是绘制三维曲面的函数x,y是网格坐标矩阵,z是网格点上的高度矩阵例1.4 绘制三维曲面图z=sin(x+sin(y))-x/10。

      [x,y]=meshgrid(0:0.25:4*pi); z=sin(x+sin(y))-x/10; mesh(x,y,z); %surf(x,y,z);,二、 常用计算方法,,线性方程组Ax=b求解 非线性方程组数值求解 无约束最优化问题求解 有约束最优化问题求解 常微分方程初值问题的数值解法 插值与拟合 数值积分与数值微分,㈠、线性方程组Ax=b求解 (1) x=A\b (2) x=inv(A)*b 例2.1 用直接解法求解下列线性方程组:,㈡、非线性方程组数值求解 (1) fzero函数 求单变量非线性方程的根调用格式为: z=fzero('fname',x0,tol,trace) (2) fsolve函数 非线性方程组F(X)=0,用fsolve函数求其数值解fsolve函数的调用格式为: X=fsolve('fun',X0,option),例2.2 求下列非线性方程组 在(0.5,0.5) 附近的数值解 分两步: 1、建立函数文件myfun.m; 2、在给定的初值 x0=0.5,y0=0.5 下,调用fsolve函数求方程的根函数文件myfun.m: function q=myfun(p) x=p(1); y=p(2); q(1)=x-0.6*sin(x)-0.3*cos(y); q(2)=y-0.6*cos(x)+0.3*sin(y); 调用: z=fsolve('myfun',[0.5,0.5],optimset('Display','off')),结果: z = 0.6354 0.3734 将求得的解代回原方程,可以检验结果是否正确,命令如下: q=myfun(z) q = 1.0e-009 * 0.2375 0.2957 可见得到了较高精度的结果。

      ㈢、无约束最优化问题求解 MATLAB提供了3个最小值函数,它们的调用格式为: [x,fval]=fminbnd('fname',x1,x2,option) 求一元函数在区间(x1,x2)中的最小值点x和最小值fval. 求多元函数: x=fminsearch('fname',x0,option) x=fminunc('fname',x0,option) 这两个函数的调用格式相似其中fminsearch函数是基于单纯形算法,fminunc是基于拟牛顿法求多元函数的最小值点,x0是求解的初始值向量㈣、有约束最优化问题求解 有约束最优化问题的一般描述为 约束条件可进一步细化为: 线性不等式约束:Ax≤b 线性等式约束: Aeqx=beq 非线性不等式约束:C(x) ≤0 非线性等式约束: Ceq(x) =0 x 的下界和上界: Lbnd ≤x ≤Ubnd,MATLAB提供了fmincon函数,专门用于求解各种约束下的最优化问题它的调用格式为: [x,fval]=fmincon(‘fname’,x0,A,b,Aeq,beq,Lbnd,Ubnd,NonF,option) 其中A,b,Aeq,beq,Lbnd,Ubnd为约束条件,参数NonF为非线性约束函数的M文件名。

      如果某个约束不存在,则用空矩阵来表示例2.3 资金使用问题 设有400万元资金, 要求4年内使用完, 若在一年内使用资金x万元, 则可得效益 万元(效益不能再使用), 当年不用的资金可存入银行, 年利率为10%. 试制定出资金的使用计划, 以使4年效益之和为最大. 分析:设变量表示第i年所使用的资金数,则有,,,分3步求解: 先建立M文件 fun44.m,定义目标函数; function f=fun44(x) f=-(sqrt(x(1))+sqrt(x(2))+sqrt(x(3))+sqrt(x(4))); 2. 再建立M文件mycon1.m定义非线性约束; function [g,ceq]=mycon1(x) g(1)=x(1)-400; g(2)=1.1*x(1)+x(2)-440; g(3)=1.21*x(1)+1.1*x(2)+x(3)-484; g(4)=1.331*x(1)+1.21*x(2)+1.1*x(3)+x(4)-532.4;,ceq=0; 3. 主程序eg3.m x0=[1;1;1;1];vlb=[0;0;0;0];vub=[];A=[];b=[];Aeq=[];beq=[]; [x,fval]=fmincon('fun44',x0,A,b,Aeq,beq,vlb,vub,'mycon1‘,optimset('Display','off','LargeScale','off')); disp(['四年使用的资金数为:',num2str(x')]); disp(['最大效益为:',num2str(fval)]); 结果: 四年使用的资金数为:84.24441 107.6353 128.9029 148.2387 最大效益为:43.0821,MATLAB求解优化问题的主要函数 :,㈤、常微分方程初值问题的数值解法 基于龙格-库塔法,MATLAB提供了求常微分方程数值解的函数,一般调用格式为: [t,y]=ode23('fname',tspan,y0) [t,y]=ode45('fname',tspan,y0),例2.4 设有初值问题 求其数值解,并与精确解比较。

      (精确解为 ) 分两步: 1、建立函数文件funt.m; function yp=funt(t,y) yp=(y^2-t-2)/4/(t+1);,2、求解微分方程 t0=0;tf=10; y0=2; [t,y]=ode23('funt',[t0,tf],y0) %求数值解 y1=sqrt(t+1)+1 %求精确解 plot(t,y, 'b.',t,y1, 'r-'); %通过图形来比较,㈥、插值与拟合 (1) 插值 一维数据插值 Y1=interp1(X,Y,X1,'method') 二维数据插值 Z1=interp2(X,Y,Z,X1,Y1,'method') method是插值方法,允许的取值有‘linear’、‘nearest’、‘cubic’、‘spline’,(2) 曲线拟合 用polyfit函数来求得最小二乘拟合多项式的系数,再用polyval函数按所得的多项式计算所给出的点上的函数近似值 [P,S]=polyfit(X,Y,m) Y=polyval(P,x),㈦、数值积分与数值微分 (1) 数值积分 [I,n]=quad('filename',a,b,tol,trace) filename是被积函数名。

      a和b分别是定积分的下限和上限 I=dblquad('f(x,y)',a,b,c,d,tol,trace) 该函数求f(x,y)在[a,b]×[c,d]区域上的二重定积分2) 数值微分 在MATLAB中,没有直接提供求数值导数的函数,只有计算向前差分的函数diff,其调用格式为: DX=diff(X) DX=diff(X,n)计算X的n阶向前差分 求数值导数可以通过数值差分除以步长得到三、 应用实例,广告费用与效应——某装饰材料公司欲以每桶2元的价钱购进一批彩漆一般来说随着彩漆售价的提高,预期销售量将减少,并对此进行了估算(见下表)为了尽快收回资金并获得较多的赢利,装饰材料公司打算做广告投入一定的广告费后,销售量将有一个增长,可由销售增长因子来表示(见下表) 装饰材料公司采取怎样的营销战略使得预期的利润最大?,,要解决的问题是: 找到一个最优策略:算出投入的广告费是多少, 实际销售量是多少及最大利润是多少 思路: 找一个优化模型,求解最大利润分析:设出所需的变量: x: 售价(元) y: 预期销售量(桶) z: 广告费(元) k: 销售增长因子 s: 实际销售量(元。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.