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