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

С О Д Е Р Ж А Н И Е

 TOC o f t «ЗАГОЛОВОК 4;4» *MERGEFORMAT Введение… 2

1.Постановка задачи… PAGEREF _Toc501213173 h 3

2.Математическая часть… 4

3.Описание метода решения задачи… 9

4.Описание алгоритма решения задачи… 10

5. Текстпрограммы… 11

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

Заключение… 16

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

 TC Введение

История появленияи развития  персональных компьютеровявляется одним из наиболее впечатляющих явлений нашего века. С моментапоявления первых образцов персональных  компьютеров прошломеньше 25 лет, но сейчас без них уже немыслимо огромное количество областей человеческой деятельности — экономика,управление, наука, инженерное дело, издательское  дело, образование, культура и т.д. Интереск  персональным  компьютерам постоянно растет, а круг ихпользователей  непрерывно  расширяется. В число пользователей ПЭВМвовлекаются как новички  в компьютерномделе, так и специалисты по другим классам  ЭВМ.

Язык Паскаль — это один из наиболеераспространённых языков программирования 80-90х годов, поддерживающий самыесовременные методологии проектирования программ (нисходящее, модульноепроектирование, структурное программирование) имеют свою достаточно богатуюисторию развития.

Новую жизнь языку дала фирма Борланд,разработавшая на его базе семейство Паскаль – систем, называемых ТурбоПаскалем. Интегрированная среда, обеспечивающая многооконную разработкупрограммной системы, обширный набор встроенный в неё средств компиляции иотладки, доступный для работы через легко осваиваемое меню, — всё этообеспечивает высокую производительность труда программиста, недостижимую приработе со старыми средами.

Язык Турбо Паскаль хорошо подходит  для обучения программированию.

 TC <span DOCPROPERTY Глава02 \* MERGEFORMAT "">1. Постановка задачи

         Заданием на курсовую работуявляется создание программы на языке программирования Турбо Паскаль, котораядолжна осуществлять решение следующей задачи :

Вычислить приближённое значение интеграла функцииf(x) на интервале с точностью до 0.01 методами Симпсона и трапеции с цельюсравнения.

Интегрируемая функция: <img src="/cache/referats/3844/image002.gif" v:shapes="_x0000_i1025">

Определить метод, который решает поставленнуюзадачу за минимальное число повторений.

Построить график функции f(x) на заданноминтервале. Решить поставленную задачу с использованием функций и процедуралгоритмического языка Турбо Паскаль.

 TC <span DOCPROPERTY Глава03 \* MERGEFORMAT "">2. Математическая часть

Для приближённого вычисления интеграла функцииf(x) используются методы приближённого интегрирования, наиболее употребительныеиз них основаны на замене  интегралаконечной суммой. Для вычисления <img src="/cache/referats/3844/image004.gif" v:shapes="_x0000_i1026">0) до b(xn) разбиваетсяна n равных частей, и для точек деления x0, x1, x2, x3,..., xn-1, xn вычисляются значенияинтегрируемой функции y. Затем необходимо воспользоваться формулой приближённогоинтегрирования:

1) Формула трапеций (рис.1):

<img src="/cache/referats/3844/image006.gif" v:shapes="_x0000_i1027">

<img src="/cache/referats/3844/image008.gif" v:shapes="_x0000_i1028">

Рис.1.

2) Формула Cимпсона (парабол) (рис.2):

<img src="/cache/referats/3844/image010.gif" v:shapes="_x0000_i1029"> (2)

<img src="/cache/referats/3844/image012.gif" v:shapes="_x0000_i1030">

Рис.2.

В моей курсовой работерассматривается приближенное вычисление интеграла <img src="/cache/referats/3844/image014.gif" v:shapes="_x0000_i1031">                                                              (1)

При его аппроксимациизаменим функцию f(x) параболой, проходящей через точки <img src="/cache/referats/3844/image016.gif" v:shapes="_x0000_i1032"> т.е представимприближенно f(x) в виде

<img src="/cache/referats/3844/image018.gif" v:shapes="_x0000_i1033">     <img src="/cache/referats/3844/image020.gif" v:shapes="_x0000_i1034">

где <img src="/cache/referats/3844/image022.gif" v:shapes="_x0000_i1035">  — интерполяционныймногочлен Лагранжа второй степени,

<img src="/cache/referats/3844/image024.gif" v:shapes="_x0000_i1036">

Проводя интегрирование получим

<img src="/cache/referats/3844/image026.gif" v:shapes="_x0000_i1037">        <img src="/cache/referats/3844/image028.gif" v:shapes="_x0000_i1038">

Таким образом приходим к приближенному равенству

<img src="/cache/referats/3844/image030.gif" v:shapes="_x0000_i1039">                                               (3)

Котрое называется формулой Симпсона или формулой парабол.

На всем отрезке [a,b] формула Симпсона имеет вид

<img src="/cache/referats/3844/image032.gif" v:shapes="_x0000_i1040">

Чтобы не использовать дробныхиндексов можно обозначить

xi=a+0,5hi,  fi=f(xi),  i=1,2,…,2N, hN=b-a

и записать формулу Симпсона ввиде

<img src="/cache/referats/3844/image034.gif" v:shapes="_x0000_i1041"> (4)

Прежде чем переходить коценке погрешности формулы (3) заметим, что она является точной для любогомногочлена третьей степени, т.е. имеет место точное равенство

<img src="/cache/referats/3844/image036.gif" v:shapes="_x0000_i1042">

если f(x)=a0+a1x+a2x2+a3x3.Это утверждение нетрудно проверить непосредственно.

Для оценки погрешности формулыСимпсона воспользуемся интерполяционным многочленом Эрмита. Построим многочлентретьей степени H3(x) такой, что

<img src="/cache/referats/3844/image038.gif" v:shapes="_x0000_i1043">                                     <img src="/cache/referats/3844/image040.gif" v:shapes="_x0000_i1044">

<img src="/cache/referats/3844/image042.gif" v:shapes="_x0000_i1045">                                     <img src="/cache/referats/3844/image044.gif" v:shapes="_x0000_i1046">

Такой многочлен существует иединствен.

Однако нам даже не потребуетсяявный вид многочлена H3(x). Вспоминая, что формула Симпсона точнадля любого многочлена третьей степени, получим

<img src="/cache/referats/3844/image046.gif" v:shapes="_x0000_i1047">    (5)

Представим теперь f(x) в виде

f(x)=H3(x)+ri(x),     <img src="/cache/referats/3844/image048.gif" v:shapes="_x0000_i1048"><span Times New Roman";mso-hansi-font-family: «Times New Roman»;mso-ansi-language:RU;mso-char-type:symbol;mso-symbol-font-family: Symbol">Î

[xi-1,xi],                                                         (6)

где ri(x) –погрешность интерполирования многочленом Эрмита H3(x). Интегрируя(6) и учитывая (5), получим

<img src="/cache/referats/3844/image050.gif" v:shapes="_x0000_i1049">        (7)

Далее имеем

<img src="/cache/referats/3844/image052.gif" v:shapes="_x0000_i1050">

поэтому из (7) для погрешности <img src="/cache/referats/3844/image054.gif" v:shapes="_x0000_i1051"> формулы (3) получаемоценку

<img src="/cache/referats/3844/image056.gif" v:shapes="_x0000_i1052">

где <img src="/cache/referats/3844/image058.gif" v:shapes="_x0000_i1053"> 

Вычисляя интеграл приходим кокончательной оценке

<img src="/cache/referats/3844/image060.gif" v:shapes="_x0000_i1054">                                                               (8)

Погрешность составной формулыСимпсона оценивается так

<img src="/cache/referats/3844/image062.gif" v:shapes="_x0000_i1055">          (9)

Отсюда видно, что формулаСимпсона существенно точнее, чем формулы прямоугольников и трапеций. Начастичном отрезке она имеет точность О(h5), а на всем отрезке – O(h4)

 TC <span DOCPROPERTY Глава04 \* MERGEFORMAT "">3. Описание метода решения задачи

Для решения поставленной задачи необходимовыполнить следующие действия:

         1)Ввести значения границ отрезков;

         2)Вывести график функции на экран с учётом масштаба;

         3)Вычислить интеграл методом трапеций;

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

Для успешной реализации этих действий программадолжна состоять из следующих функциональных модулей:

         1)Функция f — вычисляет значение интегрируемой функции;

         2)Функция trap — вычисляет интеграл методом трапеций;

         3)Функция simpson — вычисляет интеграл методом Симпсона;

         4)Процедура norm — вычисляет порядок числа, необходимый для построения графикафункции с учётом масштаба;

         5)Процедура out_gr — строит график функции на экране а графическом режиме сучётом масштаба.

Основная (главная) программа должна осуществлятьввод значения границ отрезков, вызов функций и процедур вычисления и выводрезультатов на экран.

 TC <span DOCPROPERTY Глава05 \* MERGEFORMAT "">4. Описание алгоритма решения задачи

В соответствии с приведённым словесным описанием алгоритма решения поставленнойзадачи разработана блок схема решаемой задачи, которая изображена на рис. 3.

В изображенном алгоритме блоки имеют описанное ниже назначение:

Блок 1. Начало программы;

Блок 2. Очистка экрана;;

Блок 3. Запрос на ввод значений А и В;

Блок 4. Ввод значений А и В с клавиатуры;

Блок 5. Вызов процедуры вывода графика функции на экран;

Блок 6. Установка начального значения счётчика отрезков равным 3;

Блок 7. Вычисление значения начального значения интеграла методом трапеций;

Блок 8. Запоминание предыдущего значения интеграла, вычисленного методомтрапеций, увеличение значения числа отрезков на 2, вычисление следующегозначения интеграла методом трапеций;

Блок 9. Проверка условия: абсолютное значение разности текущего и предыдущегозначений интегрирования меньше чем 0.001, если да, то выход из цикла, если нет,то переход на блок 8.

Блок 10. Вывод результатов, полученных при вычислении интеграла методом трапецийна экран.

Блок 11. Установка начального значения счётчика отрезков равным 3;

Блок 12. Вычисление значения начального значения интеграла методомСимпсона;

Блок 13. Запоминание предыдущего значения интеграла, вычисленного методомСимпсона, увеличение значения числа отрезков на 2, вычисление следующегозначения интеграла методом Симпсона;

Блок 14. Проверка условия: абсолютное значение разности текущего и предыдущегозначений интегрирования меньше чем 0.001, если да, то выход из цикла, если нет,то переход на блок 13.

Блок 15. Вывод результатов, полученных при вычислении интеграла методомСимпсона на экран.

Блок 16. Конец программы.

 TC <span DOCPROPERTY Глава06 \* MERGEFORMAT "">5. Текст программы

program tr_s;

uses crt,graph;

var

  a,b:real; { Границы отрезка }

  r,r2:real; { Предыдущее и текущее приближенные значения интеграла}

  n:integer;  { Счетчик }

{ Интегрируемая функция }

function f(x:real):real;

begin

  f:=1/(x*ln(x)*0.43429);

end;

{ Метод трапеций }

functiontrap(a,b:real;n:integer):real;

var

  s:real;     { Полученная сумма }

  h:real;     { Шаг }

  m:integer;  { Счетчик }

begin

  h:=(b-a)/(n-1);                   { Определяется шаг }

  s:=(f(a)+f(b))/2;                 { Начальное значение суммы }

  for m:=1 to n-2 do s:=s+f(a+m*h); {Суммиование остальных элементов}

  trap:=s*h;                        { Возвращается значениеинтеграла }

end;

{ Метод Симпсона }

functionsimpson(a,b:real;n:integer):real;

var

  s:real;     { Сумма }

  h:real;     { Шаг }

  m:integer;  { Счетчик }

  mn:integer; { Очередной множитель }

begin

  h:=(b-a)/(n-1);                   { Рассчитывается шаг }

  s:=f(a)+f(b);                     { Начальное значение шага}

  mn:=4;                            { Первый мнодитель- 4 }

{ Суммирование остальныхэлементов }

  for m:=1 to n-2 do begin

    s:=s+mn*f(a+h*m);

    if (mn=4) then mn:=2 else mn:=4;{ Именениемноителя 2<>4 }

  end;

  simpson:=s*h/3;                   { Возвращается вычисленноезначение }

end;

{ Процедура вычисленияпорядка числа }

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;

{ Построение графикафункции }

procedureout_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 elsedltx:=0;

  if (ymin/ymax)>0.01 then dlty:=20 elsedlty:=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 ');

  repeatuntil (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.

 TC <span DOCPROPERTY Глава07 \* MERGEFORMAT "">6. Результаты работы программы

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

<img src="/cache/referats/3844/image064.jpg" v:shapes="_x0000_i1056">

Результат по методутрапеций равен:  1.062

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

Результат по методуСимпсона равен:   1.061

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

Анализ полученных в ходе работы программы результатов говорит о том,  что поставленная задача успешно решается.

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

 TC  TC Заключение

В данной курсовой работерешена задача приближённого интегрирования функции

<img src="/cache/referats/3844/image002.gif" v:shapes="_x0000_i1057">

методами Симпсона итрапеции.

В процессе создания курсовой работыразработан алгоритм решения поставленной задачи. По этому алгоритму на языкеТурбо Паскаль 7.0. составлена и отлажена программа.

В ходе тестирования были полученырезультаты работы метода трапеции и метода Симпсона, по которым видно, чторезультаты интегрирования обоими методами совпадают с достаточной точностью.Заметна лишь разница в качестве приближения интервалов.

Программа является полностьюработоспособной, что подтверждается результатами её тестированием..

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

1.БронштейнИ.Н., Семендяев К.А. Справочник по высшей математике для инженеров и учащихсявтузов. — М.: Наука, 1981. — 718 с.

2.Белецкий Я. Турбо Паскаль  с  графикой для  персональных компьютеров  перевод с польского Д.И.Юренкова. -М.:Машиностроение, 1991. — 320 с.

3.Сергиевский М.В., Шалашов А.В. Турбо Паскаль 7.0; язык, среда программирования.  -М: Машиностроение.-1994,-254 с.ил.

4.Справочник по процедурам и функциям Borland  Pascal 7.0. — Киев: Диалектика, 1993. — 272с.

5.Самарский А.А, Гулин А.В. Численные методы.М.: Наука,1989. – 430 с.

еще рефераты
Еще работы по математике