Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

I want to plot my functions, but I can't seem to figure out what's going wrong. I want to be able to animate it as well.

N0 = 4; μ = 2; ϵ = 5
crazy = Flatten[
Join[
Table[x[i, j]''[t] == ϵ*(1 - x[i, j][t]^2)*x[i, j]'[t] - 
  x[i, j][t] + μ*(x[i + 1, j][t] + x[i, j + 1][t] - 
     4*x[i, j][t] + x[i - 1, j][t] + x[i, j - 1][t]), {i, 1, 
 N0 - 1}, {j, 1, N0 - 1}],

{Table[
 x[i, 0]''[t] == -x[i, 0][t] + ϵ*(1 - x[i, 0][t]^2)*
    x[i, 0]'[
     t] + μ*(x[i, 1][t] + x[i + 1, 0][t] - 4*x[i, 0][t] + 
      x[i - 1, 0][t] + x[i, N0][t]), {i, 1, N0 - 1}],

Table[
 x[i, N0]''[t] == ϵ*(1 - x[i, N0][t]^2)*x[i, N0]'[t] - 
   x[i, N0][
    t] + μ*(x[i + 1, N0][t] + x[i, 0][t] - 4*x[i, N0][t] + 
      x[i - 1, N0][t] + x[i, N0 - 1][t]), {i, 1, N0 - 1}],

Table[
 x[0, j]''[t] == ϵ*(1 - x[0, j][t]^2)*x[0, j]'[t] - 
   x[0, j][t] + μ*(x[1, j][t] + x[0, j + 1][t] - 
      4*x[0, j][t] + x[N0, j][t] + x[0, j - 1][t]), {j, 1, 
  N0 - 1}],

Table[
 x[N0, j]''[t] == ϵ*(1 - x[N0, j][t]^2)*x[N0, j]'[t] - 
   x[N0, j][
    t] + μ*(x[0, j][t] + x[N0, j + 1][t] - 4*x[N0, j][t] + 
      x[N0 - 1, j][t] + x[N0, j - 1][t]), {j, 1, N0 - 1}],

x[0, 0]''[t] == ϵ*(1 - x[0, 0][t]^2)*x[0, 0]'[t] - 
  x[0, 0][t] + μ*(x[1, 0][t] + x[0, 1][t] - 4*x[0, 0][t] + 
     x[N0, 0][t] + x[0, N0][t]),

x[N0, 0]''[t] == ϵ*(1 - x[N0, 0][t]^2)*x[N0, 0]'[t] - 
  x[N0, 0][
   t] + μ*(x[0, 0][t] + x[N0, 1][t] - 4*x[N0, 0][t] + 
     x[N0 - 1, 0][t] + x[N0, N0][t]),

x[0, N0]''[t] == ϵ*(1 - x[0, N0][t]^2)*x[0, N0]'[t] - 
  x[0, N0][
   t] + μ*(x[1, N0][t] + x[0, 0][t] - 4*x[0, N0][t] + 
     x[N0, N0][t] + x[0, N0 - 1][t]),

x[N0, N0]''[t] == ϵ*(1 - x[N0, N0][t]^2)*x[N0, N0]'[t] - 
  x[N0, N0][
   t] + \[Mu]*(x[0, N0][t] + x[N0, 0][t] - 4*x[N0, N0][t] + 
     x[N0 - 1, N0][t] + x[N0, N0 - 1][t]),


    x[0, 0][0] == 1, x[0, 0]'[0] == .5, x[N0/2, N0/2][0] == 0, 
x[N0/2, N0/2]'[0] == 0},
Table[x[i, j]'[0] == 0, {i, 1, N0/2 - 1}, {j, 0, N0}], 
Table[x[i, j][0] == 0, {i, 1, N0/2 - 1}, {j, 0, N0}],
Table[x[i, j]'[0] == 0, {i, N0/2 + 1, N0}, {j, 0, N0}], 
Table[x[i, j][0] == 0, {i, N0/2 + 1, N0}, {j, 0, N0}],
Table[x[N0/2, j]'[0] == 0, {j, 0, N0/2 - 1}], 
Table[x[N0/2, j][0] == 0, {j, 0, N0/2 - 1}],
Table[x[N0/2, j]'[0] == 0, {j, N0/2 + 1, N0}], 
Table[x[N0/2, j][0] == 0, {j, N0/2 + 1, N0}],
Table[x[0, j][0] == 0, {j, 1, N0}], 
Table[x[0, j]'[0] == 0, {j, 1, N0}]]];


moo = NDSolve[crazy, Table[x[i, j], {i, 0, N0}, {j, 0, N0}], {t, 100}]


points = Table[{i, j, x[i, j][t]} /. moo, {i, 0, N0}, {j, 0, 
N0}]

Animate[ListPointPlot3D[points], {t, 0, 100
}, AnimationRate -> 2, AnimationRepetitions -> 2, 
AnimationRunning -> False]
share|improve this question
    
You'll want to start by fixing the syntax errors in your code. –  Corey Kelly Jun 27 '13 at 16:34
    
@CoreyKelly I don't know how. Hence, my problem. –  Slightly Jun 27 '13 at 16:38
    
Have you read the error messages? They state the problem quite clearly. –  Corey Kelly Jun 27 '13 at 16:39
    
@CoreyKelly Fixed –  Slightly Jun 27 '13 at 16:41
    
The next problem is that you're trying to plot a function x[i,j] that you haven't defined anywhere. –  Corey Kelly Jun 27 '13 at 16:44
show 4 more comments

1 Answer

up vote 1 down vote accepted

To make it work, you first have to flatten the two-dimensional tables in your variable lists. Then since Animate holds its arguments unevaluated, one has to inject the instantaneous value of t into the InterpolationFunctions in some way. One solution is to use a replacement rule with a different variable name t0 as the time counter for Animate:

moo = NDSolve[
   crazy,
   Flatten@Table[x[i, j], {i, 0, N0}, {j, 0, N0}], {t, 100}];

points = Flatten[
   Table[{i, j, x[i, j][t]} /. moo, {i, 0, N0}, {j, 0, N0}], 2];


Animate[
 ListPointPlot3D[points /. t -> t0, 
  PlotRange -> {{0, 4}, {0, 4}, {-10, 10}}], {t0, 0, 100}, 
 AnimationRate -> 2, AnimationRepetitions -> 2, 
 AnimationRunning -> False]

animate

Here, I also set a fixed PlotRange as this makes the movement of the points clearer in the animation.

share|improve this answer
    
Thank you a lot, I need to get myself more adjusted with the flatten command. Also, why the 2 in "moo"? How would we connect the dots? –  Slightly Jun 27 '13 at 19:08
    
Why the 2 in points (not in moo): it's a level specification that tells Flatten to collect levels 1 and 2 into a single list, while leaving the three-element lists at level 3 (i.e., the individual points) in the form of lists. Without level specification, Flatten would have turned the lists of coordinate triplets into a string of individual numbers, unsuitable for the 3D plot. The Flatten in moo doesn't need the specification because I want only a single-level list of function variables. –  Jens Jun 27 '13 at 19:55
    
Is there any way to connect the dots? I couldn't find anything in the options menu. –  Slightly Jun 27 '13 at 20:01
    
To find a representation you like, you could look into ListPlot3D and its options for Mesh and InterpolationOrder. –  Jens Jun 27 '13 at 20:21
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.