Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- uses math;
- const
- eps = 0.001;
- a = 0;
- b = 1;
- function f(x : real) : real;
- begin
- f := 2*x + 6*x*x*x*x*x;
- end;
- function g1(x : real) : real;
- begin
- g1 := 2 + 30*x*x*x*x;
- end;
- function g2(x : real) : real;
- begin
- g2 := 120*x*x*x;
- end;
- function g4(x : real) : real;
- begin
- g4 := 720*x;
- end;
- var
- m1, m2, m4, step, s, fA, fMid, fB : real;
- n, i : integer;
- begin
- m1 := max(abs(g1(a)), abs(g1(b)));
- m2 := max(abs(g2(a)), abs(g2(b)));
- m4 := max(abs(g4(a)), abs(g4(b)));
- { Средние прямоугольники }
- n := round((b - a) / sqrt(eps * 24 / (m2 * (b - a))));
- step := (b - a) / n;
- s := 0;
- for i := 0 to n - 1 do
- s += f(a + (i + 0.5) * step) * step;
- writeln('A>> ', s:0:6);
- writeln;
- { Левые прямоугольники }
- n := round(m1*(b - a)*(b - a)/(2 * eps));
- step := (b - a) / n;
- s := 0;
- for i := 0 to n - 1 do
- s += f(a + i * step) * step;
- writeln('Б(левая)>> ', s:0:6);
- { Правые прямоугольники }
- s := 0;
- for i := 1 to n do
- s += f(a + i * step) * step;
- writeln('Б(правая)>> ', s:0:6);
- writeln;
- { Трапеции }
- n := round((b - a) / sqrt(eps * 12 / (m2 * (b - a))));
- step := (b - a) / n;
- s := 0;
- fA := f(a);
- for i := 1 to n do begin
- fB := f(a + step*i);
- s += (fA + fB) / 2 * step;
- fA := fB;
- end;
- writeln('В>> ', s:0:6);
- writeln;
- { Симпсон }
- n := round((b - a) / sqrt(sqrt(eps * 180 / (m4 * (b - a)))));
- step := (b - a) / n;
- s := 0;
- fA := f(a);
- for i := 1 to n do begin
- fMid := f(a + step*(i - 0.5));
- fB := f(a + step*i);
- s += (step/6)*(fA + fMid*4 + fB);
- fA := fB;
- end;
- writeln('Г>> ', s:0:6);
- writeln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement