opamp_sando's blog

クソザコが割りと適当なことを書くためにある備忘録です。あとたまに普通の日記も書きます

maximaでgnuplotのオプションを設定する

Maximaはグラフ描画の際バックエンドでgnuplotを利用する。gnuplotはsetなどを用いてオプションを設定することができる。
今回はMaximaからgnuplotのオプションを指定する方法をメモ。

結論からいうと、例えば以下のように

plot2d(f(x),[x,0,10],[gnuplot_preamble,"set format y '%f'"]);

plot2dなどの引数としてgnuplot_preambleを渡してあげると良いらしい。

なので、実際に使った例だと・・・

(%i1) i(r,t) := (e / sqrt(l/c - r^2/4))*%e^(t*(-r/(2*l)))*sin(t*sqrt(1/(l*c) - (r^2)/(4*(l^2))));
(%i2) vr1(t) := i(50,t)/50.0; /* ここなんで割ってるんだ i(50,t)*50.0 が正しい*/

とか適当な関数を用意する。(尚、e,c,lの値は適当に決めて・・・) 抵抗の大きさを50[Ω]とした時、抵抗にかかる電圧の大きさvr1(t)を定義して

(%i3) plot2d(vr1(t),[t,0,10*10^(-3)]);

という具合に描画すると

f:id:opamp_sando:20141128020208p:plain

続いて、オプションをつけてみると

(%i4) plot2d(vr1(t),[t,0,10*10^(-3)],[gnuplot_preamble,"set format y '%f'"]);

f:id:opamp_sando:20141128020254p:plain

という具合に、軸が指数表現からただの小数点による表現に変えることができた。
他にもいろいろ使えるオプションがあるらしい。詳しくは最後の参考資料を参照...

なお、このグラフはSpice演習の課題でSpiceのシュミレーション結果が理論の結果と等しいかを考えるために理論の式をmaximaでplotしてもらった時のやつの模様。なんかシュミレーション結果と電圧の大きさが違うのでどこか間違えてる気がする
普通にv求めるのになんでi/rをしているのかという話だった。きっと寝ぼけてたんや。もう午前2時だし(震え声)

maximaちゃんは今回も優秀でした。インダクタの電圧も求めないとだから微分も必要だったのでいろいろ楽だった。

参考資料

http://www.gnuplot-cmd.com/axis/logscale.html

http://www.k3.dion.ne.jp/~kawada/Uinx/maxima-plot.html

Firefox ブラウザ無料ダウンロード