Решить уравнение e^x+sqrt(1+e^2x)-2=0,x принадлежит[-1;2]с точностью э=10^(-5) методом деления отрезка пополам,проверить решение используя любой другой метод(итерации,Ньютона) — Pascal(Паскаль)

uses crt;
function F(x:real):real;
begin F:=exp(x)+sqrt(1+exp(2*x))-2;
end;
 
var a,b,c,x,e:real;
    ai,bi,x1,x2,f1,f2:real;
    n,i:longint;
begin clrscr; writeln('F(x)=exp(x)+sqrt(1+exp(2*x))-2');
write('Начало интервала (-1): ');readln(a);
ai:=a;
repeat write('Конец интервал, b>a (2): ');readln(b);
until b>a;
bi:=b;
repeat write('Точность (0.00001): ');readln(e);
until (e>0)and(e<1);
if F(a)=0 then   begin      writeln('x=a=',a:9:6);
     readln;
     exit;
  end;
if F(b)=0 then    begin      writeln('x=b=',b:9:6);
     readln;
     exit;
   end;
if F(A)*F(B)>0 then   begin    writeLn('Границы интервала заданы некорректно!');
   readln;
   exit;
  end;
{метод деления отрезка пополам(дихотомии)}
repeat  c:=(a+b)/2;
 if F(a)*F(c)<=0 then b:=c
 else a:=c;
until b-a<e;
x:=(a+b)/2;
writeln('Метод деления отрезка пополам:');
writeln('x=',x:9:6);
{Метод итераций} n:=round((bi-ai)/e);
x1:=ai; f1:=F(x1);
for i:=1 to n do   begin    x2:=x1+(bi-ai)/n;
   f2:=F(x2);
   if f1*f2 <= 0 then     begin      writeln('Метод итераций:');
     writeln('x=',(x2 + x1)/2:9:6);
    end;
   x1:=x2; f1:=f2;
  end;
readln end.

Leave a Comment

3 + 6 =