計算物理学入門

微分方程式が解けない

原子核の崩壊のシミュレーションで核種が2種類ある場合、解析的に値を求めるには連立微分方程式を解く必要がある。でも、その微分方程式が解けなかった。微分法定式なんて、かれこれ10年以上解いていないから解き方をすっかり忘れてしまっていた。数学は、高…

原子核の崩壊のシミュレーション 〜 『計算物理学入門』読み(その8)

放射性原子核の崩壊の基本法則は以下のように書ける。 ここで、λは崩壊定数である。 この方程式の形は、ニュートンの冷却の法則のシミュレーションとほぼ同じ形をしている。 それ故、放射性崩壊のシミュレーションのプログラムは以下の通りの短いものになる…

リサージュ図形のプロット 〜 『計算物理学入門』読み(その7)

以下の方程式で表される図形をプロットしてみる。プログラムは以下の通り。 (use graph) (use util.stream) (use math.const)(graph-init 400 400 :title "Lissajous curve" :display 2 :x-min -2 :x-max 2 :y-min -2 :y-max 2) (graph-grid 4 4 'gray)(defi…

2次元の写像 〜 『計算物理学入門』読み(その6)

以下の2本の連立差分方程式で表される動的な系を描画してみる。 プログラムは以下の通り。stream-takeの第2引数の値を変えると、プロットする点の数を簡単に変更できる。 (use graph) (use util.stream)(graph-init 800 600 :title "Simple Map" :display 2 …

車輪の外周の1点の動きのプロット 〜 『計算物理学入門』読み(その5)

車輪の回転に伴って、車輪の上の1点がどのような動きをするのかをプロットしてみる。 車輪上の点の運動は、以下の方程式で表される。 ここで、 t: 時間 r: 車輪の半径 ω: 車輪の回転の角速度 vcm: 車輪の中心の移動速度(r×ω) となる。 プロットするための、…

Newtonの冷却のシミュレーションのグラフ化 〜 『計算物理学入門』読み(その4)

Newtonの冷却のシミュレーションについてグラフ化してみる。(graphモジュールは、後述のように拡張している) 普通の手続き型の言語を使う場合は、1つのループの内部で、値の計算とプロットの両方が行われるように、コーディングされる事が多い。それに対して…

コンデンサの充電のシミュレーション 〜 『計算物理学入門』読み(その3)

コンデンサの充電過程の微分方程式は以下の通り。 (数式の画像イメージは、TeXclipで作成)これのオイラー法での数値解を求めるプログラムは以下の通り。 ;; R=2000(Ω) ;; C=1.0e-6(F) ;; V=10(V) ;; としている。 (define (dQ/dt time cap) (/ (- 10 (/ cap …

Gauche-rfbを使用したグラフの表示パッケージ 〜 『計算物理学入門』読み(その3)

Gauche-rfbを使用してグラフを表示するためのパッケージを作ってみた。パッケージは以下の通り ;; -*- coding: utf-8; mode: scheme -*- ;; ;; graph.scm - Drawing graph module with Gauche-rfb ;; ;; Copyright (c) 2008 Ettem ;; All rights reserved. ;…

ニュートンの冷却の法則をSchemeで実装 〜 『計算物理学入門』読み(その2)

ニュートンの冷却の法則のシミュレーションのプログラムをSchemeで実装してみた。(この法則の詳細はWikidediaの記事を参照) 本では、コーヒーの冷却を例として挙げている。解析的に解ける問題なので、数値計算で求める必要はないのだが、練習と言う事で、本…

オイラー法の関数をSchemeで実装 〜 『計算物理学入門』読み(その1)

オイラー法の関数をSchemeで実装してみた。オイラー法のついての説明はWikipediaの記事を参照してください。オイラー法は、理解しやすいけど、精度も悪いし、場合によっては値が収束しない事もあるみたい。コードは以下の通り。 ;; Euler ;; オイラー法を使…