Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

Вычисление интеграла фукции f (x) (методом Симпсона)

procedure norm(a:real);
var n:real;
begin
{ Если число слишком мало - возвращается ноль }
  if (a<0.00001) then n:=0
  else begin
{ Если число меньше единицы }
    if (a<1) then begin
      n:=1;
      repeat
        a:=a*10;
        n:=n/10;
      until (trunc(a)<>0);
    end else begin
{ Если число больше единицы }
      n:=1;
      repeat
        a:=a/10;
        n:=n*10;
      until (trunc(a)=0);
    end;
  end;
  a:=n;
end;

{ Построение графика функции }
procedure out_grp(xmin,xmax,ymin,ymax:real);
var
  drv,mode:integer;
  mx,my:real;      { Масштабы по осям }
  xx,yy:real;      { Текущие координаты }
  sx:real;         { Шаг по оси X }
  dltx,dlty:integer;{ Приращение на графике при смещении графика }
  s:string;        { Строка }
begin
{ Инициализация графики }
  drv:=VGA;
  mode:=VGAHi;
  initgraph(drv,mode,'');
{ Выяснение порядков минимумов и максимумов }
  norm(xmax);
  norm(ymax);
  norm(ymin);ymin:=ymin/10;
  norm(xmin);ymin:=ymin/10;
  if (xmin/xmax)>0.01 then dltx:=20 else dltx:=0;
  if (ymin/ymax)>0.01 then dlty:=20 else dlty:=0;
{ Расчет масштабов }
  mx:=500/(xmax-xmin);
  my:=400/(ymax-ymin);
{ Расчет приращения по X }
  sx:=(xmax-xmin)/550;
{ Вывод системы координат }
  settextjustify(1,1);
  xx:=xmin;
  repeat
    setcolor(1);
    line(trunc(40+mx*(xx-xmin)+dltx),20,trunc(40+mx*(xx-xmin)+dltx),469);
    str(xx:4:2,s);
    setcolor(15);
    outtextxy(trunc(40+mx*(xx-xmin)+dltx),475,s);
    xx:=xx+50*sx;
  until (xx>(xmax+50*sx));
  yy:=ymin+(ymax-ymin)/10;
  repeat
    setcolor(1);
    line(41,trunc(470-my*(yy-ymin)-dlty),630,trunc(470-my*(yy-ymin)-dlty));
    str(yy:4:2,s);
    setcolor(15);
    outtextxy(20,trunc(470-my*(yy-ymin)-dlty),s);
    yy:=yy+(ymax-ymin)/10;
  until (yy>(ymax+(ymax-ymin)/10));
  line(40,0,40,480);
  line(0,470,640,470);
  line(40,0,38,10);
  line(40,0,42,10);
  line(640,470,630,472);
  line(640,470,630,468);
{ Вывод графика }
  xx:=xmin;
  repeat
    yy:=f(xx);
    putpixel(trunc(40+mx*(xx-xmin)+dltx),trunc(470-my*(yy-ymin)-dlty),7);
    xx:=xx+sx;
  until (xx>xmax);
  outtextxy(300,10,' Press ESC to continue ');
  repeat until (readkey=#27);
  closegraph;
end;

{ Основная программа }
begin
{ Ввод границ отрезков }
  clrscr;
  write(' Введите A,B: ');
  readln(a,b);
{ Выводится график функции }
  out_grp(a,b,f(b),f(a));
{ Вычисляется интеграл по методу трапеций }
  n:=3;
  r:=trap(a,b,n);         { Начальное значение }
  repeat
    r2:=r;                { Запоминается предыдущее значение }
    n:=n+2;               { Увеличивается количество шагов }
    r:=trap(a,b,n);       { Рассчитывается новое значение }
  until (abs(r-r2)<0.001);{ Повторяется до достижения  необходимой  точности
}
{ Вывод результатов }
writeln(' Резльтат по методу трапеций равен: ',r:6:3);
writeln(' для получения необходимой точности

интервал был разбит на');
  writeln(n,' отрезков');
{ Вычисляется интеграл по методу Симпсона }
  n:=3;
  r:=simpson(a,b,n);      { Начальное значение }
  repeat
    r2:=r;                { Запоминается предыдущее значение }
    n:=n+2;               { Увеличивается количество шагов }
    r:=simpson(a,b,n);       { Рассчитывается новое значение }
until (abs(r-r2)<0.001);{ Повторяется до достижения необходимой
                                     точности }
{ Вывод результатов }
  writeln;
  writeln(' Резльтат по методу Симпсона равен: ',r:6:3);
  writeln(' для получения необходимой точности интервал

             был разбит на ');
  writeln(n,' отрезков');
end.



                       6. Результаты работы программы



Введите A,B: 2 3

[pic]


Результат по методу трапеций равен:  1.062
 для получения необходимой точности интервал был разбит на 11 отрезков

Результат по методу Симпсона равен:   1.061
 для получения необходимой точности интервал был разбит на 7 отрезков.

      Анализ полученных в ходе работы программы результатов говорит  о  том,
что поставленная задача успешно решается.
       Метод  трапеции  является  наиболее  простым  методом   приближённого
интегрирования , этот метод позволяет точно интегрировать  многочлен  первой
степени , а для  интегрирования  данной  функции  требуется  довольно  много
итераций. Более совершенным является  метод  Симпсона  ,  который  позволяет
точно  интегрировать  многочлен  второй   производной   и   даже   некоторые
многочлены третьей степени,  поэтому  он  требует  почти  в  2  раза  меньше
количества интервалов для получения результата.



                                 Заключение



В данной курсовой работе решена задача приближённого интегрирования функции
                            [pic]
методами Симпсона и трапеции.
       В процессе  создания  курсовой  работы  разработан  алгоритм  решения
поставленной  задачи.  По  этому  алгоритму  на  языке  Турбо  Паскаль  7.0.
составлена и отлажена программа.
       В ходе тестирования были получены результаты работы метода трапеции и
метода Симпсона, по которым  видно,  что  результаты  интегрирования  обоими
методами совпадают с достаточной точностью. Заметна лишь разница в  качестве
приближения интервалов.
       Программа  является  полностью  работоспособной,  что  подтверждается
результатами её тестированием..



            Список использованных источников:


1.Бронштейн  И.Н.,  Семендяев  К.А.  Справочник  по  высшей  математике  для
  инженеров и учащихся втузов. - М.: Наука , 1981 . - 718 с.
2.Белецкий Я. Турбо Паскаль   с   графикой   для   персональных  компьютеров
  перевод с польского Д.И.Юренкова. -М.: Машиностроение , 1991. - 320 с.
3.Сергиевский  М.В.,  Шалашов  А.В.   Турбо   Паскаль   7.0;   язык,   среда
  программирования.  -М:  Машиностроение.-1994,-254 с.ил.
4.Справочник  по  процедурам  и  функциям  Borland   Pascal  7.0.  -   Киев:
  Диалектика, 1993. - 272 с.
5.Самарский А.А, Гулин А.В.  Численные методы.М.:Наука,1989. – 430 с.
12
скачать работу

Вычисление интеграла фукции f (x) (методом Симпсона)

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ