読者です 読者をやめる 読者になる 読者になる

MathematicaでAnimateをCDFにする

id:hig3:20111105:1320459830
Manipulate 内に Animate を置くことによる動的更新の警告とそれを避ける方法 http://d.hatena.ne.jp/hig3/20111105/1320459830
でも同じようなことで悩んでいたような気がするが, 定義した関数をAnimateしたものをCDFにExportしようとするとうまくいかない. グラフが空白になってしまう(エラーは出ない. Sqrt[-1]をプロットしたときと同じように). 理由は DynamicModule のドキュメントに書いてある(気がする)

v=1/2;
h[z_] := 0
h[z_] := Sin[z] /; z >= 0
Animate[
    Plot[h[x + v t] - h[-(x - v t)], {x, -10, 10},PlotRange -> {{-10, 10}, {-2, 2}}], 
    {t, -20,80}
]

だったら,

speed=2; (*時間の範囲に依存して調整?*)
Manipulate[
  DynamicModule[
    {v = 1/2}, 
    Plot[h[x + v t] - h[-(x - v t)], {x, -10, 10},PlotRange -> {{-10, 10}, {-2, 2}}], 
    Initialization :> (h[z_] := 0; h[z_] := Sin[z] /; z >= 0)
  ],
  {t, -20,80, (Animator[#1, #2, speed]) &}
]

と書き替えるとCDFにしても動くように見える.

こうやって作った進行波のデモ.
http://www.a.math.ryukoku.ac.jp/~hig/course/mathphb_2012/standing_wave.pdf