给定矩阵乘积C = A*B
,有没有N^2
办法估计 C 中的最大值?或者更确切地说,这样做的好方法是什么?
问问题
189 次
3 回答
5
这个怎么样:
- 对于 中的每一行
A
和 中的每一列B
,求向量范数的平方(即平方和)。 O(n^2) - 对于行 from
A
和列 from的每个组合B
,乘以相应的向量范数平方。 O(n^2) - 找出其中的最大值。 O(n^2)
它的平方根将是 的上限max(abs(C))
。为什么?因为,根据Cauchy-Schwartz 不等式,我们知道|<x,y>|^2 <= <x,x>.<y,y>
,其中<>
表示内积。我们已经为 中的每个点计算了这种关系的 RHS C
;因此,我们知道C
(LHS)的相应元素必须更少。
免责声明:很可能有一种方法可以提供更严格的界限;这是首先想到的。
于 2011-02-13T21:43:46.047 回答
2
明显地,
N * max(abs(A)) * max(abs(B))
是一个上限(因为 C 的每个元素都是来自 A 和 B 的两个值的 N 个乘积之和)。
于 2011-02-13T21:44:48.773 回答
0
这是我的看法:
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 的答案,看看是什么给了我最好的近似值/性能。
于 2011-02-13T21:57:15.563 回答