倭算数理研究所

科学・数学・学習関連の記事を、「倭マン日記」とは別に書いていくのだ!

シミュレーション

「2つのボールをぶつけると円周率がわかる」のを他の言語でシミュレーションしてみた

ここ1年くらいまとものコードを書いてなかったので、ちょっとリハビリに「「2つのボールをぶつけると円周率がわかる」らしいのでシミュレーションしてみた」で書いていた Groovy コードを他の言語で書き直してみました。 Java Scala Go Rust そのまま移植す…

回転しているようにみえる白いドットは単振動している

最近ちょっと話題になっている動画 このくるくる回る白いドット、実は真っ直ぐ往復してるだけなんだぜ 面白錯視?回転しているように見える白いドット。でも実は・・・ が面白かったのでちょっと数学使ってイジってみました。 白いドットひとつひとつは直線…

「2つのボールをぶつけると円周率がわかる」らしいのでシミュレーションしてみた

「2つのボールをぶつけると円周率がわかる」 だそうなので、ちょっと便乗記事を。衝突回数が円周率(の桁をズラした値)になることの数学的証明まで追うのは大変そうなので、この記事では 衝突による速度の変化と衝突しなくなる条件を数式で書き下す 衝突回…

2.10 原子核の崩壊 : 問題 2.8 原子核の崩壊 a

前回までは単一核種の系を扱ってましたが、今回からは複数の核種の系、すなわちある核種が放射性崩壊してできた核種がさらに放射性崩壊するような系を見ていきます。放射性崩壊する2核種の系最初の種類の原子核の個数を 、崩壊によってできる放射性原子核の…

2.10 原子核の崩壊 : 問題 2.7 単一核種の崩壊 d

今回はオイラー法よりも精度の高い計算法を用いたシミュレーション。 問題 a. プログラム cool を修正し、原子核崩壊で使われる表記に直せ。 そして、 について、 と のときの の解析解の値とオイラー法の差を計算せよ。 さらに、それぞれの の値では、その…

2.10 原子核の崩壊 : 問題 2.7 単一核種の崩壊 c

今回も放射性崩壊のシミュレーションの続き。 前回の最後に、238U の半減期や崩壊定数が桁の極端な値になるねって話がありました。 今回はそれを上手く扱うやり方を見ていきます。問題 a. プログラム cool を修正し、原子核崩壊で使われる表記に直せ。 そし…

2.10 原子核の崩壊 : 問題 2.7 単一核種の崩壊 b

今回は問題 2.7 の続き。 放射性原子核を扱う場合、崩壊定数 よりも半減期 の方がよく使われるので、こちらを元にしたコードに書き換える問題です。問題 a. プログラム cool を修正し、原子核崩壊で使われる表記に直せ。 そして、 について、 と のときの の…

2.10 原子核の崩壊 : 問題 2.7 単一核種の崩壊 a

今回は放射性崩壊をする原子核のシミュレーション。 単一核種の場合は、ニュートンの冷却の法則にしたがう系や RC 回路と同じ形の微分方程式になるので、今までのシミュレーションと同じように行うことができます。 単一核種での放射性崩壊の法則はこちらを…

2.9 視覚化 : 問題 2.6 リサージュ図形 lissajous

またまた関数をプロットするサンプル。 今回はちょっとパラメータを変えるといろいろな図形になるリサージュ図形です。問題 座標が で与えられる曲線が出発点に戻って繰り返し描かれるとき、そのような曲線をリサージュ (Lissajous) 図形という。 角振動数 …

2.9 視覚化 : 問題 2.5 2次元の写像 simpleMap

今回は前回に引き続き、プロットの練習です。問題 プログラム simpleMap を使い、初期条件 \( x_0 = -0.1,\,y_0 = 0 \) から出発し、連立差分方程式 \begin{align*} x_{n+1} &= 1-y_n+\left|x_n\right| \\ y_{n+1} &= x_n \end{align*} を繰り返し計算せよ。…

2.9 視覚化 wheel

今回から何回かははシミュレーション結果をプロットする練習です。 今回は剛体の車輪が水平な地面を滑ることなく転がる場合の、車輪上の点の運動をプロットします。以降の記事では、得に断らない限り、水平方向に \( x \) 軸、鉛直方向に \( y \) 軸(上向き…

2.8 簡単なグラフ表示 : 問題 2.4 冷却時間

今回はグラフ表示と緩和時間の計算です。 グラフ表示は今まで既に行っていますが、まぁ一応やっておきます。 緩和時間は放射性崩壊などの半減期と似た量です。問題 a. プログラム cool を修正して、コーヒーの温度についての数値解を、数値として表示するの…

2.7 計算の精度と安定性 : 問題 2.3 オイラー法の計算精度と安定性 d, e

今回は、前回に続き計算精度の問題をやっていきます。 対象とする物理系はガラッと変わって RC 回路になります。 といっても、この系が従う法則もニュートンの冷却の法則と同じ形の微分方程式なので、結局やってることは変わりません。問題 d. 微分方程式 を…

2.7 計算の精度と安定性 : 問題 2.3 オイラー法の計算精度と安定性 a, b, c

今回は計算精度をマジメに考えようって回です。 対象とする物理系はニュートンの冷却の法則にしたがう系です。 この物理系については以前の記事参照。 今回は問題2.3のうち、a, b, c をやっていきます。 d, e は次回に。問題 a. ニュートンの冷却の法則の解…

2.6 コーヒーの冷却の問題 : 問題 2.2 より速く冷ますのにミルクを加えるのは先か、それとも後か

今回は問題2.2『より速く冷ますのにミルクを加えるのは先か、それとも後か』です。 現実に役に立つ結果が得られるでしょうかね?。問題 コーヒーの温度ははじめ90℃だが、コーヒーをおいしく飲むことのできる温度は75℃以下だとしよう。 ミルクを加えるとコーヒ…

2.6 コーヒーの冷却の問題 : 問題 2.1 コーヒーの冷却問題のためのプログラム

今回は、前回の「ニュートンの冷却の法則」に従う系のシミュレーションに関する補足問題です。問題 a. 電卓を使ってオイラー法でニュートンの冷却の法則の数値解を計算せよ。 b. 実験データに合う r の近似値を探せ。 c. 設問 b で見つけた r の値を使って、…

2.6 コーヒーの冷却の問題 : 問題 2.1 コーヒーの冷却問題のためのプログラム(続き)

今回は『問題 2.1』の続きいきますよ?。問題(再掲) a. 電卓を使ってオイラー法でニュートンの冷却の法則の数値解を計算せよ。 b. 実験データに合う r の近似値を探せ。 c. 設問 b で見つけた r の値を使って、温度の時間変化をグラフに示せ。 d. シミュレ…

2.6 コーヒーの冷却の問題 cool

今回はニュートンの冷却の法則に従う系のシミュレーション。 やっと物理っぽい系が出てきたよ?。ニュートンの冷却の法則ニュートンの冷却の法則とは「周囲と温度が高い物体は、周囲との温度差に比例して冷却していく」という法則です。 『計算物理学入門』で…

2.5 オイラー法のプログラム example

さて、プログラミング演習がソコソコこなせてきたので、だんだん物理シミュレーションの方に入っていきましょう。 微分方程式に従う物理系のシミュレーションを行うオイラー法は以前の記事で説明しました。 今回はそのオイラー法を簡単な微分方程式に適用し…

2.4 True Basic のプログラム : プログラミング演習 2.1 関数値の計算 b

今回は『プログラミング演習 2.1 関数値の計算 b』です。 演習問題はこちら: プログラムを修正して、区間 について、関数 の各値を計算して画面の同じ行に表示せよ。 Groovyまずは Groovy による実装。 関数をクロージャで表しているのは今までと同じです。…

2.4 True Basic のプログラム : プログラミング演習 2.1 関数値の計算 a

今回は『プログラミング演習 2.1 関数値の計算 a』です。 演習問題はこちら: 関数 の値を画面に表示するプログラムを書け。 はパラメータである。 Groovy による実装まずは Groovy による実装。 Groovy のプログラミング演習です。 def params = initial() …

2.4 True Basic のプログラム seriesTest

今回は while 文による繰り返しを見ていきます。 シミュレーション的には、状態更新の前後で物理量の変化が設定値以下になるまで反復を繰り返すといったときに使えます。True BASICまずは True BASIC のコード。 PROGRAM series_test ! DO LOOP 文の使用例 L…

2.4 True BASIC のプログラム series (Groops)

さて、最近は Groovy の使い方の解説ばかりだったので、少しは Groops を使ったサンプルも書いておきましょう。 ってことで、今回は前回に見たプログラム「series」を Groops で書いてみます。物理系をクラスで書いたサンプルまずは今までの記事で書いたこと…