Главная / Рефераты / Рефераты по информатике, программированию

Курсовая: Вычисления определенного интеграла с помощью ф. – лы Симпсона на компьютере


МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ СТРОИТЕЛЬНЫЙ УНИВЕРСИТЕТ
КУРСОВАЯ РАБОТА «Программа приближенного вычисления определенного интеграла с помощью ф – лы Симпсона на компьютере»
Выполнил:
 студент ф – та ЭОУС – 1 – 12
Валюгин А. С.
Принял:
Зоткин С. П.
Москва 2001
1. Введение
Определенный интеграл от функции, имеющей неэлементарную первообразную, можно вычислить с помощью той или иной приближенной формулы. Для решения этой задачи на компьютере, среди прочих, можно воспользоваться формулами прямоугольников, трапеций или формулой Симпсона. В данной работе рассматривается именно последняя.
Рассмотрим функцию y = f(x). Будем считать, что на отрезке [a, b] она положительна и непрерывна. Найдем площадь криволинейной трапеции aABb (рис. 1).

рис. 1
Для этого разделим отрезок [a, b] точкой  c = (a + b) / 2 пополам и в точке C(c, f(c)) проведем касательную к линии y = f(x). После этого разделим [a, b]  точками  p и q на 3 равные части и проведем через них прямые x = p и x = q. Пусть P и Q – точки пересечения этих прямых с касательной. Соединив A с P и B с Q, получим 3 прямолинейные трапеции aAPp,  pPQq, qQBb. Тогда площадь трапеции aABb можно приближенно посчитать по следующей формуле
I » (aA + pP) / 2 * h + (pP + qQ) / 2 * h + (qQ + bB) / 2 * h, где h = (b – a) / 3.
Откуда получаем
I » (b – a) / 6 * (aA + 2 * (pP + qQ) + bB)
заметим, что aA = f(a), bB = f(b), а  pP + qQ = 2 * f(c), в итоге получаем малую фор – лу Симпсона
I » (b – a) / 6 * (f(a) + 4 * f(c) + f(b))   (1)


 
Малая формула Симпсона дает интеграл с хорошей точностью, когда график подинтегральной функции мало изогнут, в случаях же, когда дана более сложная функция малая формула Симпсона непригодна. Тогда, чтобы посчитать интеграл заданной функции нужно разбить отрезок [a, b] на n частей и к каждому из отрезков применить формулу (1). После указанных выше действий получится “большая” формула Симпсона, которая имеет вид,
I » h / 3 * (Yкр + 2 * Yнеч + 4 * Yчет)   (2)
 
 
где Yкр = y1 + yn, Yнеч = y3 + y5 + … + yn – 1,  Yчет = y2 + y4 + … + yn – 2, а h = (b – a) / n.
  Задача. Пусть нужно проинтегрировать функцию f(x) = x³(x-5)² на отрезке [0, 6] (рис. 2). На этом отрезке функция непрерывна и принимает только неотрицательные значения, т. е. знакопостоянна.

рис. 2
Для выполнения поставленной задачи составлена нижеописанная программа,  приближенно вычисляющая определенный интеграл с помощью формулы Симпсона. Программа состоит из трех функций main, f и integral. Функция main вызывает функцию integral для вычисления интеграла и распечатывает на экране результат. Функция f принимает аргумент x типа float и возвращает значение интегрируемой функции в этой точке. Integral – основная функция программы: она выполняет все вычисления, связанные с нахождением определенного интеграла. Integral принимает четыре параметра: пределы интегрирования типа float, допустимую относительную ошибку типа float и указатель на интегрируемую функцию. Вычисления выполняются до тех пор, пока относительная ошибка, вычисляемая по формуле
 
| (In/2 – In) / In | ,
где In интеграл при числе разбиений n, не будет меньше требуемой. Например, допустимая относительная ошибка e = 0.02 это значит, что максимальная погрешность в вычислениях будет не больше, чем In * e = 0.02 * In.  Функция реализована с экономией вычислений, т. е. учитывается, что Yкр постоянная, а Yнеч = Yнеч + Yчет, поэтому эти значения вычисляются единожды. Высокая точность и скорость вычисления делают использование программы на основе формулы Симпсона более желательным при приближенном вычислении интегралов, чем использование программ на основе формулы трапеции или метода прямоугольников.
  Ниже предлагается блок – схема, спецификации, листинг и ручной счет программы на примере поставленной выше задачи. Блок – схема позволяет отследить и понять особенности алгоритма программы, спецификации дают представление о назначении каждой переменной в основной функции integral, листинг -  исходный код работающей программы с комментариями, а ручной счет предоставляет возможность проанализировать результаты выполнения программы.
2. Блок – схема программы


Блок-схема: e" >   ДА


  НЕТ
Блок-схема:



3. Спецификации
Имя переменной Тип Назначение
n int Число разбиений отрезка [a, b]
i int Счетчик циклов
a float Нижний предел интегрирования
b float Верхний предел интегрирования
h float Шаг разбиения отрезка
e float Допустимая относительная ошибка
f float (*) Указатель на интегрируемую фун - цию
s_ab float Сумма значений фун – ции в точках a и b
s_even float Сумма значений фун – ции в нечетных точках
s_odd float Сумма значений фун – ции в четных точках
s_res float Текущий результат интегрирования
s_pres float Предыдущий результат интегрирования
4. Листинг программы
#include <stdio.h> 
#include <math.h>
/* Прототип фун – ции, вычисляющей интеграл...

ВНИМАНИЕ!
Текст просматриваемого вами реферата (доклада, курсовой) урезан на треть (33%)!

Чтобы просматривать этот и другие рефераты полностью, авторизуйтесь  на сайте:

Ваш id: Пароль:

РЕГИСТРАЦИЯ НА САЙТЕ
Простая ссылка на эту работу:
Ссылка для размещения на форуме:
HTML-гиперссылка:



Добавлено: 2012.06.23
Просмотров: 1009

При использовании материалов сайта, активная ссылка на AREA7.RU обязательная!