MATLAB在数学建模中的应用(二)

size():获取矩阵的行数和列数
(1)s=size(A),
当只有一个输出参数时,返回一个行向量,该行向量的第一个元素为矩阵的行数,第二个元素是矩阵的列数。

(2)[r,c]=size(A),

(3)size(A,n)如果在size函数的输入参数中再添加一项n,并用1或2为n赋值,则 size将返回矩阵的行数或列数。其中r=size(A,1)该语句返回的是矩阵A的行数, c=size(A,2) 该语句返回的是矩阵A的列数。另外length()=max(size())。

subplot():
作用:在一个绘图窗口中显示多个图形。

基本调用格式为:subplot(m, n, k) 或 subplot(m n k),其中m, n, k取值为1~9。
该函数表示将绘图窗口划分为m×n个子窗口(子图),并在第k个子窗口中绘图
MATLAB软件提供了基本的曲线拟合函数的命令:
多项式函数拟合:a=polyfit(xdata,ydata,n)
其中n表示多项式的最高阶数,xdata,ydata为将要拟合的数据,它是用数组的方式输入.输出参数a为拟合多项式 y=a1xn+…+anx+a n+1的系数 。
多项式在x处的值y可用下面程序计算:
y=polyval(a,x,m)
线性:m=1, 二次:m=2, …
polyfit的输出是一个多项式系数的行向量。为了计算在xi数据点的多项式值,调用MATLAB的函数polyval。

 1 clf       %清空图形窗口
 2 x=[0 2 5 6 6.75 8.5 10.25 13.5];
 3 y=[5.25 6.2 7.2 7.5 8 8.7 10.1 13.5];
 4 [p,S]=polyfit(x,y,2); %z=polyfit(x,y,2)
 5 y2=polyval(p,x);
 6 subplot(1 2 1);  %subplot(1,2,1),先绘制第一个图形
 7 plot(x,y,‘r+‘,‘LineWidth‘,1.5)
 8 title(‘plot1‘),xlabel(‘p‘),ylabel(‘S‘)
 9
10 subplot(1 2 2);%绘制第二个图形
11 plot(x,y2,‘-.b*‘,‘LineWidth‘,1.0)
12 title(‘plot2‘),xlabel(‘x‘),ylabel(‘y2‘)

num2str():
在matlab中,无论是内建函数还是工具箱函数, 2很常见, 这可能是因为2英文two和to发音相同。而2写起来也比较简单。 所以很多转换类函数都用2来命名而非to。比如number to string, 不是命名为numTostr而num2str。

函数功能: 把数值转换成字符串

randn(n):
返回n*n随机项的矩阵,randn(1)为产生一个随机数。

Logistic模型
自然界中存在着一种事物的发展规律在其发展初期数量或规模增加得越来越快,到了一定时期其增长速度逐步慢下来,最终数量或规模不再增长,从而稳定在数量或规模的极限值处。

回归分析(regression analysis)
确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。运用十分广泛,回归分析按照涉及的自变量的多少,分为回归和多重回归分析;按照自变量的多少,可分为一元回归分析和多元回归分析;按照自变量和因变量之间的关系类型,可分为线性回归分析和非线性回归分析。如果在回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多重线性回归分析。

xlsread():
从指定文件名夹读取,比如说num=xlsread(‘data.xls’),即从当前程序所在文件夹里,从A1单元格开始读取,读取data.xls文件,把数据返回给num。

regress():
作用:一般多元回归分析
调用格式:
[b, bint, r, rint, stats] = regress(y,X,alpha) 或者
[b, bint, r, rint, stats] = regress(y,X) 此时,默认置信度alpha = 0.05。
这里,y是一个列向量,X是一个矩阵,其中第一列是全1向量(这一点对于回归来说很重要,这一个全1列向量对应回归方程的常数项),一般情况下,需要人工造一个全1列向量。

b是回归系数,bint是回归系数的区间估计,r是残差,rint是置信区间,stats是用于检验回归模型的统计量,有三个数值:相关系数r^2,F值,与F对应的概率P,alpha是显著性水平(缺省的时候为0.05)。相关系数r^2越大,说明回归方程越显著。

Matlab中polyfit和regress
表中是道琼斯工业指数(DJIA)和标准普尔500种股票指数(S&P500)1988年至1997年对应股票的收益率资料:

1)ployfit

 1 x  = [16.0 31.7 -0.4 23.9 7.4 16.8 4.9 36.4 28.6 24.9];
 2 y = [16.6 31.5 -3.2 30.0 7.6 10.1 1.3 37.6 23.0 33.4];
 3 scatter(x,y,‘r*‘);
 4
 5 %scatter(x,y)和plot(x,y,‘*‘)的效果一致就是根据x和y坐标绘制出所有点而已,而plot默认是将所有点按一定的顺序连接成一条多段线。
 6
 7 xlabel(‘DJIA收益率(%)‘);
 8 ylabel(‘S&P500收益率(%)‘);
 9  p = polyfit(x,y,1);%1表示一次函数
10  hold on;
11  xx = -5:1:40;
12 yy = polyval(p,xx);
13 plot(xx,yy,‘b-‘);%画出来的是光滑的曲线
14  grid;
15 title(‘回归分析表‘)
16 hold off;
17 [r,p,rlo,rup] = corrcorf(x,y)%相关分析
18
19 >> [r,p,rlo,rup] = corrcoef(x,y)
20
21 r =
22
23     1.0000    0.9481
24     0.9481    1.0000
25
26
27 p =
28
29     1.0000    0.0000
30     0.0000    1.0000
31
32
33 rlo =
34
35     1.0000    0.7903
36     0.7903    1.0000
37
38
39 rup =
40
41     1.0000    0.9880
42     0.9880    1.0000
43
44 >> [i,j] = find(p<0.05);
45 >> [i,j] = find(p<0.05)
46
47 i =
48
49      2
50      1
51
52
53 j =
54
55      1
56      2
57
58  %r(i,j)表示相关系数
59  %P表示假设检验的P-value值,P-value值越小表示的相关性越显著。
60  %一般以P < 0.05 为显著, P<0.01 为非常显著


附录:r(1,2) = r(2,1) = 0.9481便是相关系数,t = r*sqrt(n-2)/sqrt(1-r^2) = 8.4335,tα/2 = 2.31,则结果是显著的。

rlo和rup是r在%95可信度下的置信区间。

2)regress解决上题(easier)

 1 x  = [16.0 31.7 -0.4 23.9 7.4 16.8 4.9 36.4 28.6 24.9];
 2 y = [16.6 31.5 -3.2 30.0 7.6 10.1 1.3 37.6 23.0 33.4];
 3
 4 scatter(x,y,‘r*‘);
 5 xlabel(‘DJIA收益率(%)‘);
 6 ylabel(‘S&P500收益率(%)‘);
 7
 8  Y = y‘;%把Y转化成列向量
 9  X = [ones(length(y),1),x‘];%构建常数项系数
10 [b,bint,r,rint,stats]=regress(Y,X)
11 %下面是返回值
12 b =
13
14    -2.5086
15     1.1198
16
17
18 bint =
19
20    -9.3225    4.3052
21     0.8137    1.4259
22
23
24 r =
25
26     1.1918
27    -1.4891
28    -0.2435
29     5.7454
30     1.8221
31    -6.2040
32    -1.6784
33    -0.6522
34    -6.5177
35     8.0256
36
37
38 rint =
39
40   -10.0742   12.4578
41   -11.9810    9.0029
42    -9.6540    9.1671
43    -4.3221   15.8128
44    -8.7610   12.4052
45   -16.1645    3.7565
46   -11.9494    8.5926
47   -10.4663    9.1620
48   -15.8388    2.8034
49    -0.7121   16.7633
50
51
52 stats =
53
54     0.8990   71.1816    0.0000   23.5811
55 %ployval函数中第一个多项式系数(行向量)是按高到低,而regress中的b是从低到高,而且是个列向量,不可直
56
57 %接bb = b‘,若是这样还需逆置(fliplr(bb)),或者直接顺时针旋转90
58 %B=rot90(A):矩阵B是矩阵A沿逆时针方向旋转90。得到的
59 %B=rot90(A,k):矩阵B是矩阵A沿逆时针方向旋转k*90。得到的(要想顺时针旋转,k取-1)
60
61 xx = -5:5:40;
62 yy = polyval(rot90(b,-1));
63 hold on;
64 plot(xx,yy,‘r‘)
65 grid

这里的y是个定量的变量,可以用regress()进行回归,但当y是一个定性的变量时需要用到logistic回归,《MATLAB在数学建模应用》p37。

3.3 主成分分析
类型:一种处理高维数据的方法。
降维思想:在实际问题的研究中,往往会涉及众多有关的变量。但是,变量太多不但会增加计算的复杂性,而且也会给合理地分析问题和解释问题带来困难。一般说来,虽然每个变量都提供了一定的信息,但其重要性有所不同,而在很多情况下,变量间有一定的相关性,从而使得这些变量所提供的信息在一定程度上有所重叠。因而人们希望对这些变量加以“改造”,用为数极少的互补相关的新变量来反映原变量所提供的绝大部分信息,通过对新变量的分析达到解决问题的目的。

15家企业+8项指标,为了选择综合实力最强的企业,进行降维处理的主成分分析。

原文地址:https://www.cnblogs.com/twomeng/p/9476357.html

时间: 2024-08-08 08:23:34

MATLAB在数学建模中的应用(二)的相关文章

MATLAB在数学建模中的应用(三)

optimset函数 功能:创建或编辑优化选项参数结构. 语法: 1 options = optimset(‘param1’,value1,’param2’,value2,…) 2 options = optimset 3 options = optimset(oldopts,’param1’,value1,…) 描述: options = optimset(‘param1’,value1,’param2’,value2,…) 创建一个称为options的优化选项参数,其中指定的参数具有指定值.

数学建模入门书籍介绍

数学模型 需要入门: 马氏链 需要进一步学习:   博弈,  概率 , 统计回归,  差分方程 需要加强: 离散, 图论等 这本书融合知识在例子中,  不太方便知识点查阅,  但是便于从零学起某一模型 数学建模方法 这本书前有知识后有实例, 适合主攻数学的同学入手 数学建模算法与程序 这二货竟然带程序, 样本,  算法还多,  有数学推导,  整整1000页, 绝对是编程同学不二之选 MATLAB在数学建模中的应用 同上 MATLAB统计分析与应用 40个案例分析 看名字就知道啦

数学建模竞赛(国赛和美赛)经验分享

建模的经历 第一次参赛是在大一的暑假参加的国赛,当时和两个同学刚刚组队,我们也没有什么基础,结果可想而知:无奖.在经历了这一次国赛之后,大一时的两位队友也无心再参加,所以又重新找了两位队友.从此我们队伍成员便确认了下来.这两位分别是一名女生负责排版,一名男生负责建模:而我负责写程序.我们一起准备第二年的国赛,在这期间,我们学校决定自己组织一次建模比赛为国赛做铺垫.我们为了检验自己的学习成果,便参加了.凭借着很好的运气,我们拿了二等奖的好成绩.时间不久,便到了国赛.在国赛期间,我们每天熬夜熬到很晚

数学建模学习笔记(建模中的十大常用算法总结)

数学建模中的十大常用算法 1.    蒙特卡洛方法: 又称计算机随机性模拟方法,也称统计实验方法.可以通过模拟来检验自己模型的正确性. 2.    数据拟合.参数估计.插值等数据处理 比赛中常遇到大量的数据需要处理,而处理的数据的关键就在于这些方法,通常使用matlab辅助,与图形结合时还可处理很多有关拟合的问题. 3.    规划类问题算法: 包括线性规划.整数规划.多元规划.二次规划等:竞赛中又很多问题都和规划有关,可以说不少的模型都可以归结为一组不等式作为约束条件,几个函数表达式作为目标函

如何入门参加数学建模竞赛

1 网上资源 1.1 数学中国 可以去数学中国网站看看,在数学建模比赛的培训这一块做得很好的机构,如果自己有点银子,可以去参加他们的网上课程.另外他们有专门的数学建模群,群里面有很好关于数学建模的资料.而且这个机构自己也举办数学建模比赛,如果有时候可以在这里组队,直接参加比赛,累积一些经验,增长见识. 1.2 数学建模视频课程,现在网络上有一些比较好的关于数学建模比赛的视频资源,可以谷歌一下 1.3 网络上的一些关于数学建模的电子书,有时候你也不知道哪本书比较适合你,所以你可以先在网上找一些电子

在数学建模中学MATLAB

为期三周的数学建模国赛培训昨天正式结束了,还是有一定的收获的,尤其是在MATLAB的使用上. 1. 一些MATLAB的基础性东西: 元胞数组的使用:http://blog.csdn.net/z1137730824/article/details/39206823 对于任意文件夹的同一格式的图片的批量读取:http://blog.csdn.net/haizimin/article/details/39646595 关于MATLAB在微分/偏微分方程以及其他高等数学问题中的应用. 关于MATLAB在

数学建模--matlab基础知识

虽然python也能做数据分析,不过参加数学建模,咱还是用专业的 1. Matlab-入门篇:Hello world! 程序员入门第一式: disp('hello world!') 2. 基本运算 先了解基本的运算符,做一些简单的尝试: +   Plus; addition operator. -   Minus; subtraction operator. *   Scalar and matrix multiplication operator. ^   Scalar and matrix

余胜威《MATLAB数学建模经典案例实战》2015年版

内容介绍 本书全面.系统地讲解了数学建模的知识.书中结合历年全国大学生数学建模竞赛试题,采用案例与算法程序相结合的方法,循序渐进,逐步引导读者深入挖掘实际问题背后的数学问题及求解方法.在本书案例的分析计算中巧妙地结合了MATLAB等工具,并采用不同的算法进行模型求解,达到异曲同工之妙.本书结合实际,对网上讨论的很多疑难问题也做了解答. 本书共25章,分3篇.主要内容有:MATLAB基础知识.LINGO基础知识.SPSS基础知识.数学建模基础理论及算法设计.基于LINGO的基础理论及算法设计.企业

数学建模基础理论【二】(定积分)

数学建模基础理论[二]                                                                               (定积分) 定义: 定积分分部计算: 平面图形面积: 直坐标情形 极坐标情形 平面曲线的弧长: 平行截面为已知的立体的体积: