計算機実験
高嶋隆一∗
京都教育大学
平成 12 年 1 月 20 日
目次
1
2
はじめに
1.1
計算機とは
1.2
1.3
基礎知識、計算機ネットワークとは . . . . . . . . . . . . . . . . . . . . . . . . . . .
ファイアーウオール
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
基礎課題 WindowsNT,Solaris の使い方
3
4
Visual Basic など NT でのプログラム作り . . . . . . . . . . . . . . . . . . . . . . .
4
4
5
Solaris の使い方 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.1 ファイルのコピー、転送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
5
2.4
2.5
2.3.2 WWW (World Wide Web) . . . . . . . . . . . . . . . . . . . . . . . . . . .
FORTRAN の使い方 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C 言語の使い方 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
6
7
2.6
JAVA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.1
2.2
2.3
3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
3
表計算、ワープロ、電子メール、WindowsNT の使い方 . . . . . . . . . . . . . . . .
応用課題
3.1
ガイガー計数管による放射線の計数と統計法則 . . . . . . . . . . . . . . . . . . . . .
準備するもの . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
8
3.1.2 計数方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.3 実験方法と結果の解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PIN ダイオードを使った、干渉縞の光量の自動測定 . . . . . . . . . . . . . . . . . .
8
8
8
準備するもの . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
9
3.1.1
3.2
7
3.2.1
3.2.2
測定方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
∗ 高嶋研
1
3.3
3.2.3 MSDOS,N88BASIC の使い方 . . . . . . . . . . . . . . . . . . . . . . . . . .
水などの凍結前後の温度の連続測定 . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
9
準備するもの . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
9
11
3.3.1
3.3.2
3.3.3
3.4
3.6
測定方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ボルタの電池の電流の温度依存 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
準備するもの . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
11
3.4.2 測定方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ブラウン運動の画像データの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.1 準備するもの . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
12
12
3.5.2 実験方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Linux で IO カード、DAC/ADC カードを使い温度を測定する . . . . . . . . . . . .
12
12
3.4.1
3.5
測定プログラムの解説 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A パラレルインターフェースボード
13
B 統計現象
B.1 シミュレーションと乱数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B.1.1 乱数の発生法 一様乱数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
13
13
B.2 指数関数分布、正規分布、ポアッソン分布 . . . . . . . . . . . . . . . . . . . . . . .
B.3 誤差 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
13
B.3.1 線形パラメータサーチ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B.3.2 非線形パラメータサーチ . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
14
C 予備課題 エレクトロニクス(光速度の測定)
C.1 光ファイバーを通る光の速度の測定 . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.2 ダイオード、トランジスタ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
14
15
C.3 デジタル論理回路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.4 OP アンプ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
15
2
はじめに
1
計算機実験では、物理学や自然科学を学ぶ上で必要になってきている計算機の利用について、様々
な側面から実習を行う。計算機を道具として自由に使いこなすことができるようになるというのが本
実験の一つの目標の一つである。
近年、自然の振る舞いを記述するやり方の一つとして、計算機で現象をシミュレーションするとい
うやり方盛んにが行われるようになってきた。実験の計画を立てる上でも、またその結果を解析し
データを処理する上でも計算機の利用は欠かせないものとなってきている。またその結果を公開し
発表するためにも計算機の利用は欠かせないものである。また、近年のめざましい計算能力の向上、
使いやすいユーザーインターフェースの登場によって、利用が広まりつつある。またインターネット
の利用の広まりによって、教育研究のスタイルに大きなインパクトを与えつつある計算機ネットワー
クの利用法を学ぶことも必要である。
前半に基礎的理解を深めるために10月から情報センターで学習する。毎回簡単なレポートを提
出する。
応用課題は 12 月からおこなう。6 課題をローテーション方式で行なう。3名程度で行う。毎回簡
単なレポートを提出する。
1.1
計算機とは
計算機とは情報を処理する機械である。人間が日常使うのは、文字や言葉であるが、機械はそれら
を簡単に処理できない。それで英数字を表現するために 8 個の二つの状態を使うことになった。これ
を 1 バイトのデータと呼ぶ。これは最初は紙テープやカードに空いた穴として記録された。最近で
は、磁力の強さや光の強さの変化を磁気テープや CDROM に記録するようになっている。また計算
機の内部で高速に処理するためにメモリーというものが使われている。たくさんの小さなコンデン
サーに電気が溜っていたり溜っていなかったりすることが、文字がこのなかに記録されるているとい
うことに対応する。
1.2
基礎知識、計算機ネットワークとは
計算機によるネットワークシステムを簡単に説明することは難しい。具体的にはイーサネットケー
ブルによって接続されているローカルエリアネットワークが身近にある。これが、ルーターと呼ばれ
るデジタル交換機によって外部に接続され、全体がワイドエリアネットワークを構成する。イーサ
ネット上ではパケットと呼ばれるデーターのかたまりがやりとりされており、データー通信のフォー
マットによってそれぞれ、TCP/IP,AppleTalk,IPX 等の種類がある。このうち TCP/IP(Transmission
Contorol Protocol / Internet Protocol ) が全世界規模で利用されているインターネットのデーター
フォーマットである。これによって世界中のどの計算機とも簡単にデータのやりとりができるように
なる。そのための計算機の各々の識別番号が IP Address と呼ばれる番号である。番号を覚えるのは
大変なので計算機に名前を付ける。計算機の名前と IP Address のデータベースを持っている計算機
のことをネームサーバーとよぶ。
このリクエストにいつでも応じる体制で走っているプログラムがデーモンプロセスであり、サー
バープロセスとも呼ばれる。サーバープロセスに情報提供の要求を出すのがクライアントプロセス
である。計算機を使うという操作も、ディスプレイに実際に図を書くサーバープロセスを動かす計算
3
機と、こういう図を書いて欲しいとリクエストをするクライアントプロセスを動かす計算機は違って
いるのがふつうである。 ファイアーウオール
1.3
教育大学の LAN(Local Area Network) はファイアーウオールと呼ばれる計算機を通じて大学の計算
機とつながっている。したがって proxy server(代理サーバー) の wspro を使うという設定を netscape
等のソフトウエアにする必要がある。このとき 8080 というソケット番号なるものを指定する必要が
ある。
基礎課題 WindowsNT,Solaris の使い方
2
2.1
表計算、ワープロ、電子メール、WindowsNT の使い方
表計算、ワープロ、Windows、Macintosh とその利用、これらは現代の読み書き算盤とも呼ぶべ
きものである。まず、楽しく使うために、ブラインドタッチができるように練習しておこう。これは
D と K のキーに左右の人差し指をおいておき画面を見ながらタイプできるようにするというもので
ある・
例えば Exel には豊富な関数が用意されているので統計計算などが簡単にできる。実際にワークシー
トの中にはいろいろな関数を埋め込むことができ、計算を電卓でおこなう必要はない。例えば B の
カラムの2から6まで数値が入っているとすると平均値をある欄に入れるには =average(b2:b6) と
いう式を書いておけば良い。分散なら =var(b2:b6) 、標準偏差なら =stdev(b2:b6) とする。これら
の関数はマウスを使って簡単にワークシートにはめ込めるようになっている。練習してみよう。
ワープロでは、英語の単語のスペルチェック、構文チェックを自動で行ってくれるものがある。図
や表も取り込むことができるので、説得力のあるレポートを作ることができる。箇条書や字下げの工
夫を行って見やすい文書を作るようにすることが大切である。ただ、自由にレイアウトができる半面
定型的な処理を行ってくれないと言う欠点がある。しかも新しいバージョンで作ったファイルを他の
人がくれたときに古いバージョンしか持っていなかったりすると読めなかったりすることが最大の問
題点である。そこで、ワープロのファイルを PDF(Portable Document Format) というものにして
おくと便利である。研究者の間ではポストスクリプトファイルが良く似たものとして使われている。
また文書をやりとりするときには plain text という形式が便利である。これは単なる 1byte の文
字が連続するファイルのことである。メールのファイルは基本的にはこの形式になっていて ascii file
とも呼ばれる。ascii 文字は 7bit なので残りの 1bit を変える処理プログラムがデータ通信の途中に
あると、SJIS,EUC の日本語が文字化けする。そのためにデータ通信には JIS コードが使用される。
計算機の内部では SJIS,EUC のほうが処理が早いのでこちらが使われている。日本語文字は基本的
に 16bit のコードである。
京都教育大学でメールのやりとりをしている基本的な計算機の名前は、wsml.kyokyo-u.ac.jp であ
る。この計算機にログオンしてメールを読むこともできるが、最近よくやられているのはパーソナ
ルコンピュータへメールを読み込むプログラム使うやり方である。この例としては WindowsNT な
ら、winYAT が、Mac なら Eudora、クラリスメール、netscape がよく使われる。書類を添付という
メニューを使っていろんな種類のファイルを送ることができる機能もある。このとき、wsml はSM
TPサーバー(Send Mail Transfer Protocol)とか POP サーバー(Post Office Protocol)というよ
4
うに呼ばれる。
メールにファイルを添付するときにはあいてが対応するソフトウエアを持っていることを知ってい
る必要がある。それが分からないときには PDF(Portable Document Format) に変換してから添付
すると良い。Windows NT は一つまたは複数の計算機を、不特定の人数で利用するためのものであ
る。ユーザーの ID とパスワードで個別の環境を実現できるようにできている。計算機そのものの基
本設定は administrator というユーザー ID をもった者が行える。個人のファイルは自分のユーザー
ID のついたファイルにかならず書き込むようにすること。
Visual Basic など NT でのプログラム作り
2.2
Visual Basic は簡単なプログラムを作るのに便利である。コマンドボタンに次のコードをいれて
おくと、エクセルが起動されて、sin 関数のグラフを書くことができる。現在のバージョンは 5.0 で
ある。
Private Sub Command1_Click()
Set obj = CreateObject("excel.application")
obj.Visible = True
obj.workbooks.Add
For i = 1 To 180
a = i * 3.1416 / 180
obj.cells(i, 1).Value = i
obj.cells(i, 2).Value = Sin(a)
Next i
End Sub
サーチエンジンなどでプログラムの作り方が書いてあるページがあるので、それらを利用して、勉強
し、結果をレポートにまとめよ。
2.3
Solaris の使い方
WindowsNT の他に Solaris が使えるようになっているが、これについて説明する。Solaris は UNIX
とよばれるオペレーティングシステムの一つである。非常に使いやすくなっているので利用してみよ
う。使い方を以下の URL にまとめてあるので読んでおく。
http://wsunix.kyokyo-u.ac.jp/ takasima/index.html
2.3.1
ファイルのコピー、転送
Unix ではアカウントを持っている人のファイルを見ることは簡単にできる。例えば高嶋先生のファ
イルは takasima というディレクトリの下にある。これでは試験問題やメールが見れてしまう。これ
を防ぐにはファイル aaa の属性をかえる。
chmod 600 aaa
5
こうしておくと自分にしか読めないファイルができる。ファイルにはそれぞれ所有者、グループ、そ
の多すべてに対してアクセスを制限するスイッチがついている。Read,Write,eXecution のスイッチ
がそれである。三つのスイッチが所有者、グループ、その多すべてに対してあるので 9 個のスイッチ
があるわけである。これがどうなっているか調べるためには以下のコマンドを送る。
ls -l
つぎに、ftp (File Transfer Protocol )について説明する。これは違う計算機の間で TCP/IP を
用いてデータをやりとりするためのツールである。filenme.f というプログラムを wsml から読み込
み、fileModified.f を書き込むには以下の通りおこなう。
ftp wsunix
user name: keisanki
password: .....
ftp> get filename.f
ftp> put fileModified.f
ftp> quit
この場合相手の計算機にアカウントがないとアクセスできないが、アカウントがなくてもアクセスで
きるすべての人に公開されたディスクスペースを持つ計算機がある。この様なサイトを anonymous
ftp site という。ftp の機能をグラフィックユーザーインタフェースを使って実現したものとして、Mac
では Fetch という Utility があり、これによってバイナリーコードはすぐに利用可能なアプリケーショ
ンのかたちになる。圧縮されているものは自動的に解凍される。充実しているのは理化学研究所のも
のである。
2.3.2
WWW (World Wide Web)
このほか World Wide Web というネットワーク利用のシステムがある。これはハイパーテキストと
いって情報がインターネットの環境を通じて結びついており、必要な情報を自分の計算機に情報網をた
どって持ってくることができる。情報を取ってくるだけでなく、自分でHTML (Hyper Text Markup
Language) ファイルを書いて情報を発信しよう。Web server の wsunix 上でアカウント rig1234 を取
得したら public html というディレクトリにファイル index.html を作っておくと rig1234/index.html
として学内から参照することができる。ただし学外からは参照できない。
2.4
FORTRAN の使い方
Fortran(FORmura TRANslator) は古くからある言語だが、ライブラリを使って大きなプログラ
ムを書くことができ、実行形式のプログラムを生成する。このライブラリというものが大変有効なた
め、実際の科学技術計算は今の所、ほとんどこの言語を使って書かれている。プログラムはいろい
ろなサンプルプログラムを書き換えながら勉強するのが早道といえる。FORTRAN のファイル aaa.f
をコンパイルするには以下のコマンドを実行する。これによって実行ファイル aaa ができる。これは
binary ファイルといって読むことはできない。
6
f77 -o aaa aaa.f
C 言語の使い方
2.5
このほかに最近よく使われる言語として C 言語と呼ばれるものがある。これは実はオペレーティ
ングシステムやウインドウシステムと呼ばれる計算機のもっとも基本的なソフトウエアを書くため
に使われている言語である。したがって、基本ソフトウエアや、関数ライブラリのソースコードがこ
れを使って欠かれているため、多くのソフトウエアは基本的には C 言語で書かれることになる。ま
た、ソースコードを実行形式に変換するための道具として make と呼ばれるツールがある。
C言語に関連して、フリーソフトウエアについてもう少し述べておこう。パソコンのソフトウエア
の多くのソフトウエアはお金を出して買う必要がある。ところが、これにたいして、ソフトウエアは
基本的に無償で提供されて行くべきであるという考えを持った人たちによって、フリーソフトウエ
アというものが開発されている。この基本的な開発環境となるものが UNIX であり、C言語である。
特に最近は Linux という OS が無料で配布されているので計算機が好きな人には人気がある。
このほかに、オペレーティングシステムに直接命令を送るために UNIX ではシェルというものが
ある。シェルとはベーシックのインタプリタのようなものだと思ってもらっていいだろう。BASIC
のプログラムに相当するのものがシェルスクリプトと呼ばれるものである。Solasis で login したとき
に実行されるのは.cshrc と.dtprofile というスクリプトである。
シェルから呼び出されるコマンドはいくつかの引数を持っているのが普通である。引数とは、コマ
ンドや関数に渡されるパラメータである。例えばテープアーカイブを取る tar コマンドについて調べ
てみようと思うときには次のコマンドを打ち込む。
man tar
tar がコマンドの説明をしてくれる man コマンドの引数である。これらの計算機をうまく使うため
の道具を目的にあわせて選択し、仕事の能率を上げることができるようにトレーニングを行って欲
しい。
2.6
JAVA
プログラムは、それを開発した計算機で使うことしか一般的にはできない。ところが java には、
実行プログラムを Web ブラウザから呼び出して使える簡便な機構が提供されている。もちろん移植
も手間いらずである。しかも Java Development Kit という開発セットが無料で提供されている。
WindowsNT では J++という開発環境が提供されているのでこれを使うことにする。Web 上で面
白そうなプログラムを見つけたら、自分のところにファイルフォルダをつくってその中に保存しコン
パイルしてみる。aaa.java というプログラムをコンパイルすると aaa.class という実行バイトコード
ができる。aaa.html というファイルをつくって Web から呼び出せるようにしておくと便利である。
3
応用課題
最初の 3 課題は昨年度も行ったものだが、後の 3 課題は今年初めてである。課題は最後までできて
ない場合も含めて報告書を作成する。課題の机の上のファイルに報告書を閉じるようにする。
7
3.1
ガイガー計数管による放射線の計数と統計法則
アメリシウム 241 という放射線源から出てくるα線を半導体検出器を使って計数する。決まった
時間に何個来るかを周波数カウンターを使って数える。計数を 100 回行ない、計数頻度をカレイダグ
ラフを使ってグラフ化する。計数の平均値よりポアッソン分布を作成し、実験と比較せよ。
3.1.1
準備するもの
電源 3 個、シンクロスコープ、暗箱、半導体検出器、プリアンプ、ディスクリミネーター、周波数
カウンター
3.1.2
計数方法
まず 3 つある電源をほぼ同時に on にする。電圧は電源の上に表示してある電圧がかかるようにす
る。α線源からの信号はプリアンプリファイアーを使って増幅される。シンクロスコープを使って信
号を観測する。信号は正極性で、200mV 程度の電圧のピーク値を持つ。信号は 1µsec 程度の立ち上
がり時間を有するパルスである。シンクロスコープのトリガーつまみを動かして、ノイズレベルの
見当をつける。ノイズを落せる電圧は何ボルトになるかを調べよ。プリアンプの出力をコンパレー
タ(電圧比較器 ディスクリミネーター)に接続する。赤い端子の電圧と箱のアルミのアース電圧と
の差をデジタルボルトメータで読みとりながら、黒い棒を回すと読みとり電圧が変化する。この電圧
は閾値電圧またはスレッショルド電圧と呼ばれる。パルスがこの値を越えると 5 ボルトの電気パルス
が電圧器比較器のの出力側から出てくるのをシンクロスコープで観察する。うまく信号がとれてい
ればこれを、周波数カウンターに接続する。赤いランプがついている時間に来たパルスが、ランプが
ついていない時間に表示される仕組みになっている。
3.1.3
実験方法と結果の解析
1 秒間に計数されるα線の数を記録する。これを 100 回繰り返すことにより、測定の統計的バラツ
キを観測せよ。実験結果を以下に示すポアッソン分布と比較する方法を検討せよ。
P (n) =
e−µ µn
n
(1)
この分布は計数の平均値が µ のとき、計数が n 個になる確率を示している。従ってこの実験のよう
に 100 回計数した場合には、この分布に 100 をかけたものが、その計数の出現回数となる。ヒスト
グラムをとる時には、bin 幅をどう選ぶかが難しい問題となる。
3.2
3.2.1
PIN ダイオードを使った、干渉縞の光量の自動測定
準備するもの
PC9800VM、PIN ダイオード、移動架台、架台の計算機インターフェース、ADC ボード、バイア
ス電源、レーザー、暗幕
8
3.2.2
測定方法
PC9801VM に入っているインターフェースボードを使ってステップモーター付きの移動架台を動
かす。参考にするプログラム名は¥keisanki¥kadai6¥moter.bas である。このプログラムを読んで
動作原理を理解する。フォトインタラプタやリミッタスイッチなどの状態に応じて制御の仕方を変え
るプログラムを書く。フォトダイオードを移動架台に載せて干渉パターンの自動測定のをおこなう。
ADC は8ビットのもので、単独に読み出しを行なう時は、adc8bit.bas というプログラムを使う。位
置ぎめを行ないながら、光量を読み出すプログラム plot.bas を使って測定を行なう。現在は画面の
x 座標を記録しているがこれをモーターのステップ数を記録するプログラムをにせよ。モータの 1 ス
テップと移動距離の関係を求めよ。データをフロッピーディスクに記録する。これを Macintosh の
カレイダグラフ使ってグラフにする。これを自分のホームページに表示せよ。
3.2.3
MSDOS,N88BASIC の使い方
電源を入れると MSDOS のコマンドを受けつけるようになる。ディレクトリの移動は UNIX とお
なじ cd コマンドになる。ただし大文字小文字の区別はない。ディレクトリの区切りは半角の¥であ
る。今のディレクトリのファイル名を見るには dir または dir/w を使う。目的のディレクトリに移動
して n88basic コマンドを実行して、basic のプログラムを実行するモードにする。load”xxx.bas” と
してファイルを読み込む。list コマンドでファイルの中身を見ることができる。edit nnn として、nnn
行から表示させるとスクロールキーガ使えるので便利である。行番号と命令を打ち込むだけでプログ
ラムが書きかわる。ファイルに保存されているわけではないので save”yyy.bas” として保存しておく。
3.3
水などの凍結前後の温度の連続測定
水などが凍結する時に過冷却現象が起きると考えられる。この現象を観測できるかどうか調べる。
また温度をあげて氷が解ける時の温度変化を記録する。
3.3.1
準備するもの
PC(dell)、デジタルマルチメーター 195A、サーモスコープ、白金抵抗温度計、コップ
3.3.2
測定プログラムの解説
keisanki というフォルダ中のの hello というフォルダを開く。この中の hello というファイルがソー
スファイルである。これをダブルクリックすると Visual C++の開発環境が立ち上がる。プログラ
ムは C 言語で書いてあるがやっていることは単純である。まず General Purpose Interface Bus 略し
て GPIB を初期化してやる。この GPIB の関数ライブラリの解説は CONTECW95¥Gpib5td とい
うヘルプファイルに詳しく書かれているのでこれを見ながら以下の文を読んで欲しい。Visual C++
の開発環境ビルドメニューの設定のところでリンクのライブラリ名に apiGpib1.lib, apiGpiib2.lib,
apiGpib3.lib, apiGpib4.lib が含まれていないとコンパイルできないので注意する。 初期化は以下の
命令で実行される。
printf("GpIni Ret=%x\n",Ret);
9
Reg=0x09;
Ret = GpBoardsts(Reg, &Preg);
printf("GpBoardsts Preg=%d\n",Preg);
IfcTime=100;
Ret = GpIfc(IfcTime);/*指定した値 (1∼255) × 100[μ sec]*/
printf("GpIfc Ret=%d\n",Ret);
Ret = GpRen();/*Remote Enable*/
printf("GpRen Ret=%d\n",Ret);
これによって命令を送っても反応しない場合にあきらめるまでの時間 (Timeout) が 10 秒にセットさ
れる。
次にデジタルマルチメーターを温度計測のモードに変更する。これは計算機からデジタルマルチ
メーターに以下のようにコマンドを送ることによって実現する。計算機がトーカーでデジタルマルチ
メーターがリスナーとなる。
tCmd[0] = 2; /* トーカ+リスナ数 (マスタモード時)*/
tCmd[1] = 0; /* トーカアドレス */
tCmd[2] = 16; /* リスナアドレス */
/* Cmd[3] = 7;
〃
*/
Srlen = 3; /* 送信データ長 */
lstrcpy(Srbuf, "F6X"); /* 送信データ配列 */
Ret = GpTalk(tCmd, Srlen, Srbuf);
printf("GpTalk Ret=%d\n",Ret);
次に 10 秒毎に温度を読みとって、ファイル temperture.dat に書き込む。ファイルには計測時間を秒
のみに変換した値と、マルチメーターから読み出した文字列が記録される。この中で for 文の中に直
接読み出しの実行回数がはいっているが、これを入力するやり方に変更せよ。
tloc= time( NULL);
lt = localtime( & tloc );
lastsec=3600*(*lt).tm_hour+60*(*lt).tm_min+(*lt).tm_sec;
for(itime=0;itime<5;itime++){
Srlen = 3; /* 送信データ長 */
lstrcpy(Srbuf, "B1X"); /* 送信データ配列 */
Ret = GpTalk(tCmd, Srlen, Srbuf);
printf("GpTalk Inquie Ret=%d\n",Ret);
lCmd[0] = 2; /* トーカ+リスナ数 (マスタモード時)*/
lCmd[1] = 16; /* トーカアドレス */
lCmd[2] = 0; /* リスナアドレス */
/*Cmd[3] = 7;*/ /*
〃
*/
10
Srlen = 254; /* 最大受信可能バイト長 */
Ret = GpListen(lCmd, &Srlen, Srbuf);
printf("GpListen Ret=%d\n",Ret);
printf("GpListen Srbuf=%s\n",Srbuf);
tloc= time( NULL);
lt = localtime( & tloc );
sectime=3600*(*lt).tm_hour+60*(*lt).tm_min+(*lt).tm_sec;
fprintf(fp,"%d %s\r\n",sectime,Srbuf);
printf("result=%d %s\n",sectime,Srbuf);
while(sectime-lastsec < 10){
tloc= time( NULL);
lt = localtime( & tloc );
sectime=3600*(*lt).tm_hour+60*(*lt).tm_min+(*lt).tm_sec;
}
lastsec=sectime;
}
ここではマルチメータにバッファのデータを送って欲しいと頼んだ後、リッスンモードになってデー
タが来るのを待つ。データが来たら fprintf 命令でファイルに結果を書く。10 秒経過したことを何度
も調べるループを作っているがこれは効率が良くない。もっと効率が良くてわかりやすいプログラム
に変更すべきであろう。
3.3.3
測定方法
サーモスコープの電源を入れて、水の冷却を開始する。設定温度はできるだけ低くしておく。温度
が 5 度ぐらいになったらプログラムを開始して、記録をはじめる。30 分ぐらいの計測で冷却の様子
がわかる。これをカレイダグラフを使ってグラフにプロットする。さらに、サーモスコープの設定温
度をあげて、今度は氷の融解現象を計測する。結果を wsunix のホームページに表示せよ。
3.4
ボルタの電池の電流の温度依存
電池の能力は温度に依存すると言われている。これについてサンゴ実験セットを使って計測する。
3.4.1
準備するもの
ビーカー、銅板、亜鉛板、食塩、ガスバーナー、さんご実験セット (液温センサー、電流センサー)、
PC 9801
11
図 1: ボルタの電池の電流の温度依存測定装置
3.4.2
測定方法
実験 1 組み込みプログラムを使っての実験をおこなう。cube Sensor ユーザーズマニュアルを参照
しながら実験を行う。プログラムのインストールは既に行ってある。コンピューターの DOS
モードを使うので、Windows が立ち上がったら、終了メニューの DOS モードを選択して再度
計算機を起動する。cd b:\sensor\bootup を行って計測プログラムを動かす。このプログラム
は特殊なデータ形式を使っているので、後でデータを処理することが今のところできない。ビー
カーに水を入れ電極を図??のようにセットする。液温センサーをセットする。電極間を流れる
電流を電流センサーを使って計測する。バーナーに火をつけたら計測を開始せよ。
実験 2BASIC のプログラムを作って1の実験と同じ事を行う。ただし、結果を Windows で使える
ようにすること。このプログラム作りはいろいろな参考資料を見ながら行う。
3.5
ブラウン運動の画像データの作成
物質が小さな粒子でできていることを知る手段として、ブラウン運動が利用されてきた。アボガド
ロ数の推定にも使われているようである。ブラウン運動を観察すると同時に、動画ファイルを作成す
ることを試みる。
3.5.1
準備するもの
CCD カメラ、顕微鏡レンズアダプター、AV マック、スライドガラス、粘土、線香、カバーグラス
12
3.5.2
実験方法
スライドガラスの上に粘土の輪を作り、カバーグラスをとりつける。これに線香の煙をいれて、ブ
ラウン運動が観察できるようにする。顕微鏡の接眼レンズを取り外して、顕微鏡レンズアダプターを
取り付けた CCD カメラを接続する。[5]
画像を取り込むソフトウエアは Fusion Rcorder を使う。これは Apple エクストラというファイル
フォルダーの中にはいっている。作成した画像は、Apple quick-time フォーマットなら.mov, inet
フォルダーにはいっている sparcle を使って mpeg 画像フォーマットに変換したら.mpeg と言う拡張
子をファイルに付けておくとそのファイルを<a href=’xxx.mov’’>xxx</a>というかたちで参照で
きるようになる。
3.6
Linux で IO カード、DAC/ADC カードを使い温度を測定する
実験装置では発熱が問題となることがある。例えばシリコン検出器は逆電圧をかけることにより
空乏化させて信号をとりだすが、放射線を浴びると空乏化しにくくなる。そこで逆電圧の電圧をあげ
ることになるが、上げすぎると発熱してより電流が流れ発熱する悪循環に陥る。また半導体のドナー
が増えるのを防ぐためにも冷却が必要である。この問題に関する熱流体解析が行われている。ここで
は実験的に熱の出入りの問題を取り扱う。冷却装置の運転し冷却装置近傍をどこまで冷やすことがで
きるかを調べる。
3.6.1
準備するもの
DAC/ADC カードつき Linux 計算機、LM35DZ を用いた温度センサーボード (高嶋作)、アルミの
板、フィルム発熱体、ペルチェ素子を使った冷却装置
3.6.2
実験方法
測定に使うプログラムは temperature/tempera2 である。このプログラムは tempera2.c と c3201lib.c
をコンパイルして作ってある。システム管理のメモリー領域に直接値を書き込むプログラムなので、
root 特権で実行する必要がある。通常の利用者から使うためにはファイルを root 所有にして、実行
属性として s(スティッキービット) を指定する必要があるらしい。プログラムを動かすと、測定回数
を聞いて来るので 100 ぐらいの数字を入れる。これで 1000 秒間の連続測定となる。
実験はフィルムヒーターに電流を流してアルミの板を温める。プログラムをスタートして 10 回ぐ
らいデータをとったら、ペルチェ素子を使った冷却装置の運転を開始する。ペルチェ素子に流す電流
は最大で 2A である。冷却装置近傍をどこまで冷やすことができるかを調べる。
プログラムは temp0.dat temp1.dat の二つのファイルを作成する。プログラム実行中に出力される
値は、測定回数と二つのセンサーの出力電圧である。温度センサーボードの上にある可変抵抗器で出
力電圧と温度の比例係数を調節することができる。電圧は mV で表示される。温度係数は 10mV/C
なので、表示される数字を 10 で割ったものが摂氏の温度となる。
結果をプロットして画面でみるときには以下のようにする。
gnuplot
13
gnuplot>plot "temp0.dat", "temp1.dat"
結果をポストスクリプトファイルにするときには以下のようにする。
gnuplot>set term postscript
gnuplot>set output ’temp.ps’
gnuplot>plot "temp0.dat", "temp1.dat"
ポストスクリプトファイルはテキストデータでできているが ghostview と言うプログラムで見るこ
とができる。temp.ps と言うファイルができているはずなのでこれを JPEG や GIF フォーマットに
変換してホームページにのせてみる。
A
パラレルインターフェースボード
パラレルインターフェースボードは、パソコンから外部の計測機器 (ADC, ステッピングモーター、
リレー)などを制御するのに便利な道具である。詳しいことは、
「パソコンによる物理計測入門」
(平
田著、共立出版)を参照のこと。[3] また98用のボードは、
「パソコン計測制御とインターフェース
活用法」
(戸狩、津坂、技術評論社)に示してあるものである。[4] いままで、何枚かのボードを制作
してきている。まず学習用 IO ボードをつなぎ、原理を理解すること。
パラレル IO ボードは、A,B,C の8ビットポートを入出力に使う。どのポートを入出力に使うかの
指定もできる。ボードにのっている IC は、8255 という番号の IC で、例えば&hD0(&h は16進表
現使用の宣言)のアドレスが指定され、IO のビットがオンになるとチップにいろいろの動作をさせ
ることができる。例えば、out(&hd6,&h80) というベーシック言語の命令を送ると、A,B,C の全ポー
トが出力モードになる。A ポートの出力を8ビットすべて5Vにするには、out(&hd0,&hff) という
命令を送る。
B
B.1
統計現象
シミュレーションと乱数
実際の物理過程として例えば粒子の反応過程ならば、初期状態も、粒子の速度や方向もそれぞれま
ちまちであり、分布関数を持っている。また途中の多重散乱過程なども粒子によっていろいろな場合
がある。複雑な物理過程の中から真に求める物理量を引き出すために分かっている物理過程を含め
て、シミュレーションを行う必要がある。一つ一つの物理過程にぶつかる毎にさいころを振るという
のがモンテカルロ法によるシミュレーションである。
荷電粒子が物質中を進行するとき多重散乱によってどのように軌跡が揺らぐかをシミュレーション
した例を使って演習してみよう。
B.1.1
乱数の発生法 一様乱数
一様乱数は一般には合同乗算法を使って発生させる。この一様乱数を元に、指数関数分布、正規分
布、ポアッソン分布の形となる乱数を発生させる。
14
B.2
指数関数分布、正規分布、ポアッソン分布
確率分布関数の形をした乱数を作る方法は、まず最初に分布関数の積分関数を作る。この関数の逆
関数の変数に対して一様乱数を発生させると、対応する関数の値が、求める分布関数となる乱数とな
る。図を描いてみると分かり易い。
B.3
誤差
データが事象の数であらわされるとき、つまり何回起こったかというようなデータの場合は統計
的な誤差の判定が必要となる。統計的な誤差の解釈抜きにデータについて議論することはできない。
たとえば、地上には一秒間に1平方メートルあたり約100個のミュー粒子が降り注ぎあらゆる
ものを貫通して、地面の中で止まる。この場合100個という測定値の揺らぎ(標準偏差)は、この
値の平方根である、10個ということになる。このことは、揺らぎを分布関数の形にあらわに含まな
いポアッソン分布の揺らぎは、平均値の平方根になるということと一致している。
また、検出効率のように、粒子が100回通過したうちの90回検出できたという時には、揺らぎ
は3回ということになる。これは二項分布の揺らぎを適用して計算する。これは、通過回数100回
と、検出確率 0.9 と非検出確率 0.1 の積の平方根をとったものとなる。このように計数が限られた量
であることによる誤差を統計誤差と呼ぶ。 この統計誤差と、計数以外の計測の不確定さから来る誤
差である系統誤差のそれぞれの2乗を加えたものの平方根が最終的な誤差になる。
B.3.1
線形パラメータサーチ
グラフから、傾きや切片を求めると言うようなものがこの線形パラメータサーチの例である。よく
使われる方法として最少2乗法がある。これは、パラメータを含んだ理論曲線とデータの差の2乗を
その点での誤差の2乗で割った値をすべてのデータ点で求めて、それらの和を取った値をカイ2乗関
数と呼び、これを最少にするパラメータを探すというものである。グラフをべき乗関数の和で近似す
ると言うようなときは、機械的な計算を一回行うだけで簡単にパラメータがもとまる。
B.3.2
非線形パラメータサーチ
グラフをガウス関数でフィットすると言うような例が非線形パラメータサーチである。この場合
は簡単にパラメータがもとまらないので、試行錯誤を行ってカイ2乗関数を最少にするようにパラ
メータを探す。やり方としては最初にパラメータ区間を荒くすべてカバーして最小値を探し、そこか
ら関数の減少方向にパラメータを少しずつ動かしていく。実際にはパソコンの KaleidaGraph の関数
Fitting 機能などを使ってみるとよい。このとき、フィットの関数定義のウィンドウが示されるが、そ
の中で mo が データであり、m1,m2... がフィットするパラメータである。UNIX では PAW(Physics
Analysis Workstation) というツールがある。
15
C
C.1
予備課題 エレクトロニクス(光速度の測定)
光ファイバーを通る光の速度の測定
光ファイバーは、屈折率の低い界面との全反射を利用した信号伝送線である。低い屈折率のコー
ティング層はこの界面の保護の役割も担っている。レーザーダイオードをパルサーによってパルス発
光させ、この光を長さの違った光ファイバーを通し、光を PIN ダイオードで受光し、信号をオッシ
ロスコープで観察する。光ファイバーを通ることによる伝搬遅延時間を測定し、ファイバー内の光速
度を計算する。また、同軸ケーブルを伝わるパルス信号についいても同軸ケーブルの長さを変えなが
ら伝搬遅延時間を計測する。
C.2
ダイオード、トランジスタ
まずダイオードについいてのべる。シリコンは、バンドギャップ 1.1V である。n 型ではドナー、
p 型ではアクセプタの不純物準位がありこれが接合されていると両方のフェルミ準位が同じになるよ
うに接合領域に電荷がたまる。こうなるとバンドが境界領域で段差をもつために、キャリヤーが接合
を越えて移動することはできない。しかしながら、バンドの段差を打ち消すような電圧をかけていく
とキャリヤが接合を越えて浸入しお互いの領域で電子とホールの対消滅が起こりエネルギーが境界
領域で発生する。発光ダイオードはこの時のエネルギーが光になったものである。勿論逆電圧をかけ
るとキャリアーのない領域が広がり導電性がなくなる。 バイポーラトランジスタは、中間の半導体
のバンドの段差を小さくすることによって、キャリヤの移動を調節するもので、動作領域ではベース
電流の10倍から100倍のコレクタ電流が流れ、ベース電流わずかに変化させることでコレクタ
電流を大きく変えることができる。npn 半導体の場合、キャリアーである電子は、ベースを越えエ
ミッタからコレクタへ流れ込む。
C.3
デジタル論理回路
この回路は、時間的に変化するゼロと1の状態を表現するのに用いる。ゼロの状態がゼロボルト近
傍で、1の状態が 2.4V 以上である論理回路を TTL 論理回路と呼ぶ。これらはいくつかの基本ゲー
ト IC により、回路がくまれる。代表的なものはバイポーラートランジスタから構成される SN74 シ
リーズがある。 バイポーラトランジスタとは pnp や npn トランジスタのことで、キャリヤーとして
電子とホールの両方を使うのでバイポーラ(両極性の)と呼ばれる。バイポーラトランジスタのほか
に CMOS(Complimentaly Metal Oxide Silicon transistor) と呼ばれるものがある。これは、金属電
極と SiO2,Si の構造を持ったトランジスタである、nMOS と pMOS を組み合わせて、消費電力を押
さえたトランジスタである。
C.4
OP アンプ
OP アンプ (Operational Amplifier)、はセンサーなどからの微少信号を増幅して、計測器に入力す
るときなどに使われている。自分で計測器を作るときなどには、動作原理を学んでおくことが必要で
ある。基本的には負帰還増幅 (negative feedback) というやり方で本質的に高い増幅度を持つ増幅器
を帰還抵抗でより低い増幅度に押さえながら安定化するというやり方をとっている。
16
参考文献
[1] 坂本、高エネルギー屋のためのユニックス入門
[2] 早野、高橋、計算物理、共立出版
[3] 平田、パソコンによる物理計測入門、共立出版
[4] 戸狩、津坂、パソコン計測制御とインターフェース活用法、技術評論社
[5] 福島、芝原、ブラウン運動の簡単な観察法、フォーラム理科教育 No.1 p49-53
17
ダウンロード

テキスト - 京都教育大学