Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

重力プログラミング入門「第1回:地球の重力下で人工衛星を公転軌道に乗せる」

「重力」の理論から始め、その「数式」を紐解き、数式を「コード化」していきます。数学や物理学のコード化が思った以上にカンタンということを実感していただけたら幸いです

  • Login to see the comments

重力プログラミング入門「第1回:地球の重力下で人工衛星を公転軌道に乗せる」

  1. 1. 0 まず始めに 数学・物理学テイスト 溢れる動画をどうぞ
  2. 2. 1
  3. 3. 2 なんかいい雰囲気(^^)
  4. 4. 3 「ナビエ-ストークス方程式」という粘性の ある流体の運動を表す偏微分方程式 これを解決すると100万ドルもらえる
  5. 5. 4 当初、量子コンピュータ・量子力学に出てくる 「波動方程式」という偏微分方程式にて、 跳ねる雨水をコード化する予定でしたが…
  6. 6. 5 太陽フレアの影響を受けて (笑) 重力のプログラミングについて お話することにしました(^^)
  7. 7. 2017/09/20 プログラマのための数学勉強会@福岡#6 エディション 重力プログラミング入門 ~理論としての数学をプログラミングして、動かし、世界を楽しむ~
  8. 8. 7 最近のムーブメント 【Movement1】この3年間、宇宙発見が立て続けに発生 2017/1:3度目の検出 2015/9:最初の重力波の検出 (アインシュタインの提唱から100年) 2015/12:2度目の検出 2017/9:探査機カッシーニ、土星 輪に突入し、大気圏で燃え尽きる2017/9:東大が超高輝度 超新星の輝くメカニズムを解明 2017/9:3大望遠鏡が 110億光年彼方の銀河で 新たな星の誕生を検出
  9. 9. 8 そして太陽フレア
  10. 10. 9
  11. 11. 10
  12. 12. 11 参考
  13. 13. 12 最近のムーブメント 【Movement1】この3年間、宇宙発見が立て続けに発生 2017/1:3度目の検出 2015/9:最初の重力波の検出 (アインシュタインの提唱から100年) 2015/12:2度目の検出 2017/9:探査機カッシーニ、土星 輪に突入し、大気圏で燃え尽きる2017/9:東大が超高輝度 超新星の輝くメカニズムを解明 2017/9:3大望遠鏡が 110億光年彼方の銀河で 新たな星の誕生を検出
  14. 14. 13 最近のムーブメント 【Movement2】 数学・物理学系イベントが昨年より大幅増 100名規模のイベントや 高額有料イベントも盛況 100名規模のイベントや 高額有料イベントも盛況
  15. 15. 14 最近のムーブメント 【Movement3】 メディア/企業広告にも「数学・物理学」の波 ブリヂストンタイヤ ECOPIAのCM露出増加、売上も 現在放映中「仮面ライダービルド」の主人公は天才物理学者 モーニング掲載「はじめアルゴリズム」 第1話から自然現象を数式で表記し、 統合までする飛ばしっぷり
  16. 16. 15 こうしたムーブメントに対して、業務ITの現場は…  ディープラーニングの影響で、数学に触れる人口は多少増加  しかし、業務として携わっている方は、まだまだ、ほんの一握り  これは、福岡に限らず、都心や別の地方であっても同様  「実務ITエンジニアで、数学・物理学が得意」という層自体が、 国内ではそれほど厚く無いのが実態  「これからのITでもっと活用される領域」、すなわち確率・統計 や機械学習、理論物理学、量子力学、相対論などは、 数学・物理学の基礎から応用までのリテラシーが問われる  これらは、現実務ITで扱うプログラミングやマネジメントとは、 全く別のスキルセットであり、その習得には骨が折れると予想
  17. 17. 16 2017/10、福岡で量子・宇宙Pgを学ぶコミュ発足 そこで、福岡にて量子・宇宙等の様々な数学・物理学の理論を 学び、数式として慣れ親しみ、理論をプログラミングや機械学習、 クラウド上の量子コンピュータで動かし、解析し、楽しむコミュニティ 「量子宇宙なfukuoka」 を近々、発足したいと思います (ハッシュタグ #QuaUnivFukuoka で、8/27以降、先行ツィート中)
  18. 18. 17 福岡の仲間と繋がっていきたいと思います 福岡には、機械学習からIoTまで、様々なスタートアップ企業が 活躍しているので、繋がって、広げていけたらと、思っています
  19. 19. 18 注意:暖かな目でご容赦ください&楽しんでください 別主催のElixirコミュニティ「fukuoka.ex」やAI/ML コミュニティ 「福岡x人工知能…」のような、専門知識とノウハウをたっぷり 蓄えてのスタートでは無いので、みなさまと一緒に学び、ステップ アップしていければ、という想いで始めようと思いますm(__)m ちなみに私の学生時の学科や専攻は、情報 やITであったため、宇宙・量子・物理・数学の いずれも無く、仕事の中でもそういった業務に 携わる機会は一切ありませんでした… そのため、全て趣味の独学 (かつ32歳くらい を超えてから) のため、拙い面が多々あります が、暖かな目でご容赦いただけると幸いです あと、しょっちゅう分からないこともあるので、 詳しい方は、どうかお助けください(^^)
  20. 20. 19 今回セッションの趣旨 「重力」の基礎理論を紹介し、コード 化の前段となる「数式」を紐解きます その後、 「数式をコード化する様 を見ていただき、数学 や物理学のコード化が 思った以上にカンタン」 ということを実感していただきます それから、「重力」に付随する理論を 幾つかご紹介したいと思います
  21. 21. 20 1. GoogleMapは重力を振り切るw 2. 「万有引力の法則」 3. 人工衛星の公転軌道をプログラミング 4. 惑星の公転と「加減速スイングバイ」 5. 「ケプラーの第3法則」 6. 人工衛星飛ばせてもGPSは使えない 7. 重力は光の速度を超えられない? 8. 数学・物理学をプログラミングする世界 目次
  22. 22. 21 1.GoogleMapは重力を振り切るw
  23. 23. 22 1.GoogleMapは重力を振り切るw もし、GoogleMap (やカーナビ) で、位置検索をされるなら、 重力に対する、数学・物理学の恩恵をかなり受け取っています なぜなら、GPSが搭載されている人工衛星は、地球の重力を、 一度脱出し、脱出した後は地球の周りをグルグル廻る必要が あるのですが、この「地球周回軌道」と呼ばれるものに乗るには、 物理学と数式が欠かせないからです
  24. 24. 23 1.「横に投げたボール」と「人工衛星」は同じ ボールを真横に投げると、途中までは水平に飛んで行きますが、 やがて水平方向の勢いを失って、重力に従って地上方向に落ち ていき、最後は地上に着きます GPSを積んだ人工衛星は、このボールの水平飛行が続いたよう なもので、重力に従って地上方向に落ち続けてはいるが、速度 が維持されているため、地上に着かず、周回し続ける訳です この速度のことを、「第1宇宙速度」と言います =
  25. 25. 24 1.「人工衛星」と「公転する惑星」も実は同じ GPSを積んだ人工衛星が、地球を中心に周回するのと、地球 含めた太陽系惑星が、太陽の周りを公転する理屈は、実は全く 同じなのです 地上に着くことも無く、かといって、どこかに飛び去る訳でも無く、 太陽や地球を中心に、楕円を描き続ける特徴も同じです このような公転の軌道は計算可能で、「万有引力の法則」と、 その元である「ケプラーの第3法則」から導き出すことができます =
  26. 26. 25 2.「万有引力の法則」
  27. 27. 26 2.「万有引力の法則」 あらゆる2つの物体間には、お互いを引き合う力、つまり「引力」 が発生しており、引力は、以下2つの条件が成り立ちます  各物体の質量の乗算に比例する (重い程強く引き合う)  物体間の距離の2乗に反比例する (離れると弱まる) 質量当りにかかる引力の強さを「G 」※、物体の質量を「M 」「m」、 物体間の距離を「r 」とすると、物体間の引力は、以下となります ※「万有引力定数」と呼びます 【Column】 「重力」とは、引力に「自転の遠心力」を合わせた力を指します 本スライドでは、「自転の遠心力」の考慮を割愛し、この2つを同一視します F = G Mm r 2
  28. 28. 27 2.人工衛星の位置を示すxy軸座標 以下は、地球の中心を0地点とした、人工衛星のxy 座標です 人工衛星の軌道は、「運動方程式」により、以下の通りです ma = F 加速度a を、x 軸・y 軸に分けることで、移動速度を出しましょう x α θ y F Fcosθ Fsinθr Position( x, y ) 人工衛星の座標 0 ※m は人工衛星の質量、a は加速度
  29. 29. 28 2.引力と人工衛星の位置から移動速度を計算 ma はmdx とmdy という偏微分に分割し、F は直交座標(xy 座標)から極座標(方向F と角度θ で表現される座標)へと変換 します mdx = -F cosθ, mdy = -F sinθ F を前述した引力に展開し、cosθ, sinθ を人工衛星位置x, y と人工衛星までの距離r で表現すると、以下の通りです mdx = -G ・ = -G mdy = -G ・ = -G Mm r 2 x r Mmx r 3 Mm r 2 y r Mmy r 3 ※方向F は、0地点から外側に向かって いればプラス、逆方向ならマイナスと なるため、この場合はマイナスとなる
  30. 30. 29 2.引力と人工衛星の位置から移動速度を計算 両辺のm を削除したものが、移動速度になります dx = -G , dy = -G 地球が0地点なので、r は、x とy から計算できます r = √ x + y G およびM は、以下の通りです  万有引力定数 G = 6.67259 x 10 m / s  地球の質量 M = 5.974 x 10 kg GM = 1.267 × 10 km / s Mx r 3 My r 3 2 2 -11 3 2 24 8 3 2
  31. 31. 30 3.人工衛星の公転軌道をプログラミング
  32. 32. 31 3.公転軌道をJavaScriptでプログラミング 前章で紐解いた、人工衛星の移動速度を用いて、人工衛星が 地球周回軌道をグルグルと回るシミュレーションをJavaScirptで 作ってみましょう dx = -G , dy = -G , r = √ x + y この移動速度の数式をコード化した以下は、数式そのままです ( 最近、関数型しか書いて無いので、状態を持てる・更新できる言語に拒否反応が(-_-u… ) … // 公転対象の位置から重力影響を計算し、速度を変更後、公転対象の位置を移動 moveOnGravityEffect: function() { var r = Math.sqrt( Math.pow( this.x, 2 ) + Math.pow( this.y, 2 ) ); this.dx = this.dx - G * M * this.x / Math.pow( r, 3 ); // x方向の移動速度 this.dy = this.dy - G * M * this.y / Math.pow( r, 3 ); // y方向の移動速度 this.x = this.x + this.dx; // x位置を、x方向の移動速度で更新 this.y = this.y + this.dy; // y位置を、y方向の移動速度で更新 }, … Mx r 3 My r 3 2 2
  33. 33. 32 3.人工衛星が地球周回軌道をグルグル回る JSで計算した移動速度とxy 座標にて地球周回軌道をグルグル 回る様を見ましょう (移動速度を変えると軌道が変わります)
  34. 34. 33 3.コード内容 var G = 6.672; // 地球の重力定数 // 公転対象プロトタイプ var CRevolution = function( id ) { this.x = 0; this.y = 0; this.dx = 0; this.dy = 0; this.readData(); this.view(); }; CRevolution.prototype = { // 公転対象の状態を更新 update: function() { this.moveOnGravityEffect(); this.view(); this.updateData(); }, …(以下、省略)… onStart() で移動を開始した後は、60fpsのタイマーで、移動 速度と位置を計算し、人工衛星を再描画することで、移動する 様をアニメーションで見れます (データ部も更新されていく)
  35. 35. 34 3.「地球の重力を振り切る」を体験 移動速度を変えても、「第1宇宙速度」内のうちは、違う軌道で 周回しますが、超えると、地球の重力を振り切って戻ってきません
  36. 36. 35 3.地球以外の惑星の重力 地球よりも重力の弱い惑星 (たとえば月) であれば、衛星が同じ 位置/速度であっても、周回軌道は広めに変わってきます 役1/6の月は、最初から軌道を外れる程、弱い重力です 逆に、地球よりも重力の強い惑星 (太陽や木星など) の場合は、 同じ位置/速度だと周回軌道は狭めに変わってきます 木星の場合は、激突してしまいました… 太陽だと、あっというまに吸い込まれ、すっ飛んで行きました(^^u まるでブラックホールのようです…太陽近くを通るときは気をつけて var G = 6.672 * 0.165; // 月の重力定数 var G = 6.672 * 2.36; // 木星の重力定数 var G = 6.672 * 27.9; // 太陽の重力定数
  37. 37. 36 4.惑星の公転と「加減速スイングバイ」
  38. 38. 37 4.惑星の公転と「加速・減速スイングバイ」 木星の重力の例で見たように、重力源に近づくほど、引力は強く なります (以下の引力の式を見ても、人工衛星と重力源の半径 であるr が小さくなるほど、引力が強くなることが分かります) この現象を利用して、惑星の付近を通る人工衛星や探索機の 加速・減速に利用するのが「スイングバイ」で、惑星の進む方向 で出ていくと加速、進む方向の逆から出ていくと減速になります F = G Mm r 2
  39. 39. 38
  40. 40. 39 4.惑星の公転と「加速・減速スイングバイ」 1977年に打ち上げられたボイジャー1号・2号は、地球軌道から 木星に向かった際は、太陽系を脱出する速度を満たしていない 状態でしたが、木星で「加速スイングバイ」をすることで速度上昇 し、太陽系を脱出できました また、つい先日、土星に落ちた土星探査機カッシーニは、金星 →金星→地球→木星とスイングバイし、土星軌道に乗りました スイングバイの進入時と脱出時は、以下のようにつり合っています 既にお腹いっぱいだと思うので、スイングバイの数式の解説や、 コードでのシミュレーションは、またの機会に (^o^)
  41. 41. 40 5.「ケプラーの第3法則」
  42. 42. 41 5.「ケプラーの第3法則」 公転における重力源 (地球、太陽等) の質量が一定の場合、 「公転対象の公転周期の2乗が、公転対象と重力源の距離の 3乗に比例する」という、「ケプラーの第3法則」が成り立ちます 前述の人工衛星で言えば、人工衛星と地球との距離を「a」、 人工衛星の公転周期を「P」とすると、その比率は、常に一定と なる訳です 「万有引力の法則」は、この「ケプラーの第3法則」を元に導き出 されています 公転周期の単位を年、2点間の距離の単位をAU (天文単位) にすると、この (一定) は、1に近い値となる 例.金星の公転周期は0.6152年、太陽との距離は0.7233AU なので、左の数式にあてはめた比率は、0.9998と、1に近い (一定)= a P 2 3
  43. 43. 42 5.CM表記は「ケプラーの第3法則」の一般的な形 CMの表記は、ケプラーの第3法則の 一般的な形で、左辺は前ページの 通りですが、右辺を導出するには、 下記のような図で辺や角度を定義し、 証明しないとなので、もっと数式の扱い に慣れてきたら、どこかでやりたいですね (もくもく会とか、いいかも知れません)
  44. 44. 43 6.人工衛星飛ばせてもGPSは使えない
  45. 45. 44 6.GPSは人工衛星を飛ばすだけでは使えない GPS衛星には、正確な位置と時間を割り出すために、3万年に 1秒しか狂わない時計 (原子時計) が搭載されていますが、1日 に7μ秒、地上の時計よりも遅れが出ます これは、衛星が軌道を常に移動しているために発生する現象で、 移動していない地上からは、「時間が遅れて見える」ためであり、 「特殊相対性理論」で説明できる現象です (詳細は別枠で) また、重力の強い地上から、重力の弱い衛星を見ると、「時間が 進んで見える」現象も発生し、1日に46μ秒進みますが、こちら は「一般相対性理論」で説明できる現象です (詳細は別枠で) 両方の差で39μ秒、衛星の時計が進み、距離的には12Kmも ズレて使えないため、時間差補正によりGPSは使い物になる、と いう訳です
  46. 46. 45 7.重力は光の速度を超えられない?
  47. 47. 46 7.重力は光の速度を超えられない? 「万有引力の法則」では、重力の影響を受ける対象に対して、 「重力が一瞬 (経過時間的にゼロ) で伝わる」という前提を置い ているのですが、実際は「光速」を超える力の作用は、古典力学 では説明できません 「量子トンネル効果」のような、光速を超える概念を持っている 「量子力学」による説明が必要とされます (詳細は別枠で) ただし、重力を記述する「一般相対性理論」は、量子力学との 相性が非常に悪く、ここ数十年、世界の理論物理学者が、 「量子と重力を統一する理論」の完成に挑むものの、未だ達成 できていない状態です とはいえ、量子力学は面白い分野なので、学ぶ価値は高いです
  48. 48. 47 7.参考:様々な理論が統合されてきた歴史
  49. 49. 48 8.数学・物理学をプログラミングする世界
  50. 50. 49 8.数学・物理学のプログラミング世界にようこそ 今回は、CMのネタをきっかけに、「万有引力の法則」と「ケプラー の第3法則」の理論を説明し、数式を紐解き、プログラミングして みました 慣れ親しんだコードで見てから数式を見たら、数式も理解できる かも、という気分になったのでは無いでしょうか? これで数学・物理や数式に拒否感強い方でも、「なんとなく難しく 無いかも?」と思っていただけたら、この入門としては大成功です 数式の紐解きの中で、偏微分や座標系の変換等、数学のテク ニックが幾つか出てきましたが、頻出するパターンは決まっている ので、一歩ずつ理解し、慣れていけば、抵抗感は薄まります これからも、数学・物理学のプログラミングを楽しんでください!
  51. 51. 50 8.参考:宇宙と重力を楽しむコンテンツ (入門) 今回の内容を楽しんでいただけたなら、以下のコンテンツもきっと 楽しいので、よかったらご覧ください
  52. 52. 51 ・・・ぉ、ぉぅ・・・
  53. 53. 52 8.参考:宇宙と重力を楽しむコンテンツ (もっと) 右下に行くほど、数式がジャンジャン出てきますが、読みこなせる と快感かも(^o^)
  54. 54. 53 最後は、地球周回低軌道 (LEO: 高度2000km) を周回しているISS※から ※ISS: International Space Station (国際宇宙ステーション)
  55. 55. 54 太陽フレア後のオーロラ を見て締めくくりましょう
  56. 56. 55
  57. 57. 56 ご清聴ありがとうございます

×