粒子の運動のシミュレーション 五月祭DVD配布版 ■概要  このプログラムは、粒子の動きをシミュレートするものです。 物理的な意味よりも、見て楽しむことを重視したシミュレーションです。 ■簡単な使い方  simulation.exeを実行してください。粒子が動いている様子が表示されます。 メインウィンドウをクリックしてpを押すか、「一時停止」ボタンを押すと動きが止まります。 もう一度押すと、再び動き始めます。 粒子を左ドラッグすると、粒子の位置を動かすことができます。 粒子を右ドラッグすると、粒子の速度を変えることができます。 「系全体の設定変更」の「粒子をランダムに配置」ボタンを押すと、粒子がランダムに配置されます。 「粒子の設定変更」の「ランダムな色の粒子の追加」ボタンを押すと、粒子が増やせます。 「粒子の設定変更」の「粒子の除去」ボタンを押すと、粒子が減らせます。  シミュレーションの設定例のデータ(負の番号)があらかじめ入っているので、読み込んでみましょう。 「ファイル番号」に-1〜-31を入力し「設定の読込」ボタンを押すと、読み込むことができます。 「粒子をランダムに配置」ボタンを押したり、粒子を増やしたり減らしたりしてみてください。 設定例についての説明は、このテキストの下の方にあります。 設定例のパラメータを少し変えてみるのもいいでしょう。 パラメータについての詳しい説明は、このテキストの下の方にあります。 ■困ったときには ・粒子が変な挙動をして消えてしまった  「系全体の設定変更」の「粒子をランダムに配置」ボタンを押してみてください。 それでも駄目な場合はパラメータの設定が原因なので、パラメータを変えてみてください。 ・プログラムが遅すぎる、あるいは速すぎる  下の「シミュレーションの設定変更」の説明を見て、パラメータを調整してください。 ・粒子が止まったまま動かない  「一時停止」ボタンを押すか、メインウィンドウでpを押してみてください。 また、「グラフの表示」の「グラフを表示する」にチェックが入っていないか確かめてください。 粒子の速度が0になって止まっていることもあるので、粒子をドラッグするか、 「系全体の設定変更」の「粒子をランダムに配置」ボタンを押してください。 ・粒子がドラッグで動かせない  「各粒子の情報」や「粒子の設定変更」の「クリックで粒子を選択」に チェックが入っていないか確かめてください。 また、「グラフの表示」の「グラフを表示する」にチェックが入っていないか確かめてください。 ■詳しい説明  以下の文章には、物理についてある程度の知識を持っていることを前提とした説明もあります。 なので、分からないところがあったら飛ばして読んでください。 設定については「習うより慣れろ」で、実際に色々といじってみてください。 基本的に、パラメータは0.1〜10程度の値を指定するとちょうど良い値となりますが、 もっと小さい値や大きい値を指定すべきパラメータについては以下で説明しています。 ◆保存量  エネルギーや運動量、角運動量という量があり、特定の条件の下ではその値が変化しません。 このような値の変化しない量を保存量といいます。(値が変わらないことを「保存する」といいます。) この保存量を計算した結果を表示します。 どの条件でどの値が保存量となるかは、各パラメータの設定を見てください。 ・保存量を計算する  ここにチェックを入れると、保存量を計算して表示し続けます。 プログラムが遅くなることがあるので、必要のないときはチェックを外してください。 ・保存量の再計算  このボタンを押すと、その時点での保存量を計算して表示します。 ・右方向の運動量 ・下方向の運動量 ・時計回りの角運動量  粒子の質量と速度から求めた運動量、角運動量の和を表示します。 ・右方向の磁場による運動量 ・下方向の磁場による運動量 ・時計回りの磁場による角運動量  磁場は、ベクトルポテンシャルという量を用いて表すことができます。 ある磁場に対してベクトルポテンシャルの選び方は一通りではなく、 特定の選び方をすると、ベクトルポテンシャルから計算した運動量、角運動量と 上で計算した運動量、角運動量の和が保存するようになります。 そのような選び方のベクトルポテンシャルから計算した運動量、角運動量を表示します。 ・右方向の全運動量 ・下方向の全運動量 ・時計回りの全角運動量  上の二つの運動量、角運動量の和を表示します。 ・全運動エネルギー  粒子の運動エネルギーの和を表示します。 ・粒子間のクーロンエネルギー  クーロン力によるエネルギーの和を表示します。 ・一様電場によるエネルギー  電場による位置エネルギーの和を表示します。 ・重力エネルギー  重力による位置エネルギーの和を表示します。 ・その他の外場のエネルギー  「外場の追加」で設定した外場による位置エネルギーの和を表示します。 ・その他の粒子間のエネルギー  「二体間ポテンシャルの追加」で設定した二体間ポテンシャルによるエネルギーの和を表示します。 ・全エネルギー  上のすべてのエネルギーの和を表示します。 ◆各粒子の情報  粒子を選択することで、各粒子の情報を見ることができます。 情報を表示している間はプログラムが遅くなることがあるので、必要のないときは非表示にしてください。 ・クリックで粒子を選択  ここにチェックを入れると、左クリックで粒子を選択することができます。 チェックが入っていると、ドラッグで粒子を動かすことはできません。 ・粒子の番号  選択している粒子の番号です。ここに直接数字を入れて、粒子を選択することもできます。 ・右方向の位置 ・下方向の位置  粒子の位置です。左上隅が原点です。 ・右方向の速度 ・下方向の速度  粒子の速度です。 ・質量  粒子の質量です。 ・電荷  粒子の電荷です。電場や磁場による力、クーロン力は、電荷に比例します。 ・散逸の度合い  散逸力(エネルギーが保存しない力)は、この値に比例した大きさで働きます。 この値が1でないと、運動量や角運動量が保存しなくなります。 ・粒子の表示色(赤) ・粒子の表示色(緑) ・粒子の表示色(青)  0から1までの値で、値が大きいほど明るくなります。 ・粒子の表示半径  粒子を表示する大きさです。シミュレーション自体には影響を与えません。 ◆粒子の設定変更  個々の粒子のパラメータを変えたり、粒子を増やしたり減らしたりすることができます。 ここで入力した値は、対応する反映ボタンを押すまでシミュレーションに反映されません。 ・クリックで粒子を選択  ここにチェックを入れて粒子を左クリックすると、その粒子の番号が指定されます。 ・現在の値を表示  このボタンを押すと、指定されている番号の粒子の、現在の値が表示されます。 ・位置の反映 ・速度の反映 ・質量の反映 ・電荷の反映 ・散逸の度合いの反映 ・表示色の反映 ・表示半径の反映  入力した値を、シミュレーションに反映します。 ・運動量が0になる速度を設定  粒子の運動量の和が0になるように、その粒子の速度を設定します。 境界条件が壁なしのときに、粒子がウィンドウ外へ出ていくのをある程度防ぐことができます。 ・表示色をランダムで設定  表示色をランダムで設定します。 ・粒子の追加  粒子を追加します。最大で1000個まで追加できます。 ・ランダムな色の粒子の追加  ランダムな色の粒子を追加します。 ・粒子の除去  対応する番号の粒子を取り除きます。後の粒子の番号は一つずつずれます。 ◆系全体の設定変更  すべての粒子にかかわる設定を行います。 ・重力、電場、クーロン力を有効にする  チェックが入っていると、重力、電場、クーロン力が有効になります。 「外場の追加」や「二体間ポテンシャルの追加」で追加したポテンシャルのみを用いるときは、 チェックを外すとプログラムが速くなることがあります。 ・右向きの重力 ・下向きの重力  重力を指定します。粒子の質量に比例した力が働き、加速度は一定となります。 運動量や角運動量は保存しなくなります。境界条件が周期のときは、エネルギーも保存しなくなります。 0.01程度の値を指定すると、ちょうど良い値となります。 ・右向きの電場 ・下向きの電場  電場を指定します。粒子の電荷に比例した力が働きます。 運動量や角運動量は保存しなくなります。境界条件が周期のときは、エネルギーも保存しなくなります。 0.01程度の値を指定すると、ちょうど良い値となります。 ・画面奥向きの磁場  磁場を指定します。粒子の電荷に比例した力が、粒子の速度と垂直方向に働きます。 他に力がなければ、粒子は円運動をします。 粒子の運動量や角運動量は保存しなくなりますが、 磁場による運動量や角運動量を考えると全運動量や全角運動量は保存します。 境界条件が周期のときは、全運動量や全角運動量は保存しません。 0.01程度の値を指定すると、粒子が円運動をする様子が見えます。 また、5程度の値を指定して別の大きい力を加えると、粒子が変わった振る舞いをします。 ・クーロン力の強さ  正の値を指定すると、電荷が+の粒子同士、-の粒子同士が反発し、+と-の粒子が引き合います。 負の値を指定すると、電荷が同符号の粒子同士が引き合い、異符号の粒子同士が反発します。 遠く離れた粒子の間には小さい力が働き、近い粒子の間には大きい力が働きます。 ・クーロン力を弱める距離  クーロン力は近距離で急激に大きくなるので、あまり粒子が近づきすぎると計算結果がおかしくなってしまいます。 なので、ここで指定した距離よりも粒子が近づくと、クーロン力が弱まるようにしてあります。 弱める必要がないときには、0を指定してください。 計算式は、「二体間ポテンシャル」の「一様帯電球」を用いています。 ・速度に比例した抵抗  正の値を指定すると、粒子の速度に比例した力が逆向きに働いて、粒子が減速します。 負の値を指定すると粒子が加速しますが、速度が上がりすぎると計算結果がおかしくなるので注意してください。 0.001程度の値を指定すると、ちょうど良い値となります。 ・平衡速度  正の値を指定すると、「速度に比例した抵抗」が正のとき、粒子が平衡速度に近づくように力が働きます。 見て楽しむためのパラメータで、物理的な意味はありません。 負の値を指定することは想定していませんが、指定することはできます。 ・横の境界条件 ・縦の境界条件  「周期」を指定すると、ウィンドウ外に出た粒子が反対側から出てきます。 このとき、角運動量は保存しません。 また、ウィンドウ端をまたいだ力が働かないので、エネルギーも保存しなくなります。  「周期(相互作用も周期的)」を指定するとウィンドウ端をまたいだ力も働くので、 外場がなければエネルギーは保存します。角運動量は保存しません。  「壁あり」を指定すると、ウィンドウ端で粒子が跳ね返ります。 このとき、運動量や角運動量は保存しなくなります。  「壁あり(高精度)」を指定すると、「外場の追加」の「質量に比例」の「tanh」を用いて壁を計算します。 「壁あり」よりも計算誤差が生じにくくなっています。 ・壁の強さ  「壁あり(高精度)」の計算で用います。「外場の追加」の「ポテンシャルの強さ」に対応しています。 粒子の運動エネルギーが(粒子の質量)×(壁の強さ)より小さければ、粒子が壁で跳ね返ります。 粒子の運動エネルギーがこれより大きいと、粒子はウィンドウ外に行ってしまいます。 ・壁のやわらかさ  「壁あり(高精度)」の計算で用います。「外場の追加」の「tanh」のパラメータbに対応しています。 この値が大きいほど、壁で粒子の受ける力が小さくなり、粒子の速度がゆっくり変化するようになります。 この値が小さすぎると、計算誤差が生じやすくなります。 ・壁の位置  「壁あり(高精度)」の計算で用います。この値が大きいと、壁が内側によります。 この値が大きすぎると、「粒子をランダムに配置」ボタンを押したときの粒子の挙動がおかしくなることがあります。 ・粒子をランダムに配置  このボタンを押すと、粒子をランダムに配置します。 粒子の速度は、「シミュレーションの設定変更」の「右ドラッグで与える速度」に比例したランダムな値になります。 ◆外場の追加  粒子の位置に依存するポテンシャルや、エネルギー散逸を設定することができます。  ポテンシャルを比喩で説明すると、坂にボールを置いたとき、ボールは高い所から低い所に転がります。 高い所では遅く転がっていたボールは、低い所では速く転がります。 これと同様に、粒子はポテンシャルの高い所から低い所に向かうように力を受けます。 また、ポテンシャルの高い所では粒子は遅く動き、低い所では速く動きます。  エネルギー散逸は、同じ比喩で説明すればボールの空気抵抗や摩擦に相当します。 エネルギー散逸の大きいところでは、粒子が減速しやすくなります。 エネルギー散逸を負の値にすれば、粒子を加速させることもできます。  以下ではポテンシャルの数式も出てきますが、分からなければ「グラフの表示」を使ってみてください。 ・ポテンシャルの番号  設定するポテンシャルの番号を指定します。0から9までを使うことができます。 ・ポテンシャルの種類  「無効にする」を選ぶと、ポテンシャルが無効になります。  「電荷に比例」を選ぶと、粒子の電荷に比例したポテンシャルが加わります。  「質量に比例」を選ぶと、粒子の質量に比例したポテンシャルが加わります。  「エネルギー散逸」を選ぶと、数式で指定した大きさの散逸が加わります。 平衡速度が0でないときは、平衡速度に近づくように力が働きます。 エネルギー、運動量、角運動量は保存しなくなります。 ・ポテンシャルの形  ポテンシャルの数式の形を選びます。x軸は右向きが正で、y軸は下向きが正です。  「一様な場」はU(x,y)=-ax-byの形をしています。aは右向きの力、bは下向きの力を表しています。 粒子の位置に依らない、一定の力を加えたいときに使います。 「ポテンシャルの強さ」に0.01程度の値を指定すると、ちょうど良い値となります。  「x方向(右向き)の二次式」はU(x,y)=(x-a)^2の形をしています。  「y方向(下向き)の二次式」はU(x,y)=(y-a)^2の形をしています。 aはポテンシャルが最小(最大)となるx座標、y座標を表しています。 特定の場所でポテンシャルが最小(最大)となるポテンシャルを作りたいときに使います。 「ポテンシャルの強さ」に0.00001〜0.0001程度の値を指定すると、ちょうど良い値となります。  「x方向(右向き)のtanh」はU(x,y)=tanh((x-a)/b)の形をしています。  「y方向(下向き)のtanh」はU(x,y)=tanh((y-a)/b)の形をしています。 x,yがおよそa±bの範囲で急激に変化するポテンシャルです。 特定のx座標、y座標の付近で力を加えたいときに使います。 ・ポテンシャルの強さ  ポテンシャルの大きさは、この値に比例します。 ・パラメータa ・パラメータb ・パラメータc  上の数式のa,b,cの値を指定します。(cは未使用) ◆二体間ポテンシャルの追加  二つの粒子の距離に依存するポテンシャルや、エネルギー散逸を設定することができます。 粒子同士に引き合う力や反発する力を加えることができます。  以下ではポテンシャルの数式も出てきますが、分からなければ「グラフの表示」を使ってみてください。 ・ポテンシャルの番号  設定するポテンシャルの番号を指定します。0から9までを使うことができます。 ・ポテンシャルの種類  「無効にする」を選ぶと、ポテンシャルが無効になります。  「電荷に比例」を選ぶと、二つの粒子の電荷の積に比例したポテンシャルが加わります。  「質量に比例」を選ぶと、二つの粒子の質量の積に比例したポテンシャルが加わります。  「エネルギー散逸」を選ぶと、数式で指定した大きさの散逸が加わります。 平衡速度が0でないときは、平衡速度に近づくように力が働きます。 エネルギー、運動量、角運動量は保存しなくなります。 二粒子の間での散逸というよりは、粒子が集まったことで散逸を受けやすくなるということを想定しています。  「相対速度に比例した散逸」を選ぶと、数式で指定した大きさの散逸が加わります。 二粒子が同じ速度に近づくように、力が働きます。 二粒子が回転していれば、回転が止まるように力が働きます。 運動量は保存しますが、エネルギー、角運動量は保存しなくなります。  「角運動量を保存する散逸」を選ぶと、数式で指定した大きさの散逸が加わります。 二粒子が同じ速度に近づくように、中心力(引き合う力や反発する力)が働きます。 二粒子が回転していれば、回転が続きます。 運動量、角運動量は保存しますが、エネルギーは保存しなくなります。 ・ポテンシャルの形  ポテンシャルの数式の形を選びます。rは二粒子の間の距離です。  「一様帯電球」はU(r)=1/r (r≧a), U(r)=1/2a*(3-r^2/a^2) (r1のとき、二粒子の距離がおよそbより大きいところで大きな力が働きます。 a=1のとき、二粒子の距離に依らない力が働きます。 0