Пример 3.3 выполнения задания

Программа составлена по условию варианта задания №30 (см. ниже). В реализации метода касательных используются выражения производной 9Х2-10Х+1 и второй производной 18Х-10 выражения, входящего в уравнение 3Х3-5Х2+Х+0,4=0.

program Project1;

{$APPTYPE CONSOLE}

uses

SysUtils, Math;

var

X0,X1,Eps,dX,X,XL,XR,YL,Y:Extended;

i,N:Integer;

begin

//Метод касательных

WriteLn('Метод касательных');

Write('Введите X0, Eps и N: ');

ReadLn(X0,Eps,N);

//Проверка применимости метода

if (3*IntPower(X0,3)-5*Sqr(X0)+X0+0.4)*(18*X0-10) <= 0 then

WriteLn('Не выполнено условие применимости'

,' метода касательных!')

else

begin

i:=0;

repeat

i:=i+1;

dX:= (3*IntPower(X0,3)-5*Sqr(X0)+X0+0.4)

/(9* Sqr(X0)-10*X0+1);

X1:=X0-dX;

X0:=X1

until (Abs(dX)<Eps) or (i=N);

if Abs(dX)<Eps then

WriteLn('Корень Х уравнения ',X0:14,' найден за ',i

,' шагов, Y(X) = '

,3* IntPower(X0,3)-5* Sqr(X0)+X0+0.4:14)

else

WriteLn('Корень уравнения не найден!');

end;

WriteLn;

//Метод половинного деления

WriteLn('Метод половинного деления');

Write('Введите XL, XR, Eps и N: ');

ReadLn(XL, XR, Eps, N);

//Проверка применимости метода

if (3*IntPower(XL,3)-5*Sqr(XL)+XL+0.4)

*(3*IntPower(XR,3)-5*Sqr(XR)+XR+0.4) > 0 then

WriteLn('Не выполнено условие применимости'

,' метода половинного деления!')

else

begin

YL:=3*IntPower(XL,3)-5*Sqr(XL)+XL+0.4;

i:=0;

repeat

X:=(XL+XR)/2;

Y:= 3*IntPower(X,3)-5*Sqr(X)+X+0.4;

if Y*YL>0 then

XL:=X

else

XR:=X;

inc(i);

until (Abs(XR-XL)<Eps) or (i=N);

if Abs(XR-XL)<Eps then

WriteLn('Корень уравнения ',X:14,' найден за '

,i,' шагов, Y(X) = ',Y:14)

else

WriteLn('Корень уравнения не найден');

end;

ReadLn;

end.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: