다른 행렬 행렬을 분할하려면다음과 같이 I 스칼라 두 행렬 (X 및 Y)를 초기화 한 방법 스칼라
var x = ofDim[Int](a1,b1)
var y = ofDim[Int](a2,b2)
X는 Y, A1, A2, B1 및 B2는 변수이다. 이제 X를 Y (X/Y)로 결정해야합니다. 그것을 어떻게 성취 할 수 있습니까?
다른 행렬 행렬을 분할하려면다음과 같이 I 스칼라 두 행렬 (X 및 Y)를 초기화 한 방법 스칼라
var x = ofDim[Int](a1,b1)
var y = ofDim[Int](a2,b2)
X는 Y, A1, A2, B1 및 B2는 변수이다. 이제 X를 Y (X/Y)로 결정해야합니다. 그것을 어떻게 성취 할 수 있습니까?
Apache Commons를 사용하는 다른 접근법입니다. 그러나, 중요이 나눗셈 연산은 곱셈 및 역변환 연산을 적용하고, 어떤 행렬 inversable하고 관찰 다른 번호
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))
}
}
:
https://en.wikipedia.org/wiki/Invertible_matrix
다음 예는 라이브러리 아파치 가공 (Study.scala)을 적용
팁 : 스칼라 콘솔을 사용하려는 경우, 당신은 ... 클래스 경로를 지정해야합니다
scala -classpath .../commons-math3/3.2/commons-math3-3.2.jar
,536 당신이 알고리즘을로드 스칼라 세션에서
... ...
... 그 결과는 연구의 주요 함수를 호출 나올 (근사치 적용 할 수 있습니다) ...:load .../Study.scala
scala> Study.main(null)
0.99/1.11E-16/0.0/1.02
봅니다 : 다른 응답에 mecioned로
import breeze.linalg.{DenseMatrix, inv}
val mx = new DenseMatrix(a1, b1, x.transpose.flatten)
val my = new DenseMatrix(a2, b2, y.transpose.flatten)
mx * inv(my)
도서관 Beeze, 필요합니다. 당신은 브리즈 프로젝트는 GitHub
이것은 메이븐 접근 방식에서 다운로드 할 수 있습니다
SBT 또는 Maven을 사용하여 설치할 수 있습니다 ...
<dependency>
<groupId>org.scalanlp</groupId>
<artifactId>breeze_2.10</artifactId> <!-- or 2.11 -->
<version>0.12</version>
</dependency>
코드를
import breeze.linalg.DenseMatrix
object Division {
def main(args: Array[String]): Unit = {
var a1 = 10
var a2 = 11
var b1 = 12
var b2 = 13
//var x = Array.ofDim[Int](a1,b1)
//var y = Array.ofDim[Int](a2,b2)
var x = DenseMatrix(a1,b1)
var y = DenseMatrix(a2,b2)
var result = x/y
print(result)
}
}
엘멘 방향 분할 또는 'XY^(- 1)'매트릭스 곱셈을 의미합니까? – Psidom
@Psidom, A, X, Y가 행렬이고 AX = Y이고 A와 Y가 알려진 행렬이라면 X 행렬이 필요합니다. XY^(- 1)이어야한다고 생각합니다. –
breeze 라이브러리를 확인하고 벡터 및 행렬로 선형 대수학을 구현할 수 있습니다. 그러나 rdd를 다루고 싶다면 또 다른 문제입니다. – Psidom