Нахождение всех действительных корней уравнения на отрезке

masya777999

Добрый день, прошу помощи в создании блок схем. Для функции разработать и протестировать программу, выполняющую: 1. нахождение всех действительных корней уравнения на отрезке [a; b], если таковые имеются (решение соответствующего уравнения выполнить с точностью до e=0,0001 методом хорд не более, чем за 20 итераций. 2. вычисление определенного интеграла f(x) на интервале табулирования [a; b] методом правых прямоугольников. уравнение x4 + 0.5x3 – 4x2 – 3x – 0.5 = 0 интервал [–1, 0]программа:
Const
 Eps=0.0001;
 a=-1.0;
 b=0.0;
 
Var
 Res:Real;
 N:Integer;
 
Function F(z:real):Real;
begin
 F:=Sqr(Sqr(z))+0.5*z*Sqr(z)-4.0*Sqr(z)-3.0*z-0.5;
end;
 
Function Antiderivative(Q:real):Real;
begin
 Antiderivative:=0.2*Q*Sqr(Sqr(Q))+0.125*Sqr(Sqr(Q))-(4.0/3)*Q*Sqr(Q)-1.5*Sqr(Q)-0.5*Q;
end;
 
Procedure EQRoot(a1,b1:real; var R:real; var m:Integer);
var
 x1,x2,d,c:real;
 k:Integer;
begin
 k:=0;
 c:=a1;
 x1:=b1;
 Repeat
  x2:=x1-F(x1)*(x1-c)/(F(x1)-F(c));
  d:=abs(x1-x2);
  x1:=x2;
  Inc(k);
 Until d<Eps;
 R:=x2;
 m:=k;
end;
 
Procedure Integral(var R:Real; var m:Integer);
var
 h,S1,S2,d:real;
 p,k,i:Integer;
begin
 k:=0;
 p:=10;
 S1:=0;
 h:=(b-a)/p;
 for i:=0 to p-1 do S1:=S1+h*F(a+h*i);
 repeat
  S2:=0;
  p:=p+10;
  Inc(k);
  h:=(b-a)/p;
  for i:=0 to p-1 do S2:=S2+h*F(a+h*i);
  d:=Abs(S2-S1);
  S1:=S2;
 until d<Eps;
 R:=S2;
 m:=k;
end;
 
Begin
 Writeln('Roots: ');
 EQRoot(-0.6,-0.4,Res,N);
 Writeln('X1 = ',Res:8:5,',   ',N,' iterations');
 EQRoot(-0.3,-0.2,Res,N);
 Writeln('X2 = ',Res:8:5,',   ',N,' iterations');
 Writeln;
 Writeln('Integral:');
 Writeln('Numerical:');
 Integral(Res,N);
 Writeln(Res:0:5,',   ',N,' iterations');
 Writeln('Accurate:');
 Writeln((Antiderivative(b)-Antiderivative(a)):0:5);
 Readln
End.
1 ответ

masya777999

Примеры блок-схем программы, функций и процедуры. По хорошему нужно перерисовать, это сделано по коду редактором.