Re: Table[ ...If[...i...] ,{i,...}]
- To: mathgroup at yoda.physics.unc.edu
- Subject: Re: Table[ ...If[...i...] ,{i,...}]
- From: David Withoff <withoff>
- Date: Fri, 17 Jul 1992 10:21:33 -0500
> Hi mathgroup, > why is the i in > > Table[ v[i]'[t] == If[ x[i]>0,ex1,ex2] , {i,2,6} ] > > not replaced with the iterator i? > thanks > > michael trott > > trott at physik.th-ilmenau.de The Table function works by sequentially assigning values to the iteration parameter, evaluating the first argument, and using the result to fill in the table. In the above example it constructs a list with five elements: In[1]:= result = {Null, Null, Null, Null, Null} assigns a value to i: In[2]:= i = 2 evaluates the first argument: In[3]:= v[i]'[t] == If[ x[i]>0,ex1,ex2] Out[3]= (v[2])'[t] == If[x[i] > 0, ex1, ex2] fills in the first entry of the table: In[4]:= result[[1]] = % and repeats the process to obtain: Out[13]= {(v[2])'[t] == If[x[i] > 0, ex1, ex2], > (v[3])'[t] == If[x[i] > 0, ex1, ex2], > (v[4])'[t] == If[x[i] > 0, ex1, ex2], > (v[5])'[t] == If[x[i] > 0, ex1, ex2], > (v[6])'[t] == If[x[i] > 0, ex1, ex2]} This result is a consequence, among other things, of If having attribute HoldAll. One way to change this behavior is to use Evaluate: In[14]:= Table[v[i]'[t] == If[ Evaluate[x[i]>0],ex1,ex2], {i, 2, 6}] Out[14]= {(v[2])'[t] == If[x[2] > 0, ex1, ex2], > (v[3])'[t] == If[x[3] > 0, ex1, ex2], > (v[4])'[t] == If[x[4] > 0, ex1, ex2], > (v[5])'[t] == If[x[5] > 0, ex1, ex2], > (v[6])'[t] == If[x[6] > 0, ex1, ex2]} (For additional information, refer to page 730 of the book.) Dave Withoff withoff at wri.com