Comments
Transcript
質点系汎用シミュレータの研究 General Purpose Simulator for Point
質点系汎用シミュレータの研究 髙木 茂* (沖縄工業高等専門学校) General Purpose Simulator for Point Mass Systems Shigeru TAKAGI (Okinawa National College of Technology) Simulation programs are widely used in physics education. Most of them are special purpose simulators. That is, they are designed to calculate behaviors of some very limited range of physical models such as particle systems connected with springs, planetary systems, and waves. They can be easily used by specifying small number of parameters such as mass, spring constant, and gravity constant. Though these special purpose simulators are enough for elementary classes, they may not be sufficient for advanced courses. This is because, they cannot provide flexibility to accept and simulate novel models devised by students. With general purpose simulators teachers can inspire students to be creative, think new physical models, describe them, and simulate. This paper shows that a general purpose simulator can be realized with a physical model description language and a physical model interpreter. Wide variety of physical models are described and simulated with this general purpose simulator. The simulator is implemented in Java applet and run on Web browsers. KEY WORDS: simulator, physical model, point mass, general purpose simulator, Java, applet 1. はじめに 物理教育にシミュレータを活用することは広 く行われている。シミュレータは汎用性の観点か らは、(1)問題専用型、(2)領域内汎用型、(3)開発 環境型、に分類できる(図 1) 。 開発環境型はシミュレータを開発するための プログラミング言語などを含んだものであり、す べてのシミュレータを作成できる。しかし、物理 以外の知識を多く必要とし物理授業向きでない。 * 情報通信システム工学科 問題専用型は、バネの運動用、天体の運動用、 波動用など問題毎に作られたものであり、質量、 重力加速度、バネ定数など少数のパラメータを入 力するだけで容易に使える。これら専用タイプは 初級クラスの学生には適しているが、もう少し上 級を志す学生には物足りない。それは、物理対象 のモデルを考え、定式化し、模擬するという自由 度がないからである。 領域内汎用型とは、ある領域内で物理モデルを 簡単に定義し、模擬できるようなシミュレータで あり、あまり研究がすすんでいない。 [email protected] 問題専用型 バネ 惑星 衝突 波動 ----- 領域内汎用型 開発環境型 MODELICA Python ? うこともできる。 本汎用シミュレータは Java のアプリケーシ ョンおよび applet で実装されており、web を通じ て使えるよう考慮されている。 モデルの記述 ??? 汎用性、柔軟性 運動方程式 初期条件 結果の表示法 質 点 系 既製度、使う時の敷居の低さ 記述言語 図1 理解 式の解釈 数値積分 表示 汎用性の観点からのシミュレータの分類 本研究の目的は、物理モデルを自由に記述して 模擬できる領域内汎用型シミュレータを実現し、 学生にモデルを考えさせ、記述させ、実験させる ことを通じ、より深い理解、記述力、創造力を育 むことである(図2)。 本論文は、質点系の領域において、物理モデ ル記述言語とインタプリタを導入することにより、 汎用シミュレータを実現できることを示す。 質点 系モデルは、シミュレーションの次元数、質点の 数、質点間の相互作用をニュートンの運動方程式、 あるいは、ポテンシャル関数で記述する。 また、様々な情報(エネルギー、座標、速度、 加速度、力、時間、それらの組み合わせ)を定義 し、それを画面上に軌跡あるいはアニメーション 等で表示する方法も提供している。 インタプリタはモデル記述の構文を解析して内 部形式に変換後、運動方程式を数値積分により解 く。積分データをもとに表示情報を計算し画面に 表示する。 バネ、天体、電子等いわゆる質点系の運動はも ちろん、複数の質点を使うことにり、波、構造を 持つ物体、断熱膨張・圧縮、等の様々な問題につ いても近似モデルを記述し模擬できることを確認 した。 モデル数に制限がないため、例えばパラメータ を少しずつ変えたモデルを一緒に記述することに より、パラメータの違いにより動きがどのように 変化するかを観測することも容易である。 また、ポテンシャル場の等高線や勾配、ベクト ル場の様子を簡単に描画できる方法も実装してあ り、静電遮蔽の様子や、物体の動きとともに重力 場が時々刻々変化する様子なども観測できる。 本汎用シミュレータに物理モデルを組み込 めば、当然、従来の専用シミュレータのように使 インタプリタ 図2 汎用シミュレータを利用した物理の理解 2. 質点系モデルの記述 質点系の振る舞いは、質点の性質、各質点の存 在する場の情報、質点間の相互作用で決定される。 従って物理モデル記述として必須な項目は、 (1) 模擬を行う空間の次元数 (2) 質点の情報 (3) 質点間の相互作用、および、場の情報 である。質点間の相互作用や場の情報は、力ある いはポテンシャルで表現するのが自然である。例 えば、重力場の中を自由運動する2つの質点モデ ルの記述様式を下記に示す。 Dimension = 2; //次元数 NumOfParticles = 2; //質点の数 U = M0*g*Y0 + M1*g*Y1; //ポテンシャル この例のように、Mi は i 番目の質点の質量、FYi は i 番目の質点の y 方向の力、U は全ポテンシャ ル、と名前付け規則を設けておくのも、記述を容 易にする一方法である。 上の記述では、ポテンシャル表現を使っている が、運動方程式表現では次のようになる。 FY0 = −M0*g; FY1 = −M1*g; 一つの物体について、運動方程式表現とポテン シャル表現の併用が可能となるようインタプリタ を設計してある。例えば先のポテンシャル表現に、 FX0 = -c*VX0; FY0= -c*VY0; を加えれば、速度に比例する抵抗力が付け加わる。 力やポテンシャルを記述するための基本関数の 一部を表1に示す。 表1 主な基本関数 関数 意味 + 加算 − 減産 * 乗算 / 除算 sin(x) サイン関数 cos(x) コサイン関数 tan(x) タンジェント関数 exp(x) 指数関数 ln(x) 自然対数 pow(x,y) x の y 乗 xy (y は小数を含む) sqrt(x) 平方根 random( ) 0∼1の間の一様乱数 max(x1,y1) 最大値選択 min(x1,x2) 最小値選択 δ(x,width) 幅 width,高さ 1/width の矩形パ ルス関数 step(x) x<0 なら 0、0 <= x なら1,とな る階段関数 switch(x,a,b) X<0 なら a,0 <= x なら b,を実 行し、その値を返す関数 模擬結果を視覚的に見やすく表示することは重 要である。表示したい情報(エネルギー、座標、 速度、加速度、力、時間、それらの組み合わせ) と表示方法を簡潔に定義できる方法を提供する。 描画には、線分や楕円を描く関数などを用いる。 0 番目の質点の運動エネルギーを描きたければ M0*(VX0*VX0 + VY0*VY0)/2 を計算する。次に、2 次元画面上での描画の仕方 を考え、描画関数を組み合わせて記述する。 3. インタプリタ インタプリタの処理手順を以下に示す。 (1)物理モデル記述を解析し、解釈・模擬のための 内部形式に変換する (2)初期条件記述を用いて、時刻 T=0 での各物体の 速度 V と位置 X を設定する (3)時間の刻みをδT として、時刻 0 からδT 毎に (4)により各物体の座標,速度を更新する (4)現時刻 T で、次の処理を行った後、 T=T+δT とする 速度 V を用いて次時刻の位置 X を計算する X = X + V×δT ポテンシャル関数を偏微分して力に変換し、 他の力と合算する(F = F -⊿U/⊿X) 加速度を求め (A = F/M)、次時刻の速度を計算 する (V = V + A×δT) (5)模擬結果の描画時刻であれば、指定された情報 を収集し描画する この数値積分はオイラー法に基づいている。一 般にオイラー法よりルンゲクッタ法など高次の近 似を使って積分する方が精度が高くなるとされて いる。しかし計算量は増える。また、ルンゲクッ タ法等は、与えられた関数が素直な場合は問題な いが、不連続点を持つ場合や形が複雑な場合は精 度の向上が望めない。本汎用シミュレータでは、 5章で例を示すように、複雑な関数形を取り扱う ことを想定している。そこで、シンプルなオイラ ー法を採用し、時間刻みδT を短くするのが良い と考えている。加速度の大きい問題でδT を大き く設定すると当然誤差が大きくなる。δT の値を どうするかは重要な課題であり、これを試行錯誤 しながら決定するのはモデル作成者の仕事である。 4. システム構成の概要 図3にインタプリタの外観を示す。インタプリ タ本体は Java のアプリケーションおよび applet として作成してあり、次の特徴を持つ。 (1) 物理モデルは、ウィンドウのモデル記述のテ キストエリアで定義したもの、あるいはテキ ストファイルとして準備されたものを読み込 んで実行する。モデル記述欄の内容をテキス トファイルとして保存することができる。 (2) シミュレーション結果はウィンドウの描画領 域にリアルタイムに表示する。 (3) モデルの解釈、模擬はインタプリタ型プログ ラム言語の実現技法を用いて実現している。 モデルの記述領域 結果の描画領域 図3 インタプリタの外観 5. 5.1 物理モデルの例 バネのモデル化例 原点にバネで結ばれている質点のモデルは次の ように記述できる(紙面の節約のため2次元空間 を扱う)。 //物理モデルの定義// Dimension=2; NumOfParticles=1; Constants = k,m,g; k = 2.0; m = 1; g=1; U = k*(X0*X0+Y0*Y0)/2 + m*g*Y0; //初期条件の設定 質量,x0,y0,vx0,vy0 の順 // InitialConditionOf0 = m,0,5,3,3; //最初に1回だけ描く図形の定義// DrawInitially = {PenColor(255,255,255), Line(0,0,5,0), Line(0,0,0,5), FilledEllipse(0,5,0.2,0.2)}; //バックグラウンドに描く情報の定義// DrawOnBackground = {PenColor(255,0,0), Ellipse(X0,Y0,0.04,0.04)}; //フォアグラウンドに描く情報の定義// DrawOnForeground = {PenColor(0,255,0), Spring(0,0,X0,Y0,0.1,5), FilledEllipse(X0,Y0,0.2,0.2)}; 模擬結果を図4.1に示す。エネルギーが保存 されているので、質点は同一軌道上を周回する。 重力のため、原点から下がった軌跡となっている。 バネが伸縮する際にエネルギーロスがあるなら ば、それをどのようにモデル化するか考える必要 がある。バネの伸縮の速度に比例して、エネルギ ーの減衰が発生するというモデルを仮定すると、 速度の動径成分と反対方向に抵抗力 F を加えれば よい。 F=−c*(V*P)*P/|P|2 ここで、c は抵抗係数、P は質点の位置ベクトルと する。これを成分で記述すると: FX0= -c*(X0*VX0+Y0*VY0)*X0/(X0*X0+Y0*Y0); FY0= -c*(X0*VX0+Y0*VY0)*Y0/(X0*X0+Y0*Y0); となる。この運動の軌跡を図 4.2 に示す。図 4.1 では楕円形の軌道を描いていたのに対し、楕円か らなるべく円形の軌道(円であるとエネルギーロ スが生じない)を描くように変形しながら、収縮 していく。 速度に比例した抵抗力 F が質点に加わる環境下 では、次の記述となる。 FX0 = -c*VX0; FY0 = -c*VY0; この場合の軌道は図 4.3 となる。軌道の形はあ まり変えずに収縮していく。 エネルギーロスの項と環境からの抵抗力の項を 加算すれば、両方のモデルを取り込める。 バネのエネルギーロスや環境が及ぼす抵抗力等 の形は模擬したい対象に依存する。それらは学生 が考え、モデル化せねばならない。考えた物理モ デルを記述し、模擬し、現実の現象と比較する道 具を提供するのが我々の目的である。 4.1 減衰なし 5.2 4.2 減衰バネ 4.3 空気抵抗下 図4 バネのモデル ゴム紐と紐のモデル化例 長さ L のゴム紐をモデル化することを考える。 ゴム紐は長さがL以下の場合は力を及ぼさず、L 以上になった時にバネ定数 k の伸張バネとして働 くとする。紙面を節約する関係で、以下では運動 方程式の部分だけを記述することとする。ポテン シャル表現ではゴム紐は次のように記述できる。 U = k*pow(sqrt(X0*X0 + Y0*Y0)−L, 2) * step(X0*X0+Y0*Y0−L*L)/2 + m*g*Y0 ここで step(x)は x が負ならば 0、さもなくば 1 となる階段関数である。step(X0*X0 + Y0*Y0− L*L)により、紐の長さがLより短い場合は 0, L 以 上の場合は 1 となる。pow(x,y)はべき乗 xy を意味 する。このモデルは図5のような軌跡を描く。図 5で円は半径 L の境界を示す。半径 L 内では質点 は自由落下運動をし、L を超えたところではバネ に引かれる運動をする。 紐はゴム紐と、エネルギーロスのあるバネのモ デルを組み合わせることによりモデル化できる。 図6に物体の運動の軌跡例を示す。紐の長さが L 以上になった瞬間に非弾性的な引き戻しにより質 点の跳ね返り速度が抑制され、振り子運動へと推 移する。 すべての質点間で相互作用がある場合、n体問 題のモデルの記述量および計算量は n2 に比例する。 構造を持った物体は多数の質点と質点をつなぐバ ネ等で近似モデルを作成することができる。図9 にそのようにして構成した荷車に物が衝突して、 荷車が動き出すシミュレーションの様子を示す。 図5 5.3 ゴム紐 図6 紐 壁や床のモデル化例 壁や床に物体が衝突すると跳ね返される。これ らをモデル化するのは、様々な方法が考えられる が、ここで非弾性的なバネを使う。y=0 の面で質 点が跳ね返るモデルは FX0 = - c*VX0*Step(-Y0); FY0 = -M0*g - (k*Y0 + c*VY0)*step(-Y0); となる。非弾性的なバネにより、摩擦現象も模擬 できる。この考えは壁の形状がどうであろうと適 用できる。図7に斜めの床と、垂直の壁をモデル 化した場合の運動の軌跡を示す。 図7 5.4 図9 5.5 構造を持つ物体(荷車)の模擬 場の表示 シミュレータはポテンシャル場の等高線や勾配、 ベクトル場の表示機能を有している。複数の荷電 粒子が形成する電場(図10)や複数物体が形成す るポテンシャル場(図11)も観測できる。 場の表示機能を用いると、静電遮蔽の様子や、 物体の動きとともに重力場が時々刻々変化する様 子などが観測できる。 壁や床のモデル 多体問題の例 万有引力 U= −Mi*Mj*g/r が作用する多体系 では、質点相互の U を加算すればモデル記述が完 了する。3体問題を模擬した例を図8に示す。ス イングバイのような軌道が見られる。 図8 3体問題 図10 電場 図11 ポテンシャル場 5.6 断熱膨張・圧縮 質点が空間に閉じ込められ、その壁面からの熱 の出入りがない場合に、空間の大きさが変化する と断熱膨張や断熱圧縮がおこる。 図12は最初に破線で示す大きさだった円に質 点が閉じ込められ、時間とともに半径が小さくな ると、質点の全運動エネルギーが増加する様子を 模擬した例である。 時間軸 全運動エネルギー 図12 断熱圧縮 逆に、図13は最初に破線で示す大きさだった 円の半径が時間とともに大きくなると、全運動エ ネルギーが低下する様子を模擬した例である。 時間軸 全運動エネルギー 図13 断熱膨張 膨張あるいは収縮する円は、5.3節でのべた 壁のモデルを円に適用し、円の半径が時間と共に 変化するように、定義すればよい。 6. まとめ 学生に物理をより深く理解させるためには、モ デルを考えさせ、記述させ、模擬させるのが有効 であると考え、記述法と模擬法の研究を行った。 シミュレータに汎用性を持たせることにより、い かに様々な問題が記述できるかを強調するため、 本論文に多くの物理モデルの例をのせた。これら 以外にも、ラザフォードらによる原子核散乱のモ デル、惑星探査衛星が月を回って地球に戻り地表 にぶつかって停止するモデル、縦波のモデル、円 の中に小円が閉じ込められた系が重力下で地表を バウンドしながら進むモデル、正四面体に回転を 加えて投げた場合の運動、などを記述し模擬した。 現実の世界は質点系ではないため、本シミュレ ータの限界はその点に存在する。現実の世界を質 点系の枠組みでいかに、それらしく、簡潔にモデ ル化するかが学生の創造力の発揮しどころである。 沖縄高専の web ページにマニュアルおよび Java applet で実装した汎用シミュレータを公開 中である。これには多数の記述例が付属しており、 これを参考に学生のチャレンジを期待したい。表 示法も自由なので、多方向から観測した立体の運 動を、同時に表示する等の工夫も期待したい。 記述量や計算時間は質点数の 2 乗に比例する。 現段階で、質点数 20 程度のモデルをリアルタイム で模擬できる。今後、より大規模なモデルに対処 するため高速化を行うと共に、適用領域の拡大(膜、 流体、熱力学等)をはかる。 参考文献 1) 平田郁男:Basic による物理−物理ドライ・ ラボ−,共立出版,(1983) 2) 酒井幸一:物理・制御シミュレーション入門, CQ 出版社,(2002) 3) 山田盛夫:Visual Basic でわかる物理, CQ 出版社, (2003) 4 )臼田庄司、伊藤敏、井上祥史: Excel で学ぶ理工系シミュレーション入門, CQ 出版社,(2003) 5) 土井正男、滝本純一編:物理仮想実験室, 名古屋大学出版会,(2004) 6) 加藤徳吉:直感的に操作できる物理シュミレー ションソフトの開発,物理教育,第 52 巻, 3 号,pp.259-261, (2004) 7) 髙木茂:教育用物理モデル記述法の検討, 情報処理学会総合全国大会, (2005) 8) 髙木茂:教育用物理モデルインタプリタの検討, 電子情報通信学会全国大会, (2005)