Re: Indexed element treated as number?
- To: mathgroup at smc.vnet.net
- Subject: [mg80182] Re: Indexed element treated as number?
- From: "Jung-Tsung Shen" <jushen at gmail.com>
- Date: Tue, 14 Aug 2007 07:07:33 -0400 (EDT)
- References: <f9jl5e$3c6$1@smc.vnet.net> <46BDDE70.50103@gmail.com>
Jean-Marc and Bob, Thanks very much for the very helpful solutions! Sincerely, JT On 8/11/07, Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com> wrote: > Jung-Tsung Shen wrote: > > To get an array of length n, where n is large and post-given, one > > issues the command, for example, > > > > n=100; > > kList1=Array[a, n]; > > > > but it seems that there are some limitations to this approach. For > > example, in cases that I know all of the elements are real, and would > > like to issue, say, > > > > a[37]/:Im[a[37]]=0; > > > > I get an error message saying > > "TagSet::sym: Argument a[37] at position 1 is expected to be a > > symbol." To declare the element to be explicitly zero sometimes speed > > up the computation. > > In this case, the correct syntax for a tag set is the name of the array > without any index followed by the tag set to the desired element as in > > In[1]:= a /: Im[a[2]] = 0; > > Alternatively, we could use *UpSet* as in > > In[2]:= Im[a[3]] ^= 0; > > Now we can compare the imaginary part of the elements. > > In[3]:= Im[a[2]] == Im[a[3]] > > Out[3]= True > > In[4]:= Im[a[2]] == Im[a[4]] > > Out[4]= 0 == Im[a[4]] > > > For a list such as > > > > kList2={k1, k2, k3, ..., k100}; > > > > there's no such limitations, but since the number of elements is > > large, and is post-given, I couldn't have this before hand. > > > > Is there any solution(s) to this "problem"? > > Well, you could use a function like the one below to create your array > of symbol when you know what the length of the list is. > > In[1]:= createArray[n_Integer /; n > 0, sym_Symbol: k] := > Table[ToExpression[StringJoin[ToString /@ {sym, i}]], {i, n}] > > In[2]:= createArray[5, a] > > Out[2]= {a1, a2, a3, a4, a5} > > In[3]:= kList2 = createArray[10] > > Out[3]= {k1, k2, k3, k4, k5, k6, k7, k8, k9, k10} > > HTH, > -- > Jean-Marc >