请问层次分析法中如何用matlab求权重向量?可不可以给出具体步骤?谢谢

2025-03-01 06:44:57
推荐回答(1个)
回答1:

幂法程序1:
function
[lambda,x,k]=Pow_Meth(A,x0,eps,N)
%幂法求成对比较阵A的主特征值lambda及其特征向量x
%x0为迭代初始向量,eps为预先给定的精度,N为最大迭代次数
%k为迭代次数
n=length(x0);
x0=x0/sum(x0);
%初始向量x0归一化
for
k=1:N

x1=A*x0;

x=x1/sum(x1);%归一化

err=max(abs(x-x0));

if
err<=eps

break;

end

x0=x;
end
lambda=sum(x1./x0)/n;

幂法程序2(计算方法规范乘幂法):
function
[lambda,x,k]=Pow_Meth1(A,x0,eps)
%规范化乘幂法求成对比较阵A的主特征值lambda及其特征向量y
%x0为迭代初始向量,eps为预先给定的精度
%k为迭代次数
n=length(x0);
x0=x0/sum(x0);%规范化
err=1;k=0;
while
err>eps

x=A*x0;

lambda=sum(x);

x=x/lambda;%规范化

err=max(abs(x-x0));

x0=x;

k=k+1;
end

主程序:
A=[1
2
5;1/2
1
2;1/5
1/2
1];
x0=[0.4
0.3
0.3]';
eps=1e-5;N=100;
[lambda,x,k]=Pow_Meth(A,x0,eps,N)