как сказать клену, что два оператора не коммутируют при раскрытии в полином Тейлора

Начнем с того, что работает:

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 не ходят на работу. Ясно (?) Я не знаю, как правильно использовать клен. Как мне заставить клен распознавать, что 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.

Изменить: вот продолжение вышеупомянутого вопроса, теперь с обратной связью Эдгардо:

Я пытаюсь выполнить следующий расчет, используя 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. Нет установлено на 5, а b - дроби. Этот код работает (не подтвержден независимым кодом, но предположим, что работает), но занимает очень много времени. Есть ли способ ускорить это?


person juggler    schedule 11.02.2014    source источник


Ответы (1)


Вкратце: а) используйте Physics: -Gtaylor, а не taylor и б) Прежде чем продолжить, обновите свой пакет Physics до последней версии, доступной для загрузки на Maplesoft веб-страница Maple Physics: Research & Development.

Подробно: Physics - относительно новый пакет. Команда taylor появилась раньше Physics и использует операторы * и ^, предполагающие коммутативность. Каждый год происходит значительное количество разработок, направленных на то, чтобы библиотека Maple лучше знала о наличии некоммутативных объектов в алгебраических выражениях, чтобы их продукты, возможности, правила упрощения, расширения и комбинирования и т. Д. Выполнялись так, как ожидалось. Соответствующей командой в этом процессе является Physics: -Check, которая, помимо прочего, сообщит вам, являются ли продукты некоммутативных объектов плохо сформированными; т.е. выражается с помощью коммутативного оператора *. Попробуйте с выводом taylor (не Physics: -Gtaylor), и вы увидите.

Что касается обновления Physics: исправления ошибок и новые разработки, связанные с физикой и физикой, интегрируются в R&D версию пакета каждую неделю.

Эдгардо С. Чеб-Терраб

Физика, дифференциальные уравнения и математические функции, Maplesoft

person Edgardo S. Cheb-Terrab    schedule 11.02.2014
comment
принимая этот ответ. Я полагаю, что если на вопрос в редакции нет ответа, это означает, что нет никакого способа. - person juggler; 28.02.2014