l oop не влияет на заданный c элемент массива - PullRequest
1 голос
/ 09 апреля 2020

Я пытаюсь инвертировать матрицу 3х3. Я определяю увеличение, которое имеет как исходную, так и единичную матрицу. В зависимости от размеров матрицы, единичная матрица генерируется отдельной функцией с единицами 1 вдоль главной диагонали и нулями повсюду в другом месте. После завершения операций исходная матрица должна быть идентичностью, а идентичность должна быть обратной. Я могу успешно превратить оригинал в идентичность, но что-то мешает исходной идентичности полностью стать обратной, что сбивает с толку, потому что оба массива находятся внутри одних и тех же циклов.

const int m = 3;
const int n = 3;

double matrix[m][n];
double ID[m][n] = {};

double pivot;

for(s = 1;s <= m;++s){
    pivot = matrix[s-1][s-1];
    k = s + 1;

    for(i = n;i >= 1;--i){                    // makes leading entries 1

            ID[s-1][i-1] = ID[s-1][i-1]/pivot;
            matrix[s-1][i-1] = matrix[s-1][i-1]/pivot;

        }

        for(j = k;j <= m;++j){             //converts to upper triangular

            for(i = n;i >= 1;--i){       

                ID[j-1][i-1] = ID[j-1][i-1] - ID[s-1][i-1]*matrix[j-1][s-1];    //*****<--- has no effect on ID[2][0]
                matrix[j-1][i-1] = matrix[j-1][i-1] - matrix[s-1][i-1]*matrix[j-1][s-1];

            }

        }

} //ID[2][0] = 0; <--- gives correct answer when uncommented

    for(s = m;s >= 1;--s){

        k = s - 1;

        for(j = k;j >= 1;--j){             //makes entries above diagonal zero

            for(i = 1;i <= n;++i){

                ID[j-1][i-1] = ID[j-1][i-1] - ID[s-1][i-1]*matrix[j-1][s-1];
            matrix[j-1][i-1] = matrix[j-1][i-1] - matrix[s-1][i-1]*matrix[j-1][s-1];

            }

        }

}

Вот процесс по рука, большая стрелка указывает на то, где, по моему мнению, мой код застревает. ID[2][0] остается как -1, что, в свою очередь, не позволяет установить ID[0][0] на -3 по сравнению с последним методом l oop.

с правильным результатом

результат без принудительного ввода идентификатора (2) [0] в 0

результат принудительного ввода идентификатора (2) [0] в 0

Не знаю Я не понимаю, что происходит, так как l oop отлично работает на matrix[m][n].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...