【问题标题】:Jama package, 4x4 linear equation solverJama 包,4x4 线性方程求解器
【发布时间】:2016-04-27 18:58:29
【问题描述】:

我正在尝试使用 Jama 求解 4x4 线性方程组(4 个变量,4 个方程)。我已经尝试了以下代码,但它不起作用。如果有人可以使用 Jama 或任何其他方法帮助我,我将不胜感激。

import Jama.Matrix;

public class OvaWork {

    public OvaWork() 
    {

        //Creating  Arrays Representing Equations
        double[][] lhsArray = {{-3, 1, -1}, {5, -2, 1}, {-1, 1, 3}, {2, 5, 7}};
        double[] rhsArray = {-4, 6, 0, 8};
        //Creating Matrix Objects with arrays
        Matrix lhs = new Matrix(lhsArray);
        Matrix rhs = new Matrix(rhsArray, 4);
        //Calculate Solved Matrix
        Matrix ans = lhs.solve(rhs);
        //Printing Answers
        System.out.println("w = " + Math.round(ans.get(0, 0)));
        System.out.println("x = " + Math.round(ans.get(1, 0)));
        System.out.println("y = " + Math.round(ans.get(2, 0)));
        System.out.println("z = " + Math.round(ans.get(3, 0)));
    }

    public static void main(String[] args) 
    {
        OvaWork o = new OvaWork();
    }
}

【问题讨论】:

  • 当您说 but still no work 时,这是否意味着您遇到了错误或这意味着什么?
  • lhsArray 不是 4x4 数组
  • @FREDK 如何将 1hsArray 转换为 4x4 数组?
  • 例如,{-3, 1, -1} 中只有三个值,您需要第 4 个值(对于每个集合)。
  • 修正语法和一些单词选择。

标签: java matrix jama


【解决方案1】:

你必须尝试像这个 2x2 方程这样更简单的例子

double[][] lhsArray = {{1,1},{2, 0}};
double[] rhsArray = {10,2};
Matrix lhs = new Matrix(lhsArray);
Matrix rhs = new Matrix(rhsArray, 2);
Matrix ans = lhs.solve(rhs);

它可以工作,输出是一个矩阵 {1,9}

你的代码的问题是你的矩阵不是正方形的,它是 3x4

double[][] lhsArray = {{-3, 1, -1}, {5, -2, 1}, {-1, 1, 3}, {2, 5, 7}};

将矩阵更改为正方形。

测试这个简单的等式:

double[][] lhsArray = {{1, 0, 0, 0}, {0, 1, 0, 0}, {0, 0, 1, 0}, {0, 0, 0, 1}};
double[] rhsArray = {1, 2, 3, 4};
Matrix lhs = new Matrix(lhsArray);
Matrix rhs = new Matrix(rhsArray, 4);
Matrix ans = lhs.solve(rhs);

如预期的那样,ans 是 {1,2,3,4}。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-05
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多