Wie soll ich meine Rakete drosseln, um die höchste Höhe zu erreichen? [geschlossen]

Problem der "realen Welt".

Angenommen, wir wollen eine Rakete starten, die mit einem Motor ausgestattet ist, der nach Belieben gedrosselt werden kann. Nehmen Sie außerdem an, dass die pro Zeit verbrannte Kraftstoffmenge direkt proportional zur Aufwärtskraft ist, die der Motor ausübt. Wie sollten wir den Motor unter Berücksichtigung des Luftwiderstands drosseln, um die höchste Höhe zu erreichen?


Physikalische Formulierung.

Lassen M ( T ) = M D + M F ( T ) sei die Gesamtmasse der Rakete, wo M D ist seine Trockenmasse und M F ( T ) die Masse des verbleibenden Kraftstoffs zu der Zeit T . Unser Motor liefert eine Kraft, die direkt proportional zur verbrannten Kraftstoffmenge ist; so die Kraft, die im Moment ausgeübt wird T wird sein

F = η D M F D T ,
Wo η ist eine positive Konstante, die vom Wirkungsgrad des Motors abhängt.

Für die Widerstandskraft verwenden wir die strömungsdynamische Formulierung:

F D = k ( X ) X ˙ ( T ) 2 ,
Wo X ist unsere Höhe und k ein Koeffizient, der die Dichteänderung der Luft mit der Höhe berücksichtigt.

Nach Newtons Gesetz haben wir also

X ¨ = F F D M G M = η M F ˙ k ( X ) X ˙ 2 M D + M F G .

Das Problem hat sich daher zu folgendem entwickelt:

Finden Sie eine nicht negative Funktion θ ( T ) (die Drosselklappe, dh θ = M F ˙ ) so dass

0 θ = M F ( 0 ) , (Wir verbrennen den ganzen Treibstoff, nicht mehr und nicht weniger)
und so dass die Flugbahn X ( T ) Lösung der Differentialgleichung
X ¨ ( T ) = η θ ( T ) k ( X ( T ) ) X ˙ ( T ) 2 M D + M F ( 0 ) 0 T θ G
erreicht irgendwo maximalen Wert, also für alle anderen θ ~ Erfüllung der vorherigen Anforderungen, seine Flugbahn X ~ ist so das sup T [ 0 , ) X ~ ( T ) sup T [ 0 , ) X ( T ) .


Mathematische Formulierung und Zusammenfassung.

Gegeben G , η , C > C ( 0 , ) , k : [ 0 , ) [ 0 , ) eine abnehmende Funktion, let

S C , C := { F L 1 ( [ 0 , ) )  st  0 F = C , F 0  ä , X F ( T )  st  X ¨ F ( T ) = η F ( T ) k ( X F ( T ) ) X ˙ F ( T ) 2 C 0 T F G } .
Finden θ S C , C st
θ ~ S C , sup T [ 0 , ) X θ ~ ( T ) sup T [ 0 , ) X θ ( T ) .

Ich sehe hier nur Skalare. Schub hat sowohl Größe als auch Richtung, und do tut Position, Geschwindigkeit und Beschleunigung. Außerdem können Sie nicht nur g für die Schwerkraft verwenden, die den gesamten Orbitpunkt besiegt. Das System ist viel komplizierter, als Sie ihm zugetraut haben.
Ich vermute, die Frage betrifft eher eine Spielzeugrakete, die vertikal startet, als eine ausgeklügeltere Rakete, die die Atmosphäre verlässt und entweder in die Umlaufbahn geht oder einer ballistischen Flugbahn folgt, um ihre Nutzlast um die halbe Welt zu bringen.
@AlanSE Ich denke, er fragt nach einem rein vertikalen Aufstieg. Allerdings stimme ich dir da zu G sollte durch ersetzt werden G M R 2 .
Ich persönlich finde das Problem mit diesen vereinfachten Annahmen komplex genug; Wenn Sie möchten, können Sie jedoch gerne einen allgemeineren Fall (formulieren und) lösen! (zB Ersatz G mit G M X 2 , betrachten Sie einen Luftwiderstandsbeiwert, der nicht nur von der Höhe abhängt usw.)
Sie müssen ungefähr 32 Kilometer heben, um eine Änderung von 1% zu erhalten G , daher kann es je nach Umfang der Dinge durchaus sinnvoll sein, einen Ansatz mit konstanter Gravitation zu verwenden.
Sie haben zwei widersprüchliche Drücke. Sie möchten schnell brennen, um die Schwerkraftverluste zu verringern, und Sie möchten langsam fahren, um die Luftwiderstandsverluste zu verringern. Ohne Informationen über den Luftwiderstand können Sie meiner Meinung nach keinen Kompromiss eingehen. Es ist wahrscheinlich, dass dies eine numerische Optimierung sein wird.
Nicht drosseln. Jede zusätzliche Zeit, die mit dem „Schweben“ verbracht wird, ist kostbar F Δ T um die Schwerkraft zu bekämpfen, wenn sie Ihre Rakete nach oben schicken könnte.
Ich ziehe meine vorherigen Kommentare zurück und finde, dass das Problem jetzt besser in den Bereich dieser Site passt. Die kritische physische Unterscheidung ist der Punkt, über den @Floris streitet, aber ich glaube, er liegt falsch. Bei einer ausreichend dichten Atmosphäre akzeptieren Sie mehr Schwerkraftwiderstand anstelle eines geringeren Luftwiderstands. Bei abnehmender exponentieller Dichte können Sie langsam drosseln, bis die Atmosphäre klar ist, und dann den Rest schnell loslassen. Bei bestimmten Parameterkombinationen sind auch erkennbare Grenzfälle möglich. Es ist etwas geladen, vielleicht wäre eine spezifischere kleinere Frage besser.
FWIW, das Shuttle würde unmittelbar nach dem Start auf etwa 65% Schub der Haupttriebwerke gehen, bis die Atmosphäre bei etwa 35000 Fuß und 1600 Meilen pro Stunde dünner wurde
Hallo Brainstorming. Willkommen bei Phys.SE. Wenn Sie dies noch nicht getan haben, nehmen Sie sich bitte eine Minute Zeit, um die Definition für die Verwendung des Hausaufgaben -Tags und die Phys.SE - Richtlinie für hausaufgabenähnliche Probleme zu lesen.
Ich vermute, es gibt keine schöne analytische Lösung für dieses Problem. Dies hat einige nützliche Informationen.

Antworten (2)

Dies ist ein Optimalsteuerungsproblem , daher werde ich die Regeln der Optimalsteuerung verwenden. Zuerst stellen wir die Zustandsraumgleichungen dar. Außerdem nehmen wir die Gesamtmasse als Zustand und die verbrannte Kraftstoffmenge als Eingangskontrolle. Also haben wir:

(1) { X ˙ 1 = X 2 X ˙ 2 = η θ k ( X 1 ) X 2 2 X 3 G X ˙ 3 = θ
mit diesen Randbedingungen:
(2) { X 1 ( 0 ) = 0 X 2 ( 0 ) = 0 X 3 ( 0 ) = M D + M F ( 0 ) X 3 ( T F ) = M D
Wir wollen Funktion finden θ ( T ) die die folgende Kostenfunktion minimieren:
(3) J ( θ ) = H ( X ( T F ) , T F ) + 0 T F G ( X , θ , T ) D T = 0 T F ( X 2 ) D T
In den obigen Gleichungen die Endzeit T F ist unbekannt und muss ermittelt werden.

Um die Lösung zu finden, definieren wir den Hamiltonoperator dieses Systems:

(4) H ( T , θ , X , P ) = G + P T A = X 2 + P 1 X 2 + P 2 ( η θ k ( X 1 ) X 2 2 X 3 G ) P 3 θ
Wo A ist der Vektor der Zustandsdifferenzialgleichungen und ( P 1 , P 2 , P 3 ) sind costate Variablen.

Unter Verwendung der Variationsrechnung werden die notwendigen Bedingungen für Optimalität gefunden:

(5) { X ˙ = H P P ˙ = H X 0 = H θ
und wir erhalten diese Randbedingung:
(6) ( H X ( X ( T F ) , T F ) P ( T F ) ) δ X F + ( H ( X ( T F ) , P ( T F ) , θ ( T F ) , T F ) + H T ( X ( T F ) , T F ) ) δ T F = 0

Verwenden von Gleichungen ( 5 ) wir können Zustände und Differenzialgleichungen ableiten:

(7) { X ˙ 1 = X 2 X ˙ 2 = η θ k ( X 1 ) X 2 2 X 3 G X ˙ 3 = θ P ˙ 1 = P 2 X 2 2 X 3 k X 1 P ˙ 2 = 1 P 1 + 2 P 2 k ( X 1 ) X 2 X 3 P ˙ 3 = P 2 X 3 2 ( η θ k ( X 1 ) X 2 2 )
und von 0 = H θ In ( 5 ) wir bekommen:
(8) P 2 P 3 = X 3 η
Auch aus Gleichung ( 6 ) Diese Endbedingungen werden gefunden:
(9) { P 1 ( T F ) = 0 P 2 ( T F ) = 0
Und:
(10) H ( T F ) = 0

Jetzt haben wir sieben unbekannte Funktionen ( X 1 ( T ) , X 2 ( T ) , X 3 ( T ) , P 1 ( T ) , P 2 ( T ) , P 3 ( T ) , θ ( T ) ) mit sechs Differentialgleichungen in ( 7 ) plus eine Nebenbedingungsgleichung in ( 8 ) . Zur Lösung dieser Gleichung benötigen wir hinreichende Randbedingungen. Verwendung von vier Randbedingungen in Gleichung ( 2 ) und zwei Endbedingungen in Gleichung ( 9 ) alle benötigten Randbedingungen sind bekannt.

Wir haben keine Gleichung verwendet ( 10 ) noch. Diese Gleichung wird verwendet, um die Endzeit zu finden T F .

Schließlich zur Lösung des Randwertproblems in ( 7 ) und wegen der Nichtlinearität müssen wir numerische Methoden wie die Schießmethode verwenden .

Ich fand diese Frage interessant und wollte heute Nachmittag keine richtige Arbeit machen, also habe ich ein einfaches Modell gemacht, um herauszufinden, was passieren würde. Mein Matlab-Code ist am Ende der Frage.

Bisher habe ich drei Fälle getestet und überlegt, den Anfangsschub zu ändern und für jeden Fall eine lineare Erhöhung des Schubs hinzuzufügen. Der Schub wird als Bruchteil des gesamten pro Sekunde verbrannten Treibstoffs angegeben.

Offensichtlich sind die Zahlen, die ich verwendet habe, nicht unglaublich realistisch oder vernünftig, aber sie geben eine erste Vorstellung davon, was vor sich geht. Die Farbe in den Diagrammen stellt die Höhe dar, die mit diesem Schub erreicht wird.

Bisher habe ich nur konstante Luftwiderstandsbeiwerte betrachtet. Zuerst habe ich versucht k = 0 (kein Widerstand)

k=0

Wie erwartet ergibt dies die größte Höhe, wenn Sie Kraftstoff so schnell wie möglich verbrennen. Dies ist hauptsächlich nur ein Test, um zu überprüfen, ob ich nichts falsch gemacht habe.

Wenn wir k=1 wählen, erhalten wir

k=1

Interessanterweise sehen wir hier den gegenteiligen Effekt. Sie wollen den niedrigsten und längsten Schub, der Sie vom Boden abhebt, da der Luftwiderstand die dominierende Form des Luftwiderstands ist.

Schließlich ein Zwischenfall von k = 0,1

k=0,1

Hier herrscht ein Gleichgewicht zwischen Luftwiderstand und Schwerkraft und ein mittlerer Schubwert wird bevorzugt.

Interessanterweise (zumindest für mich) war es nicht vorteilhaft, nach dem Start Gas zu geben. Ich vermute, dass dies auftreten kann, wenn die Variable k berücksichtigt wird.

Hier ist mein Matlab-Code. Sollte auch in Oktave laufen.

function[x]=rocket_test(thrustparam)

g=9.81;

md=1000;
mf=1000;  
k=0.1;
nu=1000;

dt=0.001;

v=0;
x=0;
t=0;

c=thrustparam(1)*mf;
p_1=thrustparam(2)*mf;

count=1;

while v>=0                  %want to find max height keep going until you start descending.

    throttle=throttle_set(t, c, p_1);

    if mf-throttle*dt<0    %if you would burn more fuel than left burn all the fuel  left;
        throttle=mf/dt;
    end

m=md+mf;
Fd=k*v^2+m*g;
Ft=nu*throttle;

F=Ft-Fd;

a=F/m;

x=x+v*dt+0.5*a*dt^2;
v=v+a*dt;
mf=mf-throttle*dt;
t=t+dt;

%store(count, :)=[t, x, v, a, throttle, Fd, Ft, F, m];
%count=count+1;

end
end

function [throttle]=throttle_set(t, c, p_1)

throttle=c+p_1*t;

if throttle<0
    throttle=0;
end

end