Теория
Суть метода состоит в замене не линейной функции линейной на данном отрезке. В качестве линейной функции берётся хорда, проходящая через концы A и B. Точка пересечения хорды с точкой Х принимается за новый конец отрезка. Процесс повторяется до тех пор пока не будет найдено значение корня с заданной степенью точности. Применение метода Хорд зависит от того, какая функция будет рассматриваться на отрезке. Если функция возрастающая при выполнении условия: F(b)*F’’(b)>0, то применяется формула: . Если функция убывающая при выполнении условия F(a)*F”(a)<0, то применяется формула: .
Условия прекращения: , где Е – наперёд заданная степень точности.
Блок-схема
Текст программы
program metod_hord;
function f(x:real):real;
begin
f:=sqr(x)*sqr(x)*x+3*(sqr(x))+x;
end;
function f1(x:real):real;
begin
f1:=5*sqr(x)*sqr(x)+6*x+1;
end;
function f2(x:real):real;
begin
f2:=20*sqr(x)*x+6;
end;
var
a,b:real;
x:real;
c:real;
q:string;
Begin
repeat
writeln ('Vvedite nachalo i konec otrezka');
repeat
write ('a= ');
{$I-}
readln (a);
{$I+}
until IOResult=0;
repeat
write ('b= ');
{$I-}
readln (b);
{$I+}
until IOResult=0;
if (a=0) and (b=0) then
begin
writeln ('Oshibka pri vvode znacheni');
end
else
begin
if f(b)*f2(b)>0 then
begin
c:=a;
x:= c-((f(c)*(b-c))/(f(b)-f(c)));
end
else
begin
c:=b;
x:= c+((f(c)*((-a)+c))/(-f(a)-f(c)));
end;
writeln ('X= ',x:5:5);
readln;
end;
writeln ('Hotite povtorit ?');
writeln ('y/n');
readln (q);
until q='n';
End.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.