Решить под данной группой - PullRequest
0 голосов
/ 27 мая 2018

Я создал группу (ее алгебру GF4), которая имеет 4 элемента:

OrderMat = {0, 1, lambda, lambda + 1}

И определение операции (.) С этой Матрицей, реализованной функцией:

         |   0   |   1    |   lambda   |   lambda+1   |
        ______________________________________________
       0||   0   |   0    |      0     |       0      |
       1||   0   |   1    |   lambda   |   lambda+1   |
  lambda||   0   | lambda |  lambda+1  |       1      |
lambda+1||   0   |lambda+1|     1      |     lambda   |


OPMatrix =         {{0, 0, 0, 0},
        {0, 1, lambda, lambda + 1},
        {0, lambda, lambda + 1, 1},
        {0, lambda + 1, 1, lambda}}

GF4Mult[x_, y_] := OPMatrix[[Position[OrderMat, x][[1]][[1]]]][[Position[OrderMat, y][[1]][[1]]]]

Теперь я хотел бы решить уравнения в этой группе.например:

Solve[x.lambda == 1,x]      ... x=>lambda+1

или как это:

Solve[GF4Mult[x,lambda]== 1,x]      ... x=>lambda+1

Возможно ли это?я должен использовать какую-то другую структуру, чтобы определить группу?

1 Ответ

0 голосов
/ 28 мая 2018

Я не знаю, является ли это хорошим способом сделать это, но он кажется ближе к тому, что вы просите, чем последние пару вещей, которые я пробовал.И он использует обозначение, которое вы выбрали, за исключением того, что Mathematica переупорядочивает лямбда + 1 на 1 + лямбда на выходе.

Сначала давайте определим ваш оператор умножения

times={{0,0,0},{0,1,0},{0,lambda,0},{0,lambda+1,0},
  {1,0,0},{1,1,1},{1,lambda,lambda},{1,lambda+1,lambda+1},
  {lambda,0,0},{lambda,1,lambda},{lambda,lambda,lambda+1},{lambda,lambda+1,1},
  {lambda+1,0,0},{lambda+1,1,lambda+1},{lambda+1,lambda,1},{lambda+1,lambda+1,lambda}};

Это именно то, что выза исключением моего сглаживания, что в вектор.

Теперь давайте покажем метод, несколько похожий на Solve, который может работать для вас.

Предположим, в качестве первого примера вы удивляетесь, есть ли лямбда+ 1 * что-то = лямбда + 1

Cases[times,{lambda+1,x_,lambda+1}]

и это показывает, что существует только одно значение, которое удовлетворяет этому, тождество.

{{1+lambda,1,1+lambda}}

Другой пример

Cases[times,{lambda+1,x_,lambda}]

дает вам

{{1+lambda,1+lambda,lambda}}

Другой пример, есть ли лямбда + 1 * что-нибудьBUTlambda + 1 = лямбда

Cases[times,{lambda+1,Except[lambda+1],lambda}]

дает вам

{}

, который показываеттакого значения нет.

Другой пример

Cases[times,{lambda+1,x_,Except[x_]}]

дает вам

{{1+lambda,1,1+lambda},{1+lambda,lambda,1},{1+lambda,1+lambda,lambda}}

Это имеет большую гибкость, поскольку вы можете иметь неизвестных в любой позиции.Но из-за этой гибкости он не просто возвращает вам одно значение.Возможно, вы можете использовать это для того, о чем вы думаете, или, возможно, вы можете придумать способы приспособить это к тому, что вы пытаетесь сделать.

Если вы хотите извлечь одно значение результата, вы можете делать что-тонапример:

 Cases[times,{lambda+1,x_,lambda}:>x]

, который будет возвращать

{1+lambda}

, который является значением или значениями x, которые удовлетворяли этому.

Проверьте это внимательно, чтобы увидеть,Вы можете найти любые ошибки, прежде чем зависеть от этого.

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