Introducción a atensor (Manual de Maxima 5.45.0)

Siguiente: Funciones y variables para atensor, Anterior: atensor, Subir: atensor [Índice general][Índice]

### 27.1 Introducción a atensor

El paquete `atensor` contiene funciones para la manipulación algebraica de tensores. Para hacer uso de `atensor` es necesario cargarlo en memoria haciendo `load(atensor)`, seguido de una llamada a la función `init_atensor`.

La parte más importante de `atensor` es una batería de reglas de simplificación para el producto no conmutativo ("`.`"). El paquete `atensor` reconoce algunos tipos de álgebras; las correspondientes reglas de simplificación se activan tan pronto como se hace una llamada a la función `init_atensor`.

Las capacidades de `atensor` se pueden demostrar definiendo el álgebra de cuaterniones como un álgebra de Clifford Cl(0,2) con una base de dos vectores. Las tres unidades imaginarias son los dos vectores de la base junto con su producto:

        i = v     j = v     k = v  . v
             1         2         1    2

Aunque el paquete `atensor` incluye su propia definición para el álgebra de cuaterniones, no se utiliza en el siguiente ejemplo, en el cual se construye la tabla de multiplicación como una matriz:

    (%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            ]

El paquete `atensor` reconoce como vectores de la base símbolos indexados, donde el símbolo es el almacenado en `asymbol` y el índice va desde 1 hasta `adim`. Para símbolos indexados, y sólo para ellos, se evalúan las formas bilineales `sf`, `af` y `av`. La evaluación sustituye el valor de `aform[i,j]` en lugar de `fun(v[i],v[j])`, donde `v` representa el valor de `asymbol` y `fun` es `af` o `sf`; o sustituye `v[aform[i,j]]` en lugar de `av(v[i],v[j])`.

Huelga decir que las funciones `sf`, `af` y `av` pueden volver a definirse.

Cuando se carga el paquete `atensor` se hacen las siguientes asignaciones de variables:

    dotscrules:true;
    dotdistrib:true;
    dotexptsimp:false;

Si se quiere experimentar con una álgebra no asociativa, también se puede igualar la variable `dotassoc` a `false`. En tal caso, sin embargo, `atensimp` no será siempre capaz de realizar las simplificaciones deseadas.

Siguiente: Funciones y variables para atensor, Anterior: atensor, Subir: atensor [Índice general][Índice]