粒子軌道のシミュレーション結果の平滑化
BlockMapとTrimmedMeanを組み合せて使い,粒子軌道からのデータを平滑化する.
厳密な軌道にノイズを加えて確率経路のシミュレーションを行う.
In[1]:=
![Click for copyable input](assets.ja/smooth-a-simulated-particle-trajectory/In_63.png)
exact[u_] := {u Cos[u], u Sin[u]}
noise[u_] := RandomReal[CauchyDistribution[0, 1], 2]
data = Table[exact[u] + noise[u], {u, 0, 6 \[Pi], 1/100}];
In[2]:=
![Click for copyable input](assets.ja/smooth-a-simulated-particle-trajectory/In_64.png)
ListPlot[data, AspectRatio -> Automatic]
Out[2]=
![](assets.ja/smooth-a-simulated-particle-trajectory/O_66.png)
考えられる外れ値を移動刈込み平均(TrimmedMean)で除き,BlockMapを使ってシミュレーション結果の軌道を平滑化する.
In[3]:=
![Click for copyable input](assets.ja/smooth-a-simulated-particle-trajectory/In_65.png)
smooth[r_] := BlockMap[TrimmedMean, data, r, 1]
窓サイズを大きくしてより滑らかな軌道を得る.
In[4]:=
![Click for copyable input](assets.ja/smooth-a-simulated-particle-trajectory/In_66.png)
Table[ListPlot[smooth[r],
AspectRatio -> Automatic], {r, {25, 50, 100, 200}}]
Out[4]=
![](assets.ja/smooth-a-simulated-particle-trajectory/O_67.png)