В этой контрольной мы будем реализовывать класс матриц 2 × 2 Mat.
Как и во всех листках про классы, при сдаче в тестирующую задач на доработку методов класса в программу необходимо добавить
Матрица в математике и информатике — это прямоугольная таблица чисел.
Например:
(1233−18).
Оказывается, что если определить на этих таблицах несколько операций, то они превращаются в очень мощный инструмент.
Сейчас мы будем рассматривать только матрицы, в которых ровно 2 строки и ровно 2 столбца (пишут «матрицы 2 × 2»).
Сложение и вычитание матриц: эти операции производятся поэлементно:
(acbd)+(prqt)=(a+pc+rb+qd+t),(acbd)−(prqt)=(a−pc−rb−qd−t).
Умножение матрицы на число: производится умножением каждого элемента матрицы на это число:
λ(acbd)=(λaλcλbλd)
Умножение матриц: чтобы получить элемент в i-й строке и в j-м столбце нужно скалярно перемножить i-ю вектор-строку первой матрицы и j-й
вектор-столбца второй.
В этой сложной фразе можно не разбираться, а просто использовать формулу:
(acbd)⋅(prqt)=(ap+brcp+draq+btcq+dt).
Возведение в натуральную степень: матрица в степени n — это просто произведение n её «копий», всё как с числами.
Нулевая матрица: (0000) часто обозначается просто через 0.
Ведёт она соответствующим образом: при сложении ничего не меняет, при умножении всё делает нулём.
Единичная матрица: (1001) часто обозначается через E.
Ведёт она соответствующим образом: при умножении ничего не меняет.
Реализуйте метод __str__, который будет выводить удобное для человека представление матрицы.
См. примеры.
Сделайте так, чтобы все элементы матрицы имели одинаковую минимальную ширину.
Для выравнивания можно использовать конструкцию вида str(x).rjust(5).
Пусть Fn−1 и Fn — два соседних числа Фибоначчи.
Выразим два следующих через них:
FnFn+1=0⋅Fn−1+1⋅Fn=1⋅Fn−1+1⋅Fn
При помощи матриц это можно записать так:
(FnFn+1)=(0111)⋅(Fn−1Fn).
Теперь если F0=0 и F1=1 — нулевое и первое числа Фибоначчи, то:
(F2F3)=(0111)⋅(F1F2)=(0111)⋅(0111)⋅(F0F1)=(0111)2⋅(F0F1).
Из этого всего можно сделать замечательный вывод:
(0111)n=(Fn−1FnFnFn+1).
Это позволяет находить числа Фибоначчи при помощи быстрого возведения матрицы в степень.
На вход даётся натуральное число.
Выведите соответствующее число Фибоначчи.
Матрица B называется обратной для матрицы A, если AB=BA=E.
Добавьте метод inv, который либо возвращает обратную матрицу, либо возвращает ошибку ValueError('Not invertible')
(при помощи raise).
Также добавьте возможность возводить не только в натуральную степень, но и в целую.