Метод хорд. Замена не линейной функции линейной на данном отрезке

Страницы работы

Содержание работы

Теория

Суть метода состоит в замене не линейной функции линейной на данном отрезке. В качестве линейной функции берётся хорда, проходящая через концы 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.

Похожие материалы

Информация о работе