gpt4 book ai didi

java - 如何使用 jblas 获取 ComplexDoubleMatrix 的逆

转载 作者:行者123 更新时间:2023-11-30 06:18:14 26 4
gpt4 key购买 nike

基本上,我想计算属于 ComplexDoubleMatrix 类的矩阵的逆,但我没有找到像 inverse() 或 inv() 这样的函数,有没有人知道如何计算 a 的逆矩阵?先感谢您。

我的最终目标是使用 jblas.eigen 创建矩阵的特征分解。现在我当前的实现是由下面的 jama 库实现的。为了执行类似的功能,我需要计算 Vinverse,这就是为什么我想在 jblas 中找到一个反函数。

public static SimpleEigenDecomposition SimpleEigenDecomposition(double [][] rates)
{
Matrix ratesMatrix = new Matrix(rates);
EigenvalueDecomposition ed = new EigenvalueDecomposition(ratesMatrix);
Matrix V = ed.getV();
Matrix D =ed.getD();
Matrix Vinverse = V.inverse();
Matrix resultMatrix = V.times(D).times(V.inverse());
//check if result and rates are close enough
SimpleMatrix trueMatrix = new SimpleMatrix(rates);
SimpleMatrix calculatedMatrix = new SimpleMatrix(resultMatrix.getArray()) ;
if(EJMLUtils.isClose(trueMatrix, calculatedMatrix, THRESHOLD))
{
return new SimpleEigenDecomposition(V, D, Vinverse);
}else{
throw new RuntimeException();
}

最佳答案

原因是没有逆运算,因为如果使用 Cramer 规则,计算量太大。我最初认为这很奇怪,因为它可以使用 Gauss Jordon 消除来实现。但奇怪的是,连我都找不到。如果有人在 JBLAS 中找到它,请在下面发表评论。

我可以建议的一种替代方法是使用 pinv()。它使用最小二乘法并作为静态函数存在于 org.jblas.Solve 中。

import org.jblas.Solvepublic static SimpleEigenDecomposition SimpleEigenDecomposition(double [][] rates){    // inside the main function replace this for your implementation of inverse    DoubleMatrix Vinverse = Solve.pinv(V);}

当矩阵可逆时,租赁平方 pinv 给出与实际逆矩阵相同的输出。

关于java - 如何使用 jblas 获取 ComplexDoubleMatrix 的逆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24944972/

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