使用 EJML 计算线性系统
Calculating linear systems using EJML
我应该如何格式化我的代码才能使它需要
1x+2y+3z+4w=5e
6x+7y+8z+9w=10e
11x+12y+13z+14w=15e
16x+17y+18z+19w=20e
和return x,y,z,w
?
我试图遵循 this answer 中描述的格式,
目前我拥有的是以下代码,它在尝试计算 4 个结果时抛出 IllegalArgumentException: "java.lang.IllegalArgumentException: Can't solve for wide systems. More variables than equations.
:
double[20] args = {1,2,3... ,20};
SimpleMatrix A = new SimpleMatrix(4,5);
SimpleMatrix b = new SimpleMatrix(4,1);
int val=0;
for(int i =0;i<4;i++){
for(int j=0;j<5;j++){
A.setRow(i, j, args[val]);
val++;
}
b.setRow(i,0, args[val-1]);
}
double[] result = new double[4]; //results for x y z w
try {
SimpleMatrix solution = A.solve(b); //throws IllegalArgumentException!
for(int i=0;i<solution.getNumElements();i++) {
result[i] = solution.get(i, 0);
}
--print results--
}
catch ( SingularMatrixException e ) {
throw new IllegalArgumentException();
}
我做错了什么?
我想这可能与你的矩阵维度有关。
new SimpleMatrix A(4,5)
应替换为 new SimpleMatrix A(4,4)
。
我应该如何格式化我的代码才能使它需要
1x+2y+3z+4w=5e
6x+7y+8z+9w=10e
11x+12y+13z+14w=15e
16x+17y+18z+19w=20e
和return x,y,z,w
?
我试图遵循 this answer 中描述的格式,
目前我拥有的是以下代码,它在尝试计算 4 个结果时抛出 IllegalArgumentException: "java.lang.IllegalArgumentException: Can't solve for wide systems. More variables than equations.
:
double[20] args = {1,2,3... ,20};
SimpleMatrix A = new SimpleMatrix(4,5);
SimpleMatrix b = new SimpleMatrix(4,1);
int val=0;
for(int i =0;i<4;i++){
for(int j=0;j<5;j++){
A.setRow(i, j, args[val]);
val++;
}
b.setRow(i,0, args[val-1]);
}
double[] result = new double[4]; //results for x y z w
try {
SimpleMatrix solution = A.solve(b); //throws IllegalArgumentException!
for(int i=0;i<solution.getNumElements();i++) {
result[i] = solution.get(i, 0);
}
--print results--
}
catch ( SingularMatrixException e ) {
throw new IllegalArgumentException();
}
我做错了什么?
我想这可能与你的矩阵维度有关。
new SimpleMatrix A(4,5)
应替换为 new SimpleMatrix A(4,4)
。