【发布时间】:2011-02-13 21:29:11
【问题描述】:
给定矩阵乘积C = A*B,是否有N^2 方法来估计C 中的最大值?或者更确切地说,这样做的好方法是什么?
【问题讨论】:
-
“估计”是什么意思?
-
@Oli 获取
max(abs(C))的合理上限
标签: c matrix numerical-analysis
给定矩阵乘积C = A*B,是否有N^2 方法来估计C 中的最大值?或者更确切地说,这样做的好方法是什么?
【问题讨论】:
max(abs(C))的合理上限
标签: c matrix numerical-analysis
这个怎么样:
A 中的每一行和B 中的每一列,求向量范数平方(即平方和)。 O(n^2)
A 中的行和B 中的列的每个组合,乘以相应的向量范数平方。 O(n^2)
它的平方根将是max(abs(C)) 的上限。为什么?因为,从Cauchy-Schwartz inequality,我们知道|<x,y>|^2 <= <x,x>.<y,y>,其中<> 表示内积。我们已经为C中的每个点计算了这个关系的RHS;因此我们知道C(LHS)的对应元素必须更少。
免责声明:很可能有一种方法可以提供更严格的界限;这是我想到的第一件事。
【讨论】:
显然,
N * max(abs(A)) * max(abs(B))
是一个上限(因为 C 的每个元素都是来自 A 和 B 的两个值的 N 个乘积之和)。
【讨论】:
N 依赖于矩阵相对“同质”的假设。跨度>
这是我的看法:
A,B,C
a(i) = max(abs(A(i,:)))
b(j) = max(abs(B(j,:)))
c(i,j) = N*max(a(i)*b(j))
你怎么看?将尝试 Oli 的答案,看看是什么给了我最好的近似值/性能。
【讨论】: