Міністерство освіти і науки України
Вінницький національний технічний університет
Інститут автоматики, електроніки та комп’ютерних систем управління
Факультет АКСУ
Кафедра АІВТ
Курсова робота
з дисципліни
«Моделювання на ЕОМ»
Дослідження методів чисельного інтегрування
Перевірив : к.т.н., доцент _________ “___” _______2008 Кабачій В.В.
Виконав: ст. Гр. 1АМ-06 _________ “___” _______2008 Ігнатенко В.О.
Вінниця 2008
Зміст
Анотація 3
Вступ 4
1 Теоретичні відомості 6
2 Алгоритм Методу 7
3 Загальні відомості та функціональне призначення 11
4 Аналіз результатів 13
5 Інструкція користувачеві 14
Висновки 15
Література 16
Додаток А. Блок-схема програми 17
Додаток Б. Лістинг програми 18
Анотація
В даній курсовій роботі проведено дослідження методу чисельного інтегрування. Дослідження проводилося за допомогою Методу Гауса, при обчисленні інтегралу третього, четвертого та п’ятого порядків.
Дана програма розв’язує інтеграл методом Гауса, знаходить похибку і виводить результати порівнюючи їх із розв’язком, отриманим у прикладній програмі MathCAD 2001 Professional.
Вступ
Використання сучасних персональних комп’ютерів охоплює майже всі сфери людської діяльності і поступово підпорядковує собі всі інформаційні технології. В останній час головний аспект застосування комп’ютерів зсувається з галузей, де комп’ютер був самостійним інструментом – обчислення при наукових дослідженнях та проектуванні, зберігання та обробка статистичної інформації тощо, у бік галузей, де комп’ютер розглядається як складова частина більш масштабних систем – систем автоматичного, та автоматизованого управління, інформаційно – вимірювальних систем, систем мультимедії тощо. Сьогодні практично всі фахівці у цих галузях повинні вільно володіти комп’ютерними технологіями.
За декілька десятиліть світової комп’ютерної індустрії було створено безліч різноманітних мов програмування, проте переважна їх більшість або не дуже вдало копійована, або створена для деякого вузького спеціалізованого застосування. Внаслідок своєї еволюції отримали визнання невелика кількість мов програмування, серед яких і добре відома мова Сі. Створюються системи програмування С, до складу якої входять бібліотеки, з широким набором різноманітних функцій та інтегровані середовища розробки (IDE – Integrated Development Environment).
Обчислювальна математика заснована на чисельних методах, придатних до застосування при розрахунках на ЕОМ. Сучасні ЕОМ дозволили дослідникам значно підвищити ефективність математичного моделювання складних задач науки і техніки. На сьогодні методи дослідження проникають практично в усі сфери людської діяльності, а математичні моделі стають засобами пізнання.
Значення математичних моделей неперервно зростає у зв'язку з тенденціями до оптимізації технічних пристроїв і технологічних схем планування експерименту. Реалізація моделей на ЕОМ здійснюється за допомогою різноманітних методів обчислювальної математики, яка неперервно вдосконалюється [3].
1 Теоретичні відомості
Визначений інтеграл – це площа, обмежена графіком функції y = f(x), віссю Ох і прямими f(a) і f(b). Якщо він перетинає вісь Ох, то інтеграл чисельно рівний алгебраїчній сумі площ, що знаходяться по кожну сторону вісі Ох.
Обчислення визначених інтегралів має дуже широке застосування. Так наприклад їх обрахунок необхідний в задачах, що пов’язані з оцінкою якості, аналізом інформаційно-вимірювальної техніки, радіоелектроніки.
В основу інтегрування покладено наближене обчислення площини під кривою, яка описується підінтегральною функцією інтеграла (1.1):
I =f(x)dx (1.1)
Для обчислення визначеного інтеграла від функції f(х) в тому випадку, коли можна знайти відповідний невизначений інтеграл F(x), є формула Ньютона-Лейбніца:
I =f(x)dx = F(x) = F(b) – F(a), (1.2)
Загальний підхід до розв’язування цієї задачі такий : визначений інтеграл I являє собою площину, обмежену кривою f(х), віссю x та прямими x = a, x =b, відрізок від a до b розбивають на множину менших відрізків, знаходять наближено площу кожної площини Si, яку отримують за таким розбиванням, значення інтеграла I знаходять як суму площ площин Sі, тобто
I = Si.
При цьому використовують два способи розбивання початкового відрізка на менші:
а) розбивання відрізка проводиться раніше, до того ж завжди відрізок вибирають рівними (метод прямокутників, трапецій, Сімпсона);
б) місцезнаходження та довжина відрізків визначаються аналізом, до того ж спочатку ставиться за мету досягти найбільшої точності з заданим числом відрізків, а потім відповідно з цим визначають їхні межі (методи Гаусса, Ньютона - Котеса, Чебишева) [6].
2 Алгоритм Методу
Формула Гаусса називається формулою найвищої алгебраїчної точності. Для формули розрахунку найвища точність може бути досягнута для поліномів степеня (2n-1), які визначаються 2n постійними ti і Ai (і=1,2,...,n).
Суть методу полягає у визначенні коефіцієнтів Ai і абсцис точок ti. Для знаходження цих постійних розглянемо виконання формули розрахунку для функцій вигляду (2.1):
f(t)=tk, k=0,1,…,2n-1. (2.1)
Враховуючи (2.2)
tkdt=, (2.2)
отримаємо систему рівнянь (2.3) [4] :
Ai=2;
Aiti=0;
Aiti2=1; (2.3)
Aiti2n-2=; Aiti2n-1=0;
Ця система нелінійна, і її звичайне розв'язання пов'язане із значними обчислювальними труднощами. Але якщо використовувати систему для поліномів вигляду (2.4):
f(t)=tkPn(t), k = 0,1,…,n-1, (2.4)
де Pn(t) - поліном Лежандра, тоді її можна звести до лінійної відносно коефіцієнтів Ai з заданими точками ti. Оскільки степені поліномів в співвідношенні не перевищують 2n-1, повинна виконуватися система і дана формула приймає вигляд (2.5) :
tkPn(t)dt=AitikPn(ti) (2.5)
В результаті властивості ортогональності ліва частина виразу дорівнює 0, тоді формула буде (2.6) : AitikPn(ti)=0, (2.6) що завжди забезпечується при будь-яких значеннях Ai в точках ti, які відповідають кореням відповідних поліномів Лежандра.
Підставляючи ці значення ti в систему і враховуючи перші n рівнянь, можна визначити коефіцієнти Ai.
Формула розрахунку, де ti - нулі полінома Лагранжа Pn(t), а Ai, i=1,2,...,n визначаються із системи, називається формулою Гаусса.
Значення Ai, ti для різних n наведені в довідниках.
Для довільного Інтервалу (а,b) формула для методу Гаусса приймає вигляд (2.7) :
I=Aif(xi), (2.7)
де xi обчислюється за формулою (2.8) :
xi=+ti. (2.8)
Оцінка похибки формули Гаусса з n вузлами визначається із співвідношення (2.9) :
(2.9)
де M2n- максимальне значення 2n похідної на ділянці (а,b). Враховуючи наведені вище формули розробимо алгоритм методу (рис 1) [4].
Рисунок 1 - Алгоритм методу Гауса
3 Загальні відомості та функціональні призначення
Дана програма обчислює інтеграл виду
I=,
методом Гауса третього, четвертого та п’ятого порядків. При зменшенні кроку інтегрування похибка обчислювань зменшиться.
Програма досить зручна та проста у користуванні. Результати обчислень виводяться на екран монітора разом із розв’язком, отриманим в математичному пакеті MathCAD 2001 Professional та похибкою обчислень .
Програма призначена для обчислення тільки одного інтегралу, що значно зменшує сферу її використання. Але змінивши програмний код можна досягти обчислення і кількох інтегралів.
Дана програма досить швидко проводить обрахунок і виводить відповідь безпосередньо на екран монітору.
Програма складена на Borland C++ 5.02 і для обчислення інтегралу методом Гауса третього, четвертого та п’ятого порядків потребує такі наступні системні параметри:
- Процесор типу Pentium-2;
-256 Мb ОЗУ;
-Операційні системи MS-Windows 98/95/ХР
-Video пам’ять 32 Мб.
Вхідними даними для програми є:
а) Межі інтегруваня: a = 0, b = 1;
б) Крок інтегрування: h = 0,1; 0,2; 0,5;
в) Підінтегральна функція :
f(x) = ;
Вихідними результатами є:
Наближене значення інтегралу отримане за допомогою Mat-hcad2001;
Результат інтегралу
I=
на проміжку [0;1]
Відносна похибка при обрахунках .
Результат виконання програми рисунок 2 буде мати такий вигляд:
Рисунок 2 – Результат виконання програми
Розв’яжемо задачу в пакеті MathCAD 2001 Professional:
Значення інтегралу І=2,680695
4 Аналіз результатів
Для початку аналізу запустимо програму. Послідовно задаємо крок обчислень: 0.1; 0.2; 0.5. Отримані результати порівняємо з розвязком 2,6806954 отриманим за допомогою пакету MathCAD 2001 Professional. Результати запишемо в таблицю:
Таблиця 1
Порядок, похибка | Крок обрахунку | Значення MathCAD | ||
0,1 | 0,2 | 0,5 | ||
Значення інтегралу 3-го порядку | 2,7305584726 | 2,6816429227 | 2,6864903393 | 2,680695457 |
Відносна похибка, % | 0,049862943 | 0,0353440217 | 0,2161708502 | |
Значення інтегралу 4-го порядку | 2,7303869675 | 2,6806954572 | 2,6806954723 | 2,680695457 |
Відносна похибка, % | 0,049691510 | 0,0000000030 | 0,0000005638 | |
Значення інтегралу 5-го порядку | 2,7303870222 | 2,6806955109 | 2,6806955116 | 2,680695457 |
Відносна похибка, % | 0,049691565 | 0,0000020051 | 0,0000020303 |
Неточності обрахунків пов’язані з недоліками наближених методів, із так званою методичною похибкою. Але незважаючи на ці недоліки формулу Гауса називають формулою найвищої алгебраїчної точності [4].
5 Інструкція користувачеві
Програма дуже зручна у користуванні. Запустивши програму буде запропоновано обрати крок обрахунку, з яким буде проводитись обчислення даного інтегралу При запускові користувачеву пропонується обрати крок обчислення даного інтегралу. В залежності від цього кроку буде обраховано значення та похибка інтегралу відповідного порядку.
Програма починає працювати після підключення модуля введення-виведення iostream та модуля math для підключення математичних функцій. Далі вводяться дані для інтегрування та відповідні функції.
Робота програми не вимагає великих системних ресурсів. Щоб забезпечити нормальне функціонування програми, необхідно впевнитись в існуванні стандартних бібліотек мови С ++.
Результати роботи програми виводяться безпосередньо на монітор, що не вимагає додаткових ресурсів пам’яті.
Висновок
В цій курсовій роботі було наведено дослідження вирішення визначеного інтегралу виду
I=,
методом Гауса третього, четвертого, п’ятого порядку.
Метод обрахунку даним методом є досить простим. Для його використання потрібно задати функцію, крок і межі інтегрування.
Отже при обрахунку даного інтегралу було отримані наступні результати:
2,73055; 2,68164; 2,68649 – для значення інтегралу 3-ого порядку кроком 0.1, 0.2, 0.3 відповідно;
2,73038; 2,6806954; 2,2606955 - для значення інтегралу 4-ого порядку кроком 0.1, 0.2, 0.3 відповідно;
2,73039; 2,680695511; 2,680695512 - для значення інтегралу 5-ого порядку кроком 0.1, 0.2, 0.3 відповідно;
Щоб впевнитись у вірності роботи програми для перевірки результатів обчислень, було використано математичний пакет MatchCAD 2001. Похибка обрахунку була оцінена як різниця між точним значенням, що отримане у Mathcard та тим, що отримане в результати роботи програми див (табл. 1).
Ця програма може допомогти тим, хто працює з веденням обрахунків, щоб покращити їх швидкість обробки та точність.
Література
1. Л.М. Круподьорова, А.М. Пєтух. Технологія програмування мовою Сі. - 183 с.
2. В.С. Проценко, П.Й. Чапенко, А.В.Ставровський. Техніка програмування мовою Сі. - 212 с.
3. В.М. Вержбицький , Основы численных методов, – М.: Высшая школа, 2002.- 136 с.
4. Р.Н. Кветний Методи комп’ютерних обчислень. Навчальний посібник.- Вінниця: ВДТУ, 2001.- 148 с.
5. В.М. Дубовий, Р.Н.Квєтний. Програмування комп’ютеризованих систем управління і автоматики. - В.: ВДТУ, 1997.- 208 c.
6. Н.В. Богомолов. Практические занятия по матиматике.- Киев: Вища школа, 1979.- 472 с.
7. В.Т.Маликов, Р.Н.Кветный. Вычислительные методы и применение ЭВМ. – К.: Вища школа, 1989.- 213 с.
Додаток А
Блок-схема програми
Додаток Б
Лістинг
#include <іоstream.h>
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
double ti[4][6]={
{-0.677459667,0.0,0.677459667},{-0.86113631,-0.33998104,0.33998104,0.86113631}, // 4 порядку
{0},
{-0.93246951,-0.66120939,-0.238619119,0.238619119,0.66120939,0.93246951 }
};
double ai[4][6]={
{(double)5/9,(double)8/9,(double)5/9},
{0.34785484,0.65214516,0.65214516,0.34785484},
{0},
{0.17132450,0.36076158,0.46791394,0.46791394,0.36076158,0.17132450}
};
double real=(2.68069545714219);
double f (double x)
{
return exp(-2*x*x+1.5);
}
double gaus(double a, double b, double h, int por)
{
int i;
double sum=0,sum1,aa,bb,x,xi;
for (x=a; x<b; x+=h)
{
aa=x; bb=x+h;
sum1=0;
for (i=0; i<por; i++)
{
xi=(aa+bb)/2+(bb-aa)*ti[por-3][i]/2;
sum1+=ai[por-3][i]*f(xi);
}
sum1*=(bb-aa)/2;
sum+=sum1;
}
return sum;
}
void compare(double _real,double _given,double h,double por,char *method)
{
double ebs;
ebs=fabs(_real-_given)/_real*100;
printf("Result recieved by method %s with step %f\n",method,por);
printf("\tI=%.10f\n",_given);
printf("\tEbs=%.10f(%%)\n",ebs);
printf("\n\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n\n");
}
void main()
{
double I;
double h;
double a=0,b=1;
printf("\t Nablugene znachennja Math Cad 2001 = 2.68069545714219\n\n");
printf("\tEnter step: ");
scanf("%lf",&h);
I=gaus(a,b,h,3);
compare(real,I,h,3,"Gaus");
I=gaus(a,b,h,4);
compare(real,I,h,4,"Gaus");
I=gaus(a,b,h,6);
compare(real,I,h,5,"Gaus");
getch ();
}