MathGroup Archive 2002

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Fw: Is Mathematica capable of doing this?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg37515] Re: Fw: [mg37469] Is Mathematica capable of doing this?
  • From: Liguo Song <Liguo.Song at vanderbilt.edu>
  • Date: Sat, 2 Nov 2002 03:31:04 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

Thanks for the wonderful advices. That's where I should head to.

But, before further questions, I have to explain myself. I am a newbie also. I 
have been using Mathematica for a couple of years, but never gave it a serious 
thought until recently. That's when I began to think about this Tensor stuff. 
So, I might not have all the solid background with Mathematica as other veterans 
on this list. :)

As that cleared out, so I can ask some newbie questions now.

First off, how do I define the Tensor Head so that I can use Plus[x_Tensor]? The 
only thing that I can come close to that is to define TensorQ and use 
Plus[x_?Tensor], which worked but not satisfiable.

Second, how can I define the Tensor Head so that I can associate Input of 
Subsuperscriptbox[A,ij,kj] to a Tensor with ij as subscript and kj as 
superscript? Just like Input A^i corresponds to Power[A,i].

Again, thanks a lot for your input.


Liguo



Hermann Schmitt wrote:
> Hello,
> a further hint:
> by:  lst = List[x__],  where x__ specifies the paramters e.g. of the
> function Plus,
> you get a list of the paramters and you can access them, easily.
> Hermann Schmitt
> ----- Original Message -----
> From: "Hermann Schmitt" <schmitther at netcologne.de>
To: mathgroup at smc.vnet.net
> To: "Liguo Song" <Liguo.Song at vanderbilt.edu>
> Cc: <mathgroup at smc.vnet.net>
> Sent: Friday, November 01, 2002 11:02 AM
> Subject: [mg37515] Re: [mg37469] Is Mathematica capable of doing this?
> 
> 
> 
>>Hello,
>>you may use entries with Head "Tensor", e.g. Tensor[xyz], where xyz
>>identifies an specific Tensor.
>>Then you can define functions Plus, Times, ... in the form:
>>Plus[x__Tensor] := .......
>>x__ Tensor  means one ore more expressions with Head "Tensor".
>>Hermann Schmitt
>>
>>----- Original Message -----
>>From: "Liguo Song" <Liguo.Song at vanderbilt.edu>
To: mathgroup at smc.vnet.net
>>To: <mathgroup at smc.vnet.net>
>>Sent: Friday, November 01, 2002 7:43 AM
>>Subject: [mg37515] [mg37493] Re: [mg37469] Is Mathematica capable of doing this?
>>
>>
>>
>>>Thanks for the helpful input. I have been playing with the idea for a
>>
>>while. And
>>
>>>here are my answers for the questions that you brought out.
>>>
>>>First, about the super/sub-scripts. I can easily use a list of
>>
> True/False
> 
>>for
>>
>>>sub/super-script. I can combine this list with the List that represent
>>
> the
> 
>>>tensor together to for a new object, Tensor.
>>>
>>>Second, output formatting can be done easily with
>>
>>SubsuperscriptBox[string, sub,
>>
>>>sup], where string represents the name of the Tensor, sub/sup are
>>
> strings
> 
>>to
>>
>>>represent the scripts for the tensor. Spaces can be used to align the
>>
> sub
> 
>>and
>>
>>>super-scripts.
>>>
>>>So, it boils down the my first question, how can I define a object,
>>
>>Tensor,
>>
>>>which will behave like Complex? So, I can redefine Times, Plus, Minus,
>>
> and
> 
>>other
>>
>>>operators to handle Tensor.
>>>
>>>Also, how can I relate a symble to a Function as + relates Plus, *
>>
> relates
> 
>>to Times?
>>
>>>Again, thanks for your thoughts on this topic.
>>>
>>>
>>>Liguo
>>>
>>>
>>>David Park wrote:
>>>
>>>>Liguo,
>>>>
>>>>I think it is a "dragon's egg" and certainly not the best way to learn
>>>>Mathematica. Basically you would have to Unprotect and add new
>>>
>>definitions
>>
>>>>to Times and that would be only the start of it because how are you
>>>
>>going to
>>
>>>>distinguish between superscripts and powers? How are you going to
>>>
> handle
> 
>>>>mixed up and down indices? How are you going to get nice output
>>>
>>formatting?
>>
>>>>There are many nice tensor packages out there. The moderator of this
>>>
>>group
>>
>>>>has the original powerful tensor package. As a way of learning some
>>>
>>tensor
>>
>>>>calculus I have been working with Renan Cabrera on a package called
>>>>Tensorial. It can be obtained at my web site below. It is oriented
>>>
>>toward
>>
>>>>learning the basic mechanics and reproducing textbook problems. You
>>>
> can
> 
>>have
>>
>>>>any symbols for tensor labels or indices. The index domain can be any
>>>
>>range
>>
>>>>of numbers or a set of symbols. For example, {0,1,2,3} or {t,x,y,z}
>>>
> for
> 
>>>>relativity problems. You can have colored indices to distinguish
>>>
>>different
>>
>>>>coordinate frames.
>>>>
>>>>Here is how one would do your two problems in Tensorial.
>>>>
>>>>Needs["TensorCalculus`Tensorial`"]
>>>>SetMetric[{x, g}, IdentityMatrix[3]]
>>>>
>>>>DefineTensorShortcuts[{T, g}, 2]
>>>>
>>>>guu[u, v]Tdd[v, k]
>>>>% // MetricSimplify
>>>>(formatted output)
>>>>(formatted output, but Tud[u,k] in shortcut notation.)
>>>>
>>>>guu[u, v]Tdd[u, v]
>>>>% // IndexEinstein
>>>>(formatted output)
>>>>(formatted output but Tdd[1,1] + Tdd[2,2] + Tdd[3,3] in shortcut
>>>
>>notation.)
>>
>>>>The DefineTensorShortcuts statement defines T and g as labels of
>>>
> second
> 
>>>>order tensors. The various up and down index configurations can be
>>>
>>specified
>>
>>>>by appending "u"'s or "d"'s to the tensor label. So, for example,
>>>
>>gud[i,j]
>>
>>>>is the shortcut for g with the first index i up, and the second index
>>>
> j
> 
>>>>down. Isn't that easier than maneuvering between superscripts and
>>>>subscripts? MetricSimplify automatically carries our the raising or
>>>
>>lowering
>>
>>>>of indices with the metric tensor. IndexEinstein automatically carries
>>>
>>out
>>
>>>>summations on paired up and down indices.
>>>>
>>>>David Park
>>>>djmp at earthlink.net
>>>>http://home.earthlink.net/~djmp/
>>>>
>>>>
>>>>From: Liguo Song [mailto:Liguo.Song at vanderbilt.edu]
To: mathgroup at smc.vnet.net
>>>
>>>To: mathgroup at smc.vnet.net
>>>
>>>>Dear MathGroup,
>>>>
>>>>I am in the process of learning to use Mathematica. Here are a couple
>>>
> of
> 
>>>>questions that I want to ask the group.
>>>>
>>>>1) Can I define a new object, Tensor, which will act like Complex? So,
>>>
>>two
>>
>>>>Times[TensorA, TensorB] or TensorA*TensorB will invoke proper Times
>>>
>>function
>>
>>>>to
>>>>handle it.
>>>>
>>>>2) If the answer to the above question is yes, then can I use
>>>>super/sub-scripts
>>>>to represent the indices for the Tensor, and carry out the calculation
>>>
>>based
>>
>>>>on
>>>>these indices? Such as, g^uv*T_vk will get T^u_k, which essentially
>>>
>>raises
>>
>>>>the
>>>>first index of T_vk. Another example would be g^uv*T_uv will get a
>>>
>>scalor T.
>>
>>>>I know there are couple of Tensor analysis packages, comercial and
>>>
> free,
> 
>>out
>>
>>>>there. But, all the free packages I looked through won't be able to do
>>>
>>this.
>>
>>>>And, figuring out how to do stuff is the best to learn how to use
>>>>Mathematica.
>>>>
>>>>Maybe, I am pursuing a dragon egg here. But, I'd still like to hear
>>>
>>about
>>
>>>>how
>>>>well Mathematica can do to imitate this behavior.
>>>>
>>>>Thanks for any input on this.
>>>>
>>>>
>>>>Liguo
>>>>
>>>
>>>
>>>




  • Prev by Date: Re: Re: Re: Re: Not quite a Swell FLOOP?
  • Next by Date: Re: Fw: Is Mathematica capable of doing this?
  • Previous by thread: Re: Is Mathematica capable of doing this?
  • Next by thread: Re: Fw: Is Mathematica capable of doing this?