share/tensor/itensor.lisp: make X and D shared lexical variables for the functions...
[maxima.git] / share / tensor / ctensor8.dem
blob2fab1ff60555170d88bffc07ea570397fcf46c09
1 /* Copyright (C) 2004 Viktor T. Toth <http://www.vttoth.com/>
2  *
3  * This program is free software; you can redistribute it and/or
4  * modify it under the terms of the GNU General Public License as
5  * published by the Free Software Foundation; either version 2 of
6  * the License, or (at your option) any later version.
7  *
8  * This program is distributed in the hope that it will be
9  * useful, but WITHOUT ANY WARRANTY; without even the implied
10  * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11  * PURPOSE.  See the GNU General Public License for more details.
12  *
13  * Demonstrate the use of Taylor series in CTENSOR
14  *
15  */
17 ("Define a metric that is a perturbation of the Minkowski metric")$
18 if get('ctensor,'version)=false then load(ctensor);
19 ratfac:true;
20 derivabbrev:true;
21 ct_coords:[t,r,theta,phi];
22 lg:matrix([-1,0,0,0],[0,1,0,0],[0,0,r^2,0],[0,0,0,r^2*sin(theta)^2]);
23 h:matrix([h11,0,0,0],[0,h22,0,0],[0,0,h33,0],[0,0,0,h44]);
24 ("Spherically symmetric metric depends on the scalar field l")$
25 depends(l,r);
26 lg:lg+l*h;
27 ("First, we compute the Einstein tensor")$
28 cmetric(false);
29 ("Be patient, this will take a while...")$
30 einstein(false);
31 ("And it has far too many terms")$
32 ntermst(ein);
33 ("Now let's drop terms higher order in l")$
34 ctayswitch:true;
35 ctayvar:l;
36 ctaypov:1;
37 ctaypt:0;
38 ("We now explicitly recompute the Christoffel symbols and the Ricci tensor")$
39 christof(false);
40 ricci(false);
41 ("So that we can recompute the Einstein tensor")$
42 einstein(false);
43 ("Which now has far fewer terms:")$
44 ntermst(ein);
45 ("The truncated terms are small enough for display")$
46 for i thru dim do (ein[i,i]:ratsimp(ein[i,i]),ldisplay(ein[i,i]));
48 /* End of demo -- comment line needed by MAXIMA to resume demo menu */