Программа
' Поиск корня уравнения
' методом половинного деления
' (метод дихотомии)
DEF FnF (X) = X * X - 100 ' Вычисление функции
DEF FnRoot (a, b) ' Нахождение корня
LOCAL Eps, c 'Локализация переменных
Eps = 0 ' Точность вычислений
WHILE ABS(b - a) > Eps ' Сужение интервала до заданной точности
c = (a + b) / 2 ' Определение средней точки интервала локализации корня
IF (c = a) OR (c = b) THEN
a = c: b = c ' Блокирование сбоя при потере точности
ELSEIF FnF(a) * FnF(c) < 0 THEN ' Если функция меняет знак
' на левом участке, то переопределение правой границы
b = c
ELSEIF FnF(b) * FnF(c) < 0 THEN ' иначе - если функция меняет знак
' на правом участке то переопределение левой границы
a = c
ELSE ' Блокирование сбоя при потере точности или
' случайном нахождении корня :
IF FnF(a) = 0 THEN c = a: b = a
IF FnF(b) = 0 THEN c = b: a = b
IF FnF(a) * FnF(b) * FnF(c) = 0 THEN a = c: b = c
END IF
WEND
FnRoot = (a + b) / 2 ' Определение значения функции
END DEF
' Ввод интервала локализации корня:
INPUT "Введите левую границу интервала локализации корня ", a
INPUT "Введите правую границу интервала локализации корня ", b
Result = FnRoot(a, b) ' Вычисление корня
PRINT "x="; Result; " F(x)="; FnF(Result) ' Вывод корня и проверки
END
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию