在泰勒多项式中展开时如何告诉 maple 两个运算符不通勤

Posted

技术标签:

【中文标题】在泰勒多项式中展开时如何告诉 maple 两个运算符不通勤【英文标题】:how to tell maple two operators don't commute when expanding in a taylor polynomial 【发布时间】:2014-03-09 16:44:30 【问题描述】:

让我们从有效的开始:

restart:
with(Physics):
Setup(noncommutativeprefix = A, B):
expand((A+B)^2);

给予

A^2+A*B+B*A+B^2

Maple 识别 A 和 B 不通勤。现在,让我们在泰勒级数中展开它们的总和,然后展开:

restart:
with(Physics):
Setup(noncommutativeprefix = A, B):
S := convert(taylor(exp((A+B)*delta), delta = 0, 3), polynom);

给予

                         1        2      2
S := 1 + (A + B) delta + - (A + B)  delta 
                         2                

然后

expand(S);

给予

                         1  2      2            2   1  2      2
 1 + delta A + delta B + - A  delta  + A B delta  + - B  delta 
                         2                          2          

Maple 不再识别 A 和 B 不通勤。显然(?)我不知道如何正确使用枫树。我如何让 maple 认识到 A 和 B 在这种情况下不通勤?这里有关于这个的讨论:http://www.mapleprimes.com/questions/95808-Noncommutative-Operators,在枫叶帮助和其他地方,我敢肯定..

我应该补充一点,(显然),以下工作,但它变得丑陋。一定有更好的办法:

restart;
unassign(`&*`); define(`&*`, multilinear, zero = 0, identity = 1, flat);
constants := constants, lambda;
No := 3;
S := convert(taylor(exp((A+B)*delta), delta = 0, No), polynom);
                                1        2      2
       S := 1 + (A + B) delta + - (A + B)  delta 
                                2                
S := subs((A+B)^2 = `&*`(A+B, A+B), (A+B)^3 = `&*`(`&*`(A+B, A+B), A+B), (A+B)^4 =     `&*`(`&*`(`&*`(A+B, A+B), A+B), A+B), S);
       S := 1 + (A + B) delta

            1                                          2
          + - (A &* A + A &* B + B &* A + B &* B) delta 
            2                                           
simplify(S);
                         1      2            1      2         
 1 + delta A + delta B + - delta  (A &* A) + - delta  (A &* B)
                         2                   2                

      1      2            1      2         
    + - delta  (B &* A) + - delta  (B &* B)
      2                   2                
definemore(`&*`, `&*`(A, A) = A^2, `&*`(B, B) = B^2, `&*`(A, B) = AB, `&*`(B, A) = BA);
simplify(S);
                        1  2      2   1  2      2   1         2
1 + delta A + delta B + - A  delta  + - B  delta  + - AB delta 
                        2             2             2          

     1         2
   + - BA delta 
     2          

我现在使用的是 maple 17。

编辑:这是上述问题的延续,现在有 edgardo 的反馈:

我正在尝试使用 Gtaylor 执行以下计算:

with(Physics);
Setup(noncommutativeprefix = A, B);

exp3 := convert(Gtaylor(exp((a-I*b))*delta*B), delta = 0, No), polynom);
exp5 := convert(Gtaylor(exp((a-I*b))*delta*A), delta = 0, No), polynom);
expansion := coeff(simplify(subs(delta = lambda, exp1*exp2*exp1*exp3*exp5*exp3)), lambda, No-1);

并非所有代码都包含在内。 exp5 &3 是所有其他 exp 外观的示例。 No 设置为 5,并且 b 是分数。此代码有效(尚未通过独立代码确认,但我们假设它确实有效),但需要很长时间。有什么办法可以加快速度吗?

【问题讨论】:

【参考方案1】:

简而言之:a) 使用 Physics:-Gtaylor,而不是 taylor;b) 在继续之前,将您的 Physics 包更新为最新版本,可在 Maplesoft Maple Physics: Research & Development 网页上下载。

详细说明:Physics 是一个相对较新的软件包。 taylor 命令来自 Physics 之前的命令,并使用假定可交换性的 *^ 运算符。为了使 Maple 库更加意识到代数表达式中非交换对象的存在,每年都会发生大量的发展,以便它们的乘积、幂、简化、扩展和组合规则等按预期发生。这个过程中的一个相关命令是物理:-检查它会告诉你,除其他外,非交换对象的产品是否是非良构的;即使用可交换的* 运算符表示。试试 taylor(不是 Physics:-Gtaylor)的输出,你会看到。

关于更新物理:每周都会将错误修复和新的物理以及与物理相关的开发集成到软件包的研发版本中。

埃德加多·S·切布-特拉布

物理、微分方程和数学函数,Maplesoft

【讨论】:

接受这个答案。我想如果编辑中的问题没有得到回答,那就意味着没有办法。

以上是关于在泰勒多项式中展开时如何告诉 maple 两个运算符不通勤的主要内容,如果未能解决你的问题,请参考以下文章

在啥情况下需要多项式的泰勒级数?

12月学习进度10/31 —— 高等数学泰勒公式的两种通俗理解方式

[复习]多项式和生成函数相关内容

解题:THUWC 2017 在美妙的数学王国中畅游

在 C# 中生成并使用泰勒多项式

泰勒展开式