数値計算ツールを使おう

11月14日と21日の2回は数値計算ツールについて勉強します。

11月14日

 

数値計算ツールとは何か

物理や化学の実験のレポートを書く場面を考えて見ましょう。

このように役立つ数値計算ツールとして、皆さんのパソコンにはScilab(サイラボと読む)が実装されています。また、第4,5端末室にはMATLAB(マットラボと読む)が使えます。今日はこれらのツールの使い方を勉強しましょう。

Scilabを立ち上げて動かしてみよう

皆さんのパソコンにはScilabが既にインストールされています。Scilabはインタプリタと呼ばれる種類のプログラム言語です。まず、その使い方を勉強してみましょう。

ここにScilabの使い方があります。これを読んでみましょう。ScilabのアイコンをダブルクリックするとScilabの入力画面が立ち上がります。

参考文献

  1. Linux数値計算ツール 大石 進一 著 コロナ社 2,200円 2000/10発行 ISBN4-339-02378-7

宿題

11月14日の 宿題として、「Scilabで何か面白いグラフを一枚描いて紙に出力せよ」にチャレンジしてみて欲しい。提出期限は11月21日講義の時間に。

11月21日

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が有用である。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ファイル中に引用できる。図を描かせるには様々な方法があるので、これはあくまで一つのスタイルである。

MATLABを動かそう

Scilabはフリーのツールである。4,5端末室にはMATLABと呼ばれる商用のソフトウエアが導入されている。これはグラフィックスもより高度で、ディジタル信号処理ツールボックスなどもある。また、数値計算ツールのデファクトスタンダードとなる文法を提供してきたことも見逃せない。

61号館の3階の4,5端末室でMATLAB(UNIX版)を動かしてみよう。ktermを立ち上げて

> matlab &

と打てばMATLABの入力画面が立ち上がります。あとは次の文献を参考に使い方を学ぶことができる。

参考文献

  1. Matlabによる数値計算 大石進一 著 培風館 2800円 2001/7発行 ISBN4-563-01495-8

補足(オリエンテーションでのRump先生の講義を理解するために)

浮動小数点数の規格IEEE754はつぎのサイトでその規格書を読むことができる。ぜひ読んでみて欲しい。

IEEE Standard for Binary Floating-Point Arithmetic

Calc


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. Linux数値計算ツール 大石 進一 著 コロナ社 2,200円 2000/10発行 ISBN4-339-02378-7

宿題

連立一次方程式

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