Вычислить корень уравнения используя метод деления отрезка пополам…уравнение следующее 1-x+sinx-ln(1+x)=0 на [0;1,5], E=10^-5 — Pascal(Паскаль)

eps- это точность с которой необходимо вычислить корень уравнения
n- это дополнительная переменная задает максимальное количество шагов
цикла для расчета корня уравнение она необходимо для гарантии завершения цикла
если корень не будет найден. например можно задать n = 1000; тогда цикл будет выполняться 1000 шагов, если корень не будет найден раньше например на 5-ом шаге.

program ser;
 
uses crt;
var a1,b1,eps1:real;
    x:double;
    n1,k1:word;
function f(x1:real):double;
begin
 f:=4*x1;{Zdesi  liubaia functsia ot X}
 end;
{-------------------}
procedure Bisect(a,b,eps:real;n:word;var x1:double;var k:word);
 begin
   k:=0;
  if f(a)*f(b)<0 then
   begin
       x1:=0.5*(a+b);
     while (abs(f(x1))>eps)or (k<n) do
       begin
         k:=k+1;
        x1:=0.5*(a+b);
        if f(x1)*f(a)=0 then
         exit ;
         if f(x1)*f(a)<0 then
           b:=x1
          else a:=x1;
       end;
    end
    else
     begin
      writeln('Naetom promegutki kornei net ');
      writeln('ili vasha funktsia ne strogo monotonna');
     end;
 end;
{----------------------------------}
begin
clrscr;
textcolor(12);
write('a=');readln(a1);
write('b=');readln(b1);
writeln('Tocnosti');
write('eps=');readln(eps1);
write('n=');readln(n1);
textcolor(11);
bisect(a1,b1,eps1,n1,x,k1);
  if f(a1)*f(b1)<0 then
begin
 textcolor(2);
 writeln('Koreni uravnenia X=',x:12:8);
 textcolor(3);
 writeln('Kol-vo iteratsii N=',k1);
end;
readln;
end.

Leave a Comment

+ 25 = 35