用倒易矩阵算法编写MATLAB代码
我想用MATLAB为以下算法编写一个代码用倒易矩阵算法编写MATLAB代码,matlab,matrix,Matlab,Matrix,我想用MATLAB为以下算法编写一个代码 **Input:** An square reciprocal matrix T = (tij) for (i, j = 1, 2, . . . , n), **Output:** A square reciprocal matrix C = (cij) for (i, j = 1, 2, . . . , n); 1: for i = 1; i < n; i ++ do 2: for j = i ; j < n; j ++
**Input:** An square reciprocal matrix T = (tij) for (i, j = 1, 2, . . . , n),
**Output:** A square reciprocal matrix C = (cij) for (i, j = 1, 2, . . . , n);
1: for i = 1; i < n; i ++ do
2: for j = i ; j < n; j ++ do
3: cij = sqrt(tij /tji );
4: cji = 1/cij ;
5: end for
6: end for
我在一篇论文中找到的答案是:
C = [...
1 2 4 8;...
0.50 1 2 4;...
0.25 0.50 1 2;...
0.13 0.25 0.50 1]
到目前为止,我已经尝试了以下代码,但我不确定。我找不到上面C的确切答案。有什么想法或帮助吗
C=zeros(n,n);
for i = 1:n
for j = i:n
C(i,j) = sqrt(T(i,j)/T(j,i));
C(j,i) = 1/C(i,j) ;
end
end
C;
结果有什么不同?代码似乎实现了该算法。也许你的预期结果不正确?也许算法不正确?@Cris Luengo我用我的代码得到的结果是:C=[1.0000 1.9803 3.9943 7.8554;0.5050 1.0000 2.0002 3.9996;0.2504 0.5000 1.0000 1.9975;0.1273 0.2500 0.5006 1.0000];我们在谈论Matlab,对吗?这很容易,因为C=sqrt(T./T.))看起来您已经足够接近了,您正遭受浮点舍入错误的困扰。请参阅此处:-您的输入矩阵可能不精确,可能需要四舍五入到两位小数才能显示。
C=zeros(n,n);
for i = 1:n
for j = i:n
C(i,j) = sqrt(T(i,j)/T(j,i));
C(j,i) = 1/C(i,j) ;
end
end
C;