Scala Breeze:解决复杂的线性方程组

时间:2014-11-09 13:45:21

标签: java scala linear-algebra scala-breeze

我需要找到一个复杂的线性方程组的解决方案。 当前的实现是在C ++中并调用LAPACK zgesv函数。 我想过用Scala重写它并使用Breeze进行线性代数。 我试了一个例子

import breeze.linalg._
import breeze.math._

val a = DenseMatrix(
  (Complex(-1.34, 2.55), Complex(0.28, 3.17), Complex(-6.39, -2.20), Complex(0.72, -0.92)),
  (Complex(-0.17, -1.41), Complex(3.31, -0.15), Complex(-0.15, 1.34), Complex(1.29, 1.38)),
  (Complex(-3.29, -2.39), Complex(-1.91, 4.42), Complex(-0.14, -1.35), Complex(1.72, 1.35)),
  (Complex(2.41, 0.39), Complex(-0.56, 1.47), Complex(-0.83, -0.69), Complex(-1.96, 0.67))
)

val b = DenseVector(Complex(26.26, 51.78), Complex(6.43, -8.68), Complex(-5.75, 25.31), Complex(1.16, 2.57))

val x = a \ b

我收到错误

  

错误:(14,17)没有足够的方法参数:(隐式op:breeze.linalg.operators.OpSolveMatrixBy.Impl2 [breeze.linalg.DenseMatrix [breeze.math.Complex],bre​​eze.linalg.DenseVector [breeze] .math.Complex],即])即。   未指定的值参数op。   lazy val x = a \ b                  ^

看起来Breeze不支持此操作的复杂类型。 我还发现,netlib-java不支持复杂的例程,Breeze使用它。 我是否理解正确,目前Breeze不支持它?

1 个答案:

答案 0 :(得分:0)

很抱歉,Breeze现在不支持复数的lapack通话。