MATLAB及其在数学建模中的应用

MATLAB及其在数学建模中的应用
MATLAB及其在数学建模中的应用

Modeling and Simulation 建模与仿真, 2015, 4(3), 61-71

Published Online August 2015 in Hans. https://www.360docs.net/doc/7b10735783.html,/journal/mos

https://www.360docs.net/doc/7b10735783.html,/10.12677/mos.2015.43008

Study of MATLAB and Its Application in

Mathematical Modeling

Chuanqi Qin, Ting Wang, Yuanfeng Jin

School of Science, Yanbian University, Yanji Jilin

Email: yfkim@https://www.360docs.net/doc/7b10735783.html,

Received: Jul. 22nd, 2015; accepted: Aug. 11th, 2015; published: Aug. 18th, 2015

Copyright ? 2015 by authors and Hans Publishers Inc.

This work is licensed under the Creative Commons Attribution International License (CC BY).

https://www.360docs.net/doc/7b10735783.html,/licenses/by/4.0/

Abstract

This article firstly introduces the development and the features of MATLAB software. And then the concept and the process of mathematical modeling are explained. After, the article briefly intro-duces some MATLAB solution methods of mathematical modeling problems, giving several in-stances of some methods. At the last of this article, through a relatively complete example, it fo-cuses on the application of MATLAB in mathematical modeling. It has been found that the applica-tion of MATLAB in mathematical modeling can improve the efficiency and quality of mathematical modeling, enrich the means and methods of mathematical modeling, and play a very important role in the teaching of mathematical modeling course.

Keywords

MATLAB, Mathematical Modeling, Mathematic Model

MATLAB及其在数学建模中的应用

秦川棋,王亭,金元峰

延边大学理学院,吉林延吉

Email: yfkim@https://www.360docs.net/doc/7b10735783.html,

收稿日期:2015年7月22日;录用日期:2015年8月11日;发布日期:2015年8月18日

秦川棋等

摘要

本文开篇简单介绍了MATLAB软件的社会作用,然后介绍了MATLAB的特点,又对数学建模的概念及建模过程做出介绍,接着简单介绍了一些数学建模问题的MATLAB求解方法,并给出了部分方法的使用实例,最后通过一个比较完整的建模实例阐述MATLAB在数学建模中的应用。实践证明将MATLAB软件应用于数学建模可以提高数学建模的效和质量,丰富了数学建模的方法和手段,同时具有很重要的教学意义。

关键词

MATLAB,数学建模,数学模型

1. 引言

近几十年,数学科学迅速向自然科学、工程、经济、管理和社会科学等各个领域渗透,在许多方面发挥着越来越重要的作用,在很多情况下起着举足轻重、甚至决定性的作用。而数学建模竞赛作为大学生的群众性科技活动,越来越受到各高校的重视。与此同时,数学建模和与之相伴的计算正在成为工程设计中的关键部分,数学科学与数学软件的结合,成为解决计算问题的关键技术。

MATLAB自1984年由MathWorks公司推向市场以来,经历了30年的发展和竞争,现已风靡世界。

可靠的数值计算和符号计算功能、强大的绘图功能、简单易学的语言体系以及为数众多的应用工具箱是MATLAB区别于其他科技应用软件的显著标志。MATLAB有着丰富的函数资源,各行各业的专业人员不需要掌握太多的软件编程知识就可以编写出实用的程序,从而使他们从繁琐的程序代码中解放出来,专心从事手头研究或工作[1]-[4]。

2. MATLAB的特点

2.1. 语言简单易学

MATLAB是一种集编程与解释执行于一体的高级语言,语句采取通用的数学形式,她把编辑、编译、连接、执行功能融为一体,调试程序手段丰富、调试速度快,可以快速排除输入程序时书写、语法等方面的错误,具有一般语言基础的用户可以较快掌握。

2.2. 代码短小高效

MATLAB最基本的数据单元是矩阵,它将数学问题的许多算法变成了大量函数库,既有解决许多问题的工具箱,只需简单的调用现成函数便可以快速解决问题,不需要用户再花费很长时间去实现常规算法。

2.3. 计算功能强大

MATLAB具有强大的矩阵数值计算功能,它以矩阵作为数据运算的基本单位,同时利用符号和函数可以对矩阵进行加减乘除、转置、求逆等一系列线性代数运算,轻松实现大型数值算法的程序编写,可以解决实际应用中的许多数学问题,尤其是与矩阵计算有关的问题。

2.4. 强大的绘图功能

MATLAB具有突出的绘图功能,工具箱中含有许多绘图函数命令,可以绘制各种图形,包括二维或三维图形(如线形图,条形图,饼图等)、工程特性较强的特殊图形(玫瑰花图,极坐标图等)、显示数据分

秦川棋等

析的图形(如矢量图,等值线图,曲面图等),也可以修改和装饰图形,突出呈现的效果,还可以作有关生成快照的动画,利用MATLAB图形句柄操作并同时结合绘图函数绘制自己最理想的图形,为用户在绘图方面提供了一个没有束缚的广阔空间。

2.5. 计算机仿真

运用MATLAB进行计算机仿真,就是利用Smulink来实现动态系统建模和仿真。它的优点是为用户省去了许多重复的代码编写工作,以简单的图形界面查看数学以及经济学中一些系统动态仿真效果

2.6. 领域广泛的工具箱

MATLAB分为两部分:核心部分和功能各异的工具箱。核心部分包含数百个核心内部函数,也是使用和构造工具箱的基础。工具箱(函数库)可分两个方向:功能性工具箱和学科性工具箱。功能性工具箱主要用途是对符号计算功能、图示建模仿真功能、文字处理功能以及与硬件实时交互的功能进行扩展。相比之下专业性比较强的学科性工具箱的编写都是出自于该领域内学术水平很高的专家。所以用户可以省去编写基础程序的繁琐、低效的工作,只需简单编写自己学科领域范围内的基础程序就可直接进行高效、精密、尖端的研究。

2.7. 开放性好

撇开内部函数,MATLAB的基本函数库和工具箱全部是公开的、可读可改的源文件,用户直接编写自己的函数扩充到基本函数库中或者可直接修改源文件在MATLAB中都是允许的,甚至开发新的应用领域,构造自己的工具箱。

2.8. 文件I/O和外部引用程序接口

MATLAB提供了外部程序接口,允许并支持在MATLAB与其他应用程序之间进行数据交换,也帮助其他程序设计语言能够调用MATLAB高效算法。识别并接受压缩格式的MAT文件,用户更是可以动态加载、删除或者重载Java类等。

3. 数学建模

3.1.数学模型与数学建模

数学模型是一种模拟,是用数学符号、数学式子、程序、图形等对实际课题本质属性的抽象而又简洁的刻划,而应用知识从实际课题中抽象、提炼出数学模型的过程就称为数学建模。建立数学模型的过程,是把错综复杂的实际问题简化、抽象为合理的数学结构的过程。要通过调查、收集数据资料,观察和研究实际对象的固有特征和内在规律,抓住问题的主要矛盾,建立起反映实际问题的数量关系,然后利用数学的理论和方法去分析和解决问题。这就需要深厚扎实的数学基础,敏锐的洞察力和想象力,对实际问题的浓厚兴趣和广博的知识面。数学建模是联系数学与实际问题的桥梁,是数学在各个领械广泛应用的媒介,是数学科学技术转化的主要途径,数学建模在科学技术发展中的重要作用越来越受到数学界和工程界的普遍重视,它已成为现代科技工作者必备的重要能力之一。

3.2.数学建模过程

数学建模是一种比较复杂的创造性活动,现实世界中的失误特点各异,不可能仅仅用一些公式化的框架就能规定出各种模型具体如何建立,所以,在这里只是大致归纳一下建模的一般原则和步骤:

(1) 模型准备:首先根据题目的要求,了解问题的实际背景,明确其实际意义,掌握对象的各种信息。

秦川棋 等

(2) 问题分析:对所要求的问题进行分析,根据研究对象的特点,分解复杂的研究对象为简单的和理想化的研究对象。

(3) 模型假设:根据实际对象的特征和建模的目的,对现实研究对象及问题进行必要的简化,并用精确的语言提出一些恰当合理的假设。

(4) 模型建立:在假设的基础上,利用适当的数学工具来刻划各变量之间的数学关系,建立相应的数学结构。

(5) 结果分析:对所得的结果进行数学上的分析。

(6) 模型检验:将模型分析结果与实际情形进行比较,以此来验证模型的准确性、合理性和适用性。

4. MATLAB 与数学建模

在系统数学建模过程中,对象的一般特点是复杂的、受多种因素影响的,往往需要在很短的时间内完成复杂的计算,仅仅依靠手工计算几乎是不可能完成的,所以在数学建模过程中,往往伴随着大量使用计算机的计算。MATLAB 强大的数值计算能力,能够非常方便、快捷、高效的解决数学建模中的许多实际问题,在模型求解方面占有不可或缺的位置,因此,MATLAB 在数学建模中受到了许多建模工作者的重视与青睐[5]-[7]。

数学建模中,有很多MATLAB 求解方法,如MATLAB 实现数据建模、MATLAB 实现规划问题、MATLAB 实现灰色预测等方法,接下来,将对这几种常用的MATLAB 方法用具体实例来进行说明:

4.1. MATLAB 实现数据建模

此方法在数学建模中经常应用的场合为:数据处理(数据清预处理、数值计算、数据拟合)、绘制图形、建议预测。

例如,一些骑车人常常在自行车的辐条上安装一些亮丽夺目的装饰物,自行车行驶在不同轨迹的路上行驶时,车轮装饰物的会相应呈现不同运动轨迹,增添美感。试画出自行车在直线形状、抛物线形状以及正弦曲线形状的路面上行驶时,装饰物的运动轨迹图形。借以表现MATLAB 的绘图功能及方法程序。

假设自行车在行驶过程中,车轮外圆始终只与曲线()y f x =的一个点接触。将路面视作一条过原点的曲线()f x ,车轮为半径为R 的圆,该圆位于曲线()f x 的上方,且与此曲线相切。设装饰物P 在距离圆心r 处,显然r R <。OP 与圆交于A 点,以A 点为初始接触点,圆(车轮)滚过θ角度后(车轮与地面无相对滚动),圆与曲线的接触点变为B ,圆心从O 移动的O ′,装饰物P 移动到P ′,如图1所示。

设()00,B x y ,(),O X Y ′,(),P x y ′,则

0x BA R BA x θ′===∫,

所以0

1x x R θ∫ (),O X Y ′在()y f x =过B 点的法线的上侧,且在以B 为圆心的圆周上,所以有()()()0001Y f x X x f x ?=??′,()()()2

2

200X x Y f x R ?+?=

,联立解得

0X x =

,()0Y f x 。又对(),P x y ′,

有()sin x X r θ?=

??,()cos y Y r θ?=??,其中()()0arctan f x ?′

=,00

1x x R θ∫。 所以,装饰物的运动轨迹方程为

()0sin x x r θ??

,()()0cos y f x r θ?=?

秦川棋 等

Figure 1. Motion diagram of the bicycle wheels 图1. 自行车车轮运动示意图

接下来,任意取自行车运行路线的曲线方程,

(1) 直线:取()0f x =,则有0x R θ=,0φ=,此时装饰物的运动轨迹方程为: ()00sin x x r x R =?,()0cos y R r x R =?

(2) 抛物线:取()20.20.2f x x =?,则有

00

1x x R θ

∫,()0arctan 0.4x ?=?,此时,装饰物的运动轨迹方程为:

()0sin x x r θ??

,()2

00.20.2cos y x r θ?=??? (3) 正弦曲线:取()0.2sin f x x =

,则有0

1x x R θ

∫,()0arctan 0.2cos x ?=,此时,装饰物的运动轨迹方程为:

()0sin x x r θ??

,()00.2sin cos y x r θ?=+

? 具体MATLAB 程序为: clc,clear all;

%(1)直线情况的实现 x0=0:0.01:2;R=0.1;r=0.075; x1=x0-r*sin(x0/R);

%计算f(x)=0时,p 点的运动轨迹

y1=R-r*cos(x0/R); subplot(3,1,1); plot(x1,y1,x0,0);

%绘制运动轨迹曲线和f(x)曲线

xlabel('x1车轮水平运行距离');ylabel('y1水平面高度');grid on %(2)抛物线情况的实现 x0=0:0.01:2;R=0.1;r=0.075; y0=0.2-(0.2*x0).^2; %计算路面曲线 fai=atan(-0.4*x0);

%求φ

int=inline('sqrt(1+(-0.4*x).^2)');

%定义θ的积分函数

for k=1:length(x0)

xita1(k)=quad(int,0,x0(k))/R;

%调用quad 函数求θ

秦川棋 等

end

x2=x0+R*0.4*x0/sqrt(1+(-0.4*x0).^2)-r*sin(xita1-fai); %运动轨迹方程

y2=y0+R./sqrt(1+(-0.4*x0).^2)-r*cos(xita1-fai); subplot(3,1,2); plot(x2,y2,x0,y0);

%绘制运动轨迹曲线和f(x)曲线

xlabel('x2车轮水平运行距离');ylabel('y2水平面高度');grid on %(3)正弦曲线情况的实现 x0=0:0.01:10;R=0.1;r=0.075; y0=0.2*sin(x0);

%计算路面曲线 fai=atan(0.2*cos(x0));

%求φ

int=inline('sqrt(1+(0.2*cosx).^2)');

%定义θ的积分函数 for k=1:length(x0)

xita2(k)=quad(int,0,x0(k))/R; %调用quad 函数求θ

end

x3=x0-R*0.2*cos(x0)/sqrt(1+(0.2*cos(x0)).^2)-r*sin(xita2-fai); %运动轨迹方程 y3=0.2*sin(x0)+R./sqrt(1+(0.2*cos(x0)).^2)-r*cos(xita2-fai); subplot(3,1,3); plot(x3,y3,x0,y0);

%绘制运动轨迹曲线和f(x)曲线

xlabel('x3车轮水平运行距离');ylabel('y3水平面高度');grid on 运行此程序,得到三种情况下,装饰物的运动轨迹图形为(图2)。

4.2. MATLAB 实现规划问题

此方法在数学建模中经常应用的场合为:多约束线性规划、整数规划和不太复杂的多约束非线性规划、整数规划。

例如,某公司在六个城市1c ,2c ,3c ,4c ,5c ,6c 中有分公司,从i c 到j c 的直接航程票价记在下述矩阵的(i ,j )位置上。(∞表示无直接航路),请帮助该公司设计一张城市1c 到其他城市之间的票价最便宜的路线图。

0 5040251050 0152025150102040201001025252010055102525550∞

∞∞

用矩阵n n a × (n 为顶点个数)存放各边权的邻接矩阵,

行向量pb 、1index 、2index 、d 分别用来存放p 标号信息、标号顶点顺序、标号顶点索引、最短通路的值。其中分量() 1 0 i pb i i =

当顶点标号

当顶点标第号第已未;

()2index i 存放始点到第i 点最短通路中第i 顶点前一顶点的序号; ()d i 存放由始点到第i 点最短通路的值。

求第一个城市到其他城市的最短路径,MATLAB 程序为:

秦川棋等

Figure 2. Trajectory graphics of the decorations

图2. 装饰物的运动轨迹图形

clc, clear all;

a=zeros(6);

a(1,2)=50;a(1,4)=40;a(1,5)=25;a(1,6)=10;

a(2,3)=15;a(2,4)=20;a(2,6)=25;

a(3,4)=10;a(3,5)=20;

a(4,5)=10;a(4,6)=25;

a(5,6)=55;

a=a+a';

a(find(a==0))=inf; %矩阵为零的位置距离为无穷小inf

pb(1:length(a))=0;pb(1)=1;

index1=1;index2=ones(1,length(a));

d(1:length(a))=inf;d(1)=0;temp=1;

while sum(pb)

tb=find(pb==0)

d(tb)=min(d(tb),d(temp)+a(temp,tb));

tmpb=find(d(tb)==min(d(tb)));

temp=tb(tmpb(1));

pb(temp)=1;

index1=[index1,temp];

temp2=find(d(index1)==d(temp)-a(temp,index1));

index2(temp)=index1(temp2(1));

end

d,index1,index2

运行该程序,即可得到城市

c到其他城市之间的票价最便宜的路线:

1

d =

0 35 45 35 25 10

4.3. MATLAB实现灰色预测

此方法在数学建模中经常应用的场合为:数据量少的情况下预测。

秦川棋 等

例如,2009年的全国大学生数学建模竞赛(CUMCM)的D 题为某服务公司承办了一次全国性的会议,会议筹备组要制定一个预定宾馆客房,租借会议室吧、租用客车的合理方案。筹备组需要先预测与会代表人数。预测的依据是代表回执数量以及往届的与会人员数据。已知本届会议的回执情况(见表1)及以往几届会议代表回执和与会情况(见表2)。要解决的问题是:根据这些数据,预测本届会议与会代表人数。

根据题目所给出的数据,知道本届发来回执的代表人数为755x =,由于发来回执但未与会的代表人数1x 与发来回执的代表人数x 之间有一定的关系,所以利用最小二乘法拟合出相应曲线,然后得到发来回执但未与会的代表数量。MATLAB 程序为:

x=[315 356 408 711]; y=[89 115 121 213]; p2=polyfit(x,y,2) x1=300:800; y2=polyval(p2,x1); plot(x,y,'rp',x1,y2)

xlabel('发来回执的代表数量');ylabel('发来回执但未与会的代表数量'); z=polyval(p2,755)

运行此程序,即得到二次拟合曲线系数与结果及二次拟合图(图3): p2 =

?0.0001 0.4463 ?33.8704 z =

223.4953

二次拟合曲线为:()

20.1446.333870.40.001y x x =?+?×,可得到今年发来回执但未与会的代表人数为223.4953 (人),为保守起见,对223.4953 (人)进行向下取整,即发来回执但未与会的代表人数为223 (人)。

另一方面,由于未发来回执而与会的代表人数2x 与发来回执的代表人数x 之间的影响关系不大,需要使用题目给出的数据单独进行预测,但由于题目所给数据有限,即采用对数据要求不大但精度较高的灰色预测模型来进行预测。

首先,我们定义:未知与会率 = 未发来回执而与会的代表人数/发来回执的代表人数。则可得到往届

Table 1. The receipt situation of delegates 表1. 本届与会代表的回执情况(单位:人)

要求 独住1 独住2 独住3 合住1 合住2 合住3 男 107 68 41 154 104 32 女 59

28

19

78

48

17

Table 2. Receipt and present situation of the past few delegates 表2. 以往几届与会代表回执和与会情况(单位:人)

届 次

第一届 第二届 第三届 第四届 发来回执的代表数量 315 356 408 711 发来回执但未与会的代表数量 89 115 121 213 未发回执而与会的代表数量

57

69

75

104

秦川棋等

的未知与会率,如表3所示。

MATLAB程序为:

clear

syms a b;

c=[a b]';

A=[0.180952381 0.193820225 0.183823529 0.146272855];

B=cumsum(A);

n=length(A);

for i=1:(n-1)

C(i)=(B(i)+B(i+1))/2;

end

D=A;D(1)=[];

D=D';

E=[-C;ones(1,n-1)];

c=inv(E*E')*E*D;

c=c';

a=c(1);b=c(2);

F=[];F(1)=A(1);

for i=2:(n+1)

F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a;

end

G=[];G(1)=A(1);

for i=2:(n+1)

G(i)=F(i)-F(i-1);

end

t1=1:4;

t2=1:5;

G

plot(t1,A,'o',t2,G)

运行此程序,得到本届大会的未知与会率预测数据为:

G =

0.1810 0.1980 0.1735 0.1520 0.1331

以及预测数据与原始数据的比较图(图4)。

得到本届的未知与会率为0.1331,所以,本届会议未发来回执而与会的代表人数为:755 (人) × 0.1331 = 100.49 (人),同样为保守考虑,向上取整为101 (人)。

综上可预测,本届与会代表人数为:755 (人) – 223 (人) + 101 (人) = 633 (人)。

Table 3. Unknown present rate of the past delegates

表3.往届未知与会率

届次第一届第二届第三届第四届未知与会率0.180952381 0.193820225 0.183823529 0.146272855

秦川棋等

Figure 3. The quadratic fitting figure

图3. 二次拟合图

Figure 4. Comparison of the predicted data with the original

data

图4. 预测数据与原始数据的比较图

5. 结论

MATLAB一改之前软件包有接口不易扩充、程序结构不开放以及没有标准的基库等缺点,为各国科学家开发科学软件提供了新的途径与手段,原先控制领域里的一些软件工程包逐渐被淘汰或者在MATLAB的基础上重新构建。时至今日,经过MathWorks公司的不断拓展与完善,MATLAB已经发展成为适合多学科、多种工作平台的功能强劲的大型工具软件。

同时通过以上模型求解过程可以看出,MATLAB在数学建模中的巨大优势,充分显现出了MATLAB 强大的数值计算、数据处理和图形处理等功能,无论是在建立模型的哪个阶段,MATLAB都有其他软件无法比拟的方便、快捷、高效的特点优势,大大提高了数学建模的效率,丰富了数学建模的方法和手段,促进了问题的解决,有事半功倍的效果。

基金项目

吉林省教育科学“十二五”规划课题:基于创新型人才培养的大学生数学建模竞赛培训模式研究(GH14020)。

参考文献(References)

[1]王志新(2009) 《MATLAB程序设计》课程建设的思考. 黑龙江科技信息, 21, 190-191.

[2]华颖(2013) MATLAB软件在数学建模中的应用. 价值工程, 26, 233-235.

秦川棋等

[3]吴新华(2012) MATLAB软件在数学建模中的应用. 萍乡高等专科学校学报, 3, 69-70.

[4]杨晓华, 孔令泉(2013) MATLAB权威指导. 北京机械工业出版社, 北京.

[5]徐金明(2005) MATLAB实用教程. 清华大学出版社, 北京.

[6]刘卫国(2006) MATLAB程序设计与应用. 高等教育出版社, 北京.

[7]卓金武(2011) MATLAB在数学建模中的应用. 航空航天大学出版社, 北京.

数学建模常用软件

数学建模常用软件有哪些哈 MatlabMathematicalingoSAS详细介绍:数学建模软件介绍一般来说学习数学建模,常用的软件有四种,分别是:matlab、lingo、Mathematica和SAS下面简单介绍一下这四种。 1.MA TLAB的概况MA TLAB是矩阵实验室(Matrix Laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多. 当前流行的MA TLAB 5.3/Simulink 3.0包括拥有数百个内部函数的主包和三十几种工具包(Toolbox).工具包又可以分为功能性工具包和学科工具包.功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能.学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类. 开放性使MATLAB广受用户欢迎.除内部函数外,所有MA TLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包. 2.Mathematica的概况Wolfram Research 是高科技计算机运算( Technical computing )的先趋,由复杂理论的发明者Stephen Wolfram 成立于1987年,在1988年推出高科技计算机运算软件Mathematica,是一个足以媲美诺贝尔奖的天才产品。Mathematica 是一套整合数字以及符号运算的数学工具软件,提供了全球超过百万的研究人员,工程师,物理学家,分析师以及其它技术专业人员容易使用的顶级科学运算环境。目前已在学术界、电机、机械、化学、土木、信息工程、财务金融、医学、物理、统计、教育出版、OEM 等领域广泛使用。Mathematica 的特色·具有高阶的演算方法和丰富的数学函数库和庞大的数学知识库,让Mathematica 5 在线性代数方面的数值运算,例如特征向量、反矩阵等,皆比Matlab R13做得更快更好,提供业界最精确的数值运算结果。·Mathematica不但可以做数值计算,还提供最优秀的可设计的符号运算。·丰富的数学函数库,可以快速的解答微积分、线性代数、微分方程、复变函数、数值分析、机率统计等等问题。·Mathematica可以绘制各专业领域专业函数图形,提供丰富的图形表示方法,结果呈现可视化。·Mathematica可编排专业的科学论文期刊,让运算与排版在同一环境下完成,提供高品质可编辑的排版公式与表格,屏幕与打印的自动最佳化排版,组织由初始概念到最后报告的计划,并且对txt、html、pdf 等格式的输出提供了最好的兼容性。·可与C、C++ 、Fortran、Perl、Visual Basic、以及Java 结合,提供强大高级语言接口功能,使得程序开发更方便。·Mathematica本身就是一个方便学习的程序语言。Mathematica提供互动且丰富的帮助功能,让使用者现学现卖。强大的功能,简单的操作,非常容易学习特点,可以最有效的缩短研发时间。 3.lingo的概况LINGO则用于求解非线性规划(NLP—NON—LINEAR PROGRAMMING)和二次规则(QP—QUARATIC PROGRAMING)其中LINGO 6.0学生版最多可版最多达300个变量和150个约束的规则问题,其标准版的求解能力亦再10^4量级以上。虽然LINDO和LINGO不能直接求解目标规划问题,但用序贯式算法可分解成一个个LINDO和LINGO能解决的规划问题。模型建立语言和求解引擎的整合LINGO是使建立和求解线性、非线性和整数最佳化模型更快更简单更有效率的综合工具。LINGO提供强大的语言和快速的求解引擎来阐述和求解最佳化模型。■简单的模型表示LINGO可以将线性、非线性和整数问题迅速得予以公式表示,并且容易阅读、了解和修改。■方便的数据输入和输出选择LINGO建立的模型可以直接从数据库或工作表获取资料。同样地,LINGO可以将求解结果直接输出到数据库或工作表。■强大的求解引擎LINGO内建的求解引擎有线性、非线性(convex and nonconvex)、二次、二次

数学建模(Matlab)

数学规划作业(MatLab) 1、某厂向用户提供发动机,合同规定,第一、二、三季度末分别交货40台、60台、80台.每季度的生产费用为()2 =+ f x ax bx (单位:元), 其中x是该季度生产的台数.若交货后有剩余,可用于下季度交货,但需支付存储费,每台每季度c元.已知工厂每季度最大生产能力为100台,第一季度开始时无存货,设a=50、b=0.2、c=4,问:工厂应如何安排生产计划,才能既满足合同又使总费用最低.讨论a、b、c变化对计划的影响,并作出合理的解释. 解: 问题的分析和假设: 分析: 问题的关键在于由于工厂的生产能力足以满足每个季度用户的需求,但是为了使总费用最少,那么利用每个季度生产费用的不同,可用利用上个生产费用低的季度多生产来为下个季度进行准备,前提是本月节省下的费用减去总的发动机存储费用还有剩余,这样生产才有价值,才可能满足合同的同时又能使总费用最低。基本假设:1工厂的生产能力不受外界环境因素影响。2为使总费用最低,又能满足合同要求,各个季度之间的生产数量之间是有联系的。3第一季度开始时无存货。4工厂每季度的生关费用与本季度生产的发动机台数有关。5生产要按定单的数量来进行,生产的数量应和订单的数量相同,以避免生产出无用的机器。 符号规定:X1―――第一季度生产发动机的数量 X2―――第二季度生产发动机的数量

X3―――第三季度生产发动机的数量 建模: 1.三个季度发动机的总的生产量为180台。 2.每个季度的生产量和库存机器的数量之和要大于等于本季度的交货数量。 3.每个月的生产数量要符合工厂的生产能力。 4.将实际问题转化为非线性规划问题,建立非线性规划模型 目标函数 min f(x)=50(x1+x2+x3)+0.2(x12+x22+x32)+4(x1-40)+4(x1+x2-100) 整理,得 min f(x)=50(x1+x2+x3)+0.2(x12+x22+x32)+4(2x1+x2-140) 约束函数s.t x1+x2≥100; x1+x2+x3=180; 40≤x1≤100; 0≤x2≤100; 0≤x3≤100; 求解的Matlab程序代码: M-文件 fun.m: function f=fun (x); f=50*(x(1)+x(2)+x(3))+0.2*(x(1)^2+x(2)^2+x(3)^2)+4*(2*x(1) +x(2)-140)主程序fxxgh.m:

2015研究生数学建模MATLAB程序(完整版)

′ú??ò?£o % ?a?ü1y3ì?°??ò??ü??í3?? clear clc fid1=fopen('mingwen1.txt','r'); str1=fgets(fid1); fclose(fid1); fid2=fopen('jiemihou1.txt','r'); str2=fgets(fid2); fclose(fid2); % é?è¥μ¥′ê????μ?????oí±êμ?·?o? ad=find(str2==',');str2(ad)='';ad=find(str2=='.');str2(ad)='';ad=find(str2==';') ;str2(ad)=''; ad=find(str2=='''');str2(ad)='';ad=find(str2=='?');str2(ad)='';ad=find(str2=='£o');str2(ad)=''; ad=find(str2=='"');str2(ad)='';ad=find(str2=='-');str2(ad)='';ad=find(str2= ='/');str2(ad)=''; ad=find(str2==' ');str2(ad)=''; for i=0:25; ad=find(str1=='A'+i);str1(ad)='a'+i; end for i=0:25; ad=find(str2=='A'+i);str2(ad)='a'+i; end n1(1,26)=0; n2(1,26)=0; n1(1)=sum(str1=='a');n2(1)=sum(str2=='a'); n1(2)=sum(str1=='b');n2(2)=sum(str2=='b'); n1(3)=sum(str1=='c');n2(3)=sum(str2=='c'); n1(4)=sum(str1=='d');n2(4)=sum(str2=='d'); n1(5)=sum(str1=='e');n2(5)=sum(str2=='e'); n1(6)=sum(str1=='f');n2(6)=sum(str2=='f'); n1(7)=sum(str1=='g');n2(7)=sum(str2=='g'); n1(8)=sum(str1=='h');n2(8)=sum(str2=='h'); n1(9)=sum(str1=='i');n2(9)=sum(str2=='i'); n1(10)=sum(str1=='j');n2(10)=sum(str2=='j'); n1(11)=sum(str1=='k');n2(11)=sum(str2=='k'); n1(12)=sum(str1=='l');n2(12)=sum(str2=='l'); n1(13)=sum(str1=='m');n2(13)=sum(str2=='m'); n1(14)=sum(str1=='n');n2(14)=sum(str2=='n'); n1(15)=sum(str1=='o');n2(15)=sum(str2=='o');

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可以绘制各种图形,包括二维和三维图形。 ③简单易学的语言体系。 ④为数众多的应用工具箱。

数学建模matlab例题参考及练习

数学实验与数学建模 实验报告 学院: 专业班级: 姓名: 学号: 完成时间:年月日

承 诺 书 本人承诺所呈交的数学实验与数学建模作业都是本人通过学习自行进行编程独立完成,所有结果都通过上机验证,无转载或抄袭他人,也未经他人转载或抄袭。若承诺不实,本人愿意承担一切责任。 承诺人: 年 月 日 数学实验学习体会 (每个人必须要写字数1200字以上,占总成绩的20%) 练习1 一元函数的图形 1. 画出x y arcsin =的图象. 2. 画出x y sec =在],0[π之间的图象. 3. 在同一坐标系中画出x y =,2x y =,3 x y = ,3x y =,x y =的图象. 4. 画出3 2 3 2)1()1()(x x x f + +-=的图象,并根据图象特点指出函数)(x f 的奇偶性. 5. 画出)2ln(1++=x y 及其反函数的图象. 6. 画出3 21+=x y 及其反函数的图象.

练习2 函数极限 1.计算下列函数的极限. (1) x x x 4 cos 1 2 sin 1 lim 4 - + π → . 程序: sym x; f=(1+sin(2*x))/(1-cos(4*x)); limit(f,x,pi/4) 运行结果: lx21 ans = 1 (2). 程序: sym x; f=(1+cos(x))^(3*sec(x)); limit(f,x,pi/2) 运行结果: lx22 ans = exp(3) (3) 2 2 ) 2 ( sin ln lim x x x - π π → . 程序: sym x; f=log(sin(x))/(pi-2*x)^2; limit(f,x,pi/2) 运行结果: lx23 ans = -1/8 (4) 2 1 2 lim x x e x →. 程序: x x x sec 3 2 ) cos 1( lim+ π →

数学建模MATLAB程序汇总

建模MATLAB程序汇总 求特征值、特征向量、权向量 A=input('A='); E=eig(A) [V,D]=eig(A) t=max(E); disp(t); for i=1:1:3 if E(i)==t; m=i; end end X=V(:,m); mt=X./sum(X); disp(mt) 求π n=1;s=0; while 1/(2*n-1)>10^(-6) s=s+(-1)^(n+1)/(2*n-1); n=n+1; end pai=4*s 求e n=1;s=1; while 1/prod(1:n)>10^(-6) s=s+1/prod(1:n); n=n+1; end e=s 回归分析、 x=[143 145 146 147 149 150 153 154 155 156 157 158 159 160 162 164]'; Y=[88 85 88 91 92 93 93 95 96 98 97 96 98 99 100 102]'; X=[ones(16,1) x]; [b,bint,r,rint,stats]=regress(Y,X,0.025); b,bint,stats rcoplot(r,rint) z=b(1)+b(2)*x plot(x,Y,'k+',x,z,'r') 回归曲线 x=[2:16]; y=[6.42 8.20 9.58 9.50 9.70 10 9.93 09.99 10.49 10.59 10.60 10.80 10.60 10.90 10.76]; x1=1./x;

y1=log(y); p=polyfit(x1,y1,1) a=exp(p(2)) b=p(1) z=a.*exp(b./x) plot(x,y,'k+',x,z,'r') 回归预测 x=[20 25 30 35 40 45 50 55 60 65]'; Y=[13.2 15.1 16.4 17.1 17.9 18.7 19.6 21.2 22.5 24.3]'; X=[ones(10,1) x]; [b,bint,r,rint,stats]=regress(Y,X,0.05); b,bint,stats rcoplot(r,rint) z=b(1)+b(2)*x rstool(x,Y,'purequadratic') 灰色GM(1,1) clc,clear x0=[8438.73 9398.53 9959.17 10949.99 11145.92 11800 12700]; n=length(x0); lamda=x0(1:n-1)./x0(2:n) range=minmax(lamda) x1=cumsum(x0) for i=2:n z(i)=0.5*(x1(i)+x1(i-1)); end B=[-z(2:n)',ones(n-1,1)]; Y=x0(2:n)'; u=B\Y x=dsolve('Dx+a*x=b','x(0)=x0'); x=subs(x,{'a','b','x0'},{u(1),u(2),x1(1)}); yuce1=subs(x,'t',[0:n-1]); digits(6),y=vpa(x) %为提高预测精度,先计算预测值,再显示微分方程的解yuce=[x0(1),diff(yuce1)] epsilon=x0-yuce %计算残差 delta=abs(epsilon./x0) %计算相对误差 rho=1-(1-0.5*u(1))/(1+0.5*u(1))*lamda %计算级比偏差值 求余 for n=1:5000 k=n^3; if rem(k,10000)==8888 n end end 人口预测模型

数学建模章绍辉版第四章作业

第四章作业 第二题: 针对严重的交通情况,国家质量监督检验检疫局发布的国家标准,车辆驾驶人员血液中的酒精含量大于或等于20mg/100ml,小于80mg/100ml 为饮酒驾车,血液中的酒精含量大于或等于80mg/100ml 的为醉酒驾车。 下面分别考虑大李在很短时间内和较长时间内(如2个小时)喝了三瓶啤酒,多长时间内驾车就会违反新的国家标准。 1、 问题假设 大李在短时间内喝下三瓶啤酒后,酒精先从吸收室(肠胃)吸收进中心室(血液和体液),然后从中心室向体外排除,忽略喝酒的时间,根据生理学知识,假设 (1) 吸收室在初始时刻t=0时,酒精量立即为 32 D ;在任意时刻,酒精从吸收室吸收进中心室的速率(吸收室在单位时间内酒精含量的减少量)与吸收室的酒精含量成正比,比例系数为1k ; (2) 中心室的容积V 保持不变;在初始时刻t=0时,中心室的酒精含量为0;在任意时 刻,酒精从中心室向体外排除的速率(中心室在单位时间内酒精含量的减少量)与 中心室的酒精含量成正比,比例系数为2k ; (3) 在大李适度饮酒没有酒精中毒的前提下,假设1k 和2k 都是常量,与饮酒量无关。 2、 符号说明 酒精量是指纯酒精的质量,单位是毫克; 酒精含量是指纯酒精的浓度,单位是毫克/百毫升; ~t 时刻(小时) ; ()~x t 在时刻t 吸收室(肠胃)内的酒精量(毫克) ; 0~D 两瓶酒的酒精量(毫克); (t)~c 在时刻t 吸收室(血液和体液)的酒精含量(毫克/百毫升) ; 2()~c t 在时刻t 中心室(血液和体液)的酒精含量(毫克/百毫升); ~V 中心室的容积(百毫升) ; 1~k 酒精从吸收室吸收进中心室的速率系数(假设其为常数2.0079); 2~k 酒精从中心室向体外排除的速率系数(假设其为常数0.1855); 3~k 在短时间喝下三瓶酒的假设下是指短时间喝下的三瓶酒的酒精总量除以中心室体积, 即03/2D V ;而在较长时间内(2小时内)喝下三瓶酒的假设下就特指03/4D V .

matlab在数学建模中的应用

Matlab在数学建模中的应用 数学建模是通过对实际问题的抽象和简化,引入一些数学符号、变量和参数,用数学语言和方法建立变量参数间的内在关系,得出一个可以近似刻画实际问题的数学模型,进而对其进行求解、模拟、分析检验的过程。它大致分为模型准备、模型假设、模型构成、模型求解、模型分析、模型检验及应用等步骤。这一过程往往需要对大量的数据进行分析、处理、加工,建立和求解复杂的数学模型,这些都是手工计算难以完成的,往往在计算机上实现。在目前用于数学建模的软件中,matlab 强大的数值计算、绘图以及多样化的工具箱功能,能够快捷、高效地解决数学建模所涉及的众多领域的问题,倍受数学建模者的青睐。 1 Matlab在数学建模中的应用 下面将联系数学建模的几个环节,结合部分实例,介绍matlab 在数学建模中的应用。 1.1 模型准备阶段 模型准备阶段往往需要对问题中的给出的大量数据或图表等进行分析,此时matlab的数据处理功能以及绘图功能都能得到很好的应用。 1.1.1 确定变量间关系 例1 已知某地连续20年的实际投资额、国民生产总值、物价指数的统计数据(见表),由这些数据建立一个投资额模型,根据对未来国民生产总值及物价指数的估计,预测未来的投资额。

表1 实际投资额、国民生产总值、物价指数的统计表 记该地区第t年的投资为z(t),国民生产总值为x(t),物价指数为y(t)。 赋值: z=[90.9 97.4 113.5 125.7 122.8 133.3 149.3 144.2 166.4 195 229.8 228.7 206.1 257.9 324.1 386.6 423 401.9 474.9 424.5]' x=[596.7 637.7 691.1 756 799 873.4 944 992.7 1077.6 1185.9 1326.4 1434.2 1549.2 1718 1918.3 2163.9 2417.8 2631.6 2954.7 3073]' y=[0.7167 0.7277 0.7436 0.7676 0.7906 0.8254 0.8679 0.9145 0.9601 1 1.0575 1.1508 1.2579 1.3234 1.4005 1.5042 1.6342 1.7842 1.9514 2.0688]' 先观察x与z之间,y与z之间的散点图 plot(x,z,'*') plot(y,z,'*') 由散点图可以看出,投资额和国民生产总值与物价指数都近似呈

matlab数学建模实例

第四周 3. 中的三个根。 ,在求8] [0,041.76938.7911.1-)(2 3=-+=x x x x f function y=mj() for x0=0:0.01:8 x1=x0^3-11.1*x0^2+38.79*x0-41.769; if (abs(x1)<1.0e-8) x0 end end 4.分别用简单迭代法、埃特金法、牛顿法求解方程,并比较收敛性与收敛速度(ε分别取10-3、10-5、10-8)。 简单迭代法: function y=jddd(x0) x1=(20+10*x0-2*x0^2-x0^3)/20; k=1; while (abs(x1-x0)>=1.0e-3) x0=x1; x1=(20+10*x0-2*x0^2-x0^3)/20;k=k+1; end x1 k 埃特金法: function y=etj(x0) x1=(20-2*x0^2-x0^3)/10; x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0); k=1; while (abs(x3-x0)>=1.0e-3) x0=x3; x1=(20-2*x0^2-x0^3)/10; x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0);k=k+1; end 2 ,020102)(023==-++=x x x x x f

x3 k 牛顿法: function y=newton(x0) x1=x0-fc(x0)/df(x0); k=1; while (abs(x1-x0)>=1.0e-3) x0=x1; x1=x0-fc(x0)/df(x0);k=k+1; end x1 k function y=fc(x) y=x^3+2*x^2+10*x-20; function y=df(x) y=3*x^2+4*x+10; 第六周 1.解例6-4(p77)的方程组,分别采用消去法(矩阵分解)、Jacobi迭代法、Seidel迭代法、松弛法求解,并比较收敛速度。 消去法: x=a\d 或 [L,U]=lu(a); x=inv(U)inv(L)d Jacobi迭代法: function s=jacobi(a,d,x0) D=diag(diag(a)); U=-triu(a,1); L=-tril(a,-1); C=inv(D); B=C*(L+U); G=C*d; s=B*x0+G; n=1; while norm(s-x0)>=1.0e-8 x0=s; s=B*x0+G;

基于MATLAB的光伏电池通用数学模型

本文由qpadm贡献 pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 第 25 卷第 4 期 2009 年 4 月 电 力 For personal use only in study and research; not for commercial use 科 学 与 For personal use only in study and research; not for commercial use 工 程 Vol.25, No.4 Apr., 2009 11 For personal use only in study and research; not for commercial use Electric Power Science and Engineering 基于 MATLAB 的光伏电池通用数学模型 王长江 For personal use only in study and research; not for commercial use (华北电力大学电气与电子工程学院,北京 102206)摘要:针对光伏电池输出特性具有强烈的非线性,根据太阳能电池的直流物理模型,利用 MATLAB 建立了太阳能光伏阵列通用的仿真模型。利用此模型,模拟任意环境、太阳辐射强度、电池板参数、电池板串并联方式下的光伏阵列 I-V 特性。模型内部参数经过优化,较好地反应了电池实际特性。模型带有最大功率点跟踪功能,能很好地实现光伏发电系统最佳工作点的跟踪。关键词:光伏电池;MPPT;I-V 特性中图分类号:TM615 文献标识码:A 引 言 1 光伏电池特性 随着化石能源的消耗,全球都在面临能源危机,太阳能依靠其清洁、分布广泛等特点成为当今发展速度居第二位的能源 [1] 。光伏阵列由多个单体太阳能电池进行串并联封装而成,是光伏发电的能源供给中心,其 I V 特性曲线随日照强度和太阳能电池温度变化,即 I=f ( V, S, T ) 。目前而厂家通常仅为用户提供标准测试的短路电流 I sc 、开路电压 Voc、最大功率点电流 I m 、最大功率点电压 V m 值,所以如何根据已有的标准测试数据来仿真光伏阵列在不同日照、温度下的 I V,P V 特性曲线,在光伏发电系统分析研究中显得至关重要 [2] 。文献 [ 3~4 ] 介绍了一些光伏发电相关的仿真模型,但这些模型都需要已知一些特定参数,使得分析研究有一些困难。文献 [ 5 ] 介绍了经优化的光伏电池模型,但不能任意改变原始参数。文献 [ 6 ] 给出了光伏电池的原理模型,但参数选用典型值,会造成较大的误差。本文考虑工程应用因素,基于太阳能电池的物理模型,建立了适用于任何条件下的工程用光伏电池仿真模型。

数学实验与数学建模(matlab在建模中的应用)

数学实验与数学建模 学习目标 1.掌握利用Matlab软件进行了相关的数学运算的方法. 2.以软件辅助来完成数学实验. 3.了解数学建模思想方法,能够对一些简单问题建立数学模型求解分析. 教学要求 Matlab是Mathworks公司推出的用于数值计算的交互式软件系统,具有强大的数值分析、矩阵运算、信号处理、图形显示和建模仿真功能. Matlab是“Matrix Laboratory”的缩写,意思是“矩阵实验室”,其强大的数据处理能力和丰富的工具箱使它的编程极为简单,因此,它成为科学家和工程技术人员解决实际问题的首选计算工具软件。 本章的第一节主要介绍Matlab软件的简单使用方法,从第二节到第六节在讲解Matlab 用于解决高等数学和线性代数中的相关计算的函数基础上, 通过一些简单的数学实验例题,让学生体会如何用Matlab辅助解决数学问题. 最后,通过一些与线性代数相关的数学建模实例,让学生掌握数学建模的简单方法,学会利用Matlab软件辅助解决实际问题,以培养学生良好的数学意识和数学素质. 6.1 Matlab环境及使用方法 6.1.1 Matlab窗口管理 Matlab启动后显示三个窗口,如图6.1所示。左上窗口为工作区间窗口,显示用户定义的变量及其属性类型及变量长度。工作区间窗口也可显示为当前目录窗口,显示Matlab 所使用的当前目录及该目录下的全部文件名。左下窗口为历史窗口,显示每个工作周期(指Matlab启动至退出的工作时间间隔)在命令窗口输入的全部命令,这些命令还可重新获取应用。右侧窗口为Matlab命令窗口,可在里面输入相关运算命令,完成相应计算。三个窗口中的记录除非通过Edit菜单下的清除操作,否则将一直保存。

MATLAB及其在数学建模中的应用

Modeling and Simulation 建模与仿真, 2015, 4(3), 61-71 Published Online August 2015 in Hans. https://www.360docs.net/doc/7b10735783.html,/journal/mos https://www.360docs.net/doc/7b10735783.html,/10.12677/mos.2015.43008 Study of MATLAB and Its Application in Mathematical Modeling Chuanqi Qin, Ting Wang, Yuanfeng Jin School of Science, Yanbian University, Yanji Jilin Email: yfkim@https://www.360docs.net/doc/7b10735783.html, Received: Jul. 22nd, 2015; accepted: Aug. 11th, 2015; published: Aug. 18th, 2015 Copyright ? 2015 by authors and Hans Publishers Inc. This work is licensed under the Creative Commons Attribution International License (CC BY). https://www.360docs.net/doc/7b10735783.html,/licenses/by/4.0/ Abstract This article firstly introduces the development and the features of MATLAB software. And then the concept and the process of mathematical modeling are explained. After, the article briefly intro-duces some MATLAB solution methods of mathematical modeling problems, giving several in-stances of some methods. At the last of this article, through a relatively complete example, it fo-cuses on the application of MATLAB in mathematical modeling. It has been found that the applica-tion of MATLAB in mathematical modeling can improve the efficiency and quality of mathematical modeling, enrich the means and methods of mathematical modeling, and play a very important role in the teaching of mathematical modeling course. Keywords MATLAB, Mathematical Modeling, Mathematic Model MATLAB及其在数学建模中的应用 秦川棋,王亭,金元峰 延边大学理学院,吉林延吉 Email: yfkim@https://www.360docs.net/doc/7b10735783.html, 收稿日期:2015年7月22日;录用日期:2015年8月11日;发布日期:2015年8月18日

MATLAB数学建模大作业

******大学 本科实验报告 课程名称:****建模与仿真 设计专题:单服务员的排队模型学生姓名:*** 学号:********** 2012年04月30日

一、实验题目和要求 实验题目: 在某商店有一个售货员,顾客陆续来到,售货员 逐个地接待顾客。当到来的顾客较多时,一部分 顾客便须排队等待,被接待后的顾客便离开商店。 设:a.顾客到来间隔时间服从参数为5分钟的指 数分布;b.对顾客的服务时间服从[3,12]上的均 匀分布;c.排队按先到先服务规则,队长无限制, 并假定一个工作日为8小时,时间以分钟为单位。 要求: 1)模拟1个工作日内完成服务的个数及顾客平均 等待时间t。 2)模拟10个工作日,求出平均每日完成服务的个 数及每日顾客的平均等待时间 3)用柱状图画出10个工作日的平均每日完成的 服务个数及每日顾客的平均等待时间。 二、程序结构图(或功能说明) 文件夹中的m文件在j取1时模拟单工作日的服务 情况,j取1到10时模拟10个工作日的服务情况。 三、程序流程图

NO YES NO i=i+1 计算第i 个顾客离开时的时刻t 计算第i+1个顾客的等待时间s 记录i 值,跳出循环 计算第i+1个顾客的等待时间s 计算第i 个顾客离开时的时刻t 构造顾客间隔时间序列(TjM ) 构造顾客所需服务时间序列(TfM ) t>480 j=1

YES NO YES NO j=j+1 i=i+1 计算第i 个顾客离开时的时刻t 计算第i+1个顾客的等待时间s 记录i 值,跳出循环 计算第i+1个顾客的等待时间s 计算第i 个顾客离开时的时刻t 构造顾客间隔时间序列(TjM ) 构造顾客所需服务时间序列(TfM ) t>480 j=1 j<10

基于MATLAB的数学建模题

1求1到20的阶乘和M文件 function p=fac(n) %fac函数由于阶乘 if n==0 p=1; else p=1; i=1; while i<=n p=p*i; i=i+1; end end clear sum=0; for i==1:20 sum=sum+fac(i) end sum (1)

(2)运行结果 2、用起泡法排数 clc clear all s=[9 8 4 2 7 10 6 1 5 3]; %要排序的数列Ls=length(s); for i=1:Ls-1 for j=1:Ls-i if s(j)>s(j+1) t=s(j); s(j)=s(j+1); s(j+1)=t; end

end end s %输出排序后结果 结果 3、matlab 有一函数 f(x,y)=x2+cos(xy)+2y ,写一程序,输入自变量的值,输出函数值. function z= yourfunc(x,y) % script for f(x,y)=x2+cos(xy)+2y % input scalar: x, y % output scalar: z % written by yourname % 10 May 2010 z=x^2+cos(x*y)+2*y;

end 运行结果 4、小球下落问题 h = zeros(11,1); h(1) = 100; for i = 2:11 h(i) = h(i-1)/2; end % 第10次反弹有多高?h(11)

% 它在第10次落地时,共经过多少米? 2*sum(h(1:10))-h(1) 结果如下 5、矩阵问题 有一个4行5列的矩阵,编程求出其最大值以及最大值所处位置clc; clear all; A = rand(4, 5); m = A(1); ind = [1 1]; for i = 1 : size(A, 1) for j = 1 : size(A, 2) if m < A(i, j)

matlab数学建模实例

第四周3. 中的三个根。 ,在求8] [0,041.76938.7911.1-)(2 3=-+=x x x x f function y=mj()for x0=0:0.01:8 x1=x0^3-11.1*x0^2+38.79*x0-41.769;if (abs(x1)<1.0e-8)x0 end end 4.分别用简单迭代法、埃特金法、牛顿法求解方程,并比较收敛性与收敛速度(ε分别取10-3、10-5、10-8)。 简单迭代法: function y=jddd(x0) x1=(20+10*x0-2*x0^2-x0^3)/20;k=1; while (abs(x1-x0)>=1.0e-3) x0=x1; x1=(20+10*x0-2*x0^2-x0^3)/20;k=k+1;end x1k 埃特金法: function y=etj(x0) x1=(20-2*x0^2-x0^3)/10;x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0);k=1; while (abs(x3-x0)>=1.0e-3) x0=x3; x1=(20-2*x0^2-x0^3)/10;x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0);k=k+1;end 2 ,020102)(023==-++=x x x x x f

x3 k 牛顿法: function y=newton(x0) x1=x0-fc(x0)/df(x0); k=1; while(abs(x1-x0)>=1.0e-3) x0=x1; x1=x0-fc(x0)/df(x0);k=k+1; end x1 k function y=fc(x) y=x^3+2*x^2+10*x-20; function y=df(x) y=3*x^2+4*x+10; 第六周 1.解例6-4(p77)的方程组,分别采用消去法(矩阵分解)、Jacobi迭代法、Seidel迭代法、松弛法求解,并比较收敛速度。 消去法: x=a\d 或 [L,U]=lu(a); x=inv(U)inv(L)d Jacobi迭代法: function s=jacobi(a,d,x0) D=diag(diag(a)); U=-triu(a,1); L=-tril(a,-1); C=inv(D); B=C*(L+U); G=C*d; s=B*x0+G; n=1; while norm(s-x0)>=1.0e-8 x0=s; s=B*x0+G;

数学建模培训作业(MATLAB编程部分)

数学建模培训作业 (MATLAB 编程部分) 1. 请使用switch 语句将百分制的学生成绩转换为五级制的成绩输出。 2. 猜数游戏:首先由计算机随机产生一个 [1,100] 之间的一个整数,然后由用户猜测所产生的这个数。根据用户猜测的情况给出不同的提示,如果猜测的数大于产生的数,则显示 “High” ,小于则显示 “ Low ” ,等于则显示 “You won !”,同时退出游戏。用户最多有 7 次机会。 3. 使用for 结构计算1+2+3+…+100。 4. 设计一个九九乘法表。 5. 使用while 结构计算1+2+3+…+100。 6. 求1!+2!+ …+10!的值。 7. 编程生成三对角矩阵。 1 10000011100000001110000000111000000011100 000001110000000111000000011100 1 1 轾犏犏犏犏犏犏犏 犏犏 犏犏犏犏犏犏犏犏臌 8. 计算分段函数的值,要求根据不同的x 输入,给出相应的结果。 223135 x x y x x ì?-???+??=í?-????+?? 110011x x x x ?-< ?> 9. 已知1 1111 1(1)435721 n n p -?+-++-- ,编程求 的近似值。 10. 输入下面的矩阵

12345678 910111213141516A 轾犏犏犏=犏犏 犏臌 编程求该矩阵的对角线元素之和,并找出最大和最小元素的值以及其所在的行、列号。 11. 求水仙花数。如果一个三位数的个位数、十位数和百位数的立方和等于该数自身, 则称该数为水仙花数。编一程序求出所有的水仙花数。 12. 给定两个实数a 、b 和一个正整数n ,计算()k a b +和()k a b -,其中n k ,,2,1 。 13. 编写函数,生成一个1!,2!,…,n!的阶乘表。 14. 编一个函数统计字符串中单词的个数。 15. 求n 阶勒让德多项式的值,其递归公式为: (,)((2* 1)**(1,) (p n x n x p n x n p n n =----- (0,) 1;(1,p x p x x == 16. 编写一个判断任意输入正整数是否为素数的函数文件,并在命令窗口调用。 17. 编写一个万年历计算程序,当输入年月日后,能够计算出该日是星期几。

用matlab解决数学建模

2、已知速度曲线v(t) 上的四个数据点下表所示 t=[0.15,0.16,0.17,0.18]; v=[3.5,1.5,2.5,2.8]; x=0.15:0.001:0.18 y=i n t e r p1(t,v,x,'s p l i n e') S=t r a p z(x,y) p=p o l y f i t(x,y,5); d p=p o l y d e r(p); d p x=p o l y v a l(d p,0.18) 运行结果 S= 0.0687 Dpx=- 3、计算图片文件tu.bmp 给出的两个圆A,B 的圆心,和两个圆的两条外公切线和两条内公切线的切点的坐标。 (1)计算A 圆的圆心坐标 I=imread('tu.bmp'); [m,n]=size(I) BW=im2bw(I) BW(:,200:512)=1; figure, imshow(BW) ed=edge(BW); [y,x]=find(ed); x0=mean(x), y0=mean(y) r1=max(x)-min(x),r2=max(y)-min(y) r=(r1+r2)/4 x0 =109.7516 y0 =86.7495 r1 =162 r2 =158 r =80 (2)B圆的圆心坐标和半径 I=imread('tu.bmp'); BW=im2bw(I) BW(:,1:200)=1; imshow(BW) ed=edge(BW); [y,x]=find(ed); x0=mean(x), y0=mean(y) r1=max(x)-min(x),r2=max(y)-min(y) r=(r1+r2)/4 x0 =334.0943 y0 =245.7547 r1 =165 r2 =158 r = 80.7500

相关文档
最新文档