gnuplotを解析してみる [mac]

 今日も主に低学年を対象とした数学の話なのですが、中学に入ると方程式を教わるかと思います。少なくとも筆者の場合そうでした。それで、2次方程式でよく二つの方程式があった場合、例えば y = ax*x + b*x + c で、y 同士が等しくなった場合の x の値を求める問題が出ると思いますが、この二つの方程式をグラフで簡単に表せれば、グラフから大凡の x の値を目で確かめられるソフトがあります。大概すべてのOSにインストール可能なgnuplotです。前にもブログに上げましたけれども、Linuxの場合インストールだけで、迷って終わりだったのでそのソフトのメリットについて少々。今回はMacで使用した場合の説明に限ります。もうインストール済みとして、こんなグラフを用意しました。:


gnuplotの場合2.png


2次方程式と直線の方程式をプロットして、交点を探しやすくしました。ターミナルの図の通り、間違った方程式と修正して行った分も付けて置きました。最初は2次方程式がどんなグラフを描くのかも知らなければ、方程式の解を求めることも意味がない訳で、試験問題外の話です。ですので、大体の交点が分かった時点で、グリッドとxの範囲を指定しました。通常の解説では逆ですけど、この方が理にかなっていると思います。で、残念ながらgnuplotでは x, y の解を求めることは今のところできないようです、自分でプログラムを付け足せば別ですけど。私自身は余これにこだわる必要はないと思っています、というのは、天気予報図を正確に表示できたとしても予報が100%当たることがないように、捉えようによっては、この辺と言った場合の方が的を得る場合があるからです。それはそれとして今回着目しているのは、gnuplotとは表示するためのコマンドそのものが、プログラムコードだということです。つまり、学校で、もしこのようにパソコンを駆使して教える授業があるとすると、プログラムの初歩は避けて通れません。ソースコードでは解を求めるとき’=’は使えないとしました。でもここでは、f(a,b,c,x) = a*x**2 + b*x + c と=が使われています。この部分は何に当たるかと考えた時、Cでは変数に代入する場合であり、インスタンスの関数も同様です。つまり、#define と 関数 new とそのプライベート要素の定義を一遍にできることになります。すごいですねえ。そこで最後にplot, splot等で表示するのに空白演算子、代入で、関数を呼び出せる仕組みです。


しかし、弱点があります。この上の式は見辛いのです。普通教科書に載っている方程式は、y = ax² + bx +c と言う形ではないでしょうか。ところが、MacにはMacOSのころから、付属している同じようなソフトがあります。Grapherです。これも非常に便利なのですが、余りにも高度なこともできるので一般では余使われていないようです。筆者も使っていません。が、この手の使用でもいとも簡単にできてしまいます。しかも、アプリケーションなので教科書通りの表示が可能です。その画面:grapherの場合.png


がしかし、二乗を出すのにもこのパレットを使わなければなりません。授業でこのパレットを使えば「先生、この記号は何なの?」って始まり質問に答えていればもう意図した授業はできません。輪を掛けて’ * ’は、’ x ’ではないんですか、と聞かれるとその質問だけでも受け答えが大変です。しかし後者は解決する方法があります。今まで掛けるは x でしたが、* に統一する方法です。私自身から言うと未来の教育を考えれば今の内変更しても良いんじゃないかなと思っているのですが、どうでしょうか。この演算子は掛け算ばかりに使われるのではないことは知っているかと思いますが、実は筆者は通常言われている掛け算って本当は人間の思考には無いんじゃないかなと思っています。つまり、九九算で暗記する為に使われているだけで、実際暗記していない人間に取っては、例えば 4 x 5 は4を5回足した値つまり、4の次が8、8の次が12、12の次が16、で20で5回と考えるんじゃないかなと。でもこれでは時間が掛かるので、便宜上九九算で覚えさせた方が効率がいいと。(私的には前者の場合の方が応用が利くと思っています。)結果 * は足し算を指定した回数だけ実行する演算子とすれば、プログラム(コメント)でも数学でも国語でも使えます、どうでしょうか。


 話は変わりますが、MacでMacPortsからgnuplotをインストールしただけでは、デモのサンプルは試せないので、どっちにしろネットから拾ってきた方が良さそうです。alldemo.demを試すだけでも圧巻です。また、グラフを表示するソフトとしてAquaTermが使われているのですが、そのホームページから別個にダウンロードすると、自動でAquaTerm.frameworkがインストールされ、そのソースコードとアダプタとして、adaからrubyまで各言語に対応したデモをメイクして試すコードも付随しています。全部は駄目のようでしたが、Cは試すことができました。やる気であればもっと自分が思うような操作ができるサンプルを作ることができるかもしれません。


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。