Решение системы диффуров - VB

Формулировка задачи:

Доброго времени суток форумчане! Я не сильно опытный пользователь VB6, задача выполнения дипломного проекта именно в нем создала необходимость изучить его практически с нуля. В ходе выполнения диплома возникла необходимость написать прогу, решающую дифур неким методом Рунге-Кутта в VB и я написал, чему несказанно рад)) Но теперь возникла необходимость решить систему из 2х дифуров с 3мя неизвестными(желательно этим же методом), с чем как оказалось не так просто справиться! Может кто-то из людей, хоро сведующих в математике и в VB одновременно поможет мне в моем начинании? Буду крайне признателен! вот текст моей проги, решающей дифур:
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
а вот 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)} температура и давление по времени, в каждом уравнении присутствуют и то и другое, остальное-константы. Заранее благодарен!

Код к задаче: «Решение системы диффуров - VB»

textual
Private Sub Command1_Click() 
x0 = Val(Text1.Text) 
xk = Val(Text2.Text) 
h = Val(Text3.Text) 
y0 = Val(Text4.Text)

6   голосов, оценка 4.333 из 5


СОХРАНИТЬ ССЫЛКУ