Как преобразовать RealMatrix для использования в Apache общин из созданного типа данных? - PullRequest
0 голосов
/ 19 апреля 2020

Мне нужно добавить метод, используя вычисление обратного, предоставленного классом Apache Commons CholeskyDecomposition с использованием getSolver().getInverse(). Когда я пытаюсь использовать MyMatrix в качестве типа данных, он говорит, что он должен быть типа RealMatrix, но я не уверен, как преобразовать между ними (и при этом я не знаю, почему это должен быть пользовательский тип данных, но это так)

import org.apache.commons.math3.linear.*;
import java.lang.Math;
public class MyMatrix
{
    private double[][] matrix;
    public MyMatrix(double[][] m)
    {
        matrix = m;
    }
    public MyMatrix inverseCD(MyMatrix m)
    {
        return CholeskyDecomposition(m).getSolver().getInverse();
    }
}

1 Ответ

0 голосов
/ 19 апреля 2020

CholeskyDecomposition использует интерфейс RealMatrix. Вы должны увидеть, какая реализация RealMatrix подходит для вашего варианта использования. От вашего вопроса, мне кажется, вы можете использовать Array2DRowRealMatrix.

Вы можете использовать его так:

public MyMatrix inverseCD(MyMatrix m)
{
  RealMatrix realMatrix = new Array2DRowRealMatrix(m.getMatrix()); // assuming you created a getter method for the `double[][]` variable
  double[][] inversed = new CholeskyDecomposition(realMatrix).getSolver().getInverse()
                       .getData();
  return new MyMatrix(inversed);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...