今回も放射性崩壊のシミュレーションの続き。 前回の最後に、238U の半減期や崩壊定数が桁の極端な値になるねって話がありました。 今回はそれを上手く扱うやり方を見ていきます。
問題
a. プログラム cool を修正し、原子核崩壊で使われる表記に直せ。 そして、 について、 と のときの の解析解の値とオイラー法の差を計算せよ。 さらに、それぞれの の値では、その差が に比例することを示せ。
b. 放射性崩壊の割合は、 ではなく半減期 程度の大きさを単位として与えると都合がよい。 半減期は最初の原子核の半数が崩壊する時間であり、
で与えられる。 修正したプログラムでこの関係を確かめよ。
の半減期が 4.5 × 109 年なら崩壊定数はいくらか。
c. 半減期を単位として時間を測るようにプログラムを書き換えよ。 そのプログラムで 100μg の238U が最初の量の20%に減少する時間を求めよ。
d. プログラムを2次のアルゴリズムに書き換えて、設問 a と c をもう一度行え。
今回は問題 c をやります。
半減期を単位とした時間への書き換え
半減期 を単位として測った時間を (タウ)としましょう。 式で書くと
です。 この を使って放射性崩壊の法則
を書き換えます。
の定義より
なので、微分方程式 (*) の左辺は
となります。 これを用いて (*) 式は
よって
となります。 つまり、半減期を単位として測った時間では崩壊定数は一定の になることが分かります。
問題は初期の 238U が 100μg あると指定しているので、微分方程式に現れている核数 を質量 に書き換えておきましょう。 と は比例するので、書き換えは から に書き換えるよりも簡単です:
シミュレーション・スクリプト
今までのシミュレーション・スクリプトと物理量(今の場合は状態変数)の単位が違うので、変数名も t. N の代わりに tau, m を使いましょう。 238U の質量 は 100μg を単位に測ることにしましょう( なら 300μg):@GrabResolver('https://github.com/waman/groops-core/tree/master/repo') @Grab('org.waman.groops:groops-core:0.2-beta') import org.waman.groops.builder.SimulationBuilder import org.waman.groops.simulation.system.* import java.awt.Color import static java.lang.Math.* def m0 = 1.0d, m_end = m0 * 0.2d // 反復終了の質量 m_end は初期質量 m0 の 20% new SimulationBuilder().simulation{ system(new RadioactiveDecaySystem(), dtau:0.01) init(tau:0.0, m:m0) continueWhile{ it.m > m_end } console(outputTiming:FINAL) png(fileName:'problem2_7c.png', overwrite:true){ chart(title:'Problem 2.7 c', domainLabel:'\u03C4 [4.5*10^9 year]', rangeLabel:'mass [\u03BCg]'){ dot(label:'Simulation', x:'tau', y:{ it.m * 100 }) } } //時間を年単位で出力 //png(fileName:'problem2_7c2.png', overwrite:true){ // chart(title:'Problem 2.7 c', domainLabel:'time [year]', rangeLabel:'mass [\u03BCg]'){ // dot(label:'Simulation', x:{ it.tau * 4.5E9d }, y:{ it.m * 100 }) // } //} }.simulate() class RadioactiveDecaySystem extends AnnotationObservableSystem{ @State BigDecimal tau // 前の t @State double m // 前の N @Parameter BigDecimal dtau @Override void evolve(Map<String, Object> params) { m -= log(2.0d) * m * dtau.doubleValue() tau += dtau } }
- problem2_7c.groovy
- コメントアウトしているチャート出力では、単位の変換を Groovy のクロージャにさせています。 これによって、シミュレーションの実行自体は適度な精度の数値で行えて、データ出力は見やすい単位にする、ということができます。
シミュレーション結果は以下のようになります:
で の値が 50 μg (初期値の半分)になっているので、時間が半減期で測られていることが分かります。 20 μg となるのは 、年に換算すると
より 年となりました。
- 作者: ハーベイゴールド,ジャントボチニク,Harvey Gould,Jan Tobochnik,鈴木増雄,石川正勝,溜渕継博,宮島佐介
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2000/12
- メディア: 単行本
- 購入: 1人 クリック: 28回
- この商品を含むブログ (45件) を見る
- 作者: 関谷和愛,上原潤二,須江信洋,中野靖治
- 出版社/メーカー: 技術評論社
- 発売日: 2011/07/06
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 392回
- この商品を含むブログ (155件) を見る