2014-11-09 4 views
1

Мне нужно найти решение сложной системы линейных уравнений. Текущая реализация находится на 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?

+0

Думаю, вам нужно будет опубликовать свой код. И «пожалуйста, предлагайте библиотеку», вопросы не соответствуют теме, поэтому вы можете переписать этот бит. –

ответ

0

Извините, Бриз не поддерживает звонки со сложными номерами прямо сейчас.