Dort ist ein anderer Ansatz, der Apache Commons verwendet. Es ist jedoch wichtig zu beobachten, dass die Teilungsoperation gilt Operationen Multiplikation und Inversion und einige Matrix sind inversable und andere nicht: https://en.wikipedia.org/wiki/Invertible_matrix
Das folgende Beispiel gilt die Bibliothek 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))
}
}
Tipp: Wenn Sie beabsichtigen, die scala Konsole zu verwenden, müssen Sie den classpath angeben ...
scala -classpath .../commons-math3/3.2/commons-math3-3.2.jar
... in der scala Session Sie den Algorithmus geladen ...
:load .../Study.scala
... und die Ergebnisse kommen die Hauptfunktion der Studie Aufruf (Näherung angewendet werden kann) ...
scala> Study.main(null)
0,99/1.11E-16/0,0/1,02
Sie meinen Elmentwise Division oder 'XY^(- 1)' Matrix Multiplikation? – Psidom
@Psidom, ich meine, wenn A, X, Y sind Matrizen, und wenn AX = Y und A und Y sind bekannte Matrizen, so muss ich X Matrix bekommen. Ich denke, es sollte XY^(- 1) sein. –
Vielleicht möchten Sie die Brise-Bibliothek überprüfen, es implementiert einige lineare Algebra mit Vektor und Matrizen. Aber wenn du mit rdds umgehen willst, ist das ein anderes Problem. – Psidom