uses crt;
var c:char;
iter,nx:word;
x,integ,it1,eps,delt,shag:real;
menu_n:byte;
const a=0;
b=pi/2;
procedure menu(n:byte);
var o:byte;
const mn:array[1..4]of string=('Метод левых прямоугольноков',
'Метод правых прямоугольноков','Метод средних прямоугольноков','Выход');
begin
gotoxy(1,1);
for o:=1 to 4 do
begin
if o=n then textcolor(15)
else textcolor(8);
writeln(mn[o]);
end;
textcolor(7);
end;
function func(xx:real):real;
begin
func:=2*xx*cos(xx*xx);
end;
procedure drawint(n:byte);
var gs:real;
begin
writeln('Введите точность');
readln(eps);
iter:=0;
nx:=10;
integ:=0;
case n of
1:
begin
repeat
x:=a;
it1:=0;
shag:=(b-a)/nx;
repeat
gs:=(func(x)*shag);
it1:=it1+gs;
x:=x+shag;
until x>b-shag;
delt:=abs(integ-it1);
integ:=it1;
inc(nx);
inc(iter);
until delt<=eps;
writeln(integ,' ',iter,' ',sin(b*b)-sin(a*a))
end;
2:
begin
repeat
shag:=(b-a)/nx;
x:=a+shag/2;
it1:=0;
repeat
gs:=(func(x)*shag);
it1:=it1+gs;
x:=x+shag;
until x>b-shag/2;
delt:=abs(integ-it1);
integ:=it1;
inc(nx);
inc(iter);
until delt<=eps;
writeln(integ,' ',iter,' ',sin(b*b)-sin(a*a))
end;
3:
begin
repeat
shag:=(b-a)/nx;
x:=a+shag;
it1:=0;
repeat
gs:=(func(x)*shag);
it1:=it1+gs;
x:=x+shag;
until x>b;
delt:=abs(integ-it1);
integ:=it1;
inc(nx);
inc(iter);
until delt<=eps;
writeln(integ,' ',iter,' ',sin(b*b)-sin(a*a))
end;
end;
end;
begin
clrscr;
menu_n:=1;
menu(menu_n);
repeat
c:=readkey;
case c of
#0: case readkey of
#72: if menu_n>1 then begin menu(menu_n-1); dec(menu_n); end;
#80: if menu_n<4 then begin menu(menu_n+1); inc(menu_n); end;
end;
end;
until c=#13;
if menu_n<>4 then
begin
drawint(menu_n);
writeln('Готово');
readln;
end;
end.
вычисление интегралов (pascal)
1. вычисления определенных интегралов по формулам прямоугольников, трапеций и Симпсона, с оценкой погрешностей по правилу Рунге.
2. Протестировать программу на двух-трех простых интегралах.
Код:
Что тут наворочено даже не спрашивай =)) Остальные два метода помню, что делал, но, видимо, ничего не сохранилось.