Мне нужно найти решение сложной системы линейных уравнений. Текущая реализация находится на C++ и вызывает функцию LAPACK zgesv. Я думал о переписывании его в Scala и использовании Breeze для линейной алгебры. Стараюсь пример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
Я получаю ошибку
Error:(14, 17) not enough arguments for method : (implicit op: breeze.linalg.operators.OpSolveMatrixBy.Impl2[breeze.linalg.DenseMatrix[breeze.math.Complex],breeze.linalg.DenseVector[breeze.math.Complex],That])That. Unspecified value parameter op. lazy val x = a \ b ^
Выглядит как Breeze не поддерживает сложный тип для этой операции. Я также обнаружил, что сложные процедуры не поддерживаются netlib-java, который используется Breeze. Правильно ли я понимаю, и в настоящее время он не поддерживается Breeze?
Думаю, вам нужно будет опубликовать свой код. И «пожалуйста, предлагайте библиотеку», вопросы не соответствуют теме, поэтому вы можете переписать этот бит. –