Advertisement
NyanCoder

no1.pas

May 20th, 2022
680
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. uses math;
  2.  
  3. const
  4.     eps = 0.001;
  5.     a   = 0;
  6.     b   = 1;
  7.  
  8. function f(x : real) : real;
  9. begin
  10.     f := 2*x + 6*x*x*x*x*x;
  11. end;
  12. function g1(x : real) : real;
  13. begin
  14.     g1 := 2 + 30*x*x*x*x;
  15. end;
  16. function g2(x : real) : real;
  17. begin
  18.     g2 := 120*x*x*x;
  19. end;
  20. function g4(x : real) : real;
  21. begin
  22.     g4 := 720*x;
  23. end;
  24.  
  25. var
  26.     m1, m2, m4, step, s, fA, fMid, fB : real;
  27.     n, i : integer;
  28. begin
  29.     m1 := max(abs(g1(a)), abs(g1(b)));
  30.     m2 := max(abs(g2(a)), abs(g2(b)));
  31.     m4 := max(abs(g4(a)), abs(g4(b)));
  32.  
  33.     { Средние прямоугольники }
  34.     n := round((b - a) / sqrt(eps * 24 / (m2 * (b - a))));
  35.     step := (b - a) / n;
  36.     s := 0;
  37.     for i := 0 to n - 1 do
  38.         s += f(a + (i + 0.5) * step) * step;
  39.     writeln('A>> ', s:0:6);
  40.     writeln;
  41.  
  42.     { Левые прямоугольники }
  43.     n := round(m1*(b - a)*(b - a)/(2 * eps));
  44.     step := (b - a) / n;
  45.     s := 0;
  46.     for i := 0 to n - 1 do
  47.         s += f(a + i * step) * step;
  48.     writeln('Б(левая)>> ', s:0:6);
  49.  
  50.     { Правые прямоугольники }
  51.     s := 0;
  52.     for i := 1 to n do
  53.         s += f(a + i * step) * step;
  54.     writeln('Б(правая)>> ', s:0:6);
  55.     writeln;
  56.  
  57.     { Трапеции }
  58.     n := round((b - a) / sqrt(eps * 12 / (m2 * (b - a))));
  59.     step := (b - a) / n;
  60.     s := 0;
  61.     fA := f(a);
  62.     for i := 1 to n do begin
  63.         fB := f(a + step*i);
  64.         s += (fA + fB) / 2 * step;
  65.         fA := fB;
  66.     end;
  67.     writeln('В>> ', s:0:6);
  68.     writeln;
  69.  
  70.     { Симпсон }
  71.     n := round((b - a) / sqrt(sqrt(eps * 180 / (m4 * (b - a)))));
  72.     step := (b - a) / n;
  73.     s := 0;
  74.     fA := f(a);
  75.     for i := 1 to n do begin
  76.         fMid := f(a + step*(i - 0.5));
  77.         fB := f(a + step*i);
  78.         s += (step/6)*(fA + fMid*4 + fB);
  79.         fA := fB;
  80.     end;
  81.     writeln('Г>> ', s:0:6);
  82.     writeln;
  83. end.
Advertisement
RAW Paste Data Copied
Advertisement