gpt4 book ai didi

java - Cholesky 分解方面最快的线性代数库

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:52:17 25 4
gpt4 key购买 nike

我真的很想评估你们中是否有任何人可以指出我在 Cholesky 分解 方面最优化和计算速度最快的线性代数库。

到目前为止,我一直在使用 Apache Commons Math 库,但也许已经有更强大和更好增强的选项可用。

例如,PColtEJMLojAlgo 会是更好的选择吗?最紧迫的问题主要是一个:我需要迭代计算(通常在 2048 元素 for 循环内)最多三个不同矩阵的下三角 Cholesky 因子;矩阵将达到的最大尺寸约为 2000x2000

最佳答案

Cholesky 分解是一种非常简单的算法。这是我使用的(未优化的)C# 代码。 C# 和 Java 非常相似,因此转换为 Java 并进行您认为必要的任何改进应该很容易。

public class CholeskyDecomposition {
public static double[,] Do(double[,] input) {
int size = input.GetLength(0);
if (input.GetLength(1) != size)
throw new Exception("Input matrix must be square");
double[] p = new double[size];
double[,] result = new double[size, size];
Array.Copy(input, result, input.Length);
for (int i = 0; i < size; i++) {
for (int j = i; j < size; j++) {
double sum = result[i, j];
for (int k = i - 1; k >= 0; k--)
sum -= result[i, k] * result[j, k];
if (i == j) {
if (sum < 0.0)
throw new Exception("Matrix is not positive definite");
p[i] = System.Math.Sqrt(sum);
} else
result[j, i] = sum / p[i];
}
}
for (int r = 0; r < size; r++) {
result[r, r] = p[r];
for (int c = r + 1; c < size; c++)
result[r, c] = 0;
}
return result;
}
}

关于java - Cholesky 分解方面最快的线性代数库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16740577/

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