Мне нужно найти решение сложной системы линейных уравнений. Текущая реализация находится на 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 не поддерживает сложный тип для этой операции. Я также обнаружил, что сложные подпрограммы не поддерживаются netlib-java, что используется Бризом. Я правильно понимаю, и в настоящее время он не поддерживается Breeze?