Задание № 2
PascalABC.NET 3.4.2, сборка 1864 от 11.11.2018
Внимание! Если программа не работает, обновите версию!
Мудров А.Е.
Численные методы для ПЭВМ на языках Бейсик, Фортран и Паскаль
Программа 5.4Р (взята за основу)
Метод Симпсона с заданной погрешностью
function f(x: real) := Cos(2*Sin(x));
function Simpson(a, b, e: real; f: real-> real): real;
begin
var (e1, h) := (e * 15, (b - a) / 2);
Result := 2 * f(a + h);
var s1 := f(a) + f(b) + Result;
Result += s1;
var s3: real;
repeat
s3 := Result;
var (s2, h2) := (0.0, h);
h /= 2;
var x := a + h;
while (x < b) = (h > 0) do
(s2, x) := (s2 + f(x), x + h2);
s2 *= 2;
s1 := s1 + s2;
Result := s1 + s2
until Abs(1 - Result / (2 * s3)) <= e1;</p>
Result *= h / 3
end;
begin
Simpson(1, 15, 1e-9, f).Println;
end.
Результат
2.47317958809517