На интегрирование методом Симпсона(только чтоб все переменные были как у меня):
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | function Simpson(A, B: double ; N: cardinal ; Func: TFunction): double ;
var
h: double ;
X: double ;
K: double ;
I: Integer ;
begin
h := 0.5 * (B - A) / N;
Result := Func(A);
X := A + h;
for I := 1 to 2 * N - 1 do
begin
if I mod 2 = 0 then
K := 2
else
K := 4 ;
Result := Result + K * Func(X);
X := X + h;
end ;
Result := h * (Result+Func(B)) / 3 ;
end ;
|
На метод трапеций(только чтоб все переменные были как у меня):
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | function TrapezeInt(a, b: double ; eps: double ; IntF: TIntFunc): double ;
var
S, x, base: double ;
i, n: Integer ;
begin
base := b - a;
Result := (IntF(a) + IntF(b)) / 2 * base;
eps := eps / 10 ;
n := 1 ;
repeat
S := Result;
base := base / 2 ;
n := n * 2 ;
Result := Result / 2 ;
for i := 1 to n div 2 do
begin
x := a + base * (i * 2 - 1 );
Result := Result + IntF(x) * base;
end ;
until abs (S - Result) <= eps;
end ;
|
Admin: Используем теги для оформления кода, иначе последуют санкции!
Большое спасибо заранее =))