Вычисление интеграла методом Симпсона

Метод Симпсона относится к численным методам, позволяющим найти приближенное значение определенного интеграла от заданной функции. задавайте точность, границы интегрирования, меняйте подынтегральную функцию.
program metod_simpsona;
 uses crt;
 const
 a:real=0; b:real=1; epsilon:real=0.0000000001;
 var
 s:real;
 function f(x:real):real;
 begin
 f:=exp(-sqr(x));
 {Для тестирования}
 {f:=sin(x)}
 {if x<>0 then f:=sin(x)/x else f:=1;}
 {f:=exp(-sqr(x)/2)/sqrt(2*pi);}
 end;

 function simpson(a,b,e:real):real;
 var
 s1,s2,s,h:real; i,n,k:longint;
 begin
 k:=2; n:=2*k; h:=(b-a)/n;
 s2:=(f(a)+f(b))*(h/3);
 repeat
 s1:=s2; k:=2*k; h:=(b-a)/(2*k);
 s2:=f(a)+f(b); s:=0;
 for i:=1 to k do s:=s+f(a+(2*i-1)*h);
 s2:=s2+4*s;
 s:=0;
 for i:=1 to k-1 do s:=s+f(a+2*i*h);
 s2:=s2+2*s;
 s2:=s2*h/3;
 writeln('I=',s2:12:10,', n=',2*k);
 until abs(s2-s1)/15 < e;
 simpson:=s2
 end;
Begin
 clrscr;
 writeln('Вычисление интеграла методом Cимпсона');
 writeln('a=',a:4:2, ' b=', b:4:2, ' epsilon=',epsilon:12:10);
 S:=simpson(a,b,epsilon);
 writeln('Ингеграл от exp(-x*x) = ', S:12:10);
 readln
End.
Онлайн всего: 7
Гостей: 7
Пользователей: 0

STUDLAB Сообщить про опечатку на сайте