1

我需要找到一个复杂的线性方程组的解决方案。当前实现在 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)方法参数不足:(隐式操作:breeze.linalg.operators.OpSolveMatrixBy.Impl2[breeze.linalg.DenseMatrix[breeze.math.Complex],breeze.linalg.DenseVector[breeze.math.复杂],那个])那个。未指定值参数 op。懒惰的 val x = a \ b ^

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

4

1 回答 1

0

抱歉,Breeze 目前不支持对复数的 lapack 调用。

于 2014-11-09T22:59:03.410 回答