【问题标题】:matrix mul max value estimate矩阵 mul 最大值估计
【发布时间】:2011-02-13 21:29:11
【问题描述】:

给定矩阵乘积C = A*B,是否有N^2 方法来估计C 中的最大值?或者更确切地说,这样做的好方法是什么?

【问题讨论】:

  • “估计”是什么意思?
  • @Oli 获取max(abs(C))的合理上限

标签: c matrix numerical-analysis


【解决方案1】:

这个怎么样:

  1. 对于A 中的每一行和B 中的每一列,求向量范数平方(即平方和)。 O(n^2)
  2. 对于A 中的行和B 中的列的每个组合,乘以相应的向量范数平方。 O(n^2)
  3. 找出其中的最大值。 O(n^2)

它的平方根将是max(abs(C)) 的上限。为什么?因为,从Cauchy-Schwartz inequality,我们知道|<x,y>|^2 <= <x,x>.<y,y>,其中<> 表示内积。我们已经为C中的每个点计算了这个关系的RHS;因此我们知道C(LHS)的对应元素必须更少。

免责声明:很可能有一种方法可以提供更严格的界限;这是我想到的第一件事。

【讨论】:

  • 我在考虑获得最大的列和行并将其相乘。想知道 ifd 可能会更紧。
  • @aaa:这将产生一个始终 >= 我的方法的结果。
【解决方案2】:

显然,

N * max(abs(A)) * max(abs(B))

是一个上限(因为 C 的每个元素都是来自 A 和 B 的两个值的 N 个乘积之和)。

【讨论】:

  • 这会高估太多
  • @aaa:可能有更好的界限,但是您可以轻松地在达到界限的地方构造 A 和 B,因此从这个意义上说,界限并没有高估。
  • 如果内存成为问题,我可能会接受您的建议。基本上试图乘以一些块稀疏矩阵
  • @aaa:如果您的矩阵是稀疏的,这将大量高估,因为乘以N 依赖于矩阵相对“同质”的假设。跨度>
  • @Oli:你是对的,我昨天已经对你的答案投了赞成票。尽管如此,恕我直言,我的建议是对原始问题的正确答案。
【解决方案3】:

这是我的看法:

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 的答案,看看是什么给了我最好的近似值/性能。

【讨论】:

  • 我相信这会得到与@Doc 的方法相同的结果。
猜你喜欢
  • 2021-02-04
  • 1970-01-01
  • 2019-05-21
  • 1970-01-01
  • 1970-01-01
  • 2016-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多