gpt4 book ai didi

java - 使用 ejml 进行 LU 分解

转载 作者:行者123 更新时间:2023-12-01 15:22:11 25 4
gpt4 key购买 nike

我正在尝试使用 ejml 库对矩阵进行 LU 分解。 SVD 分解的计算一切顺利,对于 LU 分解我不知道使用 ejml 库。我需要你的帮助

import java.util.Scanner;
import org.ejml.alg.dense.decomposition.CholeskyDecomposition;
import org.ejml.alg.dense.decomposition.DecompositionFactory;
import org.ejml.alg.dense.decomposition.DecompositionInterface;
import org.ejml.alg.dense.decomposition.LUDecomposition;
import org.ejml.alg.dense.decomposition.lu.*;
import org.ejml.data.DenseMatrix64F;
import org.ejml.simple.SimpleMatrix;
import org.ejml.simple.SimpleSVD;


public class autovalori {
public static void main(String[] args) {


double[][] matrix;
double[] u;
int r, c, t = 0;


Scanner scanner = new Scanner(System.in);

System.out.println("Insert row matrix: ");
r = scanner.nextInt();//row matrix
System.out.println("Insert columns matrix: ");
c = scanner.nextInt(); //columns matrix
matrix = new double[r][c];



for (int i = 0; i < r; i++){
for (int j = 0; j < c; j++){

System.out.printf("value: " + i + " - " + j);
System.out.printf("\n");
matrix[i][j] = scanner.nextDouble();

}
}

System.out.printf("\n");


SimpleMatrix A = new SimpleMatrix(matrix);

SimpleSVD SVD = A.svd();
SimpleMatrix U = SVD.getU();
SimpleMatrix S = SVD.getV();
SimpleMatrix V = SVD.getW();

U.print();
S.print();
V.print();

最佳答案

SimpleMatrix 接口(interface)不提供计算 LU 分解的直接方法。相反,您需要通过分解算法来计算它。

    SimpleMatrix A = new SimpleMatrix(10,5);

LUDecomposition<DenseMatrix64F> lu = DecompositionFactory.lu(A.numCols());

if( !lu.decompose(A.getMatrix()) ) {
throw new RuntimeException("LU Decomposition failed!");
}

SimpleMatrix L = SimpleMatrix.wrap(lu.getLower(null));
SimpleMatrix U = SimpleMatrix.wrap(lu.getUpper(null));

关于java - 使用 ejml 进行 LU 分解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10741822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com