我使用ojAlgo库开发了一个用于计算矩阵指数的程序。它包括特征值分解。 ojAlgo是否包含多线程算法?例如,是否可以将多个线程附加到分解任务以减少分解时间?

eigenvalue = Eigenvalue.PRIMITIVE.make(matrix);
eigenvalue.decompose(matrix); //matrix dimension (3000x3000)

最佳答案

是的,它确实。如果查看该工厂方法Eigenvalue.PRIMITIVE.make(matrix);,您会发现它会根据矩阵大小来切换实现。用于较大矩阵的实现是多线程的。唯一的问题是单线程实现是如此高效,以至于在矩阵大于8192之前,工厂不会切换到多线程。

您知道矩阵是否对称吗?如果这样做,我建议您使用Eigenvalue.PRIMITIVE.make(matrix, boolean);而不是Eigenvalue.PRIMITIVE.make(matrix);。否则,算法将在每次调用eigenvalue.decompose(matrix);时检查对称性。

09-25 20:14