это другой подход, который использует Apache Commons. Тем не менее, важно отметить, что операция деления применяется умножение и инверсии операций и некоторые матрицы являются inversable и другие нет: https://en.wikipedia.org/wiki/Invertible_matrix
Следующий пример относится к библиотеке Apache Commons (Study.scala):
import org.apache.commons.math3.linear._
object Study {
def main(args: Array[String]): Unit = {
val xArray = Array(Array(1.0, 2.0), Array(3.0, 4.0))
val yArray = Array(Array(1.0, 2.0), Array(3.0, 4.0))
val x = new Array2DRowRealMatrix(xArray)
val y = new Array2DRowRealMatrix(yArray)
val yInverse = new LUDecomposition(y).getSolver().getInverse();
val w = x.multiply(yInverse)
for(i <- 0 until w.getRowDimension())
for(j <- 0 until w.getColumnDimension())
println(w.getEntry(i, j))
}
}
Совет: Если вы собираетесь использовать консоль SCALA, необходимо указать путь к классам ...
scala -classpath .../commons-math3/3.2/commons-math3-3.2.jar
... в сессии вы лестница загрузки алгоритма ...
:load .../Study.scala
... и результаты выходят вызов основной функции изучения (приближение может быть применено) ...
scala> Study.main(null)
0,99/1.11E-16/0,0/1,02
Вы имеете в виду elmentwise division или 'XY^(- 1)' matrix multipication? – Psidom
@ Psidom, я имею в виду, если A, X, Y являются матрицами, а если AX = Y и A и Y являются известными матрицами, поэтому мне нужно получить матрицу X. Я думаю, что это должно быть XY^(- 1). –
Возможно, вы захотите проверить библиотеку бриза, она реализует довольно много линейной алгебры с Vector и Matrices. Но если вы хотите иметь дело с rdds, это еще одна проблема. – Psidom