数值建模与仿真实验报告Word下载.docx
《数值建模与仿真实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《数值建模与仿真实验报告Word下载.docx(38页珍藏版)》请在冰豆网上搜索。
![数值建模与仿真实验报告Word下载.docx](https://file1.bdocx.com/fileroot1/2022-12/7/f8d11aea-2f69-4128-9645-67e528402011/f8d11aea-2f69-4128-9645-67e5284020111.gif)
,编写一段程序,求当n=10时e的近似值。
4、编写一个函数,使其能够产生如下的分段函数
⏹1、选择合适的步长绘制出下列函数的图形
⏹2、在同一坐标下绘制函数x,x2,-x2,sin(x)在
的曲线
⏹3、在极坐标系绘制下列函数的曲线
⏹
(1)cos3(t)-1
(2)2t2+1
4、绘制二维正态分布密度函数
的三维图形。
1、对表达式进行化简
2、求表达式的极限
3、求积分
4、求下列函数的极限问题:
(1);
时的极限
5、微分问题
求y’’并简化结果表达式
1、求下列多项式f(x)=0时的根。
(1)f(x)=x3-2X2-5
(2)f(x)=x3+2X2+10X-20
2、求函数f(x)=2x2-6在x=[-43]之间的极小值和x=-2附近的零点。
3、求下列微分方程在[13]区间内的数值解:
(1)
(2)
1、已知多项式P1(x)=3x+2,P2(x)=5x2-x+2,P3(x)=x2-0.5,求:
(1)P(x)=P1(x)P2(x)P3(x);
(2)P(x)=0的全部根。
2、求极限值:
3、求微分方程
的特解。
程序:
y=dsolve('
Dy-(y^2-x*y)/(x^2)'
'
y
(1)=1'
x'
)
结果:
y=
2*x/(1+x^2)
4、解线性方程组
实验3人口预测与数据拟合
一、实验目的:
通过对人口预测问题的分析求解,了解利用最小二乘法进行数据拟合的基本思想,熟悉寻找最佳拟合曲线的方法,掌握建立人口增长数学模型的思想方法。
二、实验器材和环境
Matlab2014版本,windows7系统
Malthus模型、logistic模型
3、实验内容和步骤
实验问题:
1981-2016年各年我国人口数的统计数据如下表所示(单位:
亿):
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
10.007
10.165
10.301
10.436
10.585
10.751
10.930
11.103
11.27
11.433
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
11.582
11.717
11.852
11.985
12.112
12.239
12.363
12.476
12.579
12.674
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
12.763
12.845
12.923
12.999
13.076
13.145
13.213
13.280
13.345
13.409
2011
2012
2013
2014
2015
2016
13.474
13.540
13.607
13.678
13.746
13.827
根据上述数据,建立我国人口增长的近似曲线,并预测2020年、2025年、2030年我国的人口数量。
1.最小二乘法
程序如下:
clear
clc
X0=[1:
36];
Y0=[10.00710.16510.30110.43610.585...
10.75110.93011.10311.2711.433...
11.58211.71711.85211.98512.112...
12.23912.36312.47612.57912.674...
12.76312.84512.92312.99913.076...
13.14513.21313.28013.34513.409...
13.47413.54013.60713.67813.746...
13.827];
a=polyfit(X0,Y0,1)
Y2020=polyval(a,40)
Y2025=polyval(a,45)
Y2030=polyval(a,50)
求得:
a=
0.108110.2622
Y2020=
14.5860
Y2025=
15.1264
Y2030=
15.6669
2.Malthus模型
t=[1:
x(t)=[10.00710.16510.30110.43610.585...
y=log(x(t));
a=polyfit(t,y,1)
r=a
(1),x0=exp(a
(2))
x1=x0.*exp(r.*t);
plot(t,x(t),'
r'
t,x1,'
b'
人口预测程序:
t=40;
%t是变量,此时t对应2020年
r=0.0093
X0=10.291
X(t)=x0*exp(r*t)
X(40)
=14.9285
Malthus模型
首先计算参数增长率r,人口最大值N
t=18;
x0=10.007;
x1=12.476;
x2=13.827;
r=(1/t)*log((1/x0-1/x1)/(1/x1-1/x2))
N=(1-exp(-r*t))/(1/x1-(1/x0)*exp(-r*t))
r=
0.0515
N=
14.8838
然后进行曲线拟合
x(t)=[10.00710.16510.30110.43610.585...
y(t)=14.8838./(1+(14.8838/10.007-1)*exp(-0.0515*t));
o:
'
t,y(t),'
r-'
)
拟合图形如下:
最后根据Malthus模型进行人口预测
t=40%t是变量,此时t对应2020年
y(t)=14.8838./(1+(14.8838/10.007-1)*exp(-0.0515*t))
Y(40)=
14.0134
Y(45)=
14.2019
Y(50)=
14.3512
模型一:
用Malthus模型的基本假设是:
假设人口的增长率为常数r,记每年时刻t的人口为x(t),即x(t)为模型的状态变量,且初始时刻的人口为x0,于是得到如下函数:
dx/dt=r*x
x(0)=x0
根据假设可得函数如下:
y1=x0*exp(r*x)
编辑程序如下:
xdate=1981:
1:
2016;
t1=1981:
2020;
ydate=[10.00710.16510.30110.43610.585...
p=polyfit(xdate,log(ydate),1)
运行结果:
p=
0.0090-15.4813
将此函数转化为线性关系为ln(y1)=ln(x0)+r*x与y=at+b对应,则利用线性拟合即可求解,过程如下:
1.将x与y的数据先进行线性拟合,由结果可知a=0.0147,b=-26.7783,则微分方程的解析式为:
y=exp(-15.4813)*exp(0.0090*x);
当x=2020时,y=14.8604;
当x=2025时,y=15.5444;
当x=2030时,y=16.2599;
下面是函数拟合前后的过程
编辑程序:
symsxyx2y2x3y3
x=1981:
y=[10.00710.16510.30110.43610.585...
[p,s]=polyfit(x,log(y),1)
x2=2020:
5:
2030;
y2=exp(-15.4813)*exp(0.0090*x2);
x3=1981:
y3=exp(-15.4813)*exp(0.0090*x3);
plot(x,y)
holdon
plot(x2,y2,'
*'
plot(x3,y3,'
--'
拟合曲线如下图
模型二:
t=1981:
x=[10.00710.16510.30110.43610.585...
p=polyfit(t,log(x),1);
x0=exp(p
(2))
x1=x0.*exp(p
(1).*t1);
plot(t,x,'
R'
);
plot(t1,x1,'
拟合曲线如下:
实验4最优投资方案与优化问题仿真
了解线性规划问题及其数学模型;
了解多目标规划及其求解方法;
学会使用Matlab求解线性规划问题和多目标规划问题
二、实验问题:
某部门在今后五年内考虑给下列项目投资,已知:
项目A:
(x11)从第一年到第四年每年年初需要投资,并于次年末回收本利115%。
项目B:
(x34)第三年初需要投资,第五年末回收本利125%,但规定最大投资额不超过4万元。
项目C:
(x23)第二年初需要投资,第五年末回收本利140%,但规定最大投资额不超过3万元。
项目D:
(x12)五年内每年年初可购买公债,于当年归还,并加息6%。
该部门目前拥有资金10万元,问应如何投资,使五年末拥有的资金总额最大?
解:
设xij为第i年初对第j个项目的投资额,其中(i取1,2,3,4,5)
(j取1,2,3,4,分别对应项目A,B,C,D)
通过分析建立数学模型可知:
X11+x12<
=10
X23+x21+x22-x12*1.06<
=0
X31+x32+x34-1.15*x11-1.06x22<
X41+x42-x21*1.15-1.06*x32<
X52-x31*1.15-x42*1.06<
X23<
=3
X34<
=4
A=[11000000000
0-1.06111000000
-1.1500-1.060111000
00-1.15000-1.060110
00000-1.15000-1.061
00001000000
00000001000];
b=[10000034];
f=-[00001.4001.251.1501.06];
lb=zeros(11,1);
x=linprog(f,A,b,[],[],lb,[])
w=-f*x
x=
Columns1through10
5.99404.00601.24630.00003.00001.28341.60974.00003.13960.0000
Column11
w=
14.3750
W=14.3750万元