クロソイド曲線

x'=\cos\left(\frac{\pi t^2}{2}\right)
y'=\sin\left(\frac{\pi t^2}{2}\right)
というシンプルな数式で表されるそうなので、Maximaでその数式でグラフを描いてみようとしたが、残念ながら媒介変数を含む微分方程式をそのまま描画することはできないようだった。
微分方程式をグラフ化する関数としてplotdf()があるが、parametric plotができないようだ。
integrate()で定積分したものをplot2d()でparametric plotすればいいかと思ったが、残念ながら上記の関数のintegrate()は計算されなかった(erf混じりの非数値解になる)。

上記のx',y'を定積分したものはフレネル積分と呼ばれるそうで、Maximaにfresnel_c(), fresnel_s()があったので、今回はそれを使うことで良しとした。

●Maximaへの入力
plot2d([parametric, fresnel_c(t), fresnel_s(t), [t,-6,6]],[x,-1,1],[y,-1,1],[style,lines],[nticks,1000]);

●出力(ブラウザがSVGを表示できない場合→ PNG
Clothoid curve

車のハンドルを一定の速度で回していくとできる曲線だそうだ。


今日、Maximaから直接SVGファイルでグラフを作成できることを知った。
●入力例

plot2d([parametric, fresnel_c(t), fresnel_s(t), [t,-6,6]],[x,-1,1],[y,-1,1],[style,lines],
[nticks,1000],[gnuplot_term,"svg"],[gnuplot_out_file,"clothoid.svg"]);
やっぱり時代はSVGのような気がする。