Расчет траектории пассивного участка полета ЛА с использованием параболической теории. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Расчет траектории пассивного участка полета ЛА с использованием параболической теории.



Параболическая теория изучает движение тяжелой материальной точки в пустоте в стационарном однородном параллельном поле земного тяготения. ЕЕ применяют для ориентировочного расчета траектории ЛА, имеющих малую скорость полета, и для расчета траектории ЛА на больших высотах, где сила сопротивления ничтожна мала.

Основные формулы параболической теории:

1 2 3. 4

Здесь t0=0, y0=yc=228,664 м, x0=xc=270,014 м,

-параметры конца активного участка рассчитанные по данным п 1.5.2

Ниже производится расчет пассивного участка траектории ЛА с использованием параболической теории для характерных точек параболической траектории.

Для вершины траектории (точка D) время вычисляется по формуле:

Подставляя tD в формулы 3 и 4, получим X(tD)=6626.495 м Y(tD)=2804.056 м

Для точки Е (конца траектории) имеем Y(tE)=0. Тогда

 

Результаты расчетов представлены в сравнении с расчетами реальной траектории в таблице 1.8.

Таблица 1.8

Точка Координата Х, м (числ/ П.Т.) Координата Y, м (числ/ П.Т.)
C 270,014/270,014 228,664/228,664
D 5520,904/6626.495 2475,650/2804.056
E 10534,668/19615.69 0/0

 


Приложение 1.

Графики

1. V(t) методами численного интегрирования и по параболической теории.

2. θ(t) методами численного интегрирования и по параболической теории.

3. y(x) (Метод Эйлера и параболическая теория).

4. y(x) (Метод Рунге-Кутта и параболическая теория).

       
 
 
 
 
   

 

 

 
 

 

 


Приложение 2.

Текст программы, разработанной для интегрирования методами Эйлера и Рунге-Кутта.

(Программа выполнена на Visual Basic 6.0 Professional Edition)

 
 

 


Option Base 1

Const r0 = 1.23

Dim r As Double

Dim y As Double

Dim x As Double

Dim V As Double

Dim Q As Double

Dim Xx As Double

Dim m As Double

Dim Yg As Double

Dim Xg As Double

Dim Cx As Double

Dim Vg As Double

Dim S As Double

Dim Mn As Double

Dim Rashod As Double

Dim Tg As Double

Dim Rs As Double

Dim T As Double

Dim h As Double

Dim Qg As Double

Dim i As Double

Dim K(4, 4) As Double

Dim str As String

Dim j As Double

 

Private Sub Command1_Click()

lbl.ForeColor = &HFF&

lbl.Caption = "идет расчет"

DoEvents

Yg = CDbl(Text4.Text) * Sin(CDbl(Text3.Text))

Xg = CDbl(Text4.Text) * Cos(CDbl(Text3.Text))

Cx = CDbl(Text5.Text)

Vg = CDbl(Text1.Text)

S = CDbl(Text6.Text)

Mn = CDbl(Text17.Text)

Rashod = CDbl(Text18.Text)

Tg = CDbl(Text2.Text)

Rs = CDbl(Text19.Text)

T = CDbl(Text16.Text)

h = CDbl(Text7.Text)

Qg = CDbl(Text3.Text)

Text33.Text = ""

Text34.Text = ""

Text36.Text = ""

Text40.Text = ""

Text38.Text = ""

 

'----------------------------------

'Активный участок траектории полета

'Эйлер

x = Xg

y = Yg

V = Vg

Q = Qg

j = Tg

For i = Tg To T Step h

r = r0 * Exp(-y / 7800)

Xx = 0.5 * Cx * r * S * V ^ 2

m = Mn - Rashod * i

V = V + h * (Rs - 9.81 * m * Sin(Q) - Xx) / m

Q = Q - h * 9.81 * Cos(Q) / V

x = x + h * V * Cos(Q)

y = y + h * V * Sin(Q)

If Option1.Value = True And Round(i, 2) = Round(j, 2) Then

j = j + 1

Text33.Text = Text33.Text & Round(i, 2) & vbCrLf

Text34.Text = Text34.Text & Round(V, 1) & vbCrLf

Text36.Text = Text36.Text & Round(Q, 3) & vbCrLf

Text40.Text = Text40.Text & Round(x, 0) & vbCrLf

Text38.Text = Text38.Text & Round(y, 0) & vbCrLf

End If

If i = Tg Then

str = "Значения коэфициентов" & vbCrLf & "на первом шаге Э" & vbCrLf

str = str & "V = " & Round(V, CLng(Text21.Text)) & vbCrLf

str = str & "Q = " & Round(Q, CLng(Text21.Text)) & vbCrLf

str = str & "X = " & Round(x, CLng(Text21.Text)) & vbCrLf

str = str & "Y = " & Round(y, CLng(Text21.Text)) & vbCrLf & vbCrLf

End If

Next i

Text8.Text = Round(V, CLng(Text21.Text))

Text9.Text = Round(Q, CLng(Text21.Text))

Text10.Text = Round(x, CLng(Text21.Text))

Text11.Text = Round(y, CLng(Text21.Text))

'-----------------------------

'Рунге-Кутт

x = Xg

y = Yg

V = Vg

Q = Qg

j = Tg

For i = Tg To T Step h

r = r0 * Exp(-y / 7800)

Xx = 0.5 * Cx * r * S * V ^ 2

m = Mn - Rashod * i

K(1, 1) = h * (Rs - 9.81 * m * Sin(Q) - Xx) / m

K(1, 2) = -9.81 * h * Cos(Q) / V

K(1, 3) = h * V * Cos(Q)

K(1, 4) = h * V * Sin(Q)

 

r = r0 * Exp(-(y + 0.5 * K(1, 4)) / 7800)

Xx = 0.5 * Cx * r * S * (V + 0.5 * K(1, 1)) ^ 2

m = Mn - Rashod * (i + h / 2)

K(2, 1) = h * (Rs - 9.81 * m * Sin(Q + K(1, 2) / 2) - Xx) / m

K(2, 2) = -9.81 * h * Cos(Q + K(1, 2) / 2) / (V + K(1, 1) / 2)

K(2, 3) = h * (V + K(1, 1) / 2) * Cos(Q + K(1, 2) / 2)

K(2, 4) = h * (V + K(1, 1) / 2) * Sin(Q + K(1, 2) / 2)

 

r = r0 * Exp(-(y + 0.5 * K(2, 4)) / 7800)

Xx = 0.5 * Cx * r * S * (V + 0.5 * K(2, 1)) ^ 2

m = Mn - Rashod * (i + h / 2)

K(3, 1) = h * (Rs - 9.81 * m * Sin(Q + K(2, 2) / 2) - Xx) / m

K(3, 2) = -9.81 * h * Cos(Q + K(2, 2) / 2) / (V + K(2, 1) / 2)

K(3, 3) = h * (V + K(2, 1) / 2) * Cos(Q + K(2, 2) / 2)

K(3, 4) = h * (V + K(2, 1) / 2) * Sin(Q + K(2, 2) / 2)

 

r = r0 * Exp(-(y + K(3, 4)) / 7800)

Xx = 0.5 * Cx * r * S * (V + K(3, 1)) ^ 2

m = Mn - Rashod * (i + h)

K(4, 1) = h * (Rs - 9.81 * m * Sin(Q + K(3, 2)) - Xx) / m

K(4, 2) = -9.81 * h * Cos(Q + K(3, 2)) / (V + K(3, 1))

K(4, 3) = h * (V + K(3, 1)) * Cos(Q + K(3, 2))

K(4, 4) = h * (V + K(3, 1)) * Sin(Q + K(3, 2))

 

V = V + (K(1, 1) + K(4, 1) + 2 * (K(2, 1) + K(3, 1))) / 6

Q = Q + (K(1, 2) + K(4, 2) + 2 * (K(2, 2) + K(3, 2))) / 6

x = x + (K(1, 3) + K(4, 3) + 2 * (K(2, 3) + K(3, 3))) / 6

y = y + (K(1, 4) + K(4, 4) + 2 * (K(2, 4) + K(3, 4))) / 6

 

If Option2.Value = True And Round(i, 2) = Round(j, 2) Then

j = j + 1

Text33.Text = Text33.Text & Round(i, 2) & vbCrLf

Text34.Text = Text34.Text & Round(V, 1) & vbCrLf

Text36.Text = Text36.Text & Round(Q, 3) & vbCrLf

Text40.Text = Text40.Text & Round(x, 0) & vbCrLf

Text38.Text = Text38.Text & Round(y, 0) & vbCrLf

End If

 

If i = Tg Then

str = str & "Значения коэффициентов" & vbCrLf & "на первом шаге Р-К" & vbCrLf

str = str & "K(1,1) = " & Round(K(1, 1), CLng(Text21.Text)) & vbCrLf

str = str & "K(1,2) = " & Round(K(1, 2), CLng(Text21.Text)) & vbCrLf

str = str & "K(1,3) = " & Round(K(1, 3), CLng(Text21.Text)) & vbCrLf

str = str & "K(1,4) = " & Round(K(1, 4), CLng(Text21.Text)) & vbCrLf

str = str & "K(2,1) = " & Round(K(2, 1), CLng(Text21.Text)) & vbCrLf

str = str & "K(2,2) = " & Round(K(2, 2), CLng(Text21.Text)) & vbCrLf

str = str & "K(2,3) = " & Round(K(2, 3), CLng(Text21.Text)) & vbCrLf

str = str & "K(2,4) = " & Round(K(2, 4), CLng(Text21.Text)) & vbCrLf

str = str & "K(3,1) = " & Round(K(3, 1), CLng(Text21.Text)) & vbCrLf

str = str & "K(3,2) = " & Round(K(3, 2), CLng(Text21.Text)) & vbCrLf

str = str & "K(3,3) = " & Round(K(3, 3), CLng(Text21.Text)) & vbCrLf

str = str & "K(3,4) = " & Round(K(3, 4), CLng(Text21.Text)) & vbCrLf

str = str & "K(4,1) = " & Round(K(4, 1), CLng(Text21.Text)) & vbCrLf

str = str & "K(4,2) = " & Round(K(4, 2), CLng(Text21.Text)) & vbCrLf

str = str & "K(4,3) = " & Round(K(4, 3), CLng(Text21.Text)) & vbCrLf

str = str & "K(4,4) = " & Round(K(4, 4), CLng(Text21.Text)) & vbCrLf

str = str & "V = " & Round(V, CLng(Text21.Text)) & vbCrLf

str = str & "Q = " & Round(Q, CLng(Text21.Text)) & vbCrLf

str = str & "X = " & Round(x, CLng(Text21.Text)) & vbCrLf

str = str & "Y = " & Round(y, CLng(Text21.Text))

Text20.Text = str

End If

 

Next i

Text12.Text = Round(V, CLng(Text21.Text))

Text13.Text = Round(Q, CLng(Text21.Text))

Text14.Text = Round(x, CLng(Text21.Text))

Text15.Text = Round(y, CLng(Text21.Text))

'----------------------------------

'Пассивный участок траектории полета

'Эйлер

V = CDbl(Text8.Text)

Q = CDbl(Text9.Text)

x = CDbl(Text10.Text)

y = CDbl(Text11.Text)

i = T

m = Mn - Rashod * T

j = T

Do While y > 0

r = r0 * Exp(-y / 7800)

Xx = 0.5 * Cx * r * S * V ^ 2

V = V - h * (9.81 * m * Sin(Q) + Xx) / m

Q = Q - h * 9.81 * Cos(Q) / V

x = x + h * V * Cos(Q)

y = y + h * V * Sin(Q)

 

If Option1.Value = True And Round(i, 2) = Round(j, 2) Then

j = j + 1

Text33.Text = Text33.Text & Round(i, 2) & vbCrLf

Text34.Text = Text34.Text & Round(V, 1) & vbCrLf

Text36.Text = Text36.Text & Round(Q, 3) & vbCrLf

Text40.Text = Text40.Text & Round(x, 0) & vbCrLf

Text38.Text = Text38.Text & Round(y, 0) & vbCrLf

End If

 

If Abs(Q) < 0.001 Then

str = "Значения параметров" & vbCrLf & "в наивысшей точке траектории" & vbCrLf & "методом Эйлера" & vbCrLf

str = str & "t = " & Round(i, 2) & vbCrLf

str = str & "V = " & Round(V, CLng(Text21.Text)) & vbCrLf

str = str & "Q = 0" & vbCrLf

str = str & "X = " & Round(x, CLng(Text21.Text)) & vbCrLf

str = str & "Y = " & Round(y, CLng(Text21.Text)) & vbCrLf & vbCrLf

End If

i = i + h

Loop

Text25.Text = Round(V, CLng(Text21.Text))

Text24.Text = Round(Q, CLng(Text21.Text))

Text23.Text = Round(x, CLng(Text21.Text))

Text22.Text = Round(y, CLng(Text21.Text))

Text31.Text = Round(i, 2)

'-----------------------------

'Рунге-Кутт

V = CDbl(Text12.Text)

Q = CDbl(Text13.Text)

x = CDbl(Text14.Text)

y = CDbl(Text15.Text)

i = T

j = T

m = Mn - Rashod * T

Do While y > 0

r = r0 * Exp(-y / 7800)

Xx = 0.5 * Cx * r * S * V ^ 2

K(1, 1) = h * (-9.81 * m * Sin(Q) - Xx) / m

K(1, 2) = -9.81 * h * Cos(Q) / V

K(1, 3) = h * V * Cos(Q)

K(1, 4) = h * V * Sin(Q)

 

r = r0 * Exp(-(y + 0.5 * K(1, 4)) / 7800)

Xx = 0.5 * Cx * r * S * (V + 0.5 * K(1, 1)) ^ 2

K(2, 1) = h * (-9.81 * m * Sin(Q + K(1, 2) / 2) - Xx) / m

K(2, 2) = -9.81 * h * Cos(Q + K(1, 2) / 2) / (V + K(1, 1) / 2)

K(2, 3) = h * (V + K(1, 1) / 2) * Cos(Q + K(1, 2) / 2)

K(2, 4) = h * (V + K(1, 1) / 2) * Sin(Q + K(1, 2) / 2)

 

r = r0 * Exp(-(y + 0.5 * K(2, 4)) / 7800)

Xx = 0.5 * Cx * r * S * (V + 0.5 * K(2, 1)) ^ 2

K(3, 1) = h * (-9.81 * m * Sin(Q + K(2, 2) / 2) - Xx) / m

K(3, 2) = -9.81 * h * Cos(Q + K(2, 2) / 2) / (V + K(2, 1) / 2)

K(3, 3) = h * (V + K(2, 1) / 2) * Cos(Q + K(2, 2) / 2)

K(3, 4) = h * (V + K(2, 1) / 2) * Sin(Q + K(2, 2) / 2)

 

r = r0 * Exp(-(y + K(3, 4)) / 7800)

Xx = 0.5 * Cx * r * S * (V + K(3, 1)) ^ 2

K(4, 1) = h * (-9.81 * m * Sin(Q + K(3, 2)) - Xx) / m

K(4, 2) = -9.81 * h * Cos(Q + K(3, 2)) / (V + K(3, 1))

K(4, 3) = h * (V + K(3, 1)) * Cos(Q + K(3, 2))

K(4, 4) = h * (V + K(3, 1)) * Sin(Q + K(3, 2))

 

V = V + (K(1, 1) + K(4, 1) + 2 * (K(2, 1) + K(3, 1))) / 6

Q = Q + (K(1, 2) + K(4, 2) + 2 * (K(2, 2) + K(3, 2))) / 6

x = x + (K(1, 3) + K(4, 3) + 2 * (K(2, 3) + K(3, 3))) / 6

y = y + (K(1, 4) + K(4, 4) + 2 * (K(2, 4) + K(3, 4))) / 6

 

If Option2.Value = True And Round(i, 2) = Round(j, 2) Then

j = j + 1

Text33.Text = Text33.Text & Round(i, 2) & vbCrLf

Text34.Text = Text34.Text & Round(V, 1) & vbCrLf

Text36.Text = Text36.Text & Round(Q, 3) & vbCrLf

Text40.Text = Text40.Text & Round(x, 0) & vbCrLf

Text38.Text = Text38.Text & Round(y, 0) & vbCrLf

End If

 

If Abs(Q) < 0.001 Then

str = str & "Значения параметров" & vbCrLf & "в наивысшей точке траектории" & vbCrLf & "методом Рунге-Кутта" & vbCrLf

str = str & "t = " & Round(i, 2) & vbCrLf

str = str & "V = " & Round(V, CLng(Text21.Text)) & vbCrLf

str = str & "Q = 0" & vbCrLf

str = str & "X = " & Round(x, CLng(Text21.Text)) & vbCrLf

str = str & "Y = " & Round(y, CLng(Text21.Text))

Text30.Text = str

End If

i = i + h

Loop

Text29.Text = Round(V, CLng(Text21.Text))

Text28.Text = Round(Q, CLng(Text21.Text))

Text27.Text = Round(x, CLng(Text21.Text))

Text26.Text = Round(y, CLng(Text21.Text))

Text32.Text = Round(i, 2)

 

lbl.ForeColor = &HC000&

lbl.Caption = "Расчет выполнен"

End Sub

 

Private Sub Command2_Click()

End

End Sub
Список литературы

 

1. Бахвалов Н.С. Численные методы. т.1., М.: Наука, 1975.

2. Волков Е.А. Численные методы. М.: Наука, 1982

3. Шалыгин А.С. и др. Автоматизация расчета траекторий ЛА: Учебн. пособие. – Л., 1990.

4. http://a5.bstu.spb.su

 

 



Поделиться:


Последнее изменение этой страницы: 2016-08-01; просмотров: 496; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.108.241 (0.057 с.)