Wolfram mathematica 给定群下解
我创建了包含4个元素的组(其GF4代数):Wolfram mathematica 给定群下解,wolfram-mathematica,Wolfram Mathematica,我创建了包含4个元素的组(其GF4代数): OrderMat = {0, 1, lambda, lambda + 1} 通过函数实现此矩阵的运算定义(.): | 0 | 1 | lambda | lambda+1 | ______________________________________________ 0|| 0 | 0 | 0 | 0 |
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(可以对大小等于某个素数幂的组执行此操作)。