我创建按照这个算法解决了使用高斯 - 乔丹法线性系统的程序:我的for循环不起作用?
for each row ri of the matrix (i from 1 to n)
replace ri with ri/rii
for each row rk of the matrix (k!=i)
replace rk with rk - rki * ri
显然,我不这样做是正确的,因为只有该行的第一个元素被除以本身。我还是C新手,所以任何帮助,将不胜感激。谢谢!
for (k = 0; k < n; k++) {
for (m = 0; m < n+1; m++) {
if (matrix[k][m] < TOLERANCE) {
printf("Error, pivot is 0\n");
exit(0);
}
matrix[k][m] = matrix[k][m]/matrix[k][k];
}
for (l = 0; l != k; l++) {
printMatrix(n, n+1, matrix);
for (o = 0; o < n+1; o++) {
matrix[l][o] = matrix[l][o] - matrix[l][k] * matrix[k][o];
}
}
}
还有其他的意见吗?它仍然是不完全正确,我拉我的头发笑
什么是'n'和'm'?只是变量被传递给函数? – 2011-03-01 01:29:52
n是系统中的行数。米是一个计数器。它应该是一个增广矩阵,所以也有n + 1列。 – Manske 2011-03-01 01:31:35