MATLAB数学实验报告1
- 格式:pdf
- 大小:474.57 KB
- 文档页数:9
MATLAB数学实验报告1
Matlab数学实验报告
⼀、实验⽬的
通过以下四组实验,熟悉MATLAB的编程技巧,学会运⽤MATLAB的⼀些主要功能、命令,通过建⽴数学模型解决理论或实际问题。了解诸如分岔、混沌等概念、学会建⽴Malthu模型和Logistic 模型、懂得最⼩⼆乘法、线性规划等基本思想。
⼆、实验内容2.1实验题⽬⼀
2.1.1实验问题
Feigenbaum曾对超越函数y=λsin(πx)(λ为⾮负实数)进⾏了分岔与混沌的研究,试进⾏迭代格式x k+1=λsin(πx k),做出相应的Feigenbaum图
2.1.2程序设计
clear;clf;
axis([0,4,0,4]);
hold on
for r=0:0.3:3.9
x=[0.1];
for i=2:150
x(i)=r*sin(3.14*x(i-1));
end
pause(0.5)
for i=101:150
plot(r,x(i),'k.');
endtext(r-0.1,max(x(101:150))+0.05,['\it{r}=',num2str(r)]) end
加密迭代后clear;clf;
axis([0,4,0,4]);hold on
for r=0:0.005:3.9
x=[0.1];
for i=2:150
x(i)=r*sin(3.14*x(i-1));
end
pause(0.1)
for i=101:150
plot(r,x(i),'k.');
end
end
运⾏后得到Feigenbaum图
2.2实验题⽬⼆
2.2.1实验问题
某农夫有⼀个半径10⽶的圆形⽜栏,长满了草。他要将⼀头⽜拴在⽜栏边界的桩栏上,但只让⽜吃到⼀半草,问拴⽜⿐⼦的绳⼦应为多长?2.2.2问题分析
如图所⽰,E为圆ABD的圆⼼,AB为拴⽜的绳⼦,圆ABD为草场,区域ABCD为⽜能到达的区域。问题要求区域ABCD等于圆ABC的⼀半,可以设BC等于x,只要求出∠a和∠b就能求出所求⾯积。先计算扇形ABCD的⾯积,2a÷π×πx2=2aπ2,再求AB的⾯积,⽤扇形ABE的⾯积减去三⾓形ABE的⾯积即可。2.2.3程序设计
f=inline('acos(x/20)*x^2+100*pi-200*acos(x/20)-x*sqrt(100-(x^2)/4) -50*pi');
a=0;
b=20;
dlt=1.0*10^-3;
k=1;
while abs(b-a)>dlt
c=(a+b)/2;
if f(c)==0
break;
elseif f(c)*f(b)<0
a=c;
else
b=c;
end
fprintf('k=%d,x=%.5f\n',k,c);
k=k+1;
end
2.2.4问题求解与结论
k=6,x=11.56250
k=7,x=11.71875
k=8,x=11.64063
k=9,x=11.60156
k=10,x=11.58203
k=11,x=11.59180
k=12,x=11.58691
k=13,x=11.58936
k=14,x=11.58813
k=15,x=11.58752
结果表明,要想⽜只吃到⼀半的草,拴⽜的绳⼦应该为11.6⽶。2.3实验题⽬三
2.3.1实验问题
饲养⼚饲养动物出售,设每头动物每天⾄少需要700g蛋⽩质、30g 矿物质、100mg维⽣素。现有5种饲料可供选⽤,每种饲料每千克所含营养成分含量及单价如下表。试确定既能满⾜动物⽣长的营养需要,⼜可使费⽤最省的选⽤饲料的⽅案。
饲料蛋⽩质(g)矿物质(g)维⽣素(mg)价格{元/千
克}A1310.50.2
A220.510.7
A310.20.20.4
A46220.3
A5180.50.80.8五种饲料单位质量(1kg)所含营养成分2.3.2问题分析与模型建⽴
设X j(j=1,2,3,4,5)表⽰饲料中所含的第j种饲料的数量。由于提供的蛋⽩质总量必须每天满⾜最低要求70g,故应有3X1+2X2+1X3+6X4+18X5≥700
同理,考虑矿物质和维⽣素的需求。应有1X1+0.5X2+0.2X3+2X4+0.5X5≥30
0.5X1+1X2+0.2X3+2X4+0.8X5≥100
希望调配出来的混合饲料成本最低,故⽬标函数f为f=0.2X1+0.7X2+0.4X3+0.3X4+0.8X5
当来对决策量X j的要求应为⾮负。
所以该饲料配⽐问题是⼀个线性规划模型Min f=0.2X1+0.7X2+0.4X3+0.3X4+0.8X5
3X1+2X2+1X3+6X4+18X5≥700
1X1+0.5X2+0.2X3+2X4+0.5X5≥30
0.5X1+1X2+0.2X3+2X4+0.8X5≥100
X j≥0,j=1,2,3,4,5
2.3.3模型评述
⼀般的⾷谱问题可叙述为:设有n种⾷物,每种⾷物中含有m 种营养成分。⽤ija表⽰⼀个单位的第j种⾷物中含有第i种营养的数量,⽤ib表⽰每⼈每天对第i种营养的最低需求量,jc表⽰第j种⾷品的单价,jx表⽰所⽤的第j种⾷品的数量,⼀⽅⾯满⾜m种营养成分的需要同时使事物的总成本最低。⼀般的⾷谱问题的线性规划模型为
这类线性规划模型还可以描述很多诸如合理下料、最⼩成本运输、合分派任务等问题,具有很强的代表性。2.3.4模型计算
将该问题化成Matlab中线性规划问题的标准形式Min f=0.2X1+0.7X2+0.4X3+0.3X4+0.8X5-3X1-2X2-1X3-6X4-18X5≤-700
-1X1-0.5X2-0.2X3-2X4-0.5X5≤-30
-0.5X1-1X-0.2X3-2X4-0/;.8X5≤-100
Xj≥0,j=1,2,3,4,5
由MATLAB软件的编辑器构作m⽂件LF如下:c=[0.2,0.7,0.4,0.3,0.8];
a=[-3,-2,-1,-6,-18;-1,-0.5,-0.2,-2,-0.5;-0.5,-1,-0.2,-2,-0.8];
b=[-700,-30,-100];
lb=[00000];
ub=[];
aeq=[];
beq=[];
[x,fval]=linprog(c,a,b,aeq,beq,lb,ub)在MATLAB命令窗⼝键⼊LF,回车,计算结果显⽰如下x=0.0000
0.0000
0.0000
39.7436
25.6410
fval=
32.4359
其结果显⽰x1=0x2=0x3=0x4=39.7436x5=25.6410,则表⽰该公司分别购买第四种第五种饲料39.7436(kg),25.6410(kg)配成混合饲料;所耗成本32.4359(元)为满⾜营养条件下的最低成本。2.3.5模型思考:线性规划的本质特点
⼀.⽬标函数是决策变量的线性函数
⼆.约束条件是决策变量的线性等式或不等式,它是⼀种较为简单
⽽⼜特殊的约束极值问题。
三.能转化为线性规划问题的实例很多如:⽣产决策问题,⼀般性
的投资问题,地址的选择,运输问题等等。2.4实验题⽬四
2.4.1实验题⽬描述
1790年到1980年各年美国⼈⼝数的统计数据如下表:
试根据以上数据,(1)分别⽤Malthu模型和Logistic模型建⽴美国⼈⼝增长的近似曲线
(设美国⼈⼝总体容纳量为3.5亿);
(2)预测2000年,2005年,2010年,2015年,2020年⼈⼝数;
(3)对两种预测结果进⾏⽐较.
2.4.2问题的分析
2.4.2.1Malthu模型
1798年,Malthus提出对⽣物繁殖规律的看法。他认为,⼀种群中个体数量的增长率与该时刻种群的的个体数量成正⽐。设x(t)表⽰该种群在t时刻个体的数量,则其增长率(dx/dt)=rx(t),或相对增长率1/x*dx/dt=r.其中常数r=B-D,B和D分别为该种群个体的平均⽣育率与死亡率。2.4.2.2Logistic模型
1838年,Verhulst指出上述模型未考虑“密度制约”因素。
种群⽣活在⼀定的环境中,在资源给定的情况下,个体数⽬越多,个体所获资源就越少,这将抑制其⽣长率,增加死亡率。所以相对增长率1/x*(dx/dt)不应为⼀常数r,⽽应是r乘上⼀个“密度制约”因⼦。此因⼦随x单调减⼩,设其为(1-x/k),其中k为环境容纳量。于是Verhulst提出Logistic模型:dx/dt=rx(1-x/k)。
2.4.3实验设计的流程
2.4.
3.1Malthu模型源代码
clear;clf
x=10:10:200;
y=[3.95.37.29.612.917.123.231.438.650.262.072.092.0106.5 123.2131.7150.7179.3204.0226.5];plot(x+1780,'k-','markersize',20);
axis([1780,2020,3,800]);
grid;hold on
n=20;
a=sum(x(1:n));
b=sum(x(1:n).*x(1:n));
c=sum(log(y(1:n)));
d=sum(log(y(1:n)).*x(1:n));
A=[n a;a b];
B=[c;d];
P=inv(A)*B;
t=10:10:800;
f=exp(P(1)+P(2)*t);
plot(t+1780,f,'ro-','linewidth',2);
k=[20002005201020152020];
f=exp(P(1)+P(2)*(k-1780));
fprintf('f=%.1f',f);
2.4.
3.2Logistic模型程序源代码
clc;clear;
x=9:28;
y=[3.95.37.29.612.917.123.231.438.650.262.072.092.0106.5 123.2131.7150.7179.3204.0226.5];
plot(x*10+1700,y,'k.','markersize',15);
grid;
hold on;
axis([179020150400]);
m=1000*y./(1000-y);
a1=sum(x);
a2=sum(x.^2);
a3=sum(log(m));
a4=sum(x.*log(m));
A=[20,a1;a1,a2];
B=[a3;a4];
p=inv(A)*B;
t=9:0.1:55;
s=1./(0.001+exp(-p(1)-p(2)*t));
plot(t*10+1700,s,'r-');
k=[3030.53131.532];
l=[k*10+1700;1./(0.001+exp(-p(1)-p(2)*k))];
2.4.4上机实验结果的分析与结论Malthus模型结果