如何在java中使用colt库求解线性方程组

如何在java中使用colt库求解线性方程组,java,matrix,system,linear-algebra,colt,Java,Matrix,System,Linear Algebra,Colt,我想用Colt库求解线性方程矩阵*X=D。 我试过: DoubleMatrix2D matrix; matrix = new DenseDoubleMatrix2D(4,4); for (int row = 0; row < 4; row++) { for (int column = 0; column < 4; column++) { // We set and get a cell value: matrix.se

我想用Colt库求解线性方程矩阵*X=D。 我试过:

DoubleMatrix2D matrix;
matrix = new DenseDoubleMatrix2D(4,4);
for (int row = 0; row < 4; row++) {
    for (int column = 0; column < 4; column++) {
        // We set and get a cell value:             
        matrix.set(row,column,row+column);          
    }
}
DoubleMatrix2D D;
D = new DenseDoubleMatrix2D(4,1);
D.set(0,0, 1.0);
D.set(1,0, -1.0);
D.set(2,0, 91.0);
D.set(3,0, -5.0);
DoubleMatrix2D X;
X = solve(matrix,D);
DoubleMatrix2D矩阵;
矩阵=新密度双矩阵x2d(4,4);
用于(int行=0;行<4;行++){
for(int列=0;列<4;列++){
//我们设置并获取一个单元格值:
矩阵集合(行、列、行+列);
}
}
双矩阵2d;
D=新密度双问题矩阵2d(4,1);
D.set(0,0,1.0);
D.set(1,0,-1.0);
D.set(2,0,91.0);
D.set(3,0,-5.0);
双矩阵x2d-X;
X=求解(矩阵,D);
但是我得到一个错误
“类型测试的求解方法(DoubleMatrix2D,DoubleMatrix2D)未定义”, 其中Test是类的名称

我做错了什么?
有什么想法吗?..

出现此错误的原因是方法
solve()
是非静态的,无法从
main()
访问

这将解决您的问题:

Algebra algebra = new Algebra();
DoubleMatrix2D X = algebra.solve(matrix, D);
您还可以使用(Java的线性代数)来实现:

  • 对于确定的系统
    m==n
    ,实际上,您的情况是:

    // The coefficient matrix 'a'
    Matrix a = new Basic2DMatrix(new double[][] {
      { 1.0, 2.0, 3.0 },
      { 4.0, 5.0, 6.0 },
      { 7.0, 8.0. 9.0 }
    });
    
    // A right hand side vector, which is simple dense vector
    Vector b = new BasicVector(new double[] { 1.0, 2.0, 3.0 });
    
    // We will use standard Forward-Back Substitution method,
    // which is based on LU decomposition and can be used with square systems
    LinearSystemSolver solver = 
       a.withSolver(LinearAlgebra.FORWARD_BACK_SUBSTITUTION);
    
    Vector x = solver.solve(b, LinearAlgebra.DENSE_FACTORY);
    
  • 对于超定系统
    m>n
    可以使用
    线性代数。最小二乘法
    解算器


所有的例子都取自官方网站:

你能补充一下你是如何声明你的
solve
method的吗?solve method是library Colt中的一种方法,它不是我的。我只是想知道如何在我的程序中使用它…你在你的类中导入了Colt库吗?是的,我已经键入:
import cern.Colt.matrix.*;导入cern.colt.matrix.impl.denseDoubleMatrix 1d;导入cern.colt.matrix.impl.denseDoubleMatrix 2d不是这样吗?…很好,但是当我运行它时,我得到了错误:
线程“main”java.lang.IllegalArgumentException中的异常:
矩阵是奇异的。
位于cern.colt.Matrix.linalg.LUDecompositionQuick.solve(未知源代码)
位于cern.colt.matrix.linalg.LUDecomposition.solve(未知源)
位于cern.colt.matrix.linalg.Algebra.solve(未知源)
位于test.test.main(test.java:89)