Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

вычисление интегралов (pascal)

3.0K
17 марта 2006 года
flashg
28 / / 04.10.2003
у кого нибудь есть хоть какая нибудь заготовка
1. вычисления определенных интегралов по формулам прямоугольников, трапеций и Симпсона, с оценкой погрешностей по правилу Рунге.
2. Протестировать программу на двух-трех простых интегралах.
366
23 марта 2006 года
int
668 / / 30.03.2005
У меня с первого курса вот что осталось:
Код:
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.


Что тут наворочено даже не спрашивай =)) Остальные два метода помню, что делал, но, видимо, ничего не сохранилось.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог