Maxima 5.9.3 http://maxima.sourceforge.net Using Lisp GNU Common Lisp (GCL) GCL 2.6.7 (aka GCL) Distributed under the GNU Public License. See the file COPYING. Dedicated to the memory of William Schelter. This is a development version of Maxima. The function bug_report() provides bug reporting information. (%i1) batch("new_cartan_test4.mac"); batching #p/home/furuya/sagyo/new_cartan_test4.mac (%i2) load(cartan_new.lisp) (%i3) infix(@) (%i4) infix(&) (%i5) infix(|) (%i6) coords : read(Input new coordinate) Input new coordinate [x,y,z,t]; (%i7) dim : extdim : length(coords) (%i8) basis : VR : extsub : extsubb : [] 1 1 (%i9) for i thru dim do basis : endcons(concat(D, coords ), basis) i (%i10) for i thru dim do (extsub : cons(basis = - basis , extsub ), 1 + i i i i extsubb : cons(basis = 0, extsub ), ci : concat(v, i), VR : endcons(ci, VR)) i i i (%i11) basis (%o11) [Dx, Dy, Dz, Dt] (%i12) cliffordtype : read(please input metric type,for example [1,1,1],if E3) please input metric type,for example [1,1,1],if E3 [1,1,1,-1]; (%o12) [1, 1, 1, - 1] (%i13) translist : read(represent the standard coordinates with new one) represent the standard coordinates with new one [x,y,z,%i*c*t]; (%o13) [x, y, z, %i c t] (%i14) norm_table : [] (%i15) scale_factor : [] (%i16) _l : [] (%i17) for i thru dim do (_l : map(lambda([x], diff(x, coords )), translist), i 2 _l : map(lambda([x], x ), _l), _p : ratsimp(trigsimp(apply(+, _l))), cliffordtype i norm_table : endcons(-------------, norm_table)) _p (%i18) norm_table 1 (%o18) [1, 1, 1, --] 2 c norm_table i (%i19) for i thru dim do extsubb2 : cons(basis = -----------, extsub ) i i basis i i 2 1 (%i20) for i thru dim do (a_ : solve(x_ - -----------, [x_]), norm_table i scale_factor : cons(rhs(a_ ), scale_factor)) 2 (%i21) scale_factor : reverse(scale_factor) (%i22) scale_factor (%o22) [1, 1, 1, c] (%i23) nest2(_f, _x) := block([_a : [_x], i], if listp(_f) then (_f : reverse(_f), for i thru length(_f) do _a : map(_f , _a)) else _a : map(_f, _a), _a ) i 1 (%i24) nest3(_f, _x, _n) := block([_a, i], _a : [_x], for i thru _n do _a : map(_f, _a), _a) 2 (%i25) aa_ : solve(x_ - apply(*, norm_table), [x_]) (%i26) volume : rhs(aa_ ) 2 1 (%i27) volume : ------ volume (%i28) matrix_element_mult : lambda([x, y], x @ y) (%i29) load(hodge_test3.mac) (%i30) load(f_star_test4.mac) (%i31) load(helpfunc.mac) (%i32) load(coeflist.lisp) (%i33) load(format.lisp) (%i34) load(diag) (%i35) load(poisson.mac) (%i36) load(frobenius.mac) (%i37) load(curvture2.mac) (%o38) new_cartan_test4.bat (%i38) h_st(Dx@c*Dt); (%o38) Dy Dz (%i39) h_st(Dx@Dy); (%o39) c Dt Dz (%i40) h_st(Dz@c*Dt); (%o40) Dx Dy (%i41) h_st(Dy@c*Dt); (%o41) - Dx Dz (%i42) h_st(Dz@Dx); (%o42) c Dt Dy (%i43) h_st(Dy@Dz); (%o43) c Dt Dx /* [e1,e2,e3] is electric field,[b1,b2,b3]is magnetic field in free space Maxwell equation d(F)=0 and d(h_st(F))=0 */ (%i44) depends([e1,e2,e3],[x,y,z,t]); (%o44) [e1(x, y, z, t), e2(x, y, z, t), e3(x, y, z, t)] (%i45) depends([b1,b2,b3],[x,y,z,t]); (%o45) [b1(x, y, z, t), b2(x, y, z, t), b3(x, y, z, t)] (%i46) F:(e1*Dx+e2*Dy+e3*Dz)@(c*Dt)+(b1*Dy@Dz+b2*Dz@Dx+b3*Dx@Dy); (%o46) c Dt Dz e3 + c Dt Dy e2 + c Dt Dx e1 + b1 Dy Dz - b2 Dx Dz + b3 Dx Dy (%i47) d(F)$ (%i48) format(%o47,%poly(Dx,Dy,Dz),factor); de3 de2 db1 de3 de1 db2 (%o48) Dt Dy Dz (c --- - c --- + ---) + Dt Dx Dz (c --- - c --- - ---) dy dz dt dx dz dt de2 de1 db3 db3 db2 db1 + Dt Dx Dy (c --- - c --- + ---) + (--- + --- + ---) Dx Dy Dz dx dy dt dz dy dx /*to translate this relation to vector ,we introduce d_2 operator which is exterior derivative with space variables only. it is easy to define this. or like as %i152,can use local d operator,maybe this is more comfortable */ (%i49) d_2(_pform):=sum(basis[i]@(diff(_pform,coords[i])),i,1,dim-1); (%o49) d_2(_pform) := sum(basis @ diff(_pform, coords ), i, 1, dim - 1) i i (%i50) d_2(e1*Dx+e2*Dy+e3*Dz); de3 de3 de2 de2 de1 de1 (%o50) Dy Dz --- + Dx Dz --- - Dy Dz --- + Dx Dy --- - Dx Dz --- - Dx Dy --- dy dx dz dx dz dy (%i51) format(%,%poly(Dx,Dy,Dz),factor); de3 de2 de3 de1 de2 de1 (%o51) Dy Dz (--- - ---) + Dx Dz (--- - ---) + Dx Dy (--- - ---) dy dz dx dz dx dy /* rot(E) <---->h_st(d(E)),div(B) <----> d(h_st(B)) and X=0 <--->h_st(X)=0 */ (%i52) fstar_with_clf([x,y,z],[x,y,z],d(e1*Dx+e2*Dy+e3*Dz)); de3 de3 de2 de2 de1 de1 (%o52) Dy Dz --- + Dx Dz --- - Dy Dz --- + Dx Dy --- - Dx Dz --- - Dx Dy --- dy dx dz dx dz dy (%i53) fstar_with_clf([x,y,z],[x,y,z],h_st(d(e1*Dx+e2*Dy+e3*Dz)))$ (%i54) format(%,%poly(Dx,Dy,Dz),factor); de3 de2 de3 de1 de2 de1 (%o54) Dx (--- - ---) - Dy (--- - ---) + Dz (--- - ---) dy dz dx dz dx dy (%i55) h_st(%); de3 de3 de2 de2 (%o55) c Dt Dy Dz --- + c Dt Dx Dz --- - c Dt Dy Dz --- + c Dt Dx Dy --- dy dx dz dx de1 de1 - c Dt Dx Dz --- - c Dt Dx Dy --- dz dy (%i56) format(%,%poly(Dx,Dy,Dz),factor); de3 de2 de3 de1 de2 de1 (%o56) c Dt Dy Dz (--- - ---) + c Dt Dx Dz (--- - ---) + c Dt Dx Dy (--- - ---) dy dz dx dz dx dy (%i57) diff(b1*Dx+b2*Dy+b3*Dz,t); db3 db2 db1 (%o57) --- Dz + --- Dy + --- Dx dt dt dt (%i58) h_st(%); db1 db2 db3 (%o58) --- c Dt Dy Dz - --- c Dt Dx Dz + --- c Dt Dx Dy dt dt dt /* from d(F)=0,See %o48,and we find two part 1/c*%o58+%o56 ,div(B).each of them is zero. 1/c*%o58+%o56 is equal rot(E)+1/c*d(B)/dt (Faraday's law),%o60 is equal div(B) (=0,nonexistence magnetism) */ (%i59) %o48 -(1/c*%o58+%o56)$ (%i60) format(%,%poly(Dx,Dy,Dz),factor); db3 db2 db1 (%o60) (--- + --- + ---) Dx Dy Dz dz dy dx (%i61) fstar_with_clf([x,y,z],[x,y,z],d(h_st(b1*Dx+b2*Dy+b3*Dz))); db3 db2 db1 (%o61) --- Dx Dy Dz + --- Dx Dy Dz + --- Dx Dy Dz dz dy dx /*you may continue d(h_st(F)),see Flanders "Differential Forms with Applications to the Physical Sciences"4.6 Maxwell's Field Equations P45~P47.