Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Требовалось найти приближенные корни уравнения методами половинного деления и итерационным способом.
Алгоритм метода половинного деления:
Метод итераций
Способ решения математических задач, заключающийся в построении последовательности, члены которой получаются с помощью повторного применения количества. операции. Начальный член последовательности выбирают в достаточной степени произвольно.
Метод половинного деления
Для наглядности был построен график функции:
Для решения поставленной задачи был разработан алгоритм на языке Pascal
PROGRAM New_One;
var
A,B:REAL;
const
prec=0.0001;
function F(X:REAL):REAL;
begin
f:=x * x - sin(x)
//f:=x*x*x+4*x-6;
end;
function proverka_znaka(a,b:real):boolean;
begin
proverka_znaka:=(f(a)*f(b)<0);
end;
function Find_Root(a,b,prec:real):real;
var x,y,z:real;
begin
if ABS(A-B)<PREC then Find_Root:=(A+B)/2
else
begin
X:=F(A);
Y:=F((A+B)/2);
Z:=F(B);
if X*Y<0 then Find_Root:=Find_Root(A,(A+B)/2,PREC)
else Find_Root:=Find_Root((A+B)/2,B,PREC)
end
end;
BEGIN
repeat
write('Введите через пробел границы интервала: ');readln(a,b);
until proverka_znaka(a,b)=true;
writeln ('X=',Find_Root(A,B,PREC):5:9);
writeln ('Проверка результата: F(получившмийся корень)=',F(Find_Root(A,B,PREC)):6:6);
END.
Программа работает исправно. Выполнена проверка на правильность результата.
Метод итераций
Для наглядности был построен график функции:
Для решения поставленной задачи был разработан алгоритм на языке Pascal
var
f1,f2,x,x1,x2,a,b:real;
n,i:integer;
const
eps=0.0001;
function F(x:real):real;
begin
F:=x*x*x+4*x-6;
end;
begin
repeat
write('Введите границы интервала: ');readln(a,b);
until F(A)*F(B)<0;
if F(a)=0 then writeln('x=a=',a:0:5,' Количество итераций=1');
if F(b)=0 then writeln('x=b=',b:0:5,' Количество итераций=1');
n:=round((b-a)/eps);
x1:=a; f1:=F(x1);
i:=1;
repeat
x2:=x1+(b-a)/n;
f2:=F(x2);
if f1*f2 <= 0 then writeln('x=',(x2 + x1)/2:5:7,' Количество итераций=',i)
else
begin
x1:=x2; f1:=f2;
i:=i+1;
end;
until f1*f2 <= 0;
writeln ('Проверка результата: F(получившмийся корень)=',F((x2 + x1)/2):6:6);
end.
Программа работает исправно. Выполнена проверка результата.