Не сравниваются значения переменных - VB
Формулировка задачи:
Помогите, пожалуйста! Никак не могу разобраться.
Пишу в Visual Basic 6.0 маленькую программу по максимизации методом дихотомии.
Эта часть не хочет работать:
При
Заранее благодарен всем откликнувшимся!
.
Листинг программы
- While ((b - a) / 2) > oshibka
- sigma = (b - a) * 0.1
- x1 = (b + a - sigma) / 2
- x2 = (b + a + sigma) / 2
- znach_fun1 = k1 + k2 * x1 + k3 * x1 ^ 2 + k4 * x1 ^ 3
- zhach_fun2 = k1 + k2 * x2 + k3 * x2 ^ 2 + k4 * x2 ^ 3
- If znach_fun1 >= zhach_fun2 Then
- b = x2
- Else
- a = x1
- End If
- iter = iter + 1
- Wend
oshibka
=1 всё нормально работает, а приoshibka
=0,1 или меньше не хочет. Значение условия в скобках послеWhile
уже в -14 степени, а цикл не заканчивается! Написанное то же самое в Visual Studio работает корректно:
Листинг программы
- While (b - a) / 2 > oshibka
- sigma = (b - a) * 0.1
- x1 = (b + a - sigma) / 2
- x2 = (b + a + sigma) / 2
- znach_fun1 = k1 + k2 * x1 + k3 * x1 ^ 2 + k4 * x1 ^ 3
- zhach_fun2 = k1 + k2 * x2 + k3 * x2 ^ 2 + k4 * x2 ^ 3
- If znach_fun1 >= zhach_fun2 Then
- b = x2
- Else
- a = x1
- End If
- iter = iter + 1
- End While
Листинг программы
- Dim fun, k1, k2, k3, k4, oshibka As String
- Dim sigma, znach_fun1, zhach_fun2, x_iscom, zhach_fun_x_iscom, x1, x2, a, b, prov As Double
- Dim iter As Integer
- Private Sub Command1_Click()
- k1 = CDbl(Text1)
- k2 = CDbl(Text2)
- k3 = CDbl(Text3)
- k4 = CDbl(Text4)
- a = CDbl(Text5)
- b = CDbl(Text6)
- oshibka = CDbl(Text7)
- iter = 1
- While ((b - a) / 2) > oshibka
- sigma = (b - a) * 0.1
- x1 = (b + a - sigma) / 2
- x2 = (b + a + sigma) / 2
- znach_fun1 = k1 + k2 * x1 + k3 * x1 ^ 2 + k4 * x1 ^ 3
- zhach_fun2 = k1 + k2 * x2 + k3 * x2 ^ 2 + k4 * x2 ^ 3
- If znach_fun1 >= zhach_fun2 Then
- b = x2
- Else
- a = x1
- End If
- iter = iter + 1
- Wend
- x_iscom = (a + b) / 2
- zhach_fun_x_iscom = k1 + k2 * x_iscom + k3 * x_iscom ^ 2 + k4 * x_iscom ^ 3
- k1 = Text1
- k2 = Text2
- k3 = Text3
- k4 = Text4
- oshibka = Text7
- fun = "(" + k1 + ") + (" + k2 + ")x + (" + k3 + ")x^2 + (" + k4 + ")x^3"
- Text8 = "Г‡Г*Г¤Г*Г*Г*Г*Гї ГґГіГ*êöèÿ: " + fun + vbCrLf + "Г‡Г*Г¤Г*Г*Г*Г*Гї îøèáêГ*: " + oshibka + vbCrLf + "Êîëè÷åñòâî ГЁГІГҐГ°Г*öèé: " + CStr(iter) + vbCrLf + "Ïîëó÷åГ*Г*ûé Г¬Г*êñèìóì ГґГіГ*êöèè: " + CStr(zhach_fun_x_iscom) + vbCrLf + "Òî÷êГ* Г*Г*áëþäåГ*ГЁГї Г¬Г*êñèìóìГ*: " + CStr(x_iscom)
- End Sub
Решение задачи: «Не сравниваются значения переменных»
textual
Листинг программы
- fun = "(" + k1 + ") + (" + k2 + ")x + (" + k3 + ")x^2 + (" + k4 + ")x^3"
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д