宇宙工学 最適化問題
宇宙工学の最適化問題の一例として、宇宙船の軌道設計を考えてみましょう。
例えば、地球周回軌道への衛星の打ち上げを考えます。
具体的には、衛星の打ち上げコストと到達する軌道の高度、または到達するまでの時間などの複数の要素を最適化する問題があります。
ここでは、簡単な例として、地球周回軌道への衛星の打ち上げコストと軌道の高度の関係を考えてみます。
軌道の高度が増すにつれて打ち上げコストが増えると仮定します。
以下のコードは、この問題を最適化するためにScipyライブラリを使用しています。
具体的には、打ち上げコストを最小化するための最適な軌道高度を探します。
1 | import numpy as np |
このコードは、打ち上げコストを最小化するための最適な軌道高度を見つけ、その結果をグラフ化しています。
グラフでは、軌道高度に対する打ち上げコストの関係が示され、最適な軌道高度が赤い点として示されます。
[実行結果]
ソースコード解説
このコードは、宇宙工学における最適化問題の一例を示しています。
以下がソースコードの詳細です。
1. 目的関数の定義:
launch_cost
関数は、仮想的な打ち上げコスト関数を定義しています。
ここでは、高度と500kmの差の二乗をコストとしています。
2. 初期推定値の設定:
initial_guess
は、最適化アルゴリズムの初期の推定値として1000kmを設定しています。
3. 最適化の実行:
minimize
関数を使って、launch_cost
関数を最小化することで最適な軌道高度を探します。
ここではBFGS法を用いて最適化を行っています。
4. 最適化結果の取得:
- 最適な軌道高度とその時の打ち上げコストを取得しています。
5. グラフ化:
heights
は400kmから600kmまでの範囲の高度を考慮するための配列です。costs
はそれぞれの高度における打ち上げコストを示します。plt.plot()
で高度に対する打ち上げコストの関係を表すグラフをプロットしています。plt.scatter()
で最小の打ち上げコストを達成する最適な高度を赤い点として表示しています。- その他、グラフのタイトルや軸ラベル、凡例、グリッドを設定しています。
6. 結果の表示:
- 最適な軌道高度とその時の最小打ち上げコストを出力しています。
結果解説
[実行結果]
この結果は、打ち上げコストを最小化するための最適な軌道高度を見つけたことを示しています。
結果として得られた最適な軌道高度は約500kmです。
しかし、数値計算の誤差のため、厳密には499.99999999kmという値が得られています。
さらに、この最適な高度での打ち上げコストは非常に小さく、ほぼゼロに近い値となっています(6.48426847315948e-17)。
これは浮動小数点の誤差などによるもので、ほぼゼロに等しい非常に小さな値です。
グラフでは、軌道高度が高くなるにつれて打ち上げコストが増加することが示されています。
そして、その関係を表す2次関数的なカーブが描かれており、最小値が500km付近であることが視覚的に示されています。
赤い点は最適な高度での最小コストを示しています。