重新定义 Mathematica 中的非交换乘法

2024-03-04

Mathematicas NonCommutativeMultiply (**) 不会简化诸如

a**0=0**a=0  
a**1=1**a=a  

or

a**a=a^2.  

我想重新定义**去做这个。我使用 NCAlgebra 来执行此操作,但我需要 ReplaceRepeated (//.) 和 NCAlgebra,正如他们的文档所述,专门破坏了 mathematica 中的此功能。

有人可以告诉我如何清除属性**并重新定义这个乘法,做与正常情况相同的事情,再加上处理 1 和 0。我真的不需要乘法来处理a**a,但是如果足够简单就好了。我需要的主要东西**来处理1和0。


仅当您删除 NonCommutativeMultiply 的 Flat 属性时,以下内容才有效(这是我在测试过程中错误地做的事情......一个菜鸟错误!)

最简单的事情是

Unprotect[NonCommutativeMultiply];
NonCommutativeMultiply[a___, 1, b___] := a ** b
NonCommutativeMultiply[___, 0, ___] := 0
NonCommutativeMultiply[a_] := a
Protect[NonCommutativeMultiply];

需要最终的表达式,以便a**1简化为a代替NonCommutativeMultiply[a]。您可能还需要NonCommutativeMultiply[]:=1这样表达式就像1**1适当简化(*)。 所有这一切的唯一问题是,对于大型表达式,模式会根据所有内容进行检查,这会变得非常慢。

上述 0 和 1 的两个定义可以组合并推广为

NonCommutativeMultiply[a___, n_?NumericQ, b___] := n a ** b

它将表达式中的所有数字项分解出来。 但这在大型表达式中会进一步减慢速度,因为每个项都会被检查以查看其是否为数值。

为了简化您的a**a to a^2,你需要类似的东西

NonCommutativeMultiply[a___, b_, b_, c___] := a ** b^2 ** c

或者更一般地说

NonCommutativeMultiply[a___, b_^n_., b_^m_., c___] := a ** b^(n + m) ** c

(*) 请注意,这只是因为 Mathematica 的默认顺序DownValues在这种情况下, in 不一定是最好的。更改顺序以便NonCommutativeMultiply[a_]出现在之前a___ ** n_?NumericQ ** b___ then NonCommutativeMultiply[]不会由规则生成,并且您不需要最后一个模式(除非您生成NonCommutativeMultiply[]其他方式)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重新定义 Mathematica 中的非交换乘法 的相关文章

  • 组合词频数据列表

    这似乎应该是一个显而易见的问题 但列表上的教程和文档尚未发布 其中许多问题源于我的文本文件的巨大大小 数百 MB 以及我试图将它们归结为我的系统可以管理的内容 因此 我正在分段进行工作 现在正在尝试合并结果 我有多个词频列表 大约 40 个
  • Mathematica 中的树数据结构

    我主要使用mathematica 作为数学工作台和编写相对较小的临时程序 然而 我正在设计一个系统 打算在 Mathematica 中编程 我需要将数据存储在树中 并搜索和遍历树 尽管我知道如何实现树 但我更喜欢标准的 经过测试的代码 我在
  • 从包内加载mathematica包

    我或多或少有以下设置 在 path to my packages我有两个包裹package1 m and package2 m 每个包的概要如下 BeginPackage package1 Unprotect Names package1
  • mathematica 如何确定在替换中首先使用哪个规则

    我想知道如果给定多个替换规则 mma 如何确定在发生碰撞时首先应用哪个规则 一个例子是 x 3 x 2 s x 3 s 2 s x x gt 0 x OddQ gt 2 Thanks Mathematica 有一种机制能够在简单情况下确定规
  • 生成随机非奇异整数矩阵

    作为合成噪声生成算法的一部分 我必须动态构造许多大型非奇异方阵 a i j i j 1 n i j a i j and 0 a i j k and Det a 0 but the a i j should also be random fo
  • 在 Mathematica 中使用图形通过交叉替换磁盘

    考虑以下列表 dalist 47 9913 11 127 208 47 5212 10 3002 208 49 7695 9 96838 160 48 625 12 7042 436 这些是屏幕上眼睛注视的坐标 在每个子列表中 1是 X 坐
  • 当 DownValues 已经存在时可以阻止 OwnValues 吗?

    对于已经分配了与名称 a 关联的 DownValues 的情况 是否有一种可接受的方法来阻止将 OwnValues 分配给相同的名称 我最初是在尝试某人实现数据字典时遇到这个问题的 这就是我要避免的 Remove a a 1 somethi
  • 如何使用 Mathematica 查找 Waldo?

    这周末困扰着我 有什么好方法来解决这些问题沃尔多在哪里 https en wikipedia org wiki Where 27s Wally 3F Wally 北美以外 谜题 使用 Mathematica 图像处理和其他功能 这是我到目前
  • mathematica 可以做一些平面几何绘图吗

    我正在尝试使用计算机来显示一些平面几何图 我不知道什么软件可以做到这一点 也不知道mathematica是否可以轻松地生成这样的图 例如 我有以下情节要展示 给定任何三角形 ABC 设 AD 为平分角 BAC 并与 BC 相交于 D 的线
  • 将声音导出为 WAV 文件

    我从来没有在 Mma 中过多地使用声音 I have t Sound List Violin SoundNote 6 我怎样才能导出t作为 WAV 文件 当我尝试显而易见的事情时 Export c test wav t I get 在这个旧
  • Mathematica 中的条件数据操作

    我正在努力准备高效数据分析的最佳工具在数学中 我有大约 300 列和 100 000 行 最好的技巧是什么 删除 提取 或简单地 考虑 数据结构的部分 用于绘制例如 我能想到的最棘手的例子之一是 给定一个数据结构 对于第 2 列中的值等于
  • 重新定义 Mathematica 中的非交换乘法

    Mathematicas NonCommutativeMultiply 不会简化诸如 a 0 0 a 0 a 1 1 a a or a a a 2 我想重新定义 去做这个 我使用 NCAlgebra 来执行此操作 但我需要 ReplaceR
  • 确定一个集合是否是另一个集合的子集的有效代码

    我正在寻找一种有效的方法来确定一个集合是否是 Matlab 或 Mathematica 中另一个集合的子集 例子 集合 A 1 2 3 4 集合 B 4 3 集 C 3 4 1 集合 D 4 3 2 1 输出应该是 设置A 集合B和C属于集
  • Mathematica“AppendTo”函数问题

    我是 Mathematica 的新手 在向数据表添加列时遇到了重大故障 我在 Vista 中运行 Mathematica 7 我在RFD上花了很多时间才来这里问 我有一个包含三列五行的数据表 mydata 我正在尝试将两个包含五个元素的列表
  • 对嵌套列表内的列表进行排序

    我有一个嵌套列表 9 8 7 8 7 6 7 6 5 6 5 4 5 4 3 4 3 2 3 2 1 我需要对列表中的列表进行排序才能创建 7 8 9 6 7 8 5 6 7 4 5 6 3 4 5 2 3 4 1 2 3 我该怎么做呢 你
  • 了解内核-前端通信——为什么我的前端冻结?

    EDIT 只需确认您是否可以重现此内容就会很有用 只需一台计算机即可尝试此操作 无需远程连接 Update似乎其他人无法在 Mac 或 Win7 上重现此问题 因此它要么是 WinXP 特定的 要么是我的机器特定的 此时我要放弃了 最好有一
  • 在 MathLink 函数中检查中止?

    我刚刚发现这样的MathLink功能为LinkWrite and LinkRead有类似其内部的东西CheckAbort吸收任何中止 并且不会进一步传播它们 这可以很容易地显示为LinkRead link LinkLaunch First
  • 解决电力塔

    a 2 Power 10 6 10 9 3 Power 4 9 7 5 TwoTower n Nest 2 1 n 最小的是什么n这样TwoTower n gt a This question http www quora com How
  • 了解跟踪*

    再会 当试图理解数学使用标准的评估顺序Trace and TraceScan最近开发的命令及其漂亮的视觉表示thread https stackoverflow com questions 5459735 the clearest way
  • 在 Mathematica 中创建具有不同颜色边的图形

    我想创建一个图 图论 其中某些边具有与其他边不同的颜色 这将用于突出显示图中从一个顶点到另一个顶点的路径 以下是一些具有不同颜色边缘的示例http demonstrations wolfram com AGraphTheoryInterpr

随机推荐

  • GMAIL API 在 C# 中发送带有附件的电子邮件

    我需要在 C 中使用 Gmail Api 发送带附件的电子邮件的帮助 我已经阅读过有关发送带有附件的电子邮件的 Google 网站 但示例是用 java 编写的 答案为时已晚 但将其发布以防万一有人需要 为此需要 MimeKit 库 可以从
  • 动态更新 Cors 注册表

    我在 heroku 上有一个应用程序 它返回一些 oauth 令牌 在我的 Spring Boot 应用程序中 我使用了 WebMvcConfigurerAdapter 从数据库获取来源列表 return new WebMvcConfigu
  • 为什么 Oracle SQL 不允许我们在 GROUP BY 子句中使用列别名?

    这是我在编写 SQL 查询时经常遇到的情况 我认为在 GROUP BY 表达式中编写整个列 例如长 case 表达式 具有长参数的求和函数 而不是别名会使查询更长且可读性较差 为什么 Oracle SQL 不允许我们在 GROUP BY 子
  • 是否可以使用“initialData”属性将 App 脚本参数写入 Stackdriver 消息?

    Summary Google 建议可以使用具有 initialData 属性的 JSON 对象将 App 脚本参数 以及其他数据 写入 Stackdriver 但这似乎不起作用 问题示例 这个谷歌页面 https developers go
  • MS Access 日期/时间的最大值

    Microsoft Access 中可以表示的最大 最新 日期是哪一天 Valid date values range from 657 434 January 1 100 A D to 2 958 465 December 31 9999
  • LINQ to SQL - 选择字符串数组等文本

    我有一个清单
  • 取消特定的 UILocalNotification

    我有这个用于本地通知的代码 并且我有一个使用我自己的方法的 ScheduleNotification 和clearNotification 这些是代码 void clearNotification UIApplication sharedA
  • 在 ASP.NET 中创建动态控件

    我正在创建一个文件上传控件linKbutton单击事件 第一次它创建控件 但如果我第二次按链接按钮 它就不会创建 这有什么问题吗 以下是我的代码 protected void LinkButton1 Click object sender
  • common lisp:宏如何使用以编程方式生成的名称定义其他方法/宏?

    我意识到我的代码的某个部分由看起来相似的方法组组成 就像我有多个三重奏 一个由程序员的其他两个函数调用的辅助函数 我正在尝试编写一个宏来为我定义这三个函数 以便我所需要做的就是调用该宏 但我的尝试导致 defun 和函数调用将引用字符串而不
  • 如何查看 PyCharm 中每个键的作用?

    我正在 emacs 中寻找类似 M x描述键 的东西 I see Help gt Default Keymap Reference and Settings gt Keymap但这两者都是按主题分组和排序的 我想要一些按键分组和排序的东西
  • MVC4 中的 Bootstrap 和 font-awesome

    我正在使用 MVC4 并通过 nuget 添加了 Bootstrap 和 Font Awesome 我可以看到 Bootstrap 如何通过 via 进行捆绑BootstrapBundleConfig cs 由 nuget 包添加 如下 p
  • 由于语法错误,我无法在 Haskell 上执行任何操作

    我可以执行简单的操作 例如 Hugs gt 2 2 例如 或任何操作 就此而言 但是当涉及到实际尝试定义一个函数时 例如 occurs Eq a gt a gt a gt Bool occurs x l x elem l 然后我收到消息 E
  • 在 PHP 中查找图像边框颜色的算法

    我正在尝试找到一种使用图像从图像中获取边框颜色的方法php 我尝试使用此代码 但此算法为我提供了任何图像中的所有颜色
  • 删除包含文件的文件夹

    我想发送文件file txt从我的 Rails 控制器使用send file 然后删除包含它的文件夹 send file Rails root public folder file txt system rm rf Rails root p
  • Android 应用内结算。何时取消注册 ResponseHandler?

    我们一年前实现了应用内结算 按照文档中的示例代码没有出现任何问题 几周前 我们注意到用户抱怨没有收到他们的物品 在调试代码时我们发现下面这句话才是问题的根源 Called when this activity is no longer vi
  • 在 Visual Studio Code 中隐藏 .js.map 文件:文件嵌套

    我正在 Visual Studio 代码中开发一个打字稿项目 并且想隐藏 js map 甚至可能是 js 文件不会出现在文件资源管理器中 是否可以只显示 ts文件资源管理器中的文件 在您的设置 用户或工作区 中 有一个设置可以调整以隐藏您想
  • 枚举智能感知显示属性?

    我想做这个 enum Foo Display Item One ItemOne 这样智能感知就会像在属性中一样显示它而不是实际名称 我知道这是可能的 我以前见过 那么你可以提供 XML 文档 enum Foo
  • 将条形图和折线图与 pandas 结合起来[重复]

    这个问题在这里已经有答案了 我正在尝试将条形图和折线图结合起来 但我似乎无法弄清楚 我尝试了代码here https stackoverflow com questions 23482201 plot pandas dataframe as
  • 关闭父级而不关闭子级

    我有一个项目 其中弹出一个设置对话框 父级 当用户点击 继续 时 将打开一个主对话框 子级 在主对话框中 用户可以重新编辑设置对话框 父级 当用户单击 X 关闭设置对话框时 应用程序终止 我认为这是因为我们关闭了父级并处理了它的所有子级 是
  • 重新定义 Mathematica 中的非交换乘法

    Mathematicas NonCommutativeMultiply 不会简化诸如 a 0 0 a 0 a 1 1 a a or a a a 2 我想重新定义 去做这个 我使用 NCAlgebra 来执行此操作 但我需要 ReplaceR