Основы применения вычислительной техники и программирование. Беспалов В.В. - 36 стр.

UptoLike

Составители: 

а можно просто найти произведение и проверить его знак. Корень при-
сутствует, если
f(a)*f(b)<0. После этого можно уточнять значение
корня, а можно перейти к поиску следующего отрезка, задав начало по-
иска от конца найденного.
Пример. 4.2. Поиск ближайшего отрезка, содержащего корень.
program poisk;
var a,b,h:real;
function F(x:real):real; {описание функции}
begin F:=sqrt(x)+2*sqr(x)+3*x; end;
begin
write(‘Введите начало поиска > ’); readln(b);
write(‘Введите начальное шаг > ’); readln(h);
repeat
a:=b;
b:=a+h;
until f(a)*f(b)<0;
writeln(‘a=’,a,‘ b=’,b);
end.
4.2. Метод половинного деления
Пусть дано уравнение ƒ(x) = 0, где ƒ(x) – непрерывная функция,
корень Р отделен на отрезке [a,b], т. е. ƒ(a) ƒ(b) > 0, причем |b a| < E.
Требуется найти значение корня Р с точностью до Е (см. рис. 4.2).
Если корень Р не отделен на заданном отрезке, т. е. ƒ(a) и ƒ(b) од-
ного знака и, следовательно, ƒ(a) ƒ(b) > 0, то вычисляются значения
функции в точках, расположенных через равные интервалы на оси Х.
Когда ƒ(a
n
) и ƒ(b
n
) имеют противоположные знаки, то значения a = a
n
и b=b
n
принимаются в качестве начальных и находят середину отрезка
[a,b], т. е. с=(a+b)/2. Тогда отрезок [a,b] точкой с разделится на два рав-
ных отрезка [a,c] и [c,b], длина которых равна (ba)/2. Из двух этих об-
разовавшихся отрезков выбирается тот, на концах которого функция
ƒ(x) принимает значения противоположных знаков; обозначим его
[a
1
,b
1
]. Затем отрезок [a
1
,b
1
] делим пополам и проводим те же действия.
Получим отрезок [a
2
,b
2
], длина которого равна (ba)/2
2
. Процесс деле-
ния отрезка пополам производится до тех пор, когда на каком-то k-м
этапе будет получен отрезок [a
k
,b
k
], такой, что
37