ISM模型的matlab实现
完整版ISM模型的matlab实现
1、可达矩阵的求解
A:邻接矩阵Ezeros(A);通过布尔运算求出A2、A3…直至A
A
1停止运算,此时的A
便是要求的可达矩阵。具体实施:通过将上次循环得出来的A赋给E,并判断新一轮循环得出的A是否与E相等,决定是否终止循环。循环终止意味着此时的A就是最终的可达矩阵。具体程序如下:
i
put请输入矩阵维数’);Ai
put请输入邻接矩阵;Ezeros(
);BAwhile(
orm(AE)0)EA;fori1:
forj1:
fork1
ifAikBk,j)A(ij1e
d
e
de
de
de
dA
2、区域划分
找出各个元素相对应的可达集P、先行集Q以及两者的交集S求解P:找出每一行中元素为1对应的列求解Q:找出每一列中元素为1对应的行求解S:套用Matlab本身自带的函数Si
tersect(PQ)
或者编写M文件函数,如下所示:具体程序如下:fori1:
Pfi
dAi,;Qfi
d(A:,i);Si
tersect(P,Q)P;Q;S;
3、级别划分
因为S是P与Q的交集,所以只需判断P与S的长度是否相等便可进行级别划分。Mzeros
;r1;r为第几级
f完整版ISM模型的matlab实现求出每个元素的P、Q、S,再将相应的对角线元素Ai,i)赋予0,通过查找对角线为0的元素位置将所对应的行列均赋值0。每次循环r自增1,再进行循环求出每一级的元素,直至AM。具体程序如下:r1;Mzeros(
)while(~isequal(A,Mfori1:
Pfi
d(A(i:;Qfi
d(A:i);Si
tersect(PQ)
PQSifisemptyP&isemptyQ)(le
gthPle
gthS))
disp(第r级’rdisp(’元素为)iAi,i)0;e
de
dfori1
ifA(i,i0Ai,)0;A:,i)0e
de
drr1;e
d
4。课本例题程序验证
请输入矩阵维数7请输入邻接矩阵:
1110110010011001101100111110000010001001100110111
f完整版ISM模型的matlab实现
第r级r1元素为i5第r级r2,元素为i2第r级:r2,元素为i6第r级r3,元素为i3第r级r4元素为i1
f第r级:r4元素为i4第r级r4元素为i7
完整版ISM模型的matlab实现
fr