Не сравниваются значения переменных - VB

Узнай цену своей работы

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

Помогите, пожалуйста! Никак не могу разобраться. Пишу в Visual Basic 6.0 маленькую программу по максимизации методом дихотомии. Эта часть не хочет работать:
Листинг программы
  1. While ((b - a) / 2) > oshibka
  2. sigma = (b - a) * 0.1
  3. x1 = (b + a - sigma) / 2
  4. x2 = (b + a + sigma) / 2
  5. znach_fun1 = k1 + k2 * x1 + k3 * x1 ^ 2 + k4 * x1 ^ 3
  6. zhach_fun2 = k1 + k2 * x2 + k3 * x2 ^ 2 + k4 * x2 ^ 3
  7. If znach_fun1 >= zhach_fun2 Then
  8. b = x2
  9. Else
  10. a = x1
  11. End If
  12. iter = iter + 1
  13. Wend
При

oshibka

=1 всё нормально работает, а при

oshibka

=0,1 или меньше не хочет. Значение условия в скобках после

While

уже в -14 степени, а цикл не заканчивается! Написанное то же самое в Visual Studio работает корректно:
Листинг программы
  1. While (b - a) / 2 > oshibka
  2. sigma = (b - a) * 0.1
  3. x1 = (b + a - sigma) / 2
  4. x2 = (b + a + sigma) / 2
  5. znach_fun1 = k1 + k2 * x1 + k3 * x1 ^ 2 + k4 * x1 ^ 3
  6. zhach_fun2 = k1 + k2 * x2 + k3 * x2 ^ 2 + k4 * x2 ^ 3
  7. If znach_fun1 >= zhach_fun2 Then
  8. b = x2
  9. Else
  10. a = x1
  11. End If
  12. iter = iter + 1
  13. End While
Заранее благодарен всем откликнувшимся!
Листинг программы
  1. Dim fun, k1, k2, k3, k4, oshibka As String
  2. Dim sigma, znach_fun1, zhach_fun2, x_iscom, zhach_fun_x_iscom, x1, x2, a, b, prov As Double
  3. Dim iter As Integer
  4. Private Sub Command1_Click()
  5. k1 = CDbl(Text1)
  6. k2 = CDbl(Text2)
  7. k3 = CDbl(Text3)
  8. k4 = CDbl(Text4)
  9. a = CDbl(Text5)
  10. b = CDbl(Text6)
  11. oshibka = CDbl(Text7)
  12. iter = 1
  13. While ((b - a) / 2) > oshibka
  14. sigma = (b - a) * 0.1
  15. x1 = (b + a - sigma) / 2
  16. x2 = (b + a + sigma) / 2
  17. znach_fun1 = k1 + k2 * x1 + k3 * x1 ^ 2 + k4 * x1 ^ 3
  18. zhach_fun2 = k1 + k2 * x2 + k3 * x2 ^ 2 + k4 * x2 ^ 3
  19. If znach_fun1 >= zhach_fun2 Then
  20. b = x2
  21. Else
  22. a = x1
  23. End If
  24. iter = iter + 1
  25. Wend
  26. x_iscom = (a + b) / 2
  27. zhach_fun_x_iscom = k1 + k2 * x_iscom + k3 * x_iscom ^ 2 + k4 * x_iscom ^ 3
  28. k1 = Text1
  29. k2 = Text2
  30. k3 = Text3
  31. k4 = Text4
  32. oshibka = Text7
  33. fun = "(" + k1 + ") + (" + k2 + ")x + (" + k3 + ")x^2 + (" + k4 + ")x^3"
  34. Text8 = "Г‡Г*Г¤Г*Г*Г*Г*Гї ГґГіГ*êöèÿ: " + fun + vbCrLf + "Г‡Г*Г¤Г*Г*Г*Г*Гї îøèáêГ*: " + oshibka + vbCrLf + "Êîëè÷åñòâî ГЁГІГҐГ°Г*öèé: " + CStr(iter) + vbCrLf + "Ïîëó÷åГ*Г*ûé Г¬Г*êñèìóì ГґГіГ*êöèè: " + CStr(zhach_fun_x_iscom) + vbCrLf + "Òî÷êГ* Г*Г*áëþäåГ*ГЁГї Г¬Г*êñèìóìГ*: " + CStr(x_iscom)
  35.  
  36. End Sub
.

Решение задачи: «Не сравниваются значения переменных»

textual
Листинг программы
  1. fun = "(" + k1 + ") + (" + k2 + ")x + (" + k3 + ")x^2 + (" + k4 + ")x^3"

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы