让我们从有效的东西开始:
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
我现在用的是枫木 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 是分数。此代码有效(尚未通过独立代码确认,但我们假设它确实有效),但需要很长时间。有什么办法可以加快速度吗?