Систематический вид матрицы Gsys=[I_k | P] Python

I_k - единичная матрица kxk, P- проверочная подматрица. Допустим я ввожу матрицу [[1,1,1,0],[0,0,1,1]]. чтобы привести матрицу к систематическому виду нужно поменять 2 и 4 столбцы местами [[1,0,1,1],[0,1,1,0]].

Все задание:

1.Вводите матрицу.

2.Программа по матрице определяет параметры n-количество столбцов,k-колличество строк

3.Матрица приводится к систематическому виду

Задание само простое,но я не могу никак придумать логику для обмена столбцов местами друг с другом, пытался сделать сам, но именно с 3-м пунктом возникли серьезные проблемы. Помогите пожалуйста. писал это но не выводит нужный результат

def to_systematic_form(matrix):
    """
    Приведение матрицы к систематическому виду.
    """
    if not is_systematic(matrix):
        # Приведение к систематическому виду (элементарные преобразования строк)
        for i in range(matrix.shape[0]):
            # Ищем первый ненулевой элемент в строке
            pivot_col = np.argmax(matrix[i, :])
            # Если элемент не в первом столбце, меняем строки местами
            if pivot_col != i:
                matrix[:, [i, pivot_col]] = matrix[:, [pivot_col, i]]

            # Нормализация строки, чтобы получить 1 в лидирующем элементе
            pivot_inv = int(np.linalg.inv([[matrix[i, i]]])[0, 0]) % 2
            matrix[i, :] = (matrix[i, :] * pivot_inv) % 2

            # Обнуление всех остальных элементов столбца
            for j in range(matrix.shape[0]):
                if i != j:
                    matrix[j, :] = (matrix[j, :] + matrix[j, i] * matrix[i, :]) % 2

    return matrix

Вывод: 1 1 1 0 0 0 1 1 Параметры n и k: n=2, k=4
Матрица в систематическом виде: [[1 0 1 1] [0 1 0 1]]

Должно быть: [[1 0 1 1] [0 1 1 0]]


Ответы (0 шт):