报考研究生的专业选择项目
数学实验方法期末考试
——报考研究生的专业选择项目
日期:2011年12月9日
1
报考研究生的专业选择 一 背景描述
随着我们步入大四的学习历程,对我们大四的学生来说面临着很多选择和挑战,选择考研继续深造还是找工作获得实践经验,对我们来说都是一个重要的选择,影响着我们今后的发展方向和前景,对我们其中很多的人来说都很迷茫到底如何去抉择;就算我们选择了考研或者找工作,还是有很多选择要我们做出,对于找工作,现在工作种类众多,城市也是一个重要的细节,我们将面临就业工作选择,如:工作城市的选择、就业职业类型的选择等;而对于考研,现在研究生专业很多,学校也很多,我们将面临读研学校的选择,读研专业的选择等。
基于上面所说的众多选择,我们势必很难看清我们的去向人生目标,我在这里就以报考研究生的专业选择为例,用层次分析法定性定量的建立我们决策模型,能更好的找到自己适合考什么专业的研究生,以及其他类似问
。 二 模型建立
2.1 层次分析法简介
层次分析法(Analytic Hierarchy Process简称AHP)是将决策总是有关的元素分解成目标、准则、
等层次,在此基础之上进行定性和定量分析的决策方法。该方法是美国运筹学家匹茨堡大学教授萨蒂于本世纪70年代初,在为美国国防部研究"根据各个工业部门对国家福利的贡献大小而进行电力分配"课题时,应用网络系统理论和多目标综合评价方法,提出的一种层次权重决策分析方法。
层次分析法的特点是在对复杂的决策问题的本质、影响因素及其内在关系等进行深入分析的基础上,利用较少的定量信息使决策的思维过程数学化,从而为多目标、多准则或无结构特性的复杂决策问题提供简便的决策方法。尤其适合于对决策结果难于直接准确计量的场合。 2.2层次分析法的步骤
(1) 建立层次结构模型
在深入分析实际问题的基础上,将有关的各个因素按照不同属性自上而下地分解成若干层次,同一层的诸因素从属于上一层的因素或对上层因素有影响,同时又支配下一层的因素或受到下层因素的作用。最上层为目标层,通常只有1个因素,最下层通常为方案或对象层,中间可以有一个或几个层次,通常为准则或指标层。当准则过多时(譬如多于9个)应进一步分解出子准则层。 (2) 构造成对比较阵
从层次结构模型的第2层开始,对于从属于(或影响)上一层每个因素的同一层诸因素,用成对比较法和1—9比较尺度构造成对比较阵,直到最下层。其中
2
比例标度表如下:
表1 比例标度表
因素比因素 量化值
同等重要 1
稍微重要 3
较强重要 5
强烈重要 7
极端重要 9
两相邻判断的中间值 2,4,6,8
(3) 计算权向量并做一致性检验
对于每一个成对比较阵计算最大特征根及对应特征向量,利用一致性指标、随机一致性指标(见表2)和一致性比率做一致性检验。若检验通过,特征向量(归一化后)即为权向量:若不通过,需重新构追成对比较阵。
表2平均随机一致性指标RI
值
阶数 1 2 3 4 5 6 7 8 9 RI 0 0 0.5149 0.8931 1.1185 1.2494 1.3450 1.4200 1.4616
2.3 评价指标的
对于不同专业的学生对考研专业的选择分类不同,我仅以我们信息与计算科学软件工程方向的考研专业选择进行分类分析;对于现在各学校招收研究生的专业方向大致可总结为以下分类:数学、计算机、通信、信号处理、经济、管理、其他;层次分析模型如下图1:
图1考研专业
数计通信经管其
学算信号济理他
X1 X3 X5 X6 X7 机处
X2 理
X4
3
2.4用层次分析法确定权重
层次分析法是把复杂问题中各因素划分成相关联的有序层次,使之条理化。根据一定客观的判断,对每一层次中每两个元素相对重要性给出定量表示,确定出全部元素的权重。
, 和W的计算
由程序(程序见附件)可得判断矩阵的最大特征值和特征向量为:
=6.9641,W=(0.3119,0.0820,0.0194,0.2557,0.0072,0.0071,
0.0074)
, 判断矩阵的一致性检验
(1)计算一致性指标CI
CI=式中:n—平均判断矩阵的阶数。
所以CI=0.006
(2)计算一致性比例CR
CR= RI—平均随机一致性指标。
CR=0.0045,0.1时,所以判断矩阵的一致性可以接受。
, 计算方案的权重 (0.3119,0.0820,0.0194,0.2557,0.0072,0.0071,
0.0074)
2.5结果分析与改进
通过各因素的权重排序可以得到,对于考研专业选择的方案,可以看
出我们专业选择数学专业要优于选择其他专业。本文只是从一层来研究和
讨论考研的选择问题,其实还可以将数学、计算机、通信、信号处理、经
济、管理、其他再细化分类,更深层的分析,结果更为精确。 三 体会
4
通过论文,不仅学习了Matlab与VC之间的调用,如何搭建环境与函数
的调用等等,还更深层的掌握了层次分析法,层次分析方法作为一种很好的
决策方法,给我们对很多选择时提供了理论合理的选择。
四 附录
程序:
Value.cpp
Value.cpp : implementation file #include "stdafx.h"
#include "Eigenvalue.h"
#include "Value.h"
#include "engine.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif
// CValue dialog
CValue::CValue(CWnd* pParent /*=NULL*/)
: CDialog(CValue::IDD, pParent) {
//{{AFX_DATA_INIT(CValue)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CValue::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CValue)
DDX_Control(pDX, IDC_LIST2, m_Cvector);
DDX_Control(pDX, IDC_LIST1, m_Cvalue);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CValue, CDialog)
//{{AFX_MSG_MAP(CValue)
ON_BN_CLICKED(IDC_EIXT, OnEixt)
ON_BN_CLICKED(IDC_VALUE, OnValue)
ON_BN_CLICKED(IDC_VECTOR, OnVector)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
// CValue message handlers
void CValue::OnEixt()
{
// TODO: Add your control notification handler code here
5
CDialog::OnCancel();
}
void CValue::OnValue()
{
// TODO: Add your control notification handler code here // m_Cvalue.SetHorizontalExtent();
m_Cvalue.ResetContent();
Engine *ep;
mxArray *T;
CString s,s1="";
ep=engOpen(NULL);
if(ep==NULL)
{MessageBox("Can not open engine!");
return ;}
engEvalString(ep,"A=[1,1/2,1/2,1,2,2,4;2,1,1,2,4,4,8;2,1,1,2,4,4,6;1,1/2,1/2,1,2,2,4;1/2,1/4,1/
4,1/2,1,1,2;1/2,1/4,1/4,1/2,1,1,2;1/4,1/8,1/8,1/4,1/2,1/2,1];[x,y]=eig(A)");
//engEvalString(ep,"[x,y]=meshgrid(-2:0.1:2,-2:0.1:2);z=x.*exp(-x.^2-y.^2);surf(x,y,z);");
T=engGetVariable(ep,"x");
for(int i=0;i<7;i++)
{
for(int j=0;j<7;j++)
{s.Format("%.4f",*(mxGetPr(T)+7*j+i));
s1+=" "+s;}
m_Cvalue.InsertString(i,s1);;
s1="";
}
MessageBox("close the graph");
mxDestroyArray(T);
engClose(ep);
}
void CValue::OnVector()
{
// TODO: Add your control notification handler code here
m_Cvector.ResetContent();
Engine *ep;
mxArray *T;
CString s;
ep=engOpen(NULL);
if(ep==NULL)
{MessageBox("Can not open engine!");
return ;}
engEvalString(ep,"A=[1,1/2,1/2,1,2,2,4;2,1,1,2,4,4,8;2,1,1,2,4,4,6;1,1/2,1/2,1,2,2,4;1/2,1/4,1/
4,1/2,1,1,2;1/2,1/4,1/4,1/2,1,1,2;1/4,1/8,1/8,1/4,1/2,1/2,1];[x,y]=eig(A)");
//engEvalString(ep,"[x,y]=meshgrid(-2:0.1:2,-2:0.1:2);z=x.*exp(-x.^2-y.^2);surf(x,y,z);");
6
T=engGetVariable(ep,"y");
for(int i=0;i<7;i++)
{s.Format("%.4f",*(mxGetPr(T)+7*i+i));
m_Cvector.InsertString(i,s);}
MessageBox("close the graph");
mxDestroyArray(T);
engClose(ep);
}
7