物理や化学の実験のレポートを書く場面を考えて見ましょう。
このように役立つ数値計算ツールとして、皆さんのパソコンにはScilab(サイラボと読む)が実装されています。また、第4,5端末室にはMATLAB(マットラボと読む)が使えます。今日はこれらのツールの使い方を勉強しましょう。
皆さんのパソコンにはScilabが既にインストールされています。Scilabはインタプリタと呼ばれる種類のプログラム言語です。まず、その使い方を勉強してみましょう。
ここにScilabの使い方があります。これを読んでみましょう。ScilabのアイコンをダブルクリックするとScilabの入力画面が立ち上がります。
参考文献
ポアソン分布のグラフ\ref{fig:fig-poi.eps}を描くことを考えよう.
まず,ポアソン分布
P_k(t)=\frac{(\lambda t)^k}{k!}e^{-\lambda t},~(k=0,1,2,\cdots)
を計算するための関数を定義する方法を示そう.
エディタで次を内容とするファイルpoisson.sciを作る.
function [p]=poisson(l,n)
p=zeros(n+1,1);
p(1)=exp(-l);
for i=1:n,
p(i+1)=l*p(i)/i;
end;
このファイルがScilabのパスの通っているフォルダにあるものとしてScilabに呼び出す.
--> getf('poisson.sci')
その後,次のようにすると,図が描かれる.
-->p1=poisson(2,10);
-->p1=poisson(1,10);
-->p2=poisson(2,10);
-->p3=poisson(3,10);
-->n=0:1:10
n =
! 0. 1. 2. 3. 4. 5. 6. 7.
8. 9. 10. !
-->plot2d([n' n' n'],[p1 p2 p3])
レポート、論文、書籍などを書くのにtexが有用である。texの使い方については、つぎのメモをきっかけに勉強してみて欲しい。
さて、以上のようにScilabにグラフを書かせることは簡単であるが、これを文書の形に残すためのリテラシを簡単にメモしておこう。
Scilabでグラフを描かせた後、ScilabGraphの中のFIleメニューを開く。この中にExportがあるので、これを選択する。Export Typeを
Postscipt-Latexに選びOKとすると、保存するデイレクトリとファイル名を聞かれるので、例えばexp2.epsというファイル名
にして保存する。platex2etexのファイルでは、
\documentclass{jbook}
\usepackage{graphicx}
とスタイルファイルとしてgraphicx.styを利用する。図を描かせる位置で以下のように引用する。
\begin{figure}[htbp]
\begin{center}
\includegraphics[keepaspectratio=true,height
=60mm]{exp2.eps}
\end{center}
\caption{保留時間}
\label{fig:exp2.eps}
\end{figure}
こうして、図がtexファイル中に引用できる。図を描かせるには様々な方法があるので、これはあくまで一つのスタイルである。
Scilabはフリーのツールである。4,5端末室にはMATLABと呼ばれる商用のソフトウエアが導入されている。これはグラフィックスもより高度で、ディジタル信号処理ツールボックスなどもある。また、数値計算ツールのデファクトスタンダードとなる文法を提供してきたことも見逃せない。
61号館の3階の4,5端末室でMATLAB(UNIX版)を動かしてみよう。ktermを立ち上げて> matlab &
と打てばMATLABの入力画面が立ち上がります。あとは次の文献を参考に使い方を学ぶことができる。
参考文献
浮動小数点数の規格IEEE754はつぎのサイトでその規格書を読むことができる。ぜひ読んでみて欲しい。
IEEE Standard for Binary Floating-Point Arithmetic
Calcの使い方について述べて行く。最初は電卓のように感じるが、後にその奥の深さがわかると思う。
calcをインストールすると、コマンドラインから、
$ calc
と入力するとCalcが起動する。helpと入力するとhelpにどのようなトピックスがあるか表示される。そこで、例えば、help fullとすると、すべてのhelp情報を見ることができる。
こうして、立ち上がった状態で
> 5*(2+9)
> 55
のように、数式をC言語のように記述すると、電卓のように答えを返す。ここでさらに、
> .*10.5
> 577.5
とすると、最後に計算された値が'.'というシンボルによって呼び出され(今の場合は55)計算を続行することができる。Calcでは表示上は数は小数点で表され
るが内部ではすべて有理数で記憶されている。変数を導入することもできる。
> a=.
とすると。現在の値が変数aに記憶される。
ここで、階乗の計算を行ってみよう。
> a=100
とする。a!を計算するには次のようにする。
> fact(a)
93326215443944152681699238856266700490715968264381621468592963895
21759999322991560894146397615651828625369792082722375825118521091
6864000000000000000000000000
この計算は正確であり、浮動小数点演算ではできない種類のものである(桁数が多すぎる!)。
小数点以下何桁まで精度を保つかも指定できる。
> config("display", 50)
> epsilon(1e-50)
としておけば、次のようにしてcos(1)の値が小数点以下50桁まで正しく計算される。
> cos(1)
~.54030230586813971740093660744297660373231042061792
初等関数を計算する精度が制御できることがわかる。
参考文献
連立一次方程式
1.1x + 2.2y - 3.3z = 1
2.1x - 3.2y + 3.3z = 2
-3.1x + 4.2y + 4.3z = 3
をScilabとMATLABとCalcで解き、考察を加えて、texでレポートを書きe-mailで大石(report1@oishi.info.waseda.ac.jp)まで提出せよ。
このページのURIはhttp://www.oishi.info.waseda.ac.jp/~oishi/lec2002/inf.htm
最終更新 2002/7/25