当 n=>4 时,为什么我的矩阵最大化函数不起作用?

问题描述 投票:0回答:0

我正在编写一个程序来解决具有交互的矩阵系统,为此我必须最大化矩阵 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);
        }
    }
}

我尝试使用变量而不是临时变量,因为这是我唯一能看到的导致内存分配的原因,但我不确定是否是这样。

c matrix temp maximize
© www.soinside.com 2019 - 2024. All rights reserved.