繰り返しの計算は、別の形で定義することもできます。
放射性物質の崩壊する割合の計算を、「現在の割合がxのときのn秒後の割合」を求める問題だと考え直してみます。すると、
という関係になります。つまり
となります。この考え方で「現在の割合がxときからn秒後の割合を求める」関数 tc99m_from(x,n) は
# let rec tc99m_from(x,n) = if n=0 then x else tc99m_from(x *. (1.0 -. disintegration_per_sec), n-1 ) ;; val tc99m_from : float * int -> float = <fun>
のようにも定義できます。
1時間後にテクネチウムが残っている割合を求めるには, 「最初の割合が1.0のときに60*60秒後の割合」なので次のようになります:
# tc99m_from(1.0, 60*60) ;; - : float = 0.891069983611419536
これでも前のページで定義した tc99m と同じ結果が得られていることが分かります.
前の tc99m かわりとして次のような関数を定義することもできます.
# let tc99m_alt(n) = tc99m_from(1.0,n) ;; val tc99m_alt : int -> float = <fun> # tc99m_alt(60*60) ;; - : float = 0.891069983611 #
17.4.24 原子の崩壊 | 17.4.25 別の形の繰り返し | 17.4.26 別の形の繰り返し - その2 | ||
2009年度版に向けて現在作業中です.
このページに関してお気づきの点がありましたら
コメント投稿システムまでお願いします.
|
Tue, 05 Jul 2005 07:34:22 JST (1487d) |