Hi I would advise to use itensor. The following will work under clisp,cmucl,sbcl (for gcl you should compile itensor before). (C1) batch("ex.mc"); batching /home/vpip/work/math/emf/emf_ro/tmp/ex.mc (C2) LOAD(use.mc) (D2) use.mc (C3) BOTHCASES : FALSE (D3) FALSE (C4) LOAD(itensor) (D4) /usr/local/share/maxima/5.9.0.1cvs/share/tensor/itensor.lisp (C5) DUMMYX : U (D5) U (C6) DIM : 3 (D6) 3 (C7) ALLSYM : FALSE (D7) FALSE (C8) DECLARE(LCH, CONSTANT) (D8) DONE (C9) DECSYM(LCH, 0, 3, [], [CYC(ALL), ANTI(ALL)]) (D9) DONE (C10) DECSYM(LCH, 3, 0, [CYC(ALL), ANTI(ALL)], []) (D10) DONE (C11) EXPR : LCH([], [I, J, K]) DIFF(LCH([K, L, M], []) U([], [L]) V([], [M]), J) (D11) LCH([], [I, J, K]) (U([], [L]) V([], [M], J) LCH([K, L, M], []) + U([], [L], J) V([], [M]) LCH([K, L, M], [])) (C12) SHOW(CANFORM(CONTRACT(CANFORM(TRFTKDT(EXPAND(EXPR)))))) I U1 I U1 I U1 I U1 (D12) U V - V U + U V - V U ,U1 ,U1 ,U1 ,U1 (C13) Rob McDonald wrote: > Martin was kind enough to answer some of my questions in a newsgroup, and to > direct me towards Maxima, and thereby here. > > I need to work with vector & tensor (dyad) derivatives (grad, div, curl, > tensor div) abstractly. I don't want the CAS program to try to evaluate the > derivative itself, rather it should be left as an operator. Thereby > something like > > DECLARE([u,v],nonscalar); > VECTORSIMP(CURL(v ~ u)); > > should return something akin to > > u*div(v)-v*div(u)+(v dot del)u-(u dot del)v > > We have been discussing some elementary forms related to my larger problem; > baby steps are always a good idea. But, to put my problem into perspective, > I'll state it here. > > I am looking for an alternate form of the expression on the LHS. The first > term on the RHS is an educated guess (and may well be quite wrong), and > I would like to see how it pans out. I need to figure out exactly what > those > other terms are. > > curl ( u dot vv ) = u cross div (vv) + other terms... > > Where (vv) is the tensor dyad formed from the arbitrary vector (v); and (u) > is a vector such that div(u)=0 and curl(u)=0. > > I have just downloaded 5.9.0 binaries, and have poked around a bit, but like > Martin, I have not been able to make much progress following what vect.mac > and vector.mac from CVS would suggest. > > Thanks for your time and any suggestions, > > Rob McDonald > > > >>I couldn't reproduce the desired equation using the (patched) vect.mac. >>However I don't know ANYTHING about this stuff... >> >>Martin >> >> >>>From: "Rob McDonald" <robm at asdl> >>>Subject: Re: Different sort of CAS problem >>>Newsgroups: sci.math.symbolic >>>Date: Wed, 5 Mar 2003 15:18:20 -0500 >>>Organization: Georgia Institute of Technology >>> >>>Can maxima do this with vector field entities? >>> >>>For example, if u and v are vector fields, how will maxima handle >>> >>>curl(v cross u) >>> >>>if it can return something like >>> >>>u*div(v)-v*div(u)+(v dot del)u-(u dot del)v >>> >>>and similar expressions for >>> >>>divergence(v cross u) >>>grad(v dot u) >>> >>>I would jump to it in a heartbeat... >>> >>> Rob >>> > > >
Attached file: ex.mc
Attached file: use.mc
Attached file: ten.lisp