HOME > TOPICS

「ルンゲ・クッタで行こう!~物理シミュレーションを基礎から学ぶ~」出版決定(発売日:2018年4月3日)

文責:遠藤 理平 (2018年3月30日) カテゴリ:TOPICS(36)

978-4-87783-375-6.png

ルンゲ・クッタで行こう!
~物理シミュレーションを基礎から学ぶ~

著者 遠藤 理平
出版社 株式会社カットシステム
判型 B5変型、400頁
本体価格 4,600円(税込 4,968円)
ISBN 978-4-87783-435-7

はじめに

 本書の表題にある「ルンゲ・クッタ」とは、常微分方程式の数値解を得るための計算アルゴリズム「ルンゲ・クッタ法」のことです。ルンゲ・クッタ法は比較的高い精度と実装の容易さ、またニュートンの運動方程式などの物理学の基礎方程式にそのまま適用できる汎用性から、最も有名な数値計算アルゴリズムとして知られています。本書は物理シミュレーションを勉強したいと志した方を対象にこのルンゲ・クッタ法を用いて、理工学系大学1年生程度で学習する物理学の内容を数値計算(物理シミュレーション)するために必要な数学、物理学、計算アルゴリズムを習得することを目的としています。

 ところで、そもそもなぜ物理シミュレーションなのでしょうか。一般に物理シミュレーションというと、自然科学や工学における専門家に限られたマイナーな分野と受け取られるかと思います。しかしながら昨今、例えば、映画やゲームといったエンターテイメント分野においても、実行環境の進歩に伴い、人々がリアリティを追求する中で物理演算が実装されるなど、物理シミュレーションの知識は、「科学の世界」を飛び越えて「表現の世界」における主役的な存在へと生まれ変わっています。そしてこの流れは、昨今ニーズが高まるデジタル教材の普及に伴い、「教育の世界」へとさらに広がっていくことが考えられます。

 物理シミュレーションは、これまで自然科学や工学の分野で「数値シミュレーション」「計算物理学」「計算機実験」などと呼ばれ、自然科学や工学の分野における一手法として発展してきました。「実験」と「理論」が主な手法であった物理学においても、近年、物理シミュレーションは第3の科学的手法として無くてはならない存在となりました。この飛躍を支えるのは、コンピュータの高性能化・低価格化です。一般用途向けパーソナルコンピュータでも、物理シミュレーションを行うのに十分な環境も整ってきました。

 環境が整ってきた昨今では、誰でも知的好奇心のおもむくままに物理シミュレーションを楽しめると思いきや、そこにはひとつ高い壁が立ちはだかります。それは、物理シミュレーションを実現するには習得すべき内容が非常に膨大かつ多岐に渡るという点です。ある箇所で問題が発生したときにその原因が「数学の演算が間違っているのか?」あるいは「物理学的な理解が間違っているのか?」それとも「コンピュータ・プログラムの実装方法に問題があるのか?」というのが判然とせずに途方にくれることも多々あります。これに立ち向かうには数学、物理学、数値計算法などを個別に過不足なく学習して、かつそれらを有機的に繋いでいくことが必要になるわけでが、各分野に存在する数多くの名著の中から「何を」「どの順番で」「どの程度」勉強していけばよいか分からないだけでなく、さらには学んだ知識をどのように適用してよいのか分かりません。そうこうしている内に気がついたら数年はあっという間に経ってしまい大学生活も終わってしまいます。

 そのような状況に対して、本書は理工学系の大学1年生で学習する古典力学の最も基本となる運動の物理シミュレーションを実現するための最小構成要素を示すことを目的として、加速度というキーワードを中心に話を進めます。というのも、物理法則に則っているか否かに関わらず物体の運動シミュレーションは「加速度」+「ルンゲ・クッタ法」ですべて実現できるからです。本書の前半、第1章では物理シミュレーションを実現するための必要最小限の数学をまとめ、第2章では様々な座標系における加速度を導出、第3章ではそもそも「運動」を数学的にどのように表すかを解説しています。ここまでで加速度と運動の関係が理解できるはずです。本書の第4章ではじめて自然界が満たす物理学(古典力学)の基礎方程式である「ニュートンの運動方程式」が登場し、自然法則に則った加速度の与え方が理解できます。そして本書後半、第5章では重力と空気抵抗力、第6章ではばね弾性力、第7章では張力、第8章では拘束力、第9章では万有引力と、各物理系に対する加速度の与え方を解説します。ここまで学習すると「物理シミュレーションの実現」とは加速度の与え方を理解することに他ならないことに気がつくと思います。そのような意味で各物理系に対する加速度の与え方を本書では「計算アルゴリズム」と呼び、これを導出する過程を端折らずに全て記述しています。この方法論が理解できれば、読者それぞれが興味をもつ物理系に対して適用できる力が身につくはずです。ただし、物理シミュレーションを実現できる力が身についても運動方程式をいわゆる紙と鉛筆で解く重要性は変わりません。その理由は計算結果が本当に正しいか否かは、運動方程式を厳密に解くことができる特別な条件で得られる解析解と比較することでしか判断できないためです。そのため、本書では各物理系に対する数値計算の結果を導出した解析解と比較して検証します。また、本書では数学と物理学の理解を助けるために、導出過程を除いて全ての数式やグラフなどに墨付きカッコで【数学公式】や【物理法則】といったタグ付けを行っています。タグの意味は次の通りです。

【数学定義】 数学的概念の数理表現
【数学公式】 定義から導き出された結果のうち覚えていると便利な関係式
【物理量】 物理現象(自然現象)を理解するために定義された量
【数理モデル】 物理量同士の関係を表わした関係式
【運動方程式】 数理モデルから導き出された運動を表す方程式
【物理法則】 運動方程式から導かれる物理量同士の有用な関係式
【解析解】 基礎方程式に条件を課すことで導き出された解
【数値解】 数値計算の得られた数値的な関係

 本書は先述のとおり、ルンゲ・クッタ法を用いて物理シミュレーションを実現するための最小構成要素を解説することを目的としているため、本書のみで数学、物理学ならびに数値計算全般を網羅することは到底できませんが、本書が独力で更に広く深く学習するための指針として役立てば幸甚です。

 最後に、本書の執筆の機会を頂きました株式会社カットシステムの石塚勝敏さん、厳しいスケジュールのなか丁寧な編集を行なって頂きました武井智裕さん、また、日常的に議論に付き合って頂いている特定非営利活動法人natural scienceの皆さんには、深く感謝申し上げます。

2018年3月
遠藤理平


目次

  • 第1章 物理シミュレーションに必要な数学
    • 1.1 三角比と三角関数
      • 1.1.1 角度の単位と円周率
      • 1.1.2 三角比と三角関数
      • 1.1.3 プログラミングによる三角関数の利用方法
      • 1.1.4 三角関数に関する公式集
    • 1.2 指数関数と対数関数
      • 1.2.1 指数関数の基本
      • 1.2.2 プログラミングによる指数関数の利用方法
      • 1.2.3 指数関数に関する公式
      • 1.2.4 対数関数の基本
      • 1.2.5 対数関数に関する公式
      • 1.2.6 プログラミングによる対数関数の利用方法
    • 1.3 ベクトル
      • 1.3.1 ベクトルの基本
      • 1.3.2 ベクトルの内積と外積
      • 1.3.3 ベクトルに関する公式
      • 1.3.4 【JavaScript】Vector3クラスによるベクトル演算
      • 1.3.5 【C++】Vector3クラスの定義
      • 1.3.6 【C++】Vector3クラスを用いたベクトル演算方法
    • 1.4 微分
      • 1.4.1 微分の定義
      • 1.4.2 べき関数の微分
      • 1.4.3 積の微分と合成関数の微分
      • 1.4.4 三角関数の微分
      • 1.4.5 指数関数と対数の微分とネイピア数
      • 1.4.6 ベクトルの微分
      • 1.4.7 テーラー展開
    • 1.5 積分
      • 1.5.1 不定積分の定義と公式
      • 1.5.2 定積分と面積の関係
      • 1.5.3 積の積分と合成関数の積分
    • 1.6 多変数関数の微分・積分
      • 1.6.1 多変数関数の定義
      • 1.6.2 多変数関数の微分(偏微分)と全微分の定義
      • 1.6.3 「d」と「\partial」の関係
      • 1.6.4 偏微分演算子:\nabla
      • 1.6.5 \nablaを用いた演算(勾配・発散・回転・ラプラシアン)
      • 1.6.6 経路による積分
    • 1.7 連立方程式
      • 1.7.1 線形連立方程式
      • 1.7.2 線形連立方程式の解き方
      • 1.7.3 【JavaScript】ガウスの消去法の計算プログラム
      • 1.7.4 方程式の順番の入替(ピボット操作)
      • 1.7.5 【JavaScript】ガウスの消去法の計算プログラム(ピボット操作付き)
      • 1.7.6 【C++】solveSimultaneousEquations関数の利用方法
  • 第2章 様々な座標系
    • 2.1 空間と時間
      • 2.1.1 空間と座標系
      • 2.1.2 時間と時刻
      • 2.1.3 速度ベクトルの定義(「平均の速度」と「瞬間の速度」)
      • 2.1.4 加速度ベクトルの定義
    • 2.2 直交座標系
      • 2.2.1 直交座標系の単位ベクトル
      • 2.2.2 直交座標系における位置ベクトルと速度ベクトルと加速度ベクトル
      • 2.2.3 位置ベクトルと速度ベクトルと加速度ベクトルの絶対値
    • 2.3 2次元極座標系と円筒座標系
      • 2.3.1 2次元極座標系の単位ベクトルと位置ベクトル
      • 2.3.2 直交座標系と2次元極座標系の単位ベクトルの関係
      • 2.3.3 2次元極座標系の位置ベクトル
      • 2.3.4 2次元極座標系における速度ベクトル
      • 2.3.5 2次元極座標系における加速度ベクトル
    • 2.4 円筒座標系
      • 2.4.1 円筒座標系における単位ベクトル
      • 2.4.2 円筒座標系における位置ベクトル・速度ベクトル・加速度ベクトル
    • 2.5 3次元極座標系
      • 2.5.1 3次元極座標系の単位ベクトルと位置ベクトル
      • 2.5.2 直交座標系と3次元極座標系の単位ベクトルの関係
      • 2.5.3 3次元極座標系における速度ベクトル
      • 2.5.4 3次元極座標系における加速度ベクトル
  • 第3章 様々な運動の表現
    • 3.1 等速直線運動の表現
      • 3.1.1 等速直線運動の数理モデル
      • 3.1.2 等速直線運動の解析解
      • 3.1.3 等速直線運動の解析解グラフ
    • 3.2 等加速度直線運動の表現
      • 3.2.1 等加速度直線運動の数理モデル
      • 3.2.2 等加速度直線運動の解析解
      • 3.2.3 等加速度直線運動の解析解グラフ
    • 3.3 等速円運動の表現
      • 3.3.1 円運動の位置ベクトルと速度ベクトル
      • 3.3.2 角速度の定義と等速円運動の数理モデル
      • 3.3.3 等速円運動の加速度ベクトルの関係
    • 3.4 等角加速度円運動の表現
      • 3.4.1 角加速度の定義と等角加速度円運動の数理モデル
      • 3.4.2 等角加速度円運動の加速度ベクトル
    • 3.5 任意の回転軸における円運動
      • 3.5.1 3次元空間中の角度ベクトル・角速度ベクトル・角加速度ベクトルの定義
      • 3.5.2 円運動の角速度ベクトルと速度ベクトルとの関係
      • 3.5.3 円運動の角加速度と加速度ベクトルの関係
    • 3.6 物理シミュレータの使い方
      • 3.6.1 仮想物理実験室のインターフェース
      • 3.6.2 仮想物理実験室の設定方法
      • 3.6.3 仮想物理実験室への物体の配置とシミュレーション開始
      • 3.6.4 球オブジェクトの生成と位置・速度の設定方法
    • 3.7 物理シミュレータによる各種運動シミュレーション
      • 3.7.1 等速度直線運動シミュレーション
      • 3.7.2 等加速度直線運動シミュレーション
      • 3.7.3 等速円運動シミュレーション
      • 3.7.4 中心座標を指定した等速円運動シミュレーション
      • 3.7.5 等角加速度円運動シミュレーション
      • 3.7.6 任意回転軸による等角加速度円運動シミュレーション
  • 第4章 古典力学の理論
    • 4.1 物理学について
      • 4.1.1 物理学について
      • 4.1.2 物理学的手法:「実験」と「理論」
      • 4.1.3 物理シミュレーションの位置づけ
      • 4.1.4 物理シミュレーションのまとめ
    • 4.2 古典力学の「運動の3法則」
      • 4.2.1 運動の第1法則:慣性の法則
      • 4.2.2 運動の第2法則:ニュートンの法則
      • 4.2.3 運動の第3法則:作用・反作用の法則
    • 4.3 古典力学の3つの保存則
      • 4.3.1 力学的エネルギーと保存則
      • 4.3.2 運動量と運動量保存則
      • 4.3.3 角運動量と角運動量保存則
    • 4.4 各種座標系におけるニュートンの運動方程式
      • 4.4.1 直交座標系におけるニュートンの運動方程式
      • 4.4.2 2次元極座標系および円筒座標系におけるニュートンの運動方程式
      • 4.4.3 3次元極座標系におけるニュートンの運動方程式
    • 4.5 ニュートンの運動方程式と計算アルゴリズム
      • 4.5.1 ニュートンの運動方程式の形式解と加速度
      • 4.5.2 等速直線運動の計算アルゴリズム
      • 4.5.3 等加速度直線運動の計算アルゴリズム
      • 4.5.4 1次精度の数値計算アルゴリズム「オイラー法」
      • 4.5.5 オイラー法を用いた数値計算の例
    • 4.6 4次精度の数値計算アルゴリズム「ルンゲ・クッタ法」
      • 4.6.1 ルンゲ・クッタ法の漸化式
      • 4.6.2 【JavaScript】ルンゲ・クッタ法による数値計算ライブラリ「RK4」
      • 4.6.3 ルンゲ・クッタ法を用いた数値計算の例
      • 4.6.4 計算誤差の\Delta t 依存性
      • 4.6.5 【C++】RK4クラスの実装内容
      • 4.6.6 【C++】RK4クラスの利用方法
      • 4.6.7 【JavaScript】多体系用数値計算ライブラリ「RK4_Nbody」
      • 4.6.8 【C++】RK4_Nbodyクラスの実装内容
  • 第5章 重力と空気抵抗力による運動
    • 5.1 重力による運動
      • 5.1.1 重力による運動の数理モデル
      • 5.1.2 重力による運動の解析解
      • 5.1.3 重力による放物運動の各種解析解
      • 5.1.4 ルンゲ・クッタで放物運動シミュレーション
    • 5.2 重力による運動における力学的エネルギー保存則
      • 5.2.1 重力のポテンシャルエネルギー
      • 5.2.2 重力による運動の力学的エネルギーの数値計算方法
      • 5.2.3 力学的エネルギー保存則の確認
    • 5.3 空気抵抗力による運動
      • 5.3.1 空気抵抗力の数理モデル
      • 5.3.2 粘性抵抗力による運動
      • 5.3.3 粘性抵抗力による運動における速度の時間依存性
      • 5.3.4 慣性抵抗力による運動
      • 5.3.5 慣性抵抗力による運動における速度の時間依存性
    • 5.4 重力+空気抵抗力による運動
      • 5.4.1 重力+粘性抵抗力による運動
      • 5.4.2 重力+粘性抵抗力による自由落下運動における速度の時間依存性
      • 5.4.3 重力+慣性抵抗力による運動
      • 5.3.4 重力+慣性抵抗力による自由落下運動における速度の時間依存性
      • 5.4.5 ルンゲ・クッタで空気抵抗力を加えた放物運動シミュレーション
      • 5.4.6 【数値実験】最大飛距離を出す投射角度は?
    • 5.5 物理シミュレータによる重力運動シミュレーション
      • 5.5.1 重力の与え方
      • 5.5.2 空気抵抗力の与え方
      • 5.5.3 床面との衝突
      • 5.5.4 力学的エネルギーを用いた計算誤差表示方法
  • 第6章 ばね弾性力による振動運動
    • 6.1 単振動運動
      • 6.1.1 線形ばねによる弾性力の数理モデル
      • 6.1.2 単振動運動の解析解
      • 6.1.3 ルンゲ・クッタで単振動運動シミュレーション
      • 6.1.4 ばね弾性力による運動の力学的エネルギー保存則
      • 6.1.5 単振動運動の各エネルギーの時間依存性
    • 6.2 ばね弾性力+重力による運動
      • 6.2.1 ばね弾性力+重力による運動の数理モデル
      • 6.2.2 ばね弾性力+重力による単振動運動の解析解
      • 6.2.3 ルンゲ・クッタでばね弾性力+重力による単振動運動シミュレーション
      • 6.2.4 ばね弾性力+重力による運動の力学的エネルギー保存則
    • 6.3 減衰振動運動
      • 6.3.1 ばね弾性力+抵抗力による運動の数理モデル
      • 6.3.2 定数係数線形型2階の常微分方程式の一般解
      • 6.3.3 減衰振動運動の一般解
      • 6.3.4 解析解(I):過減衰(D>0)
      • 6.3.5 過減衰運動の変位の時間依存性
      • 6.3.6 解析解(II):振動減衰(D < 0)
      • 6.3.7 減衰振動運動の変位の時間依存性
      • 6.3.8 解析解(III):臨界減衰(D=0)
      • 6.3.9 臨界減衰運動の変位の時間依存性
    • 6.4 重力が加わった減衰振動運動
      • 6.4.1 重力が加わった減衰振動運動の数理モデル
      • 6.4.2 ルンゲ・クッタで減衰振動運動シミュレーション
    • 6.5 強制振動運動
      • 6.5.1 強制振動運動の数理モデル
      • 6.5.2 強制振動運動の解析解
      • 6.5.3 (1) 強制角振動数と固有角振動数が異なる場合
      • 6.5.4 (2) 強制角振動数が固有角振動数の近傍の場合
      • 6.5.5 (3) 強制角振動数が固有角振動数の一致する場合
    • 6.6 強制減衰振動運動
      • 6.6.1 粘性抵抗力が加わった強制振動の数理モデル
      • 6.6.2 強制減衰振動運動の解析解
      • 6.6.3 ルンゲ・クッタで強制減衰振動運動シミュレーション
      • 6.6.4 強制減衰振動運動の最大振幅と共鳴角振動数
      • 6.6.5 振幅の強制角度数依存性と半値全幅
    • 6.7 重力が加わった強制減衰振動運動
      • 6.7.1 重力が加わった強制減衰振動運動の数理モデル
      • 6.7.2 ルンゲ・クッタで強制減衰振動運動シミュレーション
      • 6.7.4 有限長ばねにおける「ばね反転」について
    • 6.8 ばねの長さの最小値と最大値を考慮した非線形ばね弾性力
      • 6.8.1 ばねの最低長と伸び切りの数理モデル
      • 6.8.2 非線形ばね弾性力の変位依存性
      • 6.8.3 非線形ばねにおけるポテンシャルエネルギーの変位依存性
      • 6.8.4 非線形ばねによる運動の力学的エネルギー保存則の確認
      • 6.8.5 非線形ばねを用いた強制振動運動
    • 6.9 物理シミュレータによる振動運動シミュレーション
      • 6.9.1 ばね弾性力の与え方
      • 6.9.2 ばね弾性力+重力による単振動運動シミュレーション
      • 6.9.3 ばね弾性力+重力+粘性抵抗力による減衰振動運動シミュレーション
      • 6.9.4 強制減衰振動シミュレーション
  • 第7章 張力による振り子運動
    • 7.1 単振子運動
      • 7.1.1 伸び縮みしないひもによる張力の数理モデル
      • 7.1.2 3次元極座標系におけるニュートンの運動方程式
      • 7.1.3 ルンゲ・クッタで単振子運動における振れ角シミュレーション
      • 7.1.4 【数値実験】周期の初期振れ角依存性
      • 7.1.5 単振子運動に関する解析解
      • 7.1.6 張力のポテンシャルエネルギーと力学的エネルギー保存則
      • 7.1.7 微小振動の解析解
    • 7.2 円錐振子運動
      • 7.2.1 円錐振子運動の条件
      • 7.2.2 円錐振子運動の速度の角度依存性
      • 7.2.3 円錐振子運動に関する解析解
    • 7.3 振り子運動シミュレーションの汎用的方法
      • 7.3.1 3次元直交座標系における数理モデル
      • 7.3.2 振り子運動の計算アルゴリズム
      • 7.3.3 ルンゲ・クッタ法による振り子運動シミュレーション
      • 7.3.4 ひもの長さの補正
    • 7.4 強制振子運動
      • 7.4.1 強制振子運動とは
      • 7.4.2 ルンゲ・クッタ法による強制振子運動シミュレーション
      • 7.4.3 【数値実験】振れ角が最大となる強制振動の角振動数は?
    • 7.5 多重振子運動
      • 7.5.1 多重振子のモデルと運動方程式
      • 7.5.2 張力に関する連立方程式の導き方
      • 7.5.3 振り子運動で式(Eq7060)を検証
      • 7.5.4 2重振子運動の計算アルゴリズム
      • 7.5.5 ルンゲ・クッタ法による2重振子運動シミュレーション
      • 7.5.6 2重振子運動のカオス現象
      • 7.5.7 ルンゲ・クッタ法&ガウスの消去法による多重振子運動シミュレーション
    • 7.6 物理シミュレータによる振り子運動シミュレーション
      • 7.6.1 張力の与え方
      • 7.6.2 張力+重力による単振子運動シミュレーション
      • 7.6.3 円錐振子運動シミュレーション
      • 7.6.4 強制振子運動シミュレーション
      • 7.6.5 2重振子運動シミュレーション
      • 7.6.6 多重振子運動シミュレーション
      • 7.6.7 連成振子運動シミュレーション
      • 7.6.8 ニュートンのゆりかご
  • 第8章 経路に拘束された運動
    • 8.1 経路の解析的取り扱い
      • 8.1.1 経路ベクトル、接線ベクトル、曲率ベクトルの定義
      • 8.1.2 経路ベクトルの3次元成分媒介変数表示
      • 8.1.3 任意の経路に拘束された速度ベクトルと加速度ベクトル
      • 8.1.4 任意の経路に拘束された物体の運動方程式と計算アルゴリズム
      • 8.1.5 経路からのズレを補正する補正力
      • 8.1.6 ルンゲ・クッタ法で利用する加速度ベクトルの取得方法
    • 8.2 円経路に束縛された運動
      • 8.2.1 円経路の経路ベクトル・接線ベクトル・曲率ベクトル
      • 8.2.2 円経路の各ベクトルの可視化
      • 8.2.3 ルンゲ・クッタで円経路に束縛された運動シミュレーション
    • 8.3 楕円経路に束縛された運動
      • 8.3.1 楕円の定義と楕円の式
      • 8.3.2 楕円経路の経路ベクトル・接線ベクトル・曲率ベクトル
      • 8.3.3 楕円経路の各ベクトルの可視化
      • 8.3.4 ルンゲ・クッタで楕円経路に束縛された運動シミュレーション
    • 8.4 放物線経路に束縛された運動
      • 8.4.1 放物線経路の経路ベクトル・接線ベクトル・曲率ベクトル
      • 8.4.2 放物線経路の各ベクトルの可視化
      • 8.4.3 ルンゲ・クッタで放物線経路に束縛された運動シミュレーション
    • 8.5 サイクロイド曲線経路に束縛された運動
      • 8.5.1 サイクロイド曲線の経路の経路ベクトル・接線ベクトル・曲率ベクトル
      • 8.5.2 サイクロイド曲線経路の各ベクトルの可視化
      • 8.5.3 媒介変数の取得方法
      • 8.5.4 ルンゲ・クッタでサイクロイド曲線経路に束縛された運動シミュレーション
      • 8.5.5 サイクロイド曲線振り子の等時性シミュレーション
    • 8.6 物理シミュレータによる経路束縛運動シミュレーション
      • 8.6.1 経路の与え方
      • 8.6.2 重力+経路に束縛された運動シミュレーション
      • 8.6.3 サイクロイド曲線振り子の等時性シミュレーション
      • 8.6.4 動く円経路に束縛された運動シミュレーション
  • 第9章 万有引力による軌道運動
    • 9.1 万有引力による運動の理論
      • 9.1.1 万有引力と万有引力定数
      • 9.1.2 運動方程式と力学的エネルギー保存則
      • 9.1.3 重心運動と相対運動
      • 9.1.4 相対運動に対する力学的エネルギーと角運動量の保存則
    • 9.2 ルンゲ・クッタで万有引力による運動シミュレーション
      • 9.2.1 万有引力による相対運動の計算アルゴリズム
      • 9.2.2 万有引力による相対運動シミュレーション
      • 9.2.3 万有引力による相対運動の力学的エネルギー保存則
      • 9.2.4 万有引力による2物体の運動シミュレーション
    • 9.3 力学的エネルギーによる軌道の分類
      • 9.3.1 2次元極座標系における運動方程式
      • 9.3.2 動径方向のポテンシャルエネルギーの概形
      • 9.3.3 動径方向運動の力学的エネルギーと軌道の分類
    • 9.4 軌道の解析解とケプラーの法則
      • 9.4.1 万有引力による運動の軌跡の解析解
      • 9.4.2 円軌道(\epsilon = 0)
      • 9.4.3 楕円軌道(0<\epsilon<1)
      • 9.4.4 放物線軌道(\epsilon = 1)
      • 9.4.5 双曲線軌道(\epsilon>1)
      • 9.4.6 惑星運動が満たす3つの法則:ケプラーの法則
    • 9.5 物理シミュレータによる万有引力運動シミュレーション
      • 9.5.1 万有引力の与え方
      • 9.5.2 ポテンシャルエネルギー表示モード
      • 9.5.3 万有引力運動シミュレーション
      • 9.5.4 3体による万有引力運動シミュレーション

サンプルプログラム

・本書で示したグラフやグラフィックスはすべてHTML5で作成しています。本書にはこのHTML5ソースファイルが付属されています。なお、一部サンプル名の最後に「(C++)」とあるものは、C++プログラムソースも別途添付されています。
・プログラム名の先頭にはグラフの意味を表したタグがついています。【関数グラフ】は関数の可視化、【数値解グラフ】は数値的に求めた解の可視化、【解析解グラフ】は物理現象の解析解の可視化、 【物理シミュレータ】は物理現象の3次元グラフィックスによる可視化を行っています。
(※)参考までに【物理シミュレータ】を公開しています。

第1章 物理シミュレーションに必要な数学

  • 1.1 三角比と三角関数
    • 【関数グラフ】三角関数のグラフ(C++)
  • 1.2 指数関数と対数関数
    • 【関数グラフ】指数関数のグラフ(C++)
    • 【関数グラフ】対数関数のグラフ(C++)
  • 1.3 ベクトル
    • 【C++】Vector3クラスの動作確認
  • 1.4 微分
    • 【関数グラフ】関数と接線のグラフ(C++)
    • 【関数グラフ】sinc関数のグラフ(C++)
    • 【数値解グラフ】ネイピア数の確認(C++)
    • 【関数グラフ】sin関数のテーラー展開(C++)
  • 1.7 連立方程式
    • 【数値解】ガウスの消去法による線形連立方程式の計算
    • 【数値解】ガウスの消去法による線形連立方程式の計算(ピボット操作無しによるエラー)
    • 【数値解】ガウスの消去法による線形連立方程式の計算(ピボット操作付き)(C++)

第3章 様々な運動の表現

第4章 様々な運動の表現

  • 4.5 ニュートンの運動方程式と計算アルゴリズム
    • 【解析解&数値解グラフ】オイラー法による等速円運動のx座標の時間依存性(C++)
  • 4.6 4次精度の数値計算アルゴリズム「ルンゲ・クッタ法」
    • 【解析解&数値解グラフ】ルンゲ・クッタ法による等速円運動のx座標の時間依存性(C++)
    • 【数値解グラフ】オイラー法とルンゲ・クッタ法による数値計算誤差(大局誤差)のΔt 依存性(C++)

第5章 重力と空気抵抗力による運動

  • 5.1 重力による運動
  • 5.2 重力による運動
    • 【解析解&数値解グラフ】放物運動の軌跡の角度依存性(C++)
    • 【解析解&数値解グラフ】重力による運動における力学的エネルギーの時間依存性グラフ(C++)
  • 5.3 空気抵抗力による運動
    • 【解析解グラフ】粘性抵抗力による運動における速度の時間依存性
    • 【解析解グラフ】慣性抵抗力による運動における速度の時間依存性
  • 5.4 重力+空気抵抗力による運動
    • 【解析解グラフ】重力+粘性抵抗力による運動における速度の時間依存性
    • 【解析解グラフ】重力+慣性抵抗力による自由落下運動における速度の時間依存性
    • 【解析解グラフ】重力+慣性抵抗力による鉛直投げ上げ運動における速度の時間依存性
    • 【数値解グラフ】空気抵抗力を加えた放物運動の軌跡(C++)
    • 【数値解グラフ】粘性抵抗における投射角度に対する飛距離のグラフ(C++)
    • 【数値解グラフ】慣性抵抗における投射角度に対する飛距離のグラフ(C++)
  • 5.5 物理シミュレータによる重力運動シミュレーション

第6章 ばね弾性力による振動運動

  • 6.1 単振動運動
    • 【解析解&数値解グラフ】単振動運動の変位の時間依存性(C++)
    • 【解析解&数値解グラフ】単振動運動の各エネルギーの時間依存性(C++)
  • 6.2 ばね弾性力+重力による運動
    • 【解析解&数値解グラフ】ばね弾性力+重力による単振動運動の変位の時間依存性(C++)
    • 【解析解&数値解グラフ】ばね弾性力+重力による単振動運動の各エネルギーの時間依存性(C++)
  • 6.3 減衰振動運動
    • 【解析解グラフ】過減衰振動運動の変位の時間依存性
    • 【解析解グラフ】減衰振動運動の変位の時間依存性
    • 【解析解グラフ】単振動運動の各エネルギーの時間依存性
  • 6.4 重力が加わった減衰振動運動
    • 【解析解&数値解グラフ】重力が加わった減衰振動運動シミュレーション(C++)
  • 6.5 強制振動運動
    • 【解析解グラフ】強制角振動数と固有角振動数が異なる場合の変位の時間依存性
    • 【解析解グラフ】強制角振動数が固有角振動数の近傍の場合の変位の時間依存性
    • 【解析解グラフ】強制角振動数が固有角振動数の一致する場合の変位の時間依存性
  • 6.6 強制減衰振動運動
    • 【数値解グラフ】強制減衰振動運動の変位の時間依存性(C++)
    • 【解析解グラフ】角振動スペクトルと半値全幅
  • 6.7 重力が加わった強制減衰振動運動
    • 【数値解グラフ】重力+強制減衰振動運動の変位の時間依存性(C++)
    • 【数値解グラフ】自然長が5にて強制角振動数を固有角振動数と一致させた場合(C++)
  • 6.8 ばねの長さの最小値と最大値を考慮した非線形ばね弾性力
    • 【解析解グラフ】非線形ばね弾性力の次数による違い
    • 【解析解グラフ】非線形ばね弾性力の非線形線形ばね定数(係数)による違い
    • 【解析解グラフ】非線形ばねにおけるポテンシャルエネルギーの変位依存性
    • 【数値解グラフ】非線形ばねによる運動の力学的エネルギー保存則(C++)
    • 【数値解グラフ】非線形ばねを用いた強制振動運動の時間依存性(C++)
  • 6.9 物理シミュレータによる振動運動シミュレーション

第7章 張力による振り子運動

第8章 経路に拘束された運動

第9章 万有引力による軌道運動



▲このページのトップNPO法人 natural science トップ

関連記事

TOPICS







▲このページのトップNPO法人 natural science トップ