Книга: Конец холивара. Pascal vs C
5. Заглянем в вычислительную математику
5. Заглянем в вычислительную математику
Метод половинного деления
Один из методов численного решения уравнений с одним неизвестным. Пусть имеется уравнение Y (x) =0 с непрерывной на отрезке [а, b] функцией Y (х), принимающей на концах отрезка значения разных знаков и имеющей внутри [а, b] единственный корень X. Для приближенного нахождения X отрезок [а, b] делят пополам и вычисляют значение Y (x1) в средней точке x1= (a+b) /2. Если Y (x1) не равна нулю, то из двух отрезков [а, х1] и [х1,b] для последующего деления пополам выбирается тот, на концах которого значения функции различны по знаку. Возникающая в процессе такого дробления последовательность середин отрезков х1, х2, x3, … сходится к корню X. Вычисление прекращается, когда длинна отрезка становится меньше заданной погрешности вычисления.
Пример 1.10: Найти корень уравнения X2 – 3 = 0.
VAR A, B, E, X, Y, Y1 : REAL;
PROCEDURE FNY;
BEGIN
Y := SQR (X) – 3
END;
BEGIN
WRITELN (‘ВВЕДИТЕ ГРАНИЦЫ ИНТЕРВАЛА И ПОГРЕШНОСТЬ’);
READLN (A, B, E);
X := A;
FNY;
Y1 := Y;
WHILE B – A> = E DO
BEGIN
X := (A + B) /2;
FNY;
IF Y*Y1> = 0
THEN
BEGIN
A := X;
Y1 := Y
END
ELSE B := X
END;
WRITELN (‘X =’, X);
READLN;
READLN
END.
В этой программе используется процедура без параметров. Заменяя в ней функцию можно находить корни других уравнений.