Матрицы 2x2
Создайте класс Matrix22, который хранит матрицы вещественных чисел 2 на 2. Например, \(\begin{pmatrix}a&b\\c&d\end{pmatrix}\). Вы можете выбрать любой способ хранения данной матрицы в полях класса.
Не забудьте создать отдельный класс для тестирования всех реализованных возможностей Matrix22
.
- Создайте конструктор, в который передаются 4 числа:
new Matrix22(1, 2, 3, 4)
. - Создайте конструктор, в который передаётся двумерный массив:
new Matrix22(new int[][]\{\{1, 2}, {3,4}})
. - Создайте метод, вычисляющий след матрицы и дискриминант: $a+d$ и $ad-bc$.
- Создайте метод (get-метод), возвращающий двумерный массив значений матрицы, аналогичный массиву, который передается в конструктор в задаче 2. Убедитесь, что изменения значений внутри возвращенного массива не влияют на значения внутри матрицы.
- Создайте метод
String toString()
, который возвращает матрицу в виде строки. - Создайте метод
void print()
, который распечатывает матрицу, по возможности красиво — построчно и выровнено. - Создайте метод
add(Matrix22 b)
, который добавляет матрицуb
и возвращает новую матрицу. - Создайте метод
mul(Matrix22 b)
, который умножает на матрицуb
и возвращает новую матрицу. - Создайте метод
pow(int n)
, который возводит матрицу в степень $n$, т.е. умножает сам на себя $n$ раз. - Создайте функцию, которая возвращает $n$-ое число Фибоначчи, вычисляя \(\begin{pmatrix}1&1\\1&0\end{pmatrix}^n\). Реализуйте эту функцию вне класса
Matrix22
. - (SVG отменил, лучше в следующем семестре сделаем что-нибудь интересное)
Наследование
Создайте класс Rotation
, который наследует Matrix22
.
- Конструктор этого класса получает на вход число $\alpha$ и создаёт матрицу \(\begin{pmatrix}\sin\alpha&\cos\alpha\\-\cos\alpha&\sin\alpha\end{pmatrix}\).
- Создайте get-метод
getAngle()
, который возвращает угол, использованный в конструкторе.