张家口网站建设zjktao,建立个人网站能赚钱吗,意大利 网站设计,公司企业logo在判断矩阵是否为正互反矩阵这块#xff0c;我写了两种代码#xff0c;改进前很麻烦且有错误#xff0c;改进后简洁多了#xff0c;改进前的代码还有错误#xff0c;忽略了对角线的值必须都是1#xff0c;只考虑了除开对角线的元素相乘为1。 %% 改进前代码
A[3 2 4;1/2 …在判断矩阵是否为正互反矩阵这块我写了两种代码改进前很麻烦且有错误改进后简洁多了改进前的代码还有错误忽略了对角线的值必须都是1只考虑了除开对角线的元素相乘为1。 %% 改进前代码
A[3 2 4;1/2 4 2;1/4 1/2 5]
diag_Adiag(A)
Cones(1,size(A,2))
%将矩阵A的对角线更改为全1向量C
A(logical(eye(size(A))))C
%获取矩阵A的共轭转置矩阵A2
A2A.
%如果A2和A进行点乘能够得到一个单位矩阵那么A就是一个正互反矩阵
if isequal(A2.*A,ones(size(A,1)))fprintf(A是一个正互反矩阵)
end
%将矩阵A的主对角线进行还原
A(logical(eye(size(A))))diag_A%% 改进后代码
if sum(sum(A.*A~ones(n)))0error3;disp(不为正互反矩阵)
end
下面是全部代码
%% 输入判断矩阵
clear;clc
disp(请输入判断矩阵A )
A input(判断矩阵A);
[r,c]size(A);
error0;
%% 判断矩阵是否为方阵并且阶数大于等于2
if r~c || r2error1;
end
%% 判断矩阵是否大于15
if rcr15error2;
end%% 判断矩阵A是否为正互反矩阵
if error~1 sum(sum(A.*A~ones(r)))0error3;
end
%% 计算
if error0%% 算术平均法求权重Sum_A sum(A);[n,m] size(A);SUM_A repmat(Sum_A,n,1);Stand_A A ./ SUM_A;sum(Stand_A,2);disp(算术平均法求权重的结果为);disp(sum(Stand_A,2) ./ n)%% 方法2几何平均法求权重Prduct_A prod(A,2);Prduct_n_A Prduct_A .^ (1/n);disp(几何平均法求权重的结果为);disp(Prduct_n_A ./ sum(Prduct_n_A));%% 方法3特征值法求权重[V,D] eig(A);Max_eig max(max(D));[r,c] find(D Max_eig , 1);V(:,c);disp(特征值法求权重的结果为);disp( V(:,c) ./ sum(V(:,c)) )%% 计算一致性比例CRCI (Max_eig - n) / (n-1);RI[0 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59]; %注意哦这里的RI最多支持 n 15CRCI/RI(n);disp(一致性指标CI);disp(CI);disp(一致性比例CR);disp(CR);if CR0.10disp(因为CR 0.10所以该判断矩阵A的一致性可以接受!);elsedisp(注意CR 0.10因此该判断矩阵A需要进行修改!);end
elseif error1disp(输入的A不为方阵或者阶数小于2)
elseif error2disp(判断矩阵的阶数大于15)
elseif error3disp(不为正互反矩阵)
end