Новичок
Джуниор
Регистрация: 03.11.2016
Сообщений: 1
|
ПО на VB6
Начал изучать VB6.Пишу программу для расчёта коэффициентов.Хочу сделать так: в форме пользователь задал начальные значения n1,n2,n3,k2,k3, она их обработала,поставив в формулы и в итоге заново рассчитала значение n2,которое автоматически подставляет вместо начального и производит расчёты по новой.И так до тех пор по n2 не станет равным к примеру трём.Не могу понять,как правильно это записать.К примеру кусок моего кода(скорее всего неверный).В интернете ничего путнего не найду.Буду благодарен за любую помощь,может кто знает подобные примеры,алгоритмы или статьи по этой теме.
Код:
Public Sub Command1_Click()
Dim n1 As Double, n2 As Double, n3 As Double, k2 As Double, k3 As Double, Tmax As Double, Tmin As Double, T As Double
Dim d1 As Double, l As Double, S As Double
Dim v1 As Double, v2 As Double, v3 As Double, v4 As Double, v5 As Double, v6 As Double, v7 As Double, v8 As Double, v9 As Double, v10 As Double, v11 As Double, v12 As Double, v13 As Double, v14 As Double, v15 As Double, v16 As Double, v17 As Double, v18 As Double, v19 As Double, v20 As Double, v21 As Double, v22 As Double, v23 As Double
Dim u1 As Double, u2 As Double, u3 As Double, u4 As Double, u5 As Double, u6 As Double, u7 As Double, u8 As Double, u9 As Double
Dim App1, App2, App3, App4, App5 As Double
Dim A As Double, B As Double, C As Double, d As Double, E As Double, F As Double, r As Double, p As Double, Re1 As Double, Re2 As Double, Re3 As Double, Re4 As Double, Im1 As Double, Im2 As Double, Im3 As Double, Im4 As Double
While (n2<>3) 'пока n2 не равно 3
'вводим начальные значения
n1 = Val(Text1.Text)
n2 = Val(Text2.Text)
n3 = Val(Text3.Text)
k2 = Val(Text4.Text)
k3 = Val(Text5.Text)
Tmax = Val(Text6.Text)
Tmin = Val(Text7.Text)
'Дальше идет расчёт значений
T = Tmax / Tmin
v1 = Format(n1 ^ 2, "#,##0.00")
v2 = Format(2 * n1 ^ 2 * n3, "#,##0.00")
v3 = Format(2 * n3 ^ 2 * n1 ^ 2, "#,##0.00")
v4 = Format(2 * k2 ^ 2 * n1 ^ 2, "#,##0.00")
v5 = Format(4 * k3 * k2 * n1 ^ 2, "#,##0.00")
v6 = Format(2 * k3 ^ 2 * n1 ^ 2, "#,##0.00")
v7 = 2
v8 = Format(2 * n3, "#,##0.00")
v9 = Format(2 * n3 ^ 2, "#,##0.00")
v10 = Format(4 * k2 ^ 2, "#,##0.00")
v11 = Format(4 * k2 * k3, "#,##0.00")
v12 = Format(2 * k3 ^ 2, "#,##0.00")
v13 = Format(2 * n3 * k2 ^ 2, "#,##0.00")
v14 = Format(2 * k2 ^ 2 * n3 ^ 2, "#,##0.00")
v15 = Format(2 * k2 ^ 4, "#,##0.00")
v16 = Format(4 * k3 * k2 ^ 3, "#,##0.00")
v17 = Format(2 * k3 ^ 2 * k2 ^ 2, "#,##0.00")
v18 = Format(2 * n1, "#,##0.00")
v19 = Format(8 * n3 * n1, "#,##0.00")
v20 = Format(2 * n1 * n3 ^ 2, "#,##0.00")
v21 = Format(2 * n1 * k2 ^ 2, "#,##0.00")
v22 = Format(4 * n1 * k2 * k3, "#,##0.00")
v23 = Format(2 * n1 * k3 ^ 2, "#,##0.00")
u1 = Format(T * n1 * n1 ^ 2, "#,##0.00")
u2 = Format(T * 2 * n1 ^ 2 * k3 * k2, "#,##0.00")
u3 = Format(T * 2 * n3, "#,##0.00")
u4 = Format(T * 2 * n3 * k2 ^ 2, "#,##0.00")
u5 = Format(T * 2 * n1, "#,##0.00")
u6 = Format(T * 2 * n1 * n3 ^ 2, "#,##0.00")
u7 = Format(T * 2 * n1 * k2 ^ 2, "#,##0.00")
u8 = Format(T * 4 * n1 * k2 * k3, "#,##0.00")
u9 = Format(T * 2 * n1 * k3 ^ 2, "#,##0.00")
App1 = v7
App2 = (-v8 - v18 - u3 - u5)
App3 = (v1 + v9 + v10 - v11 + v12 + v19)
App4 = (-v2 - v13 - v20 - v21 + v22 - u1 - u4 - u6 - u7 + u8 - u9)
App5 = (v3 + v4 - v5 + v6 + v14 + v15 - v16 + v17 - u2)
Text8.Text = App1 & "(n2^4)+" & App2 & "(n2^3)+" & App3 & "(n2^2)+" & App4 & "(n2)+" & App5
A = App1
B = App2
C = App3
d = App4
E = App5
F = 0
p = (8 * A * C - 3 * B ^ 2) / (8 * A ^ 2)
r = (16 * A * B ^ 2 * C - 64 * A ^ 2 * B * d - 3 * B ^ 4 + 256 * A ^ 3 * E) / (256 * A ^ 4)
If ((p ^ 2 - 4 * r) > 0) Or ((p ^ 2 - 4 * r) = 0) Then
If ((-p + Sqr(p ^ 2 - 4 * r)) >= 0) Then
Re1 = Sqr((-p + Sqr(p ^ 2 - 4 * r)) / 2) - B / (4 * A)
Im1 = 0
Re2 = -Sqr((-p + Sqr(p ^ 2 - 4 * r)) / 2) - B / (4 * A)
Im2 = 0
Else
Re1 = -B / (4 * A)
Im1 = Sqr((p - Sqr(p ^ 2 - 4 * r)) / 2)
Re2 = -B / (4 * A)
Im2 = -Sqr((p - Sqr(p ^ 2 - 4 * r)) / 2)
End If
End If
If ((-p - Sqr(Abs(p ^ 2 - 4 * r))) >= 0) Then
Re3 = Sqr((-p - Sqr(p ^ 2 - 4 * r)) / 2) - B / (4 * A)
Im3 = 0
Re4 = -Sqr((-p - Sqr(p ^ 2 - 4 * r)) / 2) - B / (4 * A)
Im4 = 0
Else
Re3 = -B / (4 * A)
Im3 = Sqr((p + Sqr(Abs(p ^ 2 - 4 * r))) / 2)
Re4 = -B / (4 * A)
Im4 = -Sqr((p + Sqr(Abs(p ^ 2 - 4 * r))) / 2)
End If
If p * p - 4 * r < 0 Then
If p < 0 Then F = Atn(-Sqr(Abs(4 * r - p ^ 2)) / p)
End If
If p > 0 Then F = Atn(-Sqr(Abs(4 * r - p ^ 2) / p)) + 3.14159265388979
If p = 0 Then F = 3.14159265388979 / 2
Re1 = Sqr(Sqr(Abs(r))) * Cos(F / 2) - B / (4 * A)
Im1 = Sqr(Sqr(Abs(r))) * Sin(F / 2)
Re2 = Sqr(Sqr(Abs(r))) * Cos(F / 2) - B / (4 * A)
Im2 = -Sqr(Sqr(Abs(r))) * Sin(F / 2)
Re3 = -Sqr(Sqr(Abs(r))) * Cos(F / 2) - B / (4 * A)
Im3 = Sqr(Sqr(Abs(r))) * Sin(F / 2)
Re4 = -Sqr(Sqr(Abs(r))) * Cos(F / 2) - B / (4 * A)
Im4 = -Sqr(Sqr(Abs(r))) * Sin(F / 2)
'Рассчитали Re1,Re2,Re3,Re4 и задаем условие
If (1 < Re1 < 3) Then 'Если Re1 удовлетворяет условиям,то его значение должно быть равным n2,которое заново подставляется в уравнения выше
n2 = Re1
End If
'Аналогично
If (1 < Re2 < 3) Then
n2 = Re2
End If
If (1 < Re3 < 3) Then
n2 = Re3
End If
If (1 < Re4 < 3) Then
n2 = Re4
End If
Wend
End Sub
|