Re: How to define a list of functions/variables
- To: mathgroup at smc.vnet.net
- Subject: [mg102227] Re: How to define a list of functions/variables
- From: Peter Breitfeld <phbrf at t-online.de>
- Date: Sat, 1 Aug 2009 04:05:02 -0400 (EDT)
- References: <h4uf5o$j1r$1@smc.vnet.net>
Haibo Min wrote: > Hello, everyone. > > I want to define a list of variables "qi" and "Omegai", where q and > Omega are both vectors and "i" denotes the ith vector, i.e., > qi[t]={qi1[t],qi2[t],qi3[t]}, Omegai[t]={Omegai1[t],Omega2[t],Omegai3[t]}. > > then I use the following code. > > eqns[n_Integer] /; Positive[n] := > Table[{Subscript[q, i][t_] := {Subscript[q, i1][t], > Subscript[q, i2][t], Subscript[q, i3][t]}, > Subscript[\[Omega], i][t_] := {Subscript[\[Omega], i1][t], > Subscript[\[Omega], i2][t], Subscript[\[Omega], i3][t]}}, {i, n}] > > but it shows that: eqns[2]={{Null, Null}, {Null, Null}} > why? > > Thanks! > > Regards, > Haibo > First you can't use i1,i2,i3 hoping they get evaluated to 11,12,12,... because they are variables "of their own right", so were not affected by the Table iterator {i,n}. Second, in this case I would use Set (=) instead of SetDelayed (:=) for the assignments of the vectors. ClearAll[Subscript]; eqns[n_Integer] /; Positive[n] := Table[{Subscript[q, i][t_] = {Subscript[q, i, 1][t], Subscript[q, i, 2][t], Subscript[q, i, 3][t]}, Subscript[\[Omega], i][t_] = {Subscript[\[Omega], i, 1][t], Subscript[\[Omega], i, 2][t], Subscript[\[Omega], i, 3][t]}}, {i, n}] Then: eqns[2] gives {{{Subscript[q, 1, 1][t], Subscript[q, 1, 2][t], Subscript[q, 1, 3][t]}, {Subscript[\[Omega], 1, 1][t], Subscript[\[Omega], 1, 2][t], Subscript[\[Omega], 1, 3][t]}}, {{Subscript[q, 2, 1][t], Subscript[q, 2, 2][t], Subscript[q, 2, 3][t]}, {Subscript[\[Omega], 2, 1][t], Subscript[\[Omega], 2, 2][t], Subscript[\[Omega], 2, 3][t]}}} and e.g. Subscript[q, 2][t] gives {Subscript[q, 2, 1][t], Subscript[q, 2, 2][t], Subscript[q, 2, 3][t]} If you change the assignments of the vectors to SetDelayed, this will give no output, so you get "Null", but your vectors *are* defined, and the input Subscript[q,2][t] will give the same as above. -- _________________________________________________________________ Peter Breitfeld, Bad Saulgau, Germany -- http://www.pBreitfeld.de