Changing default RPM built to GCL.
[maxima.git] / tests / wester_problems / test_tensor_analysis.mac
blob3aedeca2a0e6be293354fad51fbcd3c02d9a3095
1 /* Original version of this file copyright 1999 by Michael Wester,
2  * and retrieved from http://www.math.unm.edu/~wester/demos/TensorAnalysis/problems.macsyma
3  * circa 2006-10-23.
4  *
5  * Released under the terms of the GNU General Public License, version 2,
6  * per message dated 2007-06-03 from Michael Wester to Robert Dodier
7  * (contained in the file wester-gpl-permission-message.txt).
8  *
9  * See: "A Critique of the Mathematical Abilities of CA Systems"
10  * by Michael Wester, pp 25--60 in
11  * "Computer Algebra Systems: A Practical Guide", edited by Michael J. Wester
12  * and published by John Wiley and Sons, Chichester, United Kingdom, 1999.
13  */
14 /* ----------[ M a c s y m a ]---------- */
15 /* ---------- Initialization ---------- */
16 showtime: all$
17 prederror: false$
18 /* ---------- Tensor Analysis ---------- */
19 init_itensor()$
20 /* Generalized Kronecker delta: delta([j, h], [i, k]) =
21    delta(j, i) delta(h, k) - delta(j, k) delta(h, i).  See David Lovelock and
22    Hanno Rund, _Tensors, Differential Forms, & Variational Principles_,  John
23    Wiley & Sons, Inc., 1975, p. 109. */
24 ishow(kdelta([i, k, @j, @h]));
25 /* Levi-Civita symbol: [epsilon(2,1,3), epsilon(1,3,1)] => [-1, 0] */
26 [levi_civita([2, 1, 3]), levi_civita([1, 3, 1])];
27 /* Tensor outer product:                   [[  5  6] [-10 -12]]
28                          [1 -2]   [ 5 6]   [[ -7  8] [ 14 -16]]
29     ij      ij           [3  4] X [-7 8] = [                  ]
30    c     = a   b                           [[ 15 18] [ 20  24]]
31       kl        kl                         [[-21 24] [-28  32]] */
32 a: matrix([1, -2], [3, 4])$
33 b: matrix([5, 6], [-7, 8])$
34 outermap("*", a, b);
35 remvalue(a, b)$
36 /* Definition of the Christoffel symbol of the first kind (a is the metric
37    tensor) [Lovelock and Rund, p. 81]
38                 d a     d a     d a
39              1     kh      hl      lk
40    Chr1    = - (----- + ----- - -----)
41        lhk   2      l       k       h
42                  d x     d x     d x  */
43 imetric: a$
44 ishow(ichr1([l, h, k]));
45 /* Partial covariant derivative of a type (1, 1) tensor field (Chr2 is the
46    Christoffel symbol of the second kind) [Lovelock and Rund, p. 77]
47     i      d    i        i   m        m   i
48    T    = ---- T  + Chr2    T  - Chr2    T
49     j|k      k  j       m k  j       j k  m
50           d x     */
51 ishow(T([@i, j]));
52 ishow(covdiff(%, k));
53 /* Verify the Bianchi identity for a symmetric connection (K is the Riemann
54    curvature tensor) [Lovelock and Rund, p. 94]
55      h         h          h
56    K       + K        + K       = 0
57     i jk|l    i kl|j     i lj|k     */
58 ishow(covdiff(icurvature([@h, i, j, k]), l) +
59       covdiff(icurvature([@h, i, k, l]), j) +
60       covdiff(icurvature([@h, i, l, j]), k));
61 canform(%);