当前位置:文档之家› matlab在数学建模中的应用

matlab在数学建模中的应用

matlab在数学建模中的应用
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,'*')

由散点图可以看出,投资额和国民生产总值与物价指数都近似呈

线性关系,因此可以建立多元线性回归模型

012z x y βββε=+++

直接利用统计工具箱直接计算

[b,bint,r,rint,stats]=regress(z,X,alpha)

输入

z :n 维数据向量

X:[ones(20,1) x y],这里的1是个向量,元素全为常数1,即为ones(n,1)

Alpha:置信水平,一般为0.05

输出

b :β的估计值

bint:b 的置信区间

r :残差向量z-Xb

rint: r 的置信区间

Stats:检验统计量2R ,F , p

代入上述公式

[b,bint,r,rint,stats]=regress(z,X,0.05)

有b =

322.756305635088

0.618516611734168

-859.579151516612

322.75630.61850.859.479

=+-

z x y

stats =

0.9972 920.476113008107 0

知z的99.085%可由模型确定,F远超过F检验的临界值,p远小于α=0.05 .

bint =

224.4022221134 421.110389156777

0.477375412990184 0.759657810478151

-1121.49331646023 -597.664986572995

b的置信区间不包含零点,x,y对z影响都是显著的。

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=[ones(20,1) x y];

>> [b,bint,r,rint,stats]=regress(z,X,0.05)

b =

322.7563

0.6185

-859.5792

bint =

1.0e+003 *

0.2244 0.4211 0.0005 0.0008 -1.1215 -0.5977 r =

15.1352

5.7314

2.4699

-4.8419

-14.5678

-20.1721

-11.3072

-6.4726

2.4121

-1.6760

-4.3518

8.0709

6.4024

10.0992

18.6839

18.4146

9.5185

-14.8835

1.9954

-20.6605

rint =

-8.7701 39.0405 -19.9490 31.4118 -23.6775 28.6173 -30.8377 21.1539 -39.6068 10.4712 -44.0093 3.6652 -37.0101 14.3956 -32.8144 19.8691 -24.2139 29.0382 -28.3542 25.0022 -30.0489 21.3453 -18.4680 34.6097 -16.3235 29.1283 -15.2378 35.4362

-6.1337 43.5015

-4.5227 41.3519

-13.6047 32.6417

-38.9498 9.1828

-22.0553 26.0461

-38.2783 -3.0427

stats =

0.9909 920.4761 0 161.5988

>>

1.1.2 求数字特征

例2 已知50个数据x=[451.42 43.895 27.185 312.69 12.863 383.97 683.1 292.842 35.338 612.4 608.54 15.76 16.355 190.07 586.92 57.581 367.57 631.45 717.63 692.67 84.079 454.36 441.83 353.25 153.61 675.64 699.21 727.51 478.38 554.84 121.05 450.75 715.88 892.84 273.1 254.77 865.6 232.35 804.87 908.4 231.89 239.31 49.754 78.384 640.82 190.89 843.87 173.9 170.79 994.3],计算其数字特征。

输入数据,利用下列提供的函数可以求得各数字特征。

min(x): 向量x的元素的最小值

max(x): 向量x的元素的最大值

mean(x): 向量x的元素的算术平均值

geomean(x):向量x的元素的几何平均值

(n 个正数的连乘积的n 次算术根叫做这n 个数的几何平均数)

median(x): 向量x 的元素的中位数

var(x):向量x 的元素的方差

std(x): 向量x 的元素的标准差

diff(x): 向量x 的相邻元素的差

sort(x): 对向量x 的元素进行排序(Sorting )

length(x): 向量x 的元素个数

sum(x): 向量x 的元素总和

prod(x): 向量x 的元素总乘积

1.2 模型的求解分析与检验

1.2.1 拟合数据做预测

例3 以下是美国1790年至2000年的人口统计数据(单位:百万),建立人口发展模型并预测2010年美国的人口数目。

根据分析,第t 年的人口x 满足

0r t x x e = (指数增长模型)

将上式两边取对数,得

y rt a =+,ln y x =,0ln a x =

由t=0:21,x=[3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76 92 106.5 123.2 131.7 150.7 179.3 204 226.5 251.4 281.4] y=log(x);f=polyfit(t,y,1),得到

r=0.2022,0x = 1.7992a e e ==6.045

x(22)=516.770百万

1.2.2 绘制误差条图

将模型得出的结果与真实结果作比较,绘制出对比图和误差条图,反应模型与实际的吻合程度。如上例,模型结果与实际人口数的对比图以及误差条图可由命令

t=0:21,x=[3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76 92 106.5 123.2 131.7 150.7 179.3 204 226.5 251.4 281.4]; plot(t,x,'*',t,6.0448*exp(0.2022*t),'o',t,6.0448*exp(0.2022 *t));

errorbar([1790:10:2000],ones(1,22),x-6.0448*exp(0.2022*t)) 1.2.3 对模型进行模拟

对于一些没有给出数据的实际问题,建立模型后往往需要找一组随机数据进行模拟,从而检验模型的优劣。

例4 已知一栋大厦有9部电梯,上下班高峰期和非高峰期上下电梯的人数有显著的差别,为节约用电,试建立数学模型进行电梯的调试。

题中没有给出等电梯的人数,在建立完数学模型后,就可以利用matlab模拟一组各时间段等电梯的人数带入模型求解和检验。由概率知识知道,到达电梯的人数呈正态分布且在上班之前的某一刻和下班之后的某一刻达到峰值,可以使用

X=normrnd(mu,sigma,1,n)

来生成均值为mu,方差为sigma的一组(n个)随机数来模拟。

2 实例分析

实例1 (身高问题)

学校随机抽取100名学生,测量他们的身高,得一组数据。1)根据这些数据对全校学生的平均身高作出估计,并给出估计的误差范围;2)学校10年前作过普查,学生的平均身高为167.8cm,试根据这次抽查的数据,对学生的平均身高有无显著提高作出结论。

身高为h=[161 175 172 172 175 175 180 179 172 174 164 170 158 176 178 178 178 171 168 169 179 163 182 174 160 163 170 160 168 176 163 170 178 178 174 172 170 170 172 180 169 171 170 168 171 179 156 158 171 171 162 175 170 170 154 175 170 168 166 164 170 168 173 162 163 160 160 172 170 172 174 172 175 160 168 170 170 158 169 173 167 164 168 170 171 176 173 169 164 167 167 168 172 163 172 164 172 168 165 160]

解:(1)分析与假设:这是一个直接根据观测数据组建模型的问题,需用部分去推断整体,属于随机性数学模型,运用数理统计的方法可解决这一问题。受测量工具、观测方法等因素的影响,上述测量数据可能会有不同程度的误差,不尽准确,但作为我们分析的基点,可假设这些测量数据是准确的。

(2)模型的建立与求解:

①作学生身高的直方图和频数表,对学生身高作直观考察

hist(h) 作出身高直方图

[N,X]=hist(h) 作学生的身高频数表

由结果可以使我们对这所学校学生的身高有这样的一些粗略认识:近70%学生身高在165至175之间,平均约为169,身高的分布大致呈中间高、两端低的钟形,故可以假设为正态分布N(,μσ).

②对分布作假设检验:

采用正态概率图纸法检验,matlab统计工具箱中提供的是Q-Q 图检验:

normplot(h)

由图可知,样本点在一条直线附近,故可得学生身高服从正态分布这一结论。

③考察样本统计量所反映的数据特征:

mean(h) 计算样本均值

median(h) 计算中位数

std(h) 计算标准差

range(h) 计算极差

skewness(h) 计算偏度

kurtosis(h) 计算峰度

标准差为s=5.9464,说明数据与均值偏离程度不算太大,偏度

10.3242

g=-,这与正态分布是对称的,偏度接近于0这一数学原理相

接近。而峰度

22.6849

g=比正态分布的峰度3稍小一些,考虑到样本抽取方法和测量误差,可以认为这一模型是比较合理的,与实际情况

比较相符。

④平均身高的估计及误差范围:

此即需由样本去推断总体,由数理统计知识,需对总体均值μ和标准差σ进行点估计和区间估计。

[mu sigma muci sigmaci]=normfit(h,0.01)

可得到全校学生平均身高μ,标准差σ的点估计和区间估计(显著性水平为0.01)

⑤解决平均身高是否有显著提高的问题:

由数理统计知识知,此即需要对总体均值进行假设检验:01:167.8;:167.8H H μμ=>。由于总体标准差σ未知,故用t 检验,取显著性水平0.01α=。

[H,p,ci]=ttest(h,167.8,0.01,1)

得h=1表示拒绝0H ,p=0.0035,ci=[168.0339,inf]

根据这一命令结果可知全校学生平均身高有显著提高。

由该例题可以看出matlab 在数学建模中的巨大优势,充分显示了它超强的数值计算、数据处理和图形处理功能,无论是在实际问题的分析阶段,数学模型的建立阶段,还是模型求解、分析阶段,matlab 都有其他语言无法比拟的方便、快捷、高效的运用,不论是数值计算,还是图形的描绘,matlab 只需要一两个命令就能解决诸如 C ,C++语言需几十行的程序才能解决的问题,避免了繁杂的数值计算和复杂的程序设计,能使数学建模者将主要的精力放在问题的分析、模型的建立、算法研究等方面,既节约了时间,大大提高了数学建模的效率,

又有利于提高数学建模的质量和人们解决实际问题的能力。另外,如本例,其先进的数据可视化功能,能将一组大规模的杂乱无章的数据通过图形的方式表现出来,根据几何直观,数学建模者能快速而轻易地提到有意义的特征和结果,探索、发现规律,进而较快地找到数学建模的方法,丰富了数学建模的方法和手段,有力地促进了问题的解决。

实例2 价格竞争问题

位于同一条公路旁的甲、乙两个加油站彼此竞争激烈。当甲站突然宣布降价后,乙站根据甲站的售价应如何调整自己的售价,使得既能和甲站竞争,又可以获得尽可能高的利润?

解(1)问题分析:加油站的利润主要来自汽油的销售价和销售量。这场价格战中,乙加油站汽油降价销售主要受以下3个因素影响:①甲加油站汽油降价的幅度;②乙加油站汽油降价的幅度;③两站之间汽油销售价之差。

(2)模型假设:①汽油的正常销售价格保持常数不变;②(1)中的3个因素对乙加油站销售量的影响是线性的。

(3)模型的建立:

引入符号:

P:汽油的正常销售价格(元/升)

L:降价前乙加油站的销售量(升/日)

W:汽油的成本价格(元/升)

a:因素①对乙加油站汽油销售量影响的比例常数

b: 因素②对乙加油站汽油销售量影响的比例常数

c: 因素③对乙加油站汽油销售量影响的比例常数

x:乙加油站的销售价格(元/升)

y:甲加油站的销售价格(元/升)

根据问题的分析和模型的假设,可得乙加油站的利润函数为:=---+---

(,)()[()()()]

f x y x W L a P y b P x C x y

这里的a,b,c>0.

(4)模型的求解:以上是建立的数学模型,下面用matlab求解:

syms L P W a b c x y

f=(x-W)*(L-a*(P-y)+b*(P-x)-c*(x-y))

df=diff(f,x) %求导

x0=solve('L-a*(P-y)+b*(P-x)-c*(x-y)+(x-W)*(-b-c)=0','x' ) %求驻点

x0 =1/2*(L-a*P+a*y+b*P+c*y+W*b+W*c)/(b+c)

即当甲加油站把汽油的销售价格降到y元时,乙加油站把汽油的销售价格定为x0时可以使乙加油站获得最高的利润。

(5)模型检验

f1=subs(f,x,x0) 将x0代入求乙站的利润函数里的x

f2=subs(f1,{L,P,W,a,b,c},{2000,4,3,1000,1000,4000}) 取具体的数据代入

x1=subs(x0, {L,P,W,a,b,c},{2000,4,3,1000,1000,4000})

y=3.9:-0.1:3.4;

x=17/10+1/2*y

f3=(-13/10+1/2*y).*(-6500+2500*y) 求乙站相应的利润

plot(y,f3) 绘制乙站的利润函数

由该例题可以看出,matlab具有强大的符号计算功能,这也是其他语言所不具有的。在一般的数学模型中,往往有很多未知参数,此时要求解该数学模型不得不进行符号运算,这对其他语言来说,编程是非常困难和繁琐的,而matlab则只需几个简单的命令就可以解决问题。另外,matlab先进的数据可视化功能和方便的绘图功能,可以将数学模型的求解结果用可视化、动态化的形式表现出来,使数学建模者能以视觉图像方式对模型的结果进行观察,作出解释和评价,有利于加深数学建模都对问题本质的进一步认识,进而进一步修改和完善数学模型,使之更加符合实际。

>> t=0:21;

>> x=[3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9

76 92 106.5 123.2 131.7 150.7 179.3 204 226.5 251.4 281.4];

>> y=log(x);

>> f=polyfit(t,y,1);

>> f=polyfit(t,y,1)

f =

0.2022 1.7992

>>

plot(t,x,'*',t,6.0448*exp(0.2022*t),'o',t,6.0448*exp(0.2022

*t))

>>

errorbar([1790:10:2000],ones(1,22),x-6.0448*exp(0.2022*t)) >> h=[161 175 172 172 175 175 180 179 172 174 164 170 158 176 178 178 178 171 168 169 179 163 182 174 160 163 170 160 168 176 163 170 178 178 174 172 170 170 172 180 169 171 170 168 171 179 156 158 171 171 162 175 170 170 154 175 170 168 166 164 170 168 173 162 163 160 160 172 170 172 174 172 175 160 168 170 170 158 169 173 167 164 168 170 171 176 173 169 164 167 167 168 172

163 172 164 172 168 165 160];

>> hist(h)

>> [N,X]=hist(h)

N =

2 3 9 11 13 18 20 13 8

3

X =

Columns 1 through 7

155.4000 158.2000 161.0000 163.8000 166.6000

169.4000 172.2000

Columns 8 through 10

175.0000 177.8000 180.6000

>> normplot(h)

>> mean(h)

ans =

169.4400

>> std(h)

ans =

5.9464

>> [mu sigma muci sigmaci]=normfit(h,0.01)

mu =

169.4400

sigma =

5.9464

muci =

167.8782

171.0018

sigmaci =

5.0187

7.2549

>> [H,p,ci]=ttest(h,167.8,0.01,1)

H =

1

p =

0.0035

ci =

168.0339 Inf

>> syms L P W a b c x y

f=(x-W)*(L-a*(P-y)+b*(P-x)-c*(x-y))

df=diff(f,x) %求导

x0=solve('L-a*(P-y)+b*(P-x)-c*(x-y)+(x-W)*(-b-c)=0','x'

) %求驻点

x0 =1/2*(L-a*P+a*y+b*P+c*y+W*b+W*c)/(b+c)

f =

(x-W)*(L-a*(P-y)+b*(P-x)-c*(x-y))

df =

L-a*(P-y)+b*(P-x)-c*(x-y)+(x-W)*(-b-c)

x0 =

1/2*(L-a*P+a*y+b*P+c*y+W*b+W*c)/(b+c)

x0 =

(1/2*L-1/2*a*P+1/2*a*y+1/2*b*P+1/2*c*y+1/2*W*b+1/2*W*c)

/(b+c)

>> f1=subs(f,x,x0)

f1 =

((1/2*L-1/2*a*P+1/2*a*y+1/2*b*P+1/2*c*y+1/2*W*b+1/2*W*c )/(b+c)-W)*(L-a*(P-y)+b*(P-(1/2*L-1/2*a*P+1/2*a*y+1/2*b*P+1 /2*c*y+1/2*W*b+1/2*W*c)/(b+c))-c*((1/2*L-1/2*a*P+1/2*a*y+1/ 2*b*P+1/2*c*y+1/2*W*b+1/2*W*c)/(b+c)-y)) >> f2=subs(f1,{L,P,W,a,b,c},{2000,4,3,1000,1000,4000})

f2 =

(-13/10+1/2*y)*(-6500+2500*y)

>> x1=subs(x0, {L,P,W,a,b,c},{2000,4,3,1000,1000,4000})

y=3.9:-0.1:3.4;

x=17/10+1/2*y

f3=(-13/10+1/2*y).*(-6500+2500*y)

x1 =

17/10+1/2*y

x =

3.6500 3.6000 3.5500 3.5000 3.4500

3.4000

f3 =

1.0e+003 *

2.1125 1.8000 1.5125 1.2500 1.0125

0.8000

>> plot(y,f3)

>>

hights'

ans =

1130 1250 1280 1230 1040 900 500 700

1320 1450 1420 1400 1300 700 900 850

1390 1500 1500 1400 900 1100 1060 950

1500 1200 1100 1350 1450 1200 1150 1010

1500 1200 1100 1550 1600 1550 1380 1070

1500 1550 1600 1550 1600 1600 1600 1550

1480 1500 1550 1510 1430 1300 1200 980

>> x=1200:400:4000;

MATLAB经典数学建模教程

第 1 节Matlab 基本知识 一、Matlab 的主要功能 Matlab是一种功能非常强大的工程语言,诞生于20世纪70年代,1984年正式推向市场。2002年8月,Matlab6.5开始发布。是进行科学研究和产品开发必不可少的工具。 ●数值和符号计算 矩阵(数组)的四则运算(Matrix+Laboratory)、数值差分、导数、积分、求解微分方程、微分方程的优化等 ●数字图像、数字信号处理 ●工程和科学绘图 ●控制系统设计 ●财务工程 ●建模、仿真功能 二、Matlab 的界面 1.命令窗口(Command Window): Matlab各种操作命令都是由命令窗口开始,用户可以在命令窗口中输入Matlab命令,实现其相应的功能。此命令窗口主要包括文本的编辑区域和菜单栏(如:四则运算;“;”禁止显示变量的值;↑↓遍历以前的命令)。在命令窗口空白区域单击鼠标右键,打开快捷菜单,各项命令功能如下: Evaluate Selection :打开所选文本对应的表达式的值。 Open Selection :打开文本所对应的MatLab文件。 Cut :剪切编辑命令。 Paste :粘贴编辑命令。 2. M-文件编辑/调试(Editor/Debugger)窗口 Matlab Editor/Debugger窗口是一个集编辑与调试两种功能于一体的工具环境。 M-文件(函数文件) ●什么是M-文件:它是一种和Dos环境中的批处理文件相似的脚本文件,对于简单问题, 直接输入命令即可,但对于复杂的问题和需要反复使用的则需做成M-文件(Script File)。 ●创建M-文件的方法: Matlab命令窗的File/New/M-file。 在Matlab命令窗口运行edit。 ●M-文件的扩展名:*.m ●执行M-文件:F5 ●M文件的调试 选择Debug菜单,其各项命令功能如下: Step :逐步执行程序。 Step in :进入子程序中逐步执行调试程序。

数学建模常用软件

数学建模常用软件有哪些哈 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及在数学建模中的应用

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

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与数学建模》综合练习 1.按顺序进行如下的操作: (1)产生一个5阶魔术方阵A;并计算A'与A-1(即inv(A)); >> A=magic(5) A = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 >> B=A' B = 17 23 4 10 11 24 5 6 12 18 1 7 13 19 25 8 14 20 21 2 15 16 22 3 9 >> inv(A) ans = -77/15600 133/2600 -23/650 3/2600 53/15600 89/2063 -97/2600 -3/650 33/2600 23/15600 -59/1950 1/325 1/325 1/325 71/1950 73/15600 -17/2600 7/650 113/2600 -577/15600 43/15600 1/200 27/650 -9/200 98/8837 (2)求A的特征值; >> eig(A) ans = 65 -2383/112 -3846/293 2383/112 3846/293

(3)计算A 的各列的总和与平均值; (4)计算A 的各行的总和与平均值; (5)若b=[1 2 3 4 5] ',求方程组 Ax=b 的解; (6)验证你的结论的正确性. 2.产生行向量S =[1.0, 1.2, 1.4, …, 20],并计算S * S' 与 S' * S ,你有何“发现”? 3.设A=???? ??4321;B=??? ? ??5055;求C=A * B – B * A ,你有何“发现”? 4.若设矩阵A=???? ??4321;B=??? ? ??5005;求C=A * B – B * A ,你又有何“发现”? 5.如何建立如下的矩阵(命令方式和程序方式)? (1)10 10200400020040002004???????? ?? ; (2)1010010101001010100??? ? ? ? ? ??? ;>> a=ones(10,1) a = 1 1 1 1 1 1 1 1 1 1 >> A=0*a A = 0 0 0 0 0 0 0

数学建模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 人口预测模型

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在建模中的应用)

数学实验与数学建模 学习目标 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数学建模实例

第四周 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及其在数学建模中的应用

Modeling and Simulation 建模与仿真, 2015, 4(3), 61-71 Published Online August 2015 in Hans. https://www.doczj.com/doc/651749599.html,/journal/mos https://www.doczj.com/doc/651749599.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.doczj.com/doc/651749599.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.doczj.com/doc/651749599.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.doczj.com/doc/651749599.html, 收稿日期:2015年7月22日;录用日期:2015年8月11日;发布日期:2015年8月18日

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;

10909-数学建模-应用MATLAB建模的一个例子

应用MATLAB 的一个例子 ——数学也是一门技术 王天顺 整理 本来想用 “数学也是一门技术”作题目,主要是基于两点,一是从数学的应用角度,它的确具备了作为一门技术的特征,这也就是今天我要通过一个例子要表达的;二是咱们在座的大多数都是从事职业教育的老师,不知道我理解得是不是正确,职业教育与普通教育的区别是较为侧重于教授技术,我主观上感觉这个题目和大家的关系更紧密一些。但是,这个题目有点太大了!和领导商量了一下还是换个题目吧。 首先可以证明:数学确是一门技术,比如说要从技术的定义入手,流行的做法是:查查《辞海》,查查相关的如《科学学辞典》和《科技辞典》等等,看看他们是怎样给技术定义的;其次,论述一下数学的确是符合这些定义的。 实际上,我也确实查阅过这些资料,可以说没有问题,一定可以找到证据证明这个论断! 注:“技术”一词的中文解释有两种,一种是以《辞海》为代表的解释,把技术定义为:(1 )泛指根据生产实践经验和自然科学原理而发展成的各种工艺操作方法与技能;(2)除操作技能外, 广义的还包括相应的生产工具和其他物质设备,以及生产的工艺过程或作业程序、方法。另一种是以《科学学辞典》和《科技辞典》为代表的解释,把技术定义为:是为社会生产和人类物质文化生活需要服务的,供人类利用和改造自然的物质手段、智能手段和信息手段的总和。 可见, “技术”一词所包含的内容除了有形的物化形态之外,还包括无形的智能形态方面。无形的智能形态的技术是客观存在的,在某种意义上说,这方面技术的作用并不亚于物化形态的技术,更不能为物化形态技术所取代(背景资料)。因此,有关“技术”的涵义,有人概括为:指的是有形的物化技术和无形的智能技术的总和。 当然,容易想到我们把数学看作一门技术,可能更多的是从技术的无形“智能形态”角度论述的。我想这只是他的一个方面,今天先给各位介绍的是一个例子,展现他的另一个方面,用数学(包括相关的软件)去解决一个实际问题,其过程就像“传统的”、物化形态的技术一样;其次,结合上述例子,探讨有关数学建模及相关培训指导工作的一般原则和步骤,谈一点个人对此项工作的认识;最后,介绍我校的这些年数学建模培训工作的一些具体做法。 一、足球比赛中的吊门问题 1. 问题:只考虑如下的因素:球与球门的距离为a ,守门员与球门的距离为b (假设在调 门过程中,守门员不能移动),球门高h ,守门员最大摸高H ,球出脚的初速度为0v ,与水平方向的夹角为α(称为初射角).针对下列数据求能吊门成功的α,h=2.44m ,H=3.20m ,s m v /300= ,重力加速度g=10m/s 2,针对下列几组数据分别给出具体能吊门成功的相应初射角范围,要求精度在小数点后第4位。 (1) a=6m ,b=1m ; (2) a=10m ,b=3m ; (3) a=20m ,b=5m ; 2. 问题分析 (1) 在不考虑空气阻力的情况下,抛射体的运动轨迹是抛物线:

最新数学建模(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;

matlab数学建模实例

第四周 3. 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 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; n=n+1; end n Seidel迭代法: function s=seidel(a,d,x0) D=diag(diag(a)); U=-triu(a,1); L=-tril(a,-1);

matlab数学建模实例

m a t l a b数学建模实例集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#

第四周3. function y=mj() for x0=0::8 x1=x0^*x0^2+*; if (abs(x1)< 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)>= 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)>= 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 x3 k 牛顿法: function y=newton(x0) x1=x0-fc(x0)/df(x0);

k=1; while (abs(x1-x0)>= 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)>= x0=s; s=B*x0+G; n=n+1; end n Seidel迭代法: function s=seidel(a,d,x0) D=diag(diag(a));

相关主题
文本预览
相关文档 最新文档