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) недостаточно аргументов для метода: (неявная операция: 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?


person Aleksandr Dorogush    schedule 09.11.2014    source источник
comment
Я думаю, вам нужно будет опубликовать свой код. И, пожалуйста, предложите вопросы о библиотеке не по теме, поэтому вы можете перефразировать этот фрагмент.   -  person The Archetypal Paul    schedule 09.11.2014


Ответы (1)


К сожалению, сейчас Breeze не поддерживает вызовы Lapack для сложных номеров.

person dlwh    schedule 09.11.2014