Неприятность может произойти, если корнем уравнения является 0, однако это уже совсем особый случай, который рассматриваться не будет.
Рис. 1.5. Графическая иллюстрация метода половинного деления
Наиболее наглядным, простым в реализации, однако, увы, не самым лучшим численным методом поиска корней, является МЕТОД ДЕЛЕНИЯ ОТРЕЗКА ПОПОЛАМ. Суть метода проще всего проиллюстрировать графически, с помощью рисунка 1.5.
Прежде всего, находится точка , делящая отрезок [a,b], на котором ищется корень, пополам. Еще раз напомним, что корень на этом отрезке обязан быть. Далее, из этих двух половин выбирается та, на концах которой функция имеет разные знаки, то есть та, на которой имеется корень. Если эта половина является отрезком [c,b], как на нашем рисунке, то новым левым концом отрезка становится точка с. В противном случае точка с становится новым правым концом отрезка. Таким образом, после каждого такого выбора мы имеем новый отрезок [a,b], к которому снова применяем половинное деление. В этом методе наиболее наглядно выглядит условие выхода из цикла А почему мы здесь обошлись без знака абсолютного значения? Автор надеется, что читатель сможет дать ответ на этот вопрос самостоятельно.
Решить уравнение sin(x)=0,5 на промежутке [0,1].
Программный код:
procedure TForm1.Button1Click(Sender: TObject);
var
e,a,b,c,s:real;
begin
a:=0;
b:=1;
s:=0;
e:=strtofloat(edit1.Text);
while abs((b-a)/b)>e do
begin
c:=(a+b)/2;
if (sin(a)-1/2)*(sin(c)-1/2)>0 then
a:=c
else
b:=c;
s:=s+1;
end;
edit2.Text:=floattostr(c);
edit3.Text:=floattostr(s*2);
end;
Комментариев нет:
Отправить комментарий