matlab在数学建模中的应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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