MATLAB logm错误

时间:2014-08-02 04:08:09

标签: matrix matlab

通过BCH公式(http://en.wikipedia.org/wiki/Baker%E2%80%93Campbell%E2%80%93Hausdorff_formula),如果我将X和Y作为两个反对称矩阵,那么使用matlab表示法,我应该将logm(expm(X)* expm(Y))作为反对称,因为根据定义,线性项是反对称的,换向器是反对称的。现在问题如下: -

x = rand(5);
y = rand(5);
x = x-x';
y = y-y';
xy = logm(expm(100*1i*x)*expm(1i*y))

我们可以看到xy的MATLAB结果不是反对称的,但是如果我将公式中的因子100替换为较小的数字(例如1到15),则反对称性仍然保留。我该如何更正此错误?如果需要,请随时提问。

1 个答案:

答案 0 :(得分:1)

我在Mathematica中测试了您的代码,它比MATLAB更好地处理大数字。您正在超载,即expm(100*1i*x)的组件的顺序为10^50。此外,即使对于较小的常数,如20expm(100*1i*x)*expm(1i*y)的最小特征值与另一个相比变得非常小,这使得矩阵对数非常不精确。