MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

Some questions about a Mathematica script

  • To: mathgroup at smc.vnet.net
  • Subject: [mg120771] Some questions about a Mathematica script
  • From: "DaleJenk" <dale.jenkins8 at deletegooglemail.com>
  • Date: Tue, 9 Aug 2011 07:21:50 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com

I downloaded the following from the Mathematica website. Most of it is 
fairly easy to understand but there's a section in the middle which isn't 
(at least to me).

1. At the end of the NDSolve instruction comes the list: {x1[t], x2[t], 
x3[t], x1'[t], x2'[t], x3'[t]}. What exactly is the reason for putting in 
the primed items in this list?

2. "soln" and "solnx1", etc. are all just labels. Right?

3. But what exactly does soln[[1,1]] refer to?

Thanks for any help.

Dale



Manipulate[
 m = 1.0;
 len = 4.0;
 dx1 = (1/m1)*(((tension*(x2[t] - x1[t]))/len) - tension (x1[t]/len));
 dx2 = (1/
    m2)*(((-tension*(x2[t] - x1[t]))/len) -
     tension ((x2[t] - x3[t])/len));
 dx3 = (1/m3)*(((tension*(x2[t] - x3[t]))/len) - tension (x3[t]/len));
 soln = NDSolve[{{x1''[t] == dx1, x2''[t] == dx2,
     x3''[t] == dx3}, {x1[0] == x1int, x1'[0] == 0.0, x2[0] == x2int,
     x2'[0] == 0.0, x3[0] == x3int, x3'[0] == 0.0}}, {x1[t], x2[t],
    x3[t], x1'[t], x2'[t], x3'[t]}, {t, 0, 5},
   Method -> "StiffnessSwitching"];
 solnx1[t_] = x1[t] /. soln[[1, 1]];
 solnx2[t_] = x2[t] /. soln[[1, 2]];
 solnx3[t_] = x3[t] /. soln[[1, 3]];
 solnx1p[t_] = x1'[t] /. soln[[1, 4]];
 solnx2p[t_] = x2'[t] /. soln[[1, 5]];
 solnx3p[t_] = x3'[t] /. soln[[1, 6]];
 With[{xa = solnx1[run], xb = solnx2[run], xc = solnx3[run]},
  balls =
   Graphics[{Black, Line[{{0, 0}, {1, xa}, {2, xb}, {3, xc}, {4, 0}}],
      Red, {Disk[{1, xa}, .1 Sqrt[m1]], Disk[{2, xb}, .1 Sqrt[m2]],
      Disk[{3, xc}, .1 Sqrt[m3]]}}, PlotRange -> {{0, 4}, {-1, 1}},
    Frame -> True, ImageSize -> {400, 250}];
  disp = Plot[{solnx1[t], solnx2[t], solnx3[t]}, {t, 0, 5},
    ImageSize -> {200, 150},
    AxesLabel -> {Row[{"time ", Style["t", Italic]}], "displacement"},
     ImagePadding -> {{35, 35}, {10, 20}}];
  velocity =
   Plot[{solnx1p[t], solnx2p[t], solnx3p[t]}, {t, 0, 5},
    ImageSize -> {200, 150},
    AxesLabel -> {Row[{"time ", Style["t", Italic]}], "velocity"},
    ImagePadding -> {{35, 35}, {10, 20}}];
  Grid[{{balls, SpanFromLeft}, {disp, velocity}}]],
 {{tension, 10, "tension T"}, 5, 20, .1, ImageSize -> Tiny},
 Style["displacement", Bold],
 {{x1int, 0, "\!\(\*SubscriptBox[\"x\", \"1\"]\)"}, -.2, .2,
  ImageSize -> Tiny},
 {{x2int, .1, "\!\(\*SubscriptBox[\"x\", \"2\"]\)"}, -.2, .2,
  ImageSize -> Tiny},
 {{x3int, 0, "\!\(\*SubscriptBox[\"x\", \"3\"]\)"}, -.2, .2,
  ImageSize -> Tiny},
 Style["mass", Bold],
 {{m1, 1, "\!\(\*SubscriptBox[\"m\", \"1\"]\)"}, .1, 3, .1,
  ImageSize -> Tiny},
 {{m2, 1, "\!\(\*SubscriptBox[\"m\", \"2\"]\)"}, .1, 3, .1,
  ImageSize -> Tiny},
 {{m3, 1, "\!\(\*SubscriptBox[\"m\", \"3\"]\)"}, .1, 3, .1,
  ImageSize -> Tiny},
 {{run, 0, "release system"}, 0, 5, .1, ControlType -> Trigger,
  AnimationRate -> 1},
 SynchronousUpdating -> True, TrackedSymbols -> True,
 AutorunSequencing -> {1, 3, 5, 8}] 





  • Prev by Date: Re: Problems with NETLink C#
  • Next by Date: Re: Pattern in immediate definition
  • Previous by thread: Re: Workbench not updated for version 8?
  • Next by thread: Re: Some questions about a Mathematica script