Решение уравнения методом половинного деления (бисекций) - VB
Формулировка задачи:
Помогите пожалуйста найти ошибку в программе
уравнение 1/(2+x^2)-x + ln(x^2 +1) = 0
Листинг программы
- Sub отделение_корней()
- Dim a As Single, b As Single, h As Single, y2 As Single, x As Single, y1 As Single
- a = -2: b = 2: h = 0.5: y2 = f(a)
- For x = a To b Step h
- y1 = y2: y2 = f(x + h)
- If y1 * y2 <= 0 Then метод_бисекций x, x + h
- Next x
- End Sub
- Sub метод_бисекций (ByVal a As Single, b As Single)
- 'Debug.Print a; b
- Const e = 0.001
- Dim y1 As Single, y As Single, x As Single, i As Integer
- y1 = f(a)
- While b - a > 2 * e
- x = (a + b) / 2
- y = f(x)
- If y * y1 <= 0 Then b = x Else a = x: y1 = y
- Wend
- Debug.Print x
- End Sub
- Function f(x As Single) As Single
- f = (1) / (2 + x * x) - x + Ln(x * x + 1) = 0
- End Function
Почему эта программа работает, а та нет?
Листинг программы
- Sub отделение_корней ()
- Dim a As Single, b As Single, h As Single, y2 As Single, x As Single, y1 As Single
- a = -2: b = 2: h = 0.5: y2 = f(a)
- For x = a To b Step h
- y1 = y2: y2 = f(x + h)
- If y1 * y2 <= 0 Then метод_бисекций x, x + h
- Next x
- End Sub
- Sub метод_бисекций(ByVal a As Single, b As Single)
- 'Debug.Print a; b
- Const e = 0.001
- Dim y1 As Single, y As Single, x As Single, i As Integer
- y1 = f(a)
- While b - a > 2 * e
- x = (a + b) / 2
- y = f(x)
- If y * y1 <= 0 Then b = x Else a = x: y1 = y
- Wend
- Debug.Print x
- End Sub
- Function f(x As Single) As Single
- f = (1 + Cos(x)) / (3 - Sin(x)) - 0.5 = 0
- End Function
Решение задачи: «Решение уравнения методом половинного деления (бисекций)»
textual
Листинг программы
- Function f(x As Single) As Single
- f = (1 + Cos(x)) / (3 - Sin(x)) - 0.5 = 0
- Debug.Print f
- End Function
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д