1998年 後 期 ( 木, 9-10 ) '98 プログラミング4
1999年度は こちら
担当者(所属):
高 橋 信 介 (理工学部) : taka@si.hirosaki-u.ac.jp (授業用メール)
Last modified ( Jan. 28, 1999 )
- (E) Jan.28,'99
- 予定
-
- 第3回目のレポート課題(2倍増殖)
- 2倍増殖の初期条件
- Ep = 1000
- Emin = 10
- Tp = 0
- Tmax = 100
- λ = 1.0
- Nmax = 1000
- 結果
- 深さ(または時間)にたいする遷移曲線
- 各深さ(または時間)での度数分布
- 結果例を配布します。
- 偏微分方程式について
- 連絡
- 第3回目のレポート課題を出しました。
数値だけでも良いが、出来るだけグラフにすること。
締切は 2月10日(水)とします。
- 前回配布の統計ルーチンのフローチャートに誤りがありました。
- (D) Jan.21,'99
- (C) Dec.17,'98
- (B) Dec.10,'98
- 項目
- ちょっと Mathematica の使い方(その1)
- 情報科学科計算機システム(理工4F 実習室)から
- 総合情報処理センター実習室(1F X端末)から
- モンテカルロ法(2)
- 連絡
- (A) Dec.3,'98
- 項目
- モンテカルロ法(1)
確率過程の計算法の例
- f ( t + dt ) = f ( t )( 1 - σdt )
- f ( t ) = σ× Exp ( - σ・t )
- t の平均値 λ = 1 / σ
- f ( t ) = ( 1 / λ ) × Exp ( - t / λ )
- t = - λ ln (ξ)
- 第2回目のレポート課題
- [ 0, 1 ) の一様乱数 ξ を N 個発生
- X = - λ ln (ξ) を N 個発生
- X の度数分布を求める(余力のある者)。
- X の平均値 とλを比較する。
発生数N、X の平均値、
(Xの平均値)÷λ、cpu time
10
100
1000
10000
100000
1000000
- 連絡
- 第2回目のレポート課題を出しました。
締切は 12月18日(金)とします。
- (9) Nov.26,'98
- 項目
- 確率密度関数と度数分布
- 任意分布の乱数発生(2)
- 棄却法
ξ1、ξ2
ψ(ξ1) ≦ ξ2 の時、ξ1 を採用
- 合成法
ψ(x) = h(x)・g(x)
g(x) に簡単に発生出来る方法(逆関数法等)を用い
さらに h(x) に棄却法を適用する
- 数表による方法
ξと x の対応表を予めつくっておき、
ξから x を補間法により求める。
- XminからXmaxを細かく分割し、
XminからXiまでを数値積分する。
- Xiと ξi との対応表を作成する。
- 任意のξに対する x を lagrange補間により求める。
- 予告
f(x) : x まで変化せずにいる確率
σ : 単位長(時間、長さ)あたりに変化する確率
f ( x + dx ) = f ( x )×( 1 - σ×dx )
df(x) / dx = - σf(x)
f ( x ) = σ× exp ( -σ x )
- 連絡
- 先週扱った指数乱数が確率密度関数exp( - x )を再現していることを確認せよ。
- 指数乱数を次の3つの方法で発生させて比較せよ。
- (8) Nov.19,'98
- 項目
- TDCデータから到来方向(a,b,c)の計算
プリント配布
- 任意分布の乱数発生
- 直接法(逆変換法)
- (例)指数分布exp( - x )
-ln(ξ) --> 度数分布をとってみる。
-
-
- 連絡
Gnuplotを試してみよ。
サンプリング数と分布のばらつきを眺めてみよ。
timeコマンドにより計算時間を測ってみよ。
- (7) Nov.12,'98
- 項目
- TDCデータから到来方向の計算(次週もう一度)
di = a×xi + b×yi + c×xi − k において、
xi = pi + v×Ti×a
yi = qi + v×Ti×b
xi = ri + v×Ti×c
v は光速度、(a,b,c)は方向余弦、(p,q,r)は検出器の座標。
- 一様乱数(疑似乱数)
#include stdlib.h
srand48(1234567)
r = drand48()
- 一様乱数を用いた計算
- 疑似乱数の度数分布 ( 10万個、0.0〜1.0を100分割 )
- πの計算 ( (R1)**2 + (R2)**2 ≦ 1 )
サンプリング数とπの値を比較せよ。
π=3.1415 9265
- サイコロ ( int(6.0×R) + 1 )
1〜6の目の出る度数分布を求めてみよ。
- 彷徨運動(1次元、2次元) (次週へ)
-
-
- 連絡
- 計算時間等の求めかた。
% time a.out
計算中に別の処理をしたいときは、
% time a.out &
- 計算時間等をfileに書き込む。
% time a.out > cputime
input_file, output_file がある場合は、
% (time a.out < input_file > output_file ) >& cputime
計算中に別の処理をしたいときは、
% (time a.out < input_file > output_file ) >& cputime &
こうしておかないと処理が済むまで何も出来ません。
- 計算中にlogoutしてその場を離れたい時は、
例えば、jobgo というスクリプトファイルを
#! /bin/csh
(time a.out < input_file > output_file ) >& cputime
のように作っておき、
% nohup jobgo &
としてから logout する。
スクリプトファイル jobgo は実行可ファイルにする。
% chmod u+x jobgo
- (6) Nov.05,'98
- 項目
- 最小二乗法(2)
- 平面近似の計算(方向余弦)
平面を表す一般式 a x + b y + c z = p
但し syserr a + bC i>×b + c×c = 1 、
p は原点からの距離
3次元空間内の n 個のデータ ( xi, yi, yi ) , i=1,,,n.
di = a xi + b yi + c zi - p
di の2乗の総和が最小になる a、b、c を求める。
- テストデータ(自作する)でプログラムをチェックする。
- 疑似一様乱数(予告)
- 0.0 以上 1.0 未満のdouble型の一様乱数発生
- #include stdlib.h
srand48(1234567) ;
r = drand48() ;
- プリントを共通教育棟1F 103室(高橋)前に置いておきます。
- 連絡
- 第1回目のレポートは締切に間に合わない場合でも、必ず提出せよ。
- メールで送信された第1回レポートのprogram listは無事に受け取
られています。
- Gnuplot の使い方
- (5) Oct.29,'98
- 項目
- 最小二乗法
- 1 次近似
- n 次近似
- 到来時間差分布の指数関数近似の計算
- 平面近似による到来方向(方向余弦)の計算(簡単な説明)
-
- 連絡
- 逆行列のプログラムを完成し関数化しておくこと。
- 第1回目のレポートは締切に間に合わない場合でも、必ず提出せよ。
- (4) Oct.22,'98
- 項目
- n×n の行列の和差
( j=1,2,3, ..... n )
( i=1,2,3、 ..., n )
C( i , j ) = A( i , j )± B( i , j )
- n×n の行列の積
( j=1,2,3, ..... n )
( i=1,2,3 ..., n )
( k=1,2,3 ..., n )
C( i , j ) = C( i , j ) + A( i , k ) × B( k , j )
- 逆行列の求め方(掃き出し法)
( k=1,2,3, ..... n )
( j=k+1, k+2, ..., 2n )
A( k , j ) = A( k , j )÷A( k , k )
( i=1,2, ..., k-1, k+1, ..., n )
( j=k+1, k+2, ..., 2n )
A( i, j ) = A( i, j )
- A( i, k )×A( k, j )
(例)
(逆行列)
1.75, -1.25, 0.25
-1.25, 0.75, 0.25
0.25, 0.25, -0.25
- 最小二乗法の概要説明
- 連絡
- 2次元配列の計算法を予習
- 第1回レポートにMenu項目を追加
6. 到来時間差の最大値、最小値とその時のデータ表示
- 注意
-
- 逆行列が存在しない場合にも対応できるように(エラーで停止しないように)する。
- (3) Oct.15,'98
- 項目
- Menu方式
(Menu項目の例)
- fileの読み込み(file nameを入力)
- data表示(部分の指定)
- TDC1の分布
- 到来時間差分布
- TDC時間分解能
- 到来時間差の最大最小 ( Oct.22 追加 )
- (追加予定)
-
-
- END
Menuの各項目ごとに副programを定義
- 対話形式
- 誤入力の回避、訂正
- 連絡
-
提出は次の2つの方法(両方での提出が必須)
- e-mailでProgram listをtaka@si.hirosaki-u.ac.jpへ
- 印刷してProgram list及び処理結果を提出
Programの説明(アルゴリズム)をつけること
- Menuの追加予定を考慮せよ。
- (2) Oct.08,'98
- 項目
- fileを読む
- sample.dataの説明
- 配列変数に読み込みdisplayに表示せよ
- TDC1の度数分布を求めよ
-
- 注意
- Programがアルゴリズムどおりに正しく動いていることを必ず確認せよ!
- 連絡
- 3000 events のデータを送信(e-mail)
- (1) Oct.01,'98
- 授業概要
- 中規模のデータ処理
- 最小2乗法
- 乱数
- Monte Carlo法
- etc.
- 計算機言語( c または fortran )の復習項目
- 変数、配列
- input, output
- file open
- 繰り返し
- 条件判断
- サブプログラム(関数の定義)
- 連絡
taka@si.hirosaki-u.ac.jp