Wolfram mathematica 给定群下解

Wolfram mathematica 给定群下解,wolfram-mathematica,Wolfram Mathematica,我创建了包含4个元素的组(其GF4代数): OrderMat = {0, 1, lambda, lambda + 1} 通过函数实现此矩阵的运算定义(.): | 0 | 1 | lambda | lambda+1 | ______________________________________________ 0|| 0 | 0 | 0 | 0 |

我创建了包含4个元素的组(其GF4代数):

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
 Cases[times,{lambda+1,x_,lambda}:>x]

这可能吗?我必须使用其他结构来定义组吗?

我不知道这是否是一种好的方法,但它似乎比我上几次尝试的更接近您的要求。它使用您选择的符号,除了Mathematica在输出时将lambda+1重新排序为1+lambda

首先,让我们定义乘法运算符

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
的方法,它可能适合您

假设作为第一个示例,您想知道是否存在lambda+1*something=lambda+1

Cases[times,{lambda+1,x_,lambda+1}]
这表明,只有一个值满足这一点,即恒等式

{{1+lambda,1,1+lambda}}
另一个例子

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

{{1+lambda,1+lambda,lambda}}
{}
{{1+lambda,1,1+lambda},{1+lambda,lambda,1},{1+lambda,1+lambda,lambda}}
另一个例子,是否存在lambda+1*anythingBUTlambda+1=lambda

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

{{1+lambda,1+lambda,lambda}}
{}
{{1+lambda,1,1+lambda},{1+lambda,lambda,1},{1+lambda,1+lambda,lambda}}
这表明没有这样的价值

另一个例子

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

{{1+lambda,1+lambda,lambda}}
{}
{{1+lambda,1,1+lambda},{1+lambda,lambda,1},{1+lambda,1+lambda,lambda}}
这有很大的灵活性,因为在任何位置都可以有未知数。但由于这种灵活性,它不会只向您返回一个值。也许你可以用它来做你想做的事情,或者你可以想办法让它适应你想做的事情

如果要提取结果的一个值,可以执行以下操作:

Solve[GF4Mult[x,lambda]== 1,x]      ... x=>lambda+1
 Cases[times,{lambda+1,x_,lambda}:>x]
哪个会回来

{1+lambda}
这是x的一个或多个值,满足该条件


仔细检查这一点,看看你是否能在依赖它之前发现任何错误。

虽然这是关于主题的,但也是关于主题的。(顺便说一句,不要将
部分链接到
。使用
[[1,1,Position…]]
。你可以看看《用Mathematica探索抽象代数》一书如果你在亚马逊上查找它,你可以看到其中的一些内容。我相信这很可能显示了如何做你感兴趣的事情。每本书的新版本都会对支持文件进行轻微修改,并在作者的网站上提供更新,但我想作者已经厌倦了这样做,而且还没有做ion 11,但所需的更改应该是零或最小的,如果你真的需要弄清楚如何做,这可能是一种学习经验。买便宜的二手货。谢谢。我可以用它。我想解一个线性方程组。所以我可以用它。这就引出了另一个问题。有没有办法在代数下求解,比如在GF下4(+,)?我当然有(+)的表格运算也是一样。最后我发现这个例子我可以绕开它。因为如前所述,我有GF4代数的4部分组成的群。由于它的代数可以由不可逆多项式创建。然后我可以使用经典解,然后用多项式对结果进行模化。但对于大小的群,这是做不到的,例如6(可以对大小等于某个素数幂的组执行此操作)。