123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- % calculation of metric tensor (2-dim space-time)
- off echo;
- on revpri;
- n:=2;
- operator x$
- x(0):=t; x(1):=lambda0;
- % metric
- array g(n,n)$
- % rules
- trig1:={sin(~x)^2=>(1-cos(x)^2)}$ let trig1$
- % procedures
- procedure scalprod(a,b);
- begin integer n;
- n:=first(length(a))-1;
- result:=for i:=0:n-1 sum a(i)*b(i);
- return result
- end;
- procedure showmatrix(mm);
- begin integer m,n;l:=length(mm);m:=first(l)-1;n:=second(l)-1;
- matrix hhm(m,n);
- for i:=0:m-1 do for j:=0:n-1 do hhm(i+1,j+1):=mm(i,j);
- write hhm end;
- procedure showvector(vv);
- begin integer n;n:=first(length(vv))-1;
- matrix hhv(n,1);
- for i:=0:n-1 do hhv(i+1,1):=vv(i);
- write hhv end;
- array f(n+1), dfdt(n+1), dfdl(n+1)$
- % current radius
- a:=a0*sqrt(1-t^2);
- % surface of hyper sphere in t and lambda
- f(0):=a*cos(lambda0);
- f(1):=a*sin(lambda0);
- f(2):=a0*t;
- for i:=0:n do dfdt(i):=df(f(i),x(0));
- for i:=0:n do dfdl(i):=df(f(i),x(1));
- g(0,0):=scalprod(dfdt,dfdt)$
- g(0,1):=scalprod(dfdt,dfdl)$
- g(1,0):=scalprod(dfdl,dfdt)$
- g(1,1):=scalprod(dfdl,dfdl)$
- write "f = "; showvector(f);
- write "df/dt = "; showvector(dfdt);
- write "df/dl = "; showvector(dfdl);
- write "g = "; showmatrix(g);
- off revpri;
- on echo;
- end;
|