gpt4 book ai didi

matlab - 矩阵乘法给出两个不同的答案

转载 作者:太空宇宙 更新时间:2023-11-03 20:16:21 25 4
gpt4 key购买 nike

下面是一些简单的代码,展示了我所看到的内容:

A = randn(1,5e6)+1i*randn(1,5e6);
B = randn(1,5e6)+1i*randn(1,5e6);

sum(A.*conj(B)) - A*B'
sum(A.*conj(B)) - mtimes(A,B')
A*B' - mtimes(A,B')

现在,底部显示的三种方法应该做同样的事情,所以答案应该为零,对吗?错误的!差异很小,但还没有小到可以忽略不计的程度。另外,误差随着A和B长度的增加而增加。

有谁知道这些方法之间的实际区别是什么?我知道代码中可能写入了快捷方式,但如果可能的话,我想对其进行量化。 Matlab 会在任何地方发布差异吗?我环顾四周,但没有找到任何东西。

最佳答案

这可能与执行操作的顺序有关。例如,

sum(A.*conj(B)) - fliplr(A)*fliplr(B)'

给出的结果不同于

sum(A.*conj(B)) - A*B'

或者,更引人注目的是,

A*B' - fliplr(A)*fliplr(B)'

给出非零结果,与您的测试顺序相同。

所以我敢打赌,根据方法 (sum*),Matlab 在内部以不同的顺序执行操作,这很可能解释了不同的舍入您观察到的错误。

关于matlab - 矩阵乘法给出两个不同的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20474950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com