23
Animate[
  Manipulate[
   ParametricPlot[ Evaluate[{x[t], v[t]} /.
    Quiet @ NDSolve[
     {x'[t] == v[t],
     v'[t] == μ (1 - x[t]^2) v[t] - x[t] + A*Cos[ω*t],
     x[0] == xv0[[1]], v[0] == xv0[[2]]}, {x[t], v[t]}, {t, 0, tt}]],
    {t, 0, tt}, ImageSize -> {450, 450}, PlotRange -> 4, 
    AxesLabel -> {TraditionalForm[x[t]], TraditionalForm[v[t]]},
    PlotStyle -> PointSize[.5]
  ],
  {{μ, 0.75, "parameter μ"}, 0, 3, 0.01, Appearance -> "Labeled"},
  {{ω, 0.75, "parameter ω"}, 0, 3, 0.01, Appearance -> "Labeled"},
  {{A, 0.75, "parameter A"}, 0, 3, 0.01, Appearance -> "Labeled"},
  {{xv0, {1, 1}}, {-4, -4}, {4, 4}, Locator}], {tt, 0, 200}, 
  AnimationRate -> 3, AnimationRepetitions -> 3, AnimationRunning -> True
]
mmal
  • 3,508
  • 2
  • 18
  • 38
Slightly
  • 321
  • 1
  • 2
  • 10
  • 3
    Not to answer your question (which you yourself should be able to work out with the online help of Export etc.), but I moved from GIF to MOV which works nicely as described here: http://mathematica.stackexchange.com/a/4236/131. The quicktime movies have true color and integrate nicely into Powerpoint. – Yves Klett Jun 18 '13 at 14:32
  • Yves Klett The thing is, is that I have been working on this for awhile but the only thing it produces is a picture. Nothing moves. – Slightly Jun 18 '13 at 14:35
  • 1
    Second argument of Export should be list of pictures. It is written in help. – Kuba Jun 18 '13 at 14:46
  • Nothing is working. I don't know what I'm doing wrong! – Slightly Jun 18 '13 at 14:56
  • This seems not a duplicate but there is an answer: http://mathematica.stackexchange.com/q/4727/5478 – Kuba Jun 18 '13 at 15:46
  • Related: http://mathematica.stackexchange.com/q/85565/280 – Alexey Popkov Jan 19 '16 at 20:08

5 Answers5

22

You have to set values which are dynamic in Manipulate.

μ = .75; ω = .75; A = .075; xv0 = {1, 1};

Table pictures for different tt:

sol = Quiet@NDSolve[{x'[t] == v[t], v'[t] == μ (1 - x[t]^2) v[t] - x[t] + A*Cos[ω*t], 
                     x[0] == xv0[[1]], v[0] == xv0[[2]]
                    }, {x[t], v[t]}, {t, 0, 20}];

dat = Table[
            ParametricPlot[Evaluate[{x[t], v[t]} /. sol, {t, 0, tt}, 
                           PlotRange -> 4, AxesLabel -> {x[t], v[t]}]
            , {tt, .1, 20, .2}];

Create gif.

SetDirectory@NotebookDirectory[]
Export["gif.gif", dat]

enter image description here

Kuba
  • 136,707
  • 13
  • 279
  • 740
16

You can capture the frames as you manually manipulate like this:

 frames = {}
 Animate[Manipulate[(AppendTo[frames, ParametricPlot[ ... ] ])[[-1]] .. ]  ]

disable dynamic updating when done, then

 Export["test.gif",frames]

enter image description here

warning this will quickly generate a large number of frames..

george2079
  • 38,913
  • 1
  • 43
  • 110
9

You can adjust the step size by changing the increment in the Table and you can adjust the animation rate using "DisplayDurations", e.g. for the Table above.

Export["dat.gif",dat, "DisplayDurations"->Table[t,{Length[dat]}]] 

where t is display duration in seconds (frame rate: 1/t). Other options for exporting are in the GIF documentation

ubpdqn
  • 60,617
  • 3
  • 59
  • 148
6

I came across this very helpful video when perusing Wolfram's documentation:

How to Import and Export animations video by WRI

tjm167us
  • 993
  • 5
  • 12
3

I did not take a deep look at your code,but since you are using animate command,I suppose that your code is producing an animation which you can export it as movie into your powerpoint slides.

Export["test.avi",%]

which produces an .avi movie in your document folder.