Next: Функции и переменные пакета atensor, Previous: Пакет atensor, Up: Пакет atensor [Contents][Index]
Пакет atensor предназначен для вычислений с тензорными алгебрами.
Для того, чтобы использовать atensor, надо ввести
load("atensor"), с последующим вызовом функции init_atensor.
Основой пакета atensor является набор правил упрощения для
оператора некоммутативного произведения ("." – dot product).
atensor знает несколько типов алгебр и соответствующий
набор правил активизируется при вызове функции init_atensor.
Возможности пакета atensor можно продемонстрировать определив
алгебру кватернионов как алгебру Клиффорда Cl(0,2) с двумя базисными
векторами.  В этом случае три кватернионные мнимые единицы
представляются двумя базисными векторами и их произведением:
    i = v     j = v     k = v  . v
         1         2         1    2
Хотя atensor имеет встроенное определение алгебры кватернионов,
оно не используется в данном примере, в котором мы построим
таблицу умножения кватернионов в виде матрицы:
(%i1) load("atensor");
(%o1)       /share/tensor/atensor.mac
(%i2) init_atensor(clifford,0,0,2);
(%o2)                                done
(%i3) atensimp(v[1].v[1]);
(%o3)                                 - 1
(%i4) atensimp((v[1].v[2]).(v[1].v[2]));
(%o4)                                 - 1
(%i5) q:zeromatrix(4,4);
                                [ 0  0  0  0 ]
                                [            ]
                                [ 0  0  0  0 ]
(%o5)                           [            ]
                                [ 0  0  0  0 ]
                                [            ]
                                [ 0  0  0  0 ]
(%i6) q[1,1]:1;
(%o6)                                  1
(%i7) for i thru adim do q[1,i+1]:q[i+1,1]:v[i];
(%o7)                                done
(%i8) q[1,4]:q[4,1]:v[1].v[2];
(%o8)                               v  . v
                                     1    2
(%i9) for i from 2 thru 4 do for j from 2 thru 4 do
      q[i,j]:atensimp(q[i,1].q[1,j]);
(%o9)                                done
(%i10) q;
                   [    1        v         v      v  . v  ]
                   [              1         2      1    2 ]
                   [                                      ]
                   [   v         - 1     v  . v    - v    ]
                   [    1                 1    2      2   ]
(%o10)             [                                      ]
                   [   v      - v  . v     - 1      v     ]
                   [    2        1    2              1    ]
                   [                                      ]
                   [ v  . v      v        - v       - 1   ]
                   [  1    2      2          1            ]
В качестве базисных векторов atensor использует переменные с
индексом.  Символ переменой хранится в asymbol а индекс
может принимать значения от 1 до adim.
Для переменных с индексом вычисляются билинейные формы
sf, af и  av.  Вычисление подставляет значение
aform[i,j] вместо fun(v[i],v[j]),
где v есть значение asymbol и fun есть af
или sf; либо подставляет v[aform[i,j]] вместо
av(v[i],v[j]).
Функции sf, af и av могут быть переопределены
пользователем.
Когда пакет atensor загружен, устанавливаются следующие
значения переключателей:
dotscrules:true; dotdistrib:true; dotexptsimp:false;
Если вы хотите поэкспериментировать с неассоциативными алгебрами
надо присвоить dotassoc значение false.  Однако, в
данном случае atensimp не всегда может получить желаемое
упрощение.
Next: Функции и переменные пакета atensor, Previous: Пакет atensor, Up: Пакет atensor [Contents][Index]