|
|
|
|
Пример:
Составить программу для вычисления определенного интеграла по методу Симпсона. Вычисление подынтегральной функции реализовать с помощью функции, имя которой передается как параметр. Значение определенного интеграла по формуле Симпсона вычисляется по формуле:
ISimps=2*h/3*(0.5*F(A)+2*F(A+h)+F(A+2*h)+2*F(A+3*h)+... +2*F(B-h)+0.5*F(B))
где A и B - нижняя и верхняя границы интервала интегрирования,
N - число разбиений интервала интегрирования,
h=(B-A)/N, причем N должно быть четным.
Program INTEGRAL; type Func= function(x: Real): Real; var I,TN,TK:Real; N:Integer; {$F+} Function Q(t: Real): Real; begin Q:=2*t/Sqrt(1-Sin(2*t)); end; {$F-} Procedure Simps(F:Func; a,b:Real; N:Integer; var INT:Real); var sum, h: Real; j:Integer; begin if Odd(N) then N:=N+1; h:=(b-a)/N; sum:=0.5*(F(a)+F(b)); for j:=1 to N-1 do sum:=sum+(j mod 2+1)*F(a+j*h); INT:=2*h*sum/3 end; begin WriteLn(' ВВЕДИ TN,TK,N'); Read(TN,TK,N); Simps(Q,TN,TK,N,I); WriteLn('I=',I:8:3) end.