【问题标题】:scala breeze solving sparse system AX=B, how to construct Bscala微风求解稀疏系统AX=B,如何构造B
【发布时间】:2016-12-01 05:55:04
【问题描述】:

关于NOAH on how to use CSCMatrix的回答

如何构造矩阵B,它由哪些项组成?

【问题讨论】:

    标签: scala scala-breeze


    【解决方案1】:

    看起来CSC 矩阵只支持B 形式的DenseVector 列:

    scala> import breeze.linalg._
    import breeze.linalg._
    
    scala> import breeze.numerics._
    import breeze.numerics._
    
    scala> val A = CSCMatrix((1d,0d,0d),(0d,1d,0d),(0d,0d,1d))
    A: breeze.linalg.CSCMatrix[Double] =
    3 x 3 CSCMatrix
    (0,0) 1.0
    (1,1) 1.0
    (2,2) 1.0
    
    scala> val B = DenseVector(3d,4d,5d)
    B: breeze.linalg.DenseVector[Double] = DenseVector(3.0, 4.0, 5.0)
    
    scala> A \ B
    res0: breeze.linalg.DenseVector[Double] = DenseVector(3.000000000000001, 4.000000000000002, 5.000000000000001)
    

    【讨论】:

    • :从 Api 的角度来看你是正确的,但我的问题是这段代码没有编译。我得到以下信息:错误:(44、9)找不到参数 op 的隐式值:breeze.linalg.operators.OpSolveMatrixBy.Impl2[breeze.linalg.CSCMatrix[Double],breeze.linalg.DenseVector[Double],That ] A \ B ^ 错误:(44, 9) 方法没有足够的参数 \: (隐式操作:breeze.linalg.operators.OpSolveMatrixBy.Impl2[breeze.linalg.CSCMatrix[Double],breeze.linalg.DenseVector[Double] ,那个那个。未指定值参数 op。甲\乙^
    • 嗯,所以为您的B 使用DenseVector 不起作用?你用的是什么版本的微风?
    • 如果我查看 intellijidea :它是微风-macros_2.10-0.11.2.jar
    • 是的,如果我给它另一个稀疏矩阵,它就可以工作。像 A/B B 需要是与 A 相同大小的稀疏矩阵。我不明白为什么?但如果是这样,我在这里问一个数学问题,如何构造矩阵 B 以包含向量 b 的值。
    猜你喜欢
    • 1970-01-01
    • 2015-07-18
    • 2011-09-28
    • 2018-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多