MATLAB及在数学建模中的应用
- 格式:pps
- 大小:789.50 KB
- 文档页数:46
Matlab在数学建模中的应用一、前言由实验数据建立数学模型,我们通常采用回归分析,在热油管道运行优化软件的开发中,需要根据不同油品的粘温数据,回归出粘温关系数学模型,以计算出不同温度下的油品粘度。
二、热油管道运行优化软件简介1. 功能需求本软件的功能为已知输油管道系统的运行参数,寻求在特定输油任务的前提下,输油费用最小值时的工况组态,并可选择输出各工况组态的运行参数和相应费用。
2. 编程语言及开发环境本软件的功能侧重于数值计算,在寻优过程中需要进行大量的数据处理,为了能够快速得到寻优结果,需要软件具有较高的执行效率,因此本软件编程语言选择C++语言。
C++语言程序生成代码质量高,一般只比汇编程序生成的目标代码效率低10~20%,且具有指针操作功能,能够象汇编语言一样对位、字节和地址进行操作,使程序的算法更加灵活。
本软件采用Visual C++ 6.0作为软件开发环境,这是一种可视化编程工具,界面友好,逻辑清晰,调试方便,界面编制能力很强,开发的软件可以在Windows系列操作系统上良好运行。
3、软件界面本软件运行后,主界面如下图所示三、在VC++中通过调用Matlab实现回归分析1. 在VC++中调用Matlab方法简介Matlab是一种功能非常强大的数学分析软件,它广泛应用于线性代数、自动控制理论、数理统计、动态系统仿真等领域,具有扩展性好、易学易用、方便快捷等优点,但Matlab语言是一种解释性语言,它实时效率差、不可以脱离其环境独立运行,而在VC++中调用Matlab,既能保留Matlab的优良算法,又能保持VC++的高效率性, 能大大缩短本功能模块的开发周期,在VC++中调用Matlab 主要有以下两种方法:(1) 利用Matlab引擎 Matlab引擎采用客户机和服务器的计算方式,在运行中,VC++开发的程序为前端客户机,它向Matlab引擎传递命令和数据信息,并从Matlab引擎中接收数据信息,这种方法调用Matlab 采用较少的代码即可实现,但不能脱离Matlab 运行环境,且运行速度缓慢。
MATLAB在数学建模方面的应用计算机仿真技术与CAD——基于MATLAB的控制系统(第二版)课程结业论文课题:matlab在数学建模方面的应用专业班级: 08自动化学生:学号:设计时间: 2010/12/20论文目录一、MATLAB简介二、Matlab在现在科技及生产上的应用三、利用matlab实现数学建模的一般步骤四、Matlab在数学建模方面的应用示例五、论文结束语一、 MATLAB的简介:MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连matlab开发工作界面接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
二、软件应用Matlab以其丰富的数据类型和结构、友善的面向对象、快速的图形可视、广博的应用开发工具在控制界得到了广泛地应用,目前已成为控制系统计算机辅助设计领域中最流行和最受欢迎的软件环境。
但是,用Matlab进行控制系统分析,需要学会Matlab的M编程语言和熟悉它的子程序。
因此,如何利用Matlab强大的图形对象属性设置技术及图形用户界面制作技术为自动控制教学服务成为主要课题。
为此,设计了具有良好的人机交互界面并能完成线性控制系统的计算机辅助分析的教学软件。
数学模型是控制系统分析研究的基础,也是综合设计系统的依据。
matlab在数学建模中的运用
Matlab广泛应用于数学建模中,因为它具有处理数学问题的强大功能和丰富的工具集。
以下是Matlab在数学建模中的一些常见应用:
1.解微分方程:Matlab提供了各种数值求解器和工具,可以解决各种常微分方程和偏微分方程,这对于动力学系统、控制系统和其他物理现象的建模与仿真非常有用。
2.优化问题:Matlab包括了丰富的优化工具箱,可用于解决各种优化问题,例如线性规划、非线性规划、整数规划等。
3.统计分析:Matlab提供了丰富的统计工具箱,可用于数据分析、拟合曲线、确定概率分布、执行假设检验等。
4.数值模拟:Matlab具有强大的数值计算能力,可用于模拟各种数学模型,例如物理系统、金融模型、生态系统等。
5.图形可视化:Matlab提供了丰富的绘图功能,可用于可视化数学模型的结果和解决方案,以及制作各种类型的图表和图形。
第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.2MatLab界面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);5101551015-3-2-115101551015-3-2-101二、常用计算方法•线性方程组Ax=b求解•非线性方程组数值求解•无约束最优化问题求解•有约束最优化问题求解•常微分方程初值问题的数值解法•插值与拟合•数值积分与数值微分㈠、线性方程组Ax =b 求解 (1) x=A\b (2) x=inv(A)*b例2.1 用直接解法求解下列线性方程组:⎪⎪⎩⎪⎪⎨⎧=--+=-+-=+-=+-+04662975135243214324214321x x x x x x x x x x x x x x㈡、非线性方程组数值求解(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 函数求方程的根。
⎩⎨⎧=+-=--0sin 3.0cos 6.00cos 3.0sin 6.0y x y y x x函数文件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.63540.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)(min 0≤)(..x f x G t xsMATLAB提供了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 年所使用的资金数,则有x 4,3,2,1,04.5321.121.1331.14841.121.14401.1400..max 43213212114321=≥≤+++≤++≤+≤+++=i x x x x x x x x x x x t s x x x x z i分3步求解:1.先建立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.0821MATLAB求解优化问题的主要函数:类型模型基本函数名一元函数极小Min F(x)s.t.x1<x<x2 x=fminbnd(‘F’,x1,x2)无约束极小Min F(X)X=fminunc(‘F’,X0) X=fminsearch(‘F’,X0)线性规划Min Xc Ts.t.AX<=bX=linprog(c,A,b)二次规划Min21x T Hx+c T xs.t. Ax<=bX=quadprog(H,c,A,b)约束极小(非线性规划)Min F(X)s.t. G(X)<=0X=fmincon(‘FG’,X0)达到目标问题Min rs.t. F(x)-wr<=goalX=fgoalattain(‘F’,x,goal,w)极小极大问题Min max {F i(x)}X {Fi(x)}s.t. G(x)<=0X=fminimax(‘FG’,x0)㈤、常微分方程初值问题的数值解法基于龙格-库塔法,MATLAB 提供了求常微分方程数值解的函数,一般调用格式为:[t,y]=ode23('fname',tspan,y0)[t,y]=ode45('fname',tspan,y0)000)(,≤≤),,(y t y T t t y t f y ==′例2.4 设有初值问题求其数值解,并与精确解比较。