【问题标题】:Large Matrix Powers in JuliaJulia 中的大矩阵幂
【发布时间】:2019-12-10 06:29:46
【问题描述】:

我正在处理非常大的图及其相应的加权邻接矩阵,并且我需要将这些大矩阵进行类似的大幂运算(即将矩阵提升到数万次幂)。

我遇到的问题是矩阵的元素很快变得太大而计算机无法处理,我想知道如何解决这个问题。

以前有没有人处理过此类问题(将矩阵提高到大幂),您是如何解决这些问题的?

我知道 Python 的 numpy 可以处理这些计算。 Julia 中是否有类似的库也可以做到这一点?

【问题讨论】:

  • 矩阵是否太大而无法对角化?
  • @user14717 可以对角化,对角化会绕过这个问题吗?因为您仍然需要处理大量数字,尤其是在转换回原始形式之后。
  • 如果你有特征分解A = U'DU,你可以取D的所需幂,即对角线上的特征值。
  • 最终,在应用基础变换U 时,您将始终混合不同的尺度(特征值)。但这几乎是不可避免的。
  • 是的,但是在 D 上操作时,如何确保数字条目的表示方式不会导致数字过多,从而导致损坏?

标签: julia


【解决方案1】:

您可以将类型转换为 BigFloat:

julia> A = [1.5 2 -4; 3 -1 -6; -10 2.3 4]
3×3 Array{Float64,2}:
   1.5   2.0  -4.0
   3.0  -1.0  -6.0
 -10.0   2.3   4.0

julia> (BigFloat.(A))^32000
3×3 Array{BigFloat,2}:
  4.16164e+31019   8.71351e+31017  -3.22788e+31019
  4.60207e+31019   9.63565e+31017  -3.56949e+31019
 -5.83403e+31019  -1.22151e+31018   4.52503e+31019

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-09
    • 2015-04-26
    • 2022-01-25
    • 2021-04-25
    • 2013-09-24
    • 2013-01-24
    • 2016-05-30
    • 2021-05-09
    相关资源
    最近更新 更多