Курсовая: Вычисления определенного интеграла с помощью формулы Симпсона на компьютере - текст курсовой. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Курсовая

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

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Курсовая работа
Язык курсовой: Русский
Дата добавления:   
 
Скачать
Архив Zip, 38 kb, скачать бесплатно
Обойти Антиплагиат
Повысьте уникальность файла до 80-100% здесь.
Промокод referatbank - cкидка 20%!

Узнайте стоимость написания уникальной работы




МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ СТРОИТЕЛЬНЫЙ УНИВЕРСИТЕТ

















КУРСОВАЯ РАБОТА

«Программа приближенного вычисления определенного интеграла с помощью ф – лы Симпсона на компьютере»



Выполнил:

студент ф – та ЭОУС – 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, листинг - исходный код работающей программы с комментариями, а ручной счет предоставляет возможность проанализировать результаты выполнения программы.

  1. Блок – схема программы
































ДА




НЕТ








  1. Спецификации


Имя переменной

Тип

Назначение

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

Предыдущий результат интегрирования



  1. Листинг программы


#include

#include


/* Прототип фун – ции, вычисляющей интеграл */

float integral(float, float, float, float (*)(float));

/* Прототип фун – ции, задающей интегрируемую фун – цию */

float f(float);


main()

{

float result;


result = integral(0, 6, .1, f);

printf("%f", result);


return 0;

}


/* Реализация фун – ции, задающей интегрируемую фун – цию */

float f(float x)

{

/* Функция f(x) = x?(x - 5)? */

return pow(x, 3) * pow(x - 5, 2);

}


/* Реализация фун – ции, вычисляющей интеграл */

float integral(float a, float b, float e, float (*f)(float))

{

int n = 4, i; /* Начальное число разбиений 4 */

float s_ab = f(a) + f(b); /* Сумма значений фун – ции в a и b */

float h = (b – a) / n; /* Вычисляем шаг */

float s_even = 0, s_odd;

float s_res = 0, s_pres;


/* Сумма значений фун – ции в нечетных точках */

for (i = 2; i < n; i += 2) {

s_even += f(a + i * h);

}

do {

s_odd = 0;

s_pres = s_res;

/* Сумма значений фун – ции в четных точках */

for (i = 1; i < n; i += 2) {

s_odd += f(a + i * h);

}

/* Подсчет результата */

s_res = h / 3 * (s_ab + 2 * s_even + 4 * s_odd);

/* Избегаем деления на ноль */

if (s_res == 0) s_res = e;

s_even += s_odd;

n *= 2;

h /= 2;

} while (fabs((s_pres - s_res) / s_res) > e);/* Выполнять до тех пор, пока результат не будет удовлетворять допустимой ошибке */


return fabs(s_res); /* Возвращаем результат */

}


  1. Ручной счет


Таблица константных значений для n = 8

Имя переменной

Значение

a

0

b

6

e

.1

s_ab

216

h

.75


Подсчет s_even

i

a + i * h

f(a + i * h)

s_even

2

1.5

41.34375

41.34375

4

3

108

149.34375

6

4.5

22.78125

172.125


Подсчет s_odd

i

a + i * h

f(a + i * h)

s_odd

1

.75

7.62012

7.62012

3

2.25

86.14158

93.7617

5

3.75

82.3973

176.159

7

5.25

9.044

185.203


Подсчет s_res

 f(x) dx

s_res = h / 3 * (s_ab + 2 * s_even + 4 * s_odd)

Абсолютная ошибка

324

325.266

1.266









1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
Была у психотерапевта. Посоветовал на ночь оставлять все проблемы за дверью. Что делать? Мой ни в какую не соглашается ночевать на улице!
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

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

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2017
Рейтинг@Mail.ru