【问题标题】:Symmetric Matrix Product is not Symmetric [duplicate]对称矩阵产品不是对称的[重复]
【发布时间】:2018-11-10 19:20:09
【问题描述】:

当我们有两个对称矩阵xy时,矩阵z = xyx理论上也是对称的。然而这在 Matlab 中并不完全正确:

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

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

z = .5*(z+z')

thisstackoverflow 问题中的所有答案都不令人满意。

【问题讨论】:

    标签: matlab matrix symmetric


    【解决方案1】:

    问题在于 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))
    

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

    【讨论】:

      猜你喜欢
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-10
      • 1970-01-01
      相关资源
      最近更新 更多