Решение системы диффуров - VB
Формулировка задачи:
Доброго времени суток! Я не сильно опытный пользователь VB6, задача выполнения дипломного проекта именно в нем создала необходимость изучить его практически с нуля. В ходе выполнения диплома возникла необходимость написать прогу, решающую дифур неким методом Рунге-Кутта в VB и я написал, чему несказанно рад)) Но теперь возникла необходимость решить систему из 2х дифуров с 3мя неизвестными(желательно этим же методом), с чем как оказалось не так просто справиться! Может кто-то из людей, хоро сведующих в математике и в VB одновременно поможет мне в моем начинании? Буду крайне признателен!
вот текст моей проги, решающей дифур:
а вот 2 дифура, которые надо решитьв системе:
Давление в камере:
________
dP/dt = (Rг/V)∙{(10,2∙C∙W(t))/Cp) – 6469,53∙S∙P∙Ψ∙√2/(Rг∙T)∙[(ξ+1)∙T - ξ∙ T0]}
Температура газа в камере:
________
dT/dt = (Rг∙T)/(P∙V)∙ {(10,2∙C∙W(t))/Cv) – 6469,53∙S∙P∙Ψ∙√2/(Rг∙T)∙(T - T0)}
температура и давление по времени, в каждом уравнении присутствуют и то и другое, остальное-константы.
Заранее благодарен!
Листинг программы
- Dim x() As Single
- Dim y() As Single
- Dim g() As Single
- Dim T() As Single
- Private n, i As Integer
- Private xk, x0, kx, ky As Single
- Private k, k1, k2, k3, k4 As Single
- Private h, max, min, y0 As Single
- Private shel As Single ' øèðèГ*Г* ùåëè ГЄГ*ìåðû
- Private Hsum As Single 'Г*Г*ïðÿæåГ*Г*îñòü ïîëÿ ñóììГ*Г°Г*Г*Гї
- Private aa, bb, hh As Single 'äëèГ*Г* øèðèГ*Г* âûñîòГ* Г*Г*ГЄГ«Г*äêè
- Private dd As Single 'äèГ*ìåòð äóãè
- Private Vk As Single 'ñêîðîñòü äâèæåГ*ГЁГї ГЄГ®Г*ГІГ*êòîâ
- Private alpha, beta, epselo, gamma As Single 'êîýôôèöèåГ*ГІГ», Г§Г*ГўГЁГ±ГїГ№ГЁГҐ îò Г¬Г*òåðèГ*Г«Г* ГЄГ®Г*ГІ.Г*Г*ГЄГ«Г*äêè
- Private tau As Single 'ïîñòîÿГ*Г*Г*Гї âðåìåГ*ГЁ Г¶ГҐГЇГЁ = L/R
- Private Function f(a, b As Single) As Single
- ta = 0.0005 '((alpha * (1 ^ epselo)) / ((Hsum ^ beta) * (Vk ^ gamma)))
- ld1 = ta * Vk
- ld3 = 3.14 * (Vk * a + hh) * 0.5
- ld2 = 3.14 * Vk * a * 0.5
- Vd = 0.0141 * (((Abs(b) * (Hsum ^ 2)) / ((1 + 0.1075 * (Hsum ^ 0.3)) ^ 2)) ^ (1 / 3))
- Ed1 = (92 / Sqr(Abs(b)) + 0.312 * Sqr(Abs(b)) / (shel ^ 0.66666) + 0.15 * ((Vd ^ 2 * Abs(b) / (shel ^ 2)) ^ (1 / 3)))
- Ed2 = 9.2 * (Vd + 10) / Sqr(Abs(b))
- If Option1.Value = True Then Ed = Ed2
- If Option2.Value = True Then Ed = Ed1
- ld = ld1
- 'If Vd > 0 Then ld = 333
- Vda = Vd * a
- If a = ta Then ld12 = a
- If a > ta Then ld = ld2
- Text21.Text = ta
- Ud = 25 + Ed * ld
- MSFlexGrid1.TextMatrix(i + 2, 2) = Str(Ud)
- MSFlexGrid1.TextMatrix(i + 2, 4) = Str(ld)
- f = (2242 - Ud) * 400 / (2242 * tau) - b / tau
- End Function
- Private Sub Rynge_Kytt()
- ReDim g(n)
- Dim epe As Integer
- g(0) = y0
- For i = 0 To n
- x(i) = x0 + h * i
- Next i
- For i = 0 To n - 1
- k1 = h * f(x(i), g(i))
- k2 = h * f(x(i) + h / 2, g(i) + k1 / 2)
- k3 = h * f(x(i) + h / 2, g(i) + k2 / 2)
- k4 = h * f(x(i) + h, g(i) + k3)
- k = (k1 + 2 * k2 + 2 * k3 + k4) / 6
- g(i + 1) = g(i) + k
- MSFlexGrid1.TextMatrix(i + 2, 1) = Str(g(i + 1))
- MSFlexGrid1.TextMatrix(1, 1) = Str(g(0))
- ep = Val(MSFlexGrid1.TextMatrix(i + 2, 2))
- pe = Val(MSFlexGrid1.TextMatrix(i + 2, 1))
- MSFlexGrid1.TextMatrix(i + 2, 3) = Str(Abs(ep * pe))
- Next i
- End Sub
- Private Sub Command1_Click()
- x0 = Val(Text1.Text)
- xk = Val(Text2.Text)
- h = Val(Text3.Text)
- y0 = Val(Text4.Text)
- n = (xk - x0) / h
- MSFlexGrid1.Rows = n + 2
- MSFlexGrid1.TextMatrix(0, 0) = "x"
- MSFlexGrid1.TextMatrix(0, 1) = "ГђГіГ*ГЈГҐ-ГЉГіГІГІ"
- MSFlexGrid1.TextMatrix(0, 2) = "Ud"
- MSFlexGrid1.TextMatrix(0, 3) = "Wd"
- Label6.Caption = Str(x0)
- Label5.Caption = Str(xk)
- Rynge_Kytt
- max = y0
- min = y0
- For i = 0 To n
- If y(i) > max Then
- max = y(i)
- End If
- If y(i) < min Then
- min = y(i)
- End If
- If g(i) > max Then
- max = g(i)
- End If
- If g(i) < min Then
- min = g(i)
- End If
- If T(i) > max Then
- max = T(i)
- End If
- If T(i) < min Then
- min = T(i)
- End If
- ttt = g(i)
- If g(i) < 0 Then g(i) = 0
- Next i
- Label4.Caption = Str(max)
- Label7.Caption = Str(min)
- kx = (6600 - 960) / (xk - x0)
- ky = (5160 - 240) / (max - min)
- Picture1.Cls
- For i = 1 To n - 1
- X1 = 960 + Round(kx * (x(i - 1) - x0))
- X2 = 960 + Round(kx * (x(i) - x0))
- Y1 = 5160 - Round(ky * (g(i - 1) - min))
- Y2 = 5160 - Round(ky * (g(i) - min))
- Picture1.Line (X1, Y1)-(X2, Y2), RGB(400, 100, 500)
- Picture1.Print g(i)
- Picture1.Line (0, 0)-(0, y0 + 0.1 * y0)
- Picture1.PSet (0, 0)
- Picture1.Line (0, 0)-(xk, 0)
- Picture1.Print 1
- Next i
- End Sub
Решение задачи: «Решение системы диффуров»
textual
Листинг программы
- Private Sub Command1_Click()
- x0 = Val(Text1.Text)
- xk = Val(Text2.Text)
- h = Val(Text3.Text)
- y0 = Val(Text4.Text)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д