ISM模型的matlab实现1、可达矩阵的求解A:邻接矩阵E二zeros(A);通过布尔运算求出A2.Aa3…直至A5=AAn-l,停止运算,此时的A5便就是要求的可达矩阵。具体实施:通过将上次循环得出来的A赋给E,并判断新一轮循环得出的A就是否与E相等,决定就是否终止循环。循环终止意味着此时的A就就是最终的可达矩阵。具体程序如下:n=input('请输入矩阵维数:’);A=input('请输入邻接矩阵:’);E=zeros(n);B=A;while(norm(A~E)>0)E二A;fori=l:nforj=l:nfork=l:nifA(i,k)&B(k,j)A(i,j)=l;endendendendendA2、区域划分找出各个元素相对应的可达集P、先行集Q以及两者的交集S求解P:找出每一行中元素为1对应的列求解Q:找出每一列中元素为1对应的行求解S套用Matlab本身自带的函数S二intersect(P,Q);或者编写M文件函数,如下所示:具体程序如下:fori=l:nP=find(A(i,:));Q=find(A(:,i));S=intersect(P,Q);P;Q;S;3、级别划分因为S就是P与Q的交集,所以只需判断P与S的长度就是否相等便可进行级別划分。M二zeros(n);r=l;r为第几级求出每个元素的P、Q、S,再将相应的对角线元素A(i,i)赋予0,通过查找对角线为0的元素位置将所对应的行列均赋值0o每次循环r自增1,再进行循环,求出每一级的元素,直至A=Mo具体程序如下:r=l;M二zeros(n);whileCisequal(A,M))fori=l:nP二find(A(i,:));Q二find(A(:,i));S=intersect(P,Q);P;Q;S;辻Cisempty(P)&^isempty(Q)&(length(P)—length(S))disp('第r级:')rdisp(,元素为’)■1A(i,i)=0;endendfori=l:nifA(i,i)==0A(i,:)=0;A(:,i)=0;endendr二r+1;end4、课本例
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
程序验证请输入矩阵维数:7请输入邻接矩阵:1110110010011001101100111110000010001001100111011第r级丁二1,元素为i二5第r级:工二2,元素为i=2第r级:r=2,元素为i二6第t级:工=3,元素为i=3第r级:r=4,元素为i二1第r级:r二4,元素为匚二厶第^级:r二4,元素为i=7