我正在编写一个程序来解决具有交互的矩阵系统,为此我必须最大化矩阵 A 并重组向量 B,但是每当我的 n 大于 4 时我就会出错,因为向量不会重组。
void maximize(matrix A, vector B, int n) {
int i, j, k, max_id;
float max_val, temp;
for (i = 0; i < n; i++) {
max_id = i;
max_val = fabs(A[i][i]);
for (j = i + 1; j < n; j++) {
temp = fabs(A[j][i]);
if (temp > max_val) {
max_val = temp;
max_id = j;
}
}
if (max_id != i) {
for (k = 0; k < n; k++) {
temp = A[i][k];
A[i][k] = A[max_id][k];
A[max_id][k] = temp;
temp = B[i];
B[i] = B[max_id];
B[max_id] = temp;
}
}
if (A[i][i] == 0.0) {
printf("Error: Nule element in the diagonal.\n");
exit(1);
}
}
}
我尝试使用变量而不是临时变量,因为这是我唯一能看到的导致内存分配的原因,但我不确定是否是这样。