如何在java中使用colt库求解线性方程组
我想用Colt库求解线性方程矩阵*X=D。 我试过:如何在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
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)