いくつかの段階と重力損失を考慮してロケットのペイロードを計算するためのトレーニング/ゲームプログラム



多段式ロケットの最適なレイアウトでは、各段に4 km / sの特性速度(デルタV)のマージンが必要であると考えられています。 最適な初期推力対重量比は1.2と考えられています。 しかし、これらのアイデアは何らかの形で確認する必要があります。 また、ロケットが多段である理由を示したかった。 フォーミュラは優れていますが、何か他のものが必要であり、ゲームや競技会はそのようなものとして理想的です。 このようにコード名「enlarge your PN 」の教育/ゲームプログラムのプロジェクトが生まれました



問題の声明と受け入れられた簡素化



惑星から遠く離れた真空でロケットを事実上加速することは、私にとって面白くないように思われました。 したがって、タスクは地球から開始されます。 空力抵抗の計算と表面から軌道に入ることは複雑に思えたので、ニュートンの思考実験のように、ロケットは真空の「高い山」から発射されます。



入力パラメータ



以下のパラメーターが入力として選択されました。



推定および関連パラメーター



ロケットに少しでも興味がある人は、ツィオルコフスキーの公式で使われている特定の衝動がどこで消えたのかと尋ねるかもしれません。 実際、彼はどこにも行っていません。 特定のインパルスは、エンジンの推力と燃料消費量に暗黙的に含まれています。 MIはトラクションに比例し、燃料消費量に反比例します。 推力が大きく、燃料消費が少ないほど、AIは大きくなります。

トン単位のエンジン推力は、キロニュートン単位の推力に変換でき、9.81倍になります。

タンク、アダプター、その他の補助構造物の質量は、燃料質量の10%として「オフハンド」と見なされ、「寄生質量」と呼ばれます。 実際にはこのパラメーターはロケットの全体的な効率に強く影響し、ロケットによって異なるため、これは非常に深刻な単純化です。 タンク、アダプター、その他の構造物が軽いほど、ロケットで持ち上げる必要のある寄生質量が少なくなります。

総質量と空質量は、既知のパラメーターに基づいて計算されます。 空の質量はすべてのエンジンの質量と寄生質量であり、総質量は空の質量と燃料の質量です

重力損失の計算の詳細を以下に示します。



考慮されないパラメーター





少しの物理学と数学



速度計算


モデル内のロケットの加速は次のとおりです。



飛行高度は一定であると想定されています。 次に、ロケットの推力をFxFyの 2つの投影に分割できます。 Fymgに等しくなければなりません。これらは重力損失であり、 Fxはロケットを加速する力です。 Fは一定、これはエンジンの推力、 mは燃料消費により変化します。

当初、ロケットの運動方程式を解析的に解決する試みがありました。 しかし、重力損失はロケットの速度に依存するため、成功しませんでした。 思考実験をしましょう:

  1. 飛行の開始時に、エンジンの推力がロケットの重量よりも小さい場合、ロケットは単に発射台から外れません。
  2. 加速の終わりに、ロケットもmgの力で地球に引き付けられますが、それは重要ではありません。なぜなら、その速度は落下する時間がなく、円軌道に入るとき、それは常に地球に落下し、スピードのため。


実際の重力損失は、ロケットの質量と速度の関数であることがわかります。 簡略化した近似として、重力損失を次のように考慮することにしました。



V1は最初の宇宙速度です。

最終速度を計算するには、数値シミュレーションを使用する必要がありました。 1秒単位で、次の計算が実行されます。



上付き文字tは現在の秒、t-1は前の秒です。

またはプログラミング言語で
for (int time = 0; time < iBurnTime[stage]; time++) { int m1 = m0 - iEngineFuelUsage[stage] * iEngineQuantity[stage]; double ms = ((m0 + m1) / 2); double Fy = (1-Math.pow(result/7900,2))*9.81*ms; if (Fy < 0) { Fy = 0; } double Fx = Math.sqrt(Math.pow(iEngineThrust[stage] * iEngineQuantity[stage] * 1000, 2)-Math.pow(Fy, 2)); if (Fx < 0) { Fx = 0; } result = (result + Fx / ms); m0 = m1; }
      
      





最大ペイロード計算


各許容ペイロードの最終速度がわかれば、ペイロードを最大化する問題を非線形方程式の根を見つける問題として解決できます。



この方程式を半除算法で解くことが最も便利に思えました。



コードは完全に標準です
  public static int calculateMaxPN(int stages) { deltaV = new double[5]; int result = 0; int PNLeft = 50; while (calculateVelocity(PNLeft, stages, false) > 7900) { PNLeft = PNLeft + 1000; } System.out.println(calculateVelocity(PNLeft, stages, false)); int PNRight = PNLeft - 1000; double error = Math.abs(calculateVelocity(PNLeft, stages, false) - 7900); System.out.println(" " + Double.toString(PNLeft) + ";  " + Double.toString(PNRight) + ";  " + Double.toString(error)); boolean calcError = false; while ((error / 7900 > 0.001) && !calcError) { double olderror = error; if (calculateVelocity((PNLeft + PNRight) / 2, stages, false) > 7900) { PNRight = (PNLeft + PNRight) / 2; } else { PNLeft = (PNLeft + PNRight) / 2; } error = Math.abs(calculateVelocity((PNLeft + PNRight) / 2, stages, false) - 7900); System.out.println(" " + Double.toString(PNLeft) + ";  " + Double.toString(PNRight) + ";  " + Double.toString(error)); if (Math.abs(olderror - error) < 0.0001) { //       PNLeft = 0; PNRight = 0; calcError = true; } } result = (PNLeft + PNRight) / 2; calculateVelocity(result, stages, true); return result; }
      
      







そしてプレイする?



さて、理論的な部分の後、あなたは遊ぶことができます。

プロジェクトはGitHubにあります 。 MITのライセンス、健康への使用、変更、および配布も歓迎します。

突然誰かがインストール手順を必要とする場合
  1. リンクhttps://github.com/lozga/rocketcalcに従ってください
  2. [ZIPのダウンロード]ボタンを使用してアーカイブをダウンロードします。
  3. フォルダーに解凍します。
  4. Javaがインストールされていない場合は、オフィスからインストールしてください サイト
  5. RocketStageCalc.jarファイルを実行します。


メインの唯一のプログラムウィンドウ:





特定のペイロードのロケットの最終速度を計算するには、パラメーターのテキストフィールドに入力し、上部からペイロードを入力して、[速度の計算]ボタンをクリックします。

ロケットのこれらのパラメータの最大ペイロードを計算することもできます。この場合、フィールド「PN」は考慮されません。

本物の5速ミノタウロスVロケットがあります。 Minotaur Vボタンは、このロケットに似たパラメーターをロードして、プログラムの動作例を示します。

本質的に、これは任意のパラメーターでロケットを作成できる「サンドボックス」モードであり、さまざまなパラメーターがロケットの積載量にどのように影響するかを調べます。



競争



「競争」モードを有効にするには、「競争」ボタンを押します。 このモードでは、同じ競争条件に対して制御されるパラメーターの数が非常に制限されます。 すべてのステップは同じタイプのエンジンです(これは明確にするために必要であり、いくつかの段階が必要です)。 エンジンの数を制御できます。 また、燃料の分配を段階的に制御し、段階数を制御することもできます。 最大燃料重量は300トンです。 より少ない燃料を充填できます。

目的 :最小のエンジン数を使用して最大PNを達成します。 プレイしたい人がたくさんいる場合は、エンジンの数ごとに独自の順位があります。

希望する人は、コメントで使用されたパラメーターを使用して結果を残すことができます。 頑張って!



UPD: 0sergに感謝し、数式を改善しました。



All Articles