对称矩阵乘积不是对称的



当我们有两个对称矩阵xy时,矩阵z=xyx

x = randn(3);
y = randn(3);
x = x*x';
y = x*x';
z = x*y*x;
issymetric(z)

为什么会发生这种情况,我该怎么办?既然我不想做

z = .5*(z+z')

在这个stackoverflow问题中,所有的答案都是不令人满意的。

问题是Matlab不能精确执行计算,因此浮点计算的有限精度引入了一些截断误差。

如果您使用符号数学(没有截断,确切地说(运行该示例,您将看到z实际上是对称的。

x = sym(randn(3));
y = sym(randn(3));
x = x*x';
y = y*y';
z = x*y*x;
% issymmetric does not take symbolic expressions as argument, convert to double
issymmetric(double(z))

由于您现在在最后进行双重转换,而不是在中间步骤中,因此矩阵将保持对称。

相关内容

  • 没有找到相关文章

最新更新