Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Topic: Alternative to Table
Replies: 2   Last Post: Mar 7, 2013 10:47 PM

 Messages: [ Previous | Next ]
 Iván Lazaro Posts: 34 Registered: 6/18/07
Alternative to Table
Posted: Mar 5, 2013 10:13 PM

Dear group:

I'm trying to build a code that evolves a grid of dimension 2gridDim+1
over a time timeDim. I managed to build such a code using Table with
only one problem: when the value of timeDim is of thousands, the time
it takes to evaluate is absurd. I tried to find an alternative way to
write this code, using NestList withouth success. NestList is able to
have an interator if I write it like #[[1]]+1, but it doesn't work
when I use it as an element of a list.

I let here a toy working example. Any input would be most appreciated.

Iv=E1n.

gridDim = 2; timeDim = 3;
list = ConstantArray[0, {2, 2*gridDim + 1, timeDim}];

Table[list[[1, i, 1]] = Sin[-(gridDim + 1.) + i], {i, 1,
2*gridDim + 1}];
Table[list[[2, i, 1]] = RandomReal[{0, 2*Pi}], {i, 1, 2*gridDim + 1}];

zUpdate[list_, t_] := Module[{lista},
lista = {};
lista = list;
Table[If[i + 1 > 2*gridDim + 1,
lista[[1, i, t + 1]] = list[[1, i, t]] (list[[2, 1, t]] -
list[[2, i - 1, t]]), If[
i - 1 == 0,
lista[[1, i, t + 1]] = list[[1, i, t]] (list[[2, i + 1, t]] -
list[[2, 2*gridDim + 1, t]]),
lista[[1, i, t + 1]] = list[[1, i, t]] (list[[2, i + 1, t]] -
list[[2, i - 1, t]])]],
{i, 1, 2*gridDim + 1}];
lista
];

pUpdate[list_, t_] := Module[{lista},
lista = {};
lista = list;
Table[If[i + 1 > 2*gridDim + 1,
lista[[2, i, t + 1]] = Mod[list[[1, i, t + 1]] (list[[2, 1, t]] -
list[[2, i - 1, t]]), 2*Pi],
If[i - 1 == 0,
lista[[2, i, t + 1]] = Mod[list[[1, i, t + 1]] (list[[2, i + 1,
t]] - list[[2, 2*gridDim + 1, t]]), 2*Pi],
lista[[2, i, t + 1]] = Mod[ list[[1, i, t + 1]] (list[[2, i + 1,
t]] - list[[2, i - 1, t]]), 2*Pi]]], {i, 1, 2*gridDim + 1}];
lista
];

Do[
list = zUpdate[list, i];
list = pUpdate[list, i];, {i, 1, timeDim - 1}];
list

Date Subject Author
3/5/13 Iván Lazaro
3/7/13 daniel.lichtblau0@gmail.com
3/7/13 Iván Lazaro