За a+b−3−−−√ Вы можете использовать представление
(ab−3ba)
Дополнение работает очевидно. Для умножения вы можете проверить
(a1b1−3b1a1)(a2b2−3b2a2)=(a1a2−3b1b2a1b2+b1a2−3(a1b2+b1a2)a1a2−3b1b2)
что сохраняет представление, таким образом, мы имеем гомоморфизм кольца.
Взятие определителя матрицы дает (квадрат) норму a2+3b2таким образом, обратные соотношения соответствуют обратным матрицам, как и ожидалось.
Вы уже рассмотрели использование троек , и я предполагаю, что вы будете использовать целые числа и общий знаменатель. Этот подход может быть полезен и в матричном представлении.
Обновление : общий метод для матричных представлений использует сопутствующую матрицу . Например, предположим, что вы хотите представлятьa+bω вместо того, где
ω=exp(2πi3)таким образом ω2+ω+1=0, Сопутствующая матрицаω является (01−1−1)и это ведет себя во всех связанных с ним операциях вызова, таких как ωсам. Конечно,1 может быть представлен как (1001); поэтому матричное представлениеa+bω является
(ab−ba−b)
Вы можете проверить, что это кольцевой гомоморфизм. Кроме того, это легко увидеть. Для умножения соответствующие формулы теперь
(a1+b1ω)(a2+b2ω)(a1b1−b1a1−b1)(a2b2−b2a2−b2)=(a1a2−b1b2)+(a1b2+b1a2−b1b2)ω=(a1a2−b1b2a1b2+b1a2−b1b2−(a1b2+b1a2−b1b2)a1a2−a1b2−b1a2)
numpy
ускоренной матрицей с пользовательскими типами данных. Не уверен, что победитель будет.