Решение уравнения методом половинного деления (бисекций) - VB

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

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

Помогите пожалуйста найти ошибку в программе
Листинг программы
  1. Sub отделение_корней()
  2. Dim a As Single, b As Single, h As Single, y2 As Single, x As Single, y1 As Single
  3. a = -2: b = 2: h = 0.5: y2 = f(a)
  4. For x = a To b Step h
  5. y1 = y2: y2 = f(x + h)
  6. If y1 * y2 <= 0 Then метод_бисекций x, x + h
  7. Next x
  8. End Sub
  9. Sub метод_бисекций (ByVal a As Single, b As Single)
  10. 'Debug.Print a; b
  11. Const e = 0.001
  12. Dim y1 As Single, y As Single, x As Single, i As Integer
  13. y1 = f(a)
  14. While b - a > 2 * e
  15. x = (a + b) / 2
  16. y = f(x)
  17. If y * y1 <= 0 Then b = x Else a = x: y1 = y
  18. Wend
  19. Debug.Print x
  20. End Sub
  21. Function f(x As Single) As Single
  22. f = (1) / (2 + x * x) - x + Ln(x * x + 1) = 0
  23. End Function
уравнение 1/(2+x^2)-x + ln(x^2 +1) = 0
Почему эта программа работает, а та нет?
Листинг программы
  1. Sub отделение_корней ()
  2. Dim a As Single, b As Single, h As Single, y2 As Single, x As Single, y1 As Single
  3. a = -2: b = 2: h = 0.5: y2 = f(a)
  4. For x = a To b Step h
  5. y1 = y2: y2 = f(x + h)
  6. If y1 * y2 <= 0 Then метод_бисекций x, x + h
  7. Next x
  8. End Sub
  9. Sub метод_бисекций(ByVal a As Single, b As Single)
  10. 'Debug.Print a; b
  11. Const e = 0.001
  12. Dim y1 As Single, y As Single, x As Single, i As Integer
  13. y1 = f(a)
  14. While b - a > 2 * e
  15. x = (a + b) / 2
  16. y = f(x)
  17. If y * y1 <= 0 Then b = x Else a = x: y1 = y
  18. Wend
  19. Debug.Print x
  20. End Sub
  21. Function f(x As Single) As Single
  22. f = (1 + Cos(x)) / (3 - Sin(x)) - 0.5 = 0
  23. End Function

Решение задачи: «Решение уравнения методом половинного деления (бисекций)»

textual
Листинг программы
  1. Function f(x As Single) As Single
  2.     f = (1 + Cos(x)) / (3 - Sin(x)) - 0.5 = 0
  3.     Debug.Print f
  4. End Function

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


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

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

14   голосов , оценка 3.857 из 5

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

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

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