首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用EJML计算线性系统

用EJML计算线性系统
EN

Stack Overflow用户
提问于 2016-01-19 14:23:23
回答 1查看 724关注 0票数 0

我如何准确地格式化我的代码,以便

代码语言:javascript
复制
1x+2y+3z+4w=5e
6x+7y+8z+9w=10e
11x+12y+13z+14w=15e
16x+17y+18z+19w=20e

并返回x,y,z,w

我试图遵循这个答案中描述的格式,目前我所拥有的是下面的代码,它在试图计算4个结果时抛出IllegalArgumentException: "java.lang.IllegalArgumentException: Can't solve for wide systems. More variables than equations.

代码语言:javascript
复制
                    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();
                    }

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-19 15:42:44

我认为这可能与你的矩阵尺寸有关。

new SimpleMatrix A(4,5)应替换为new SimpleMatrix A(4,4)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34879255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档