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++;
}
}