用Java做项目。我使用高斯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++;
}
}
答案 0 :(得分:0)
您想为每个线性相关的列/行求解以下方程组:
B * c = R
其中B是基(独立)向量的矩阵,c是这些未知系数的列向量。 R是您正在查看的当前行。
因此,鉴于您已经通过Guass-Jordan获得了基础,请研究解决线性方程组的方法,找到的系数向量c是线性方程,它结合了您的基础向量,为您提供另一个依赖那些。