资源描述
ISM模型的matlab实现
ISM模型的matlab实现
编辑整理:
尊敬的读者朋友们:
这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(ISM模型的matlab实现)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快 业绩进步,以下为ISM模型的matlab实现的全部内容。
ISM模型的matlab实现
1、可达矩阵的求解
A:邻接矩阵
E=zeros(A);
通过布尔运算求出A^2、A^3…直至A^n=A^n-1,停止运算,此时的A^n便是要求的可达矩阵。
具体实施:
通过将上次循环得出来的A赋给E,并判断新一轮循环得出的A是否与E相等,决定是否终止循环。循环终止意味着此时的A就是最终的可达矩阵。
具体程序如下:
n=input('请输入矩阵维数:');
A=input('请输入邻接矩阵:');
E=zeros(n);
B=A;
while(norm(A-E)>0)
E=A;
for i=1:n
for j=1:n
for k=1:n
if A(i,k)&B(k,j)
A(i,j)=1;
end
end
end
end
end
A
2、区域划分
找出各个元素相对应的可达集P、先行集Q以及两者的交集S
求解P:找出每一行中元素为1对应的列
求解Q:找出每一列中元素为1对应的行
求解S:套用Matlab本身自带的函数S=intersect(P,Q);
或者编写M文件函数,如下所示:
具体程序如下:
for i=1:n
P=find(A(i,:));
Q=find(A(:,i));
S=intersect(P,Q);
P;
Q;
S;
3、级别划分
因为S是P与Q的交集,所以只需判断P与S的长度是否相等便可进行级别划分。
M=zeros(n);
r=1;r为第几级
求出每个元素的P、Q、S,再将相应的对角线元素A(i,i)赋予0,通过查找对角线为0的元素位置将所对应的行列均赋值0。每次循环r自增1,再进行循环,求出每一级的元素,直至A==M。
具体程序如下:
r=1;
M=zeros(n);
while(~isequal(A,M))
for i=1:n
P=find(A(i,:));
Q=find(A(:,i));
S=intersect(P,Q);
P;
Q;
S;
if(~isempty(P)&~isempty(Q)&( length(P)==length(S))
disp('第r级:')
r
disp('元素为’)
i
A(i,i)=0;
end
end
for i=1:n
if A(i,i)==0
A(i,:)=0;
A(:,i)=0;
end
end
r=r+1;
end
4。课本例题程序验证
请输入矩阵维数:7
请输入邻接矩阵:
1 1 1 0 1 1 0
0 1 0 0 1 1 0
0 1 1 0 1 1 0
0 1 1 1 1 1 0
0 0 0 0 1 0 0
0 1 0 0 1 1 0
0 1 1 0 1 1 1
第r级:r = 1,元素为i =5
第r级:r =2,元素为i =2
第r级:r = 2,元素为i =6
第r级:r =3,元素为i =3
第r级:r =4,元素为i =1
第r级:r =4,元素为i =4
第r级:r = 4,元素为i =7
展开阅读全文