0

用Java做项目。我使用 Gauss Jordain 算法来找出矩阵的哪些行和列是线性独立的,哪些是独立行和列的线性组合。我可以按行和列找​​到排名。

但我真正需要并且不知如何去做的是找到将相关行和列生成为独立行和列的线性组合的系数。

我想答案是对 Gauss Jordain 的一些修改和/或跟踪所有乘法和除法系数,但我的大脑正在锁定如何去做。

基本功能是简化为行梯形,然后我在其上构建其他。

    public static void toRREF(double[][] M) {
        int rowCount = M.length;
    if (rowCount == 0)          
    return;
    int columnCount = M[0].length;
    int lead = 0;
    for (int r = 0; r < rowCount; r++) {
      if (lead >= columnCount)
      break;
        {
         int i = r;
         while (M[i][lead] == 0) {
           i++;
           if (i == rowCount) {
        i = r;
        lead++;
        if (lead == columnCount)
        return;
           }
         }
         double[] temp = M[r];
         M[r] = M[i];
             M[i] = temp;
        }
        {
        double lv = M[r][lead];
        for (int j = 0; j < columnCount; j++)
        M[r][j] /= lv;
        }
        for (int i = 0; i < rowCount; i++) {
            if (i != r) {
                double lv = M[i][lead];
                for (int j = 0; j < columnCount; j++)
                M[i][j] -= lv * M[r][j];
            }
        }
        lead++;
    }
}
4

1 回答 1

0

您想为每个线性相关的列/行求解以下方程组:

B * c = R

其中 B 是基(独立)向量的矩阵,c 是这些未知系数的列向量。R 是您正在查看的当前行。

因此,鉴于您已经通过 Guass-Jordan 获得了基础,请研究求解线性方程组的方法,并且您找到的系数向量 c 是线性方程,它将您的基础向量组合为您的其他依赖向量。

于 2013-01-21T11:10:36.490 回答