Название: Дослідження чисельних методів інтегрування
Вид работы: курсовая работа
Рубрика: Информатика и программирование
Размер файла: 64.06 Kb
Скачать файл: referat.me-139881.docx
Краткое описание работы: Дослідження методів чисельного інтегрування Чебишева та Трапеції, порівняння їх точності. Способи розробки програми на компіляторі Turbo C++, яка знаходить чисельне значення вказаного інтегралу. Обґрунтування вибору інструментальних засобів програми.
Дослідження чисельних методів інтегрування
Зміст
Вступ
1. Теоретичні відомості
2. Алгоритми методів
3. Опис програми
3.1 Вибір інструментальних засобів
3.2 Вхідні та вихідні дані
3.3 Структура програми
3.4 Інструкція користувачеві
4. Аналіз результатів розрахунку
Висновки
Література
Додатки
Вступ
Сучасний світ неможливо уявити без використання комп’ютерних технологій. Зараз комп’ютер використовується у багатьох сферах людського життя, але на початку свого розвитку ЕОМ створювалась для складних інженерних розрахунків. Зараз обчислення залишаються одним із основних видів застосування ЕОМ. Хоча комп’ютер дуже швидко виконує прості арифметичні дії, без спеціальних програм він не в змозі проводити складні обчислення. Тому постає задача алгоритмізувати поставлене завдання, тобто перевести його в зрозумілу для ЕОМ форму.
В багатьох задачах, що пов’язані з аналізом, ідентифікацією, оцінкою якості різних засобів та систем автоматики та управління, виникає необхідність обчислення певних інтегралів.
1. Теоретичні відомості
Визначений інтеграл – чисельно рівний площі, обмеженою частиною графіка функції y = f(x), віссю Ох і ординатами f(a) і f(b). Якщо крива перетинає вісь Ох один або декілька разів всередині інтервалу, то інтеграл чисельно рівний алгебраїчній сумі площ, що знаходяться по кожну сторону вісі Ох[6].
Чисельне інтегрування - являє собою стійкий процес і в протиставлення чисельному диференціюванню зменшує дію похибок у початкових даних на кінцевий результат. В основу чисельного інтегрування покладено наближене обчислення площини під кривою, яка описується підінтегральною функцією інтеграла:
Визначений інтеграл - являє собою площину, обмежену кривою f(x), віссю Х та прямими x=a; x=b[6].
Класифікація методів рішення поставленої задачі
Інженеру часто приходиться обчислювати визначений інтеграл чисельними методами. Це буває у тих випадках, коли або не вдається виразити інтеграл у замкненій формі, або вона настільки складна, що простіше скористатися чисельним інтегруванням.
Отже основною задачею є обчислення інтегралу виду:
де a і b - нижня та верхня межа інтегрування; f(x) - неперервна функція, відносно якої шукають інтеграл, на відрізку [a,b].
Суть більшості методів обчислення визначених інтегралів заключається в заміні підінтегральної функції f(x) апроксимуючою функцією f(х), для якої можна легко записати первісну в елементарних функціях, тобто
де S - наближене значення інтеграла; R - похибка обчислення інтеграла[2].
Методи чисельного інтегрування, що найбільш часто використовуються на практиці можна згрупувати в залежності від способу апроксимації підінтегральної функції. Дамо коротку характеристику груп найбільш розповсюджених методів.
Методи Ньютона-Котеса засновані на поліноміальній апроксимації підінтегральної функції. Методи цього класу відрізняються один від одного степенем використовуваного полінома, від якого залежить кількість вузлів, де необхідно обчислити функцію f(x). Алгоритми методів прості і легко піддаються програмній реалізації[1].
Сплайнові методи базуються на апроксимації підінтегральної функції сплайнами, що являють собою кусочний поліном. Методи розрізняють по типу вибраних сплайнів. Такі методи є сенс використовувати в задачах, де алгоритми сплайнової апроксимації застосовуються для обробки даних.
В методах найвищої алгебраїчної точності (методи Гаусса-Кристоффеля та інші) використовують не рівновіддалені вузли, розташовані по алгоритму, що забезпечує мінімальну похибку інтегрування для найбільш складних функцій при заданій кількості вузлів. Методи розрізняються способами вибору вузлів і широко використовуються для інтегрування, в тому числі вони можуть бути застосовані і для невласних інтегралів[3].
В методах Монте-Карло вузли вибираються за допомогою датчика випадкових чисел, відповідь носить ймовірний характер. Методи виявляються ефективними при обчисленні великої кратності.
2. Алгоритми методів
Для обчислення інтегралу за формулою Сімпсона потрібно спочатку розбити проміжок інтегрування x є (a,b) на рівні інтервали величиною h (крок інтегрування), потім знаходять вузли інтерполяції xi за формулою
xi=xi-1+h або xi=x0+ih=a+ih,
після чого підставляють отримані значення у формулу (3). В кінці оцінюють похибку. У додатку А приведено алгоритм методу Сімпсона.
Для обчислення значення інтегралу методом Чебишева обирають порядок методу n і знаходять значення ti. Після цього розбивають інтервал інтегрування на k проміжків і знаходять значення інтегралу для кожного проміжку (j=1,…,k), після чого сумують отримані значення
|
|
Значення абсцис xi всередині кожного інтервалу знаходять за формулою
xi=(aj+1+aj)/2+ti(aj+1-aj)/2,
де aj=a+ih, a0=a, ak=b.
Ij знаходять за формулою (1.5). В кінці оцінюють похибку. Алгоритм методу Чебишева приведено у додатку А.
3. Опис програми
3.1 Вибір інструментальних засобів
Для написання програми, яка обчислює інтеграли заданими методами, було обрано компілятор Тurbo C++. Даний компілятор був обраний тому, що мова програмування C++ дуже проста і в той же час сам компілятор являється потужною сучасною системою програмування. Найважливішим аргументом для вибору даного компілятора, є тип дійсних чисел extended, який має дуже високу точність (до 19 цифри), якої немає в жодному іншому широковживаному компіляторі. Так як різниця між деякими числами, отриманими в результаті роботи програми, дуже мала і іноді помітна починаючи з дев’ятого знаку, то стає очевидним що потрібна точність саме такого порядку.
3.2 Вхідні та вихідні дані
Для розробленої програми вхідними даними є межі інтегрування a та b, а також множники біля змінної інтегрування x, c та d. Всі дані мають тип extended.
Вихідними даними являється чисельне значення інтегралу, обчислене методами Трапеції та Чебишева, причому кожним методом інтеграл обчислюється з 3 кроками. Також вихідними даними являються похибки, обчислені для кожного знайденого значення.
3.3 Структура програми
Програма, написана для вирішення поставленої задачі, містить кілька підпрограм. Спочатку програма виводить загальні відомості про своє призначення, потім пропонує змінити деякі параметри, після чого виконує обчислення інтегралу згаданими вище методами з кроками 0.1, 0.2 та 0.5. Підінтегральна функція для зручності міститься у функції f. Для обчислення інтегралу методом Сімпсона використовується функція Simpson, що приймає в якості параметрів межі інтегрування та крок обчислення. Для обчислення інтегралу методом Чебишева використовується дві функції: Chebushev та difChebushev. Функція Chebushev викликається безпосередньо з основної програми. Вона ділить межі інтегрування на проміжки, за величиною рівні кроку h, викликає функцію difChebushev для обчислення інтегралу на кожному проміжку, після чого сумує отримані значення, вираховуючи значення інтегралу. Потім основна програма виводить отримані значення на монітор, після чого для кожного значення вираховує похибку і виводить її на монітор.
Блок-схему програми наведено в додатку Б.
3.4 Інструкція користувачеві
Для запуску програми необхідно запустити на виконання файл program.exe.
Розроблена програма інтуїтивно зрозуміла користувачеві. Перша дія, яку потрібно виконати користувачеві – проглянути параметрі та при необхідності в момент, коли програма запропонує змінити деякі параметри, натиснути клавішу ‘Y’ та ввести потрібні значення параметрів. Після цього програма виводить на монітор обчислені значення інтегралу. Користувачеві потрібно лише використати ці значення в своїх цілях. В кінці програма пропонує або вихід, або перезавантаження для повторного розрахунку. Якщо користувачеві потрібно обчислити ще один інтеграл, необхідно натиснути клавішу ‘R’.
4. Аналіз результатів розрахунку
Як видно з похибок програма дає досить точні результати обчислень. Отримані дані підтверджують, що обчислення методом Чебишева дають результат, який за точністю на кілька порядків перевищує точність методу Трапеції. Значення інтегралу, обчисленого за допомогою програми Mathcad, рівне – 2,681.
Нижче наведено результат роботи програми.
Висновки
В ході виконання даної курсової роботи було розглянуто методи чисельного інтегрування, а саме: Чебишева та Трапеції. Було досліджено вказані методи інтегрування та порівняно їх точності, розроблено програму на компіляторі Turbo C++, яка знаходить чисельне значення вказаного інтегралу. Таким чином були набуті практичні навички програмування задач, які ставить курс «Обчислювальні методи та застосування ЕОМ».
Література
1. Квєтний Р.Н. Методи Комп’ютерних обчислень. - Навчальний посібник. - Вінниця: ВДТУ, 2001. - с. 92
2. Волков Е. А. Численные методы. - М.: Наука, 1982. - с. 102.
3. Самарский А.А., Гулин А.В. Численные методы. - М: Наука, 1989. - с. 161.
4. Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. - Численные методы. - М: Наука, 1987. - с. 83
Додатки
Додаток А
Алгоритми методів
Алгоритм методу Сімпсона
Алгоритм методу Чебишева
Додаток Б
Блок-схема програми
Додаток В
Лістинг пргорами
{$N+,E+}
program integral;
uses CRT, graph;
const h1=0.1; h2=0.2; h5=0.5;
var
a, b, c, d, sharp: extended;
ch: char;
res: array [1..2,1..3] of extended;
delta: array [1..2,1..3] of extended;
i, j: integer;
label
lbl1;
{------------------------------------------------}
function f (x: extended): extended;
begin
f:=c*x/2-d/(exp(x)+exp(-x)); {sec(d*x)=d/(exp(x)+exp(-x))}
end;
{------------------------------------------------}
function Simpson (a, b, h: extended): extended;
var
I, x: extended;
j: integer;
begin
I:=0; x:=a+h; j:=0;
I:=f(a)+f(b);
while (x<b-0.000001) do
begin
j:=j+1;
if ((j mod 2) = 0) then
I:=I+2*f(x)
else
I:=I+4*f(x);
x:=x+h
end;
Simpson:=I*h/3;
end;
{------------------------------------------------}
function difChebushev (a, b: extended): extended;
const
t4:array [1..4] of extended = (-0.794654, -0.187592, 0.187592, 0.794654);
n=4;
var
x, I: extended;
j: integer;
begin
I:=0;
for j:=1 to 4 do
begin
x:=(a+b)/2+t4[j]*(b-a)/2;
I:=I+f(x);
end;
difChebushev:=I*(b-a)/n;
end;
{------------------------------------------------}
function Chebushev (a, b, h: extended): extended;
var
I, x: extended;
j: integer;
begin
j:=0; I:=0; x:=a;
while (x<b-0.000001) do
begin
I:=I+difChebushev(x,x+h);
x:=x+h;
j:=j+1;
end;
Chebushev:=I
end;
{------------------------------------------------}
BEGIN
lbl1:
clrscr;
c:=2.1; d:=6;
a:=0; b:=1;
textmode (3);
textcolor(15);
writeln ('Програма обчислюэ iнтеграл функцii cx/2-sec(dx) в межах вiд a до b двома');
writeln ('методами: Сiмпсона та Чебишева IV порядку');
writeln ('Поточнi значення параметрiв:');
writeln ('a=', a:2:6);
writeln ('b=', b:2:6);
writeln ('c=', c:2:6);
writeln ('d=', d:2:6);
writeln ('Ви хочете змiнити параметри a та b? (y - так, iнша клавiша - нi)');
ch:=readkey;
if ((ch='y') or (ch='Y')) then
begin
write ('a=');
readln (a);
write ('b=');
readln (b);
end;
writeln ('Ви хочете змiнити параметри c та d? (y - так, iнша клавiша - нi)');
ch:=readkey;
if ((ch='y') or (ch='Y')) then
begin
write ('c=');
readln (c);
write ('d=');
readln (d);
end;
clrscr;
writeln ('Пiдiнтегральна функцiя: ', c:2:6, 'x/2-sec(', d:2:6, 'x)');
writeln ('Межi iнтегрування - вiд ', a:2:6, ' do ', b:2:6);
writeln ('Iнтеграл обчислюэться методами Сiмпсона та Чебишева IV порядку з 3 кроками: ');
writeln (h1:2:6, ', ', h2:2:6, ' та ', h5:2:6);
writeln;
write ('Виконуються обчислення.');
res[2,1]:=Chebushev(a, b, h1);
write ('.........');
res[2,2]:=Chebushev(a, b, h2);
write ('.........');
res[2,3]:=Chebushev(a, b, h5);
write ('.........');
res[1,1]:=Simpson(a, b, h1);
write ('.........');
res[1,2]:=Simpson(a, b, h2);
write ('.........');
res[1,3]:=Simpson(a, b, h5);
writeln ('.........');
gotoxy (wherex, wherey-1);
writeln ('Нижче виведено результати обчислень двома методами з 3 кроками ');
writeln;
write ('Крок:');
gotoxy (13, wherey);
write ('h=', h5:2:6);
gotoxy (35, wherey);
write ('h=', h2:2:6);
gotoxy (57, wherey);
writeln ('h=', h1:2:6);
writeln ('Метод');
write ('Сiмпсона:');
gotoxy (13, wherey);
write ('I=', res[1][3]:5:14);
gotoxy (35, wherey);
write ('I=', res[1][2]:5:14);
gotoxy (57, wherey);
writeln ('I=', res[1][1]:5:14);
write ('Чебишева:');
gotoxy (13, wherey);
write ('I=', res[2][3]:5:14);
gotoxy (35, wherey);
write ('I=', res[2][2]:5:14);
gotoxy (57, wherey);
writeln ('I=', res[2][1]:5:14);
write ('Обчислення похибки.....');
if (a=0) and (b=1) and (c=2.1) and (d=6) then
sharp:=-2.07230756449615
else
sharp:=1.1*Chebushev(a, b, 0.0001);
for i:=1 to 2 do
for j:=1 to 3 do
begin
delta[i][j]:=abs(sharp-res[i][j]);
write('....');
end;
writeln;
gotoxy (wherex, wherey-1);
writeln(' ');
writeln ('Нижче виведено похибки обчислень');
writeln;
write ('Крок:');
gotoxy (13, wherey);
write ('h=', h5:2:6);
gotoxy (35, wherey);
write ('h=', h2:2:6);
gotoxy (57, wherey);
writeln ('h=', h1:2:6);
writeln ('Метод');
write ('Сiмпсона:');
gotoxy (13, wherey);
write ('I=', delta[1][3]:5:14);
gotoxy (35, wherey);
write ('I=', delta[1][2]:5:14);
gotoxy (57, wherey);
writeln ('I=', delta[1][1]:5:14);
write ('Чебишева:');
gotoxy (13, wherey);
write ('I=', delta[2][3]:5:14);
gotoxy (35, wherey);
write ('I=', delta[2][2]:5:14);
gotoxy (57, wherey);
writeln ('I=', delta[2][1]:5:14);
writeln;
writeln ('Для перезавантаження програми натиснiть клавiшу R');
writeln ('Для виходу натиснiть будь-яку клавiшу');
ch:=readkey;
if ch='r' then goto lbl1;
END.
Похожие работы
-
Програма для тестування знань з дисципліни "Програмування на мові С"
Розробка програми, яка б дозволяла протестувати знання з дисципліни "Програмування на мові С", виставити оцінку. Опис та обґрунтування методу організації вхідних та вихідних даних, вибору складу технічних та програмних засобів. Проведення лістингу.
-
Дослідження методів чисельного інтегрування
Аналіз методу чисельного інтегрування, з використанням методу Гауса при обчисленні інтегралу третього, четвертого та п’ятого порядків. Алгоритм та лістинг програми, що розв’язує інтеграл методом Гауса, знаходить похибку, виводить і порівнює результати.
-
Дослідження методів чисельного інтегрування
Характеристика основних методів чисельного інтегрування та розв’язання інтегралу методом Чебишева третього, четвертого та п’ятого порядків. Оцінка похибок та порівняння їх з точним обчисленнями отриманими в математичному пакеті Mathcad 2001 Professional.
-
Розрахунок інтегралів за допомогою методів Гауса та Чебишева
Дослідження застосування різницевого методу для розв’язання крайової задачі. Дослідження проводиться на прикладі заданого диференційного рівняння. Дається опис методу та задачі в цілому. Застосування при обчисленні формули Чебишева і формули Гаусса.
-
Розв’язання нелінійних диференційних рівнянь методом січних і половинного ділення
Графічне зображення методу половинного ділення. Вибір методу інструментальних засобів вирішення задач. Розробка логічної частини програми для розв’язання нелінійного рівняння методами половинного ділення та січних. Особливість кодування на мові Паскаль.
-
Вибір методів та засобів технічного діагностування складних систем озброєння
Методика обґрунтування раціональної сукупності методів і засобів технічного діагностування складних систем озброєння, що задовольняє задані вимоги до систем технічного діагностування в цілому. Пошук дефекту при мінімальних витратах на реалізацію методів.
-
Чисельне інтегрування та наближення функцій поліномами вищого порядку
Чисельне інтегрування, формула Сімпсона, значення інтегралу від функцій та формули трапецій. Знаходження коренів рівняння методом Ньютона. Наближення функцій поліномами вищого порядку. Метод Ейлера та його модифікації. Визначення похибок розрахунків.
-
Програма розв’язання звичайних диференціальних рівнянь однокроковими методами
Стандартний спосіб розв’язання задачі Коші для звичайного диференціального рівняння першого порядку чисельними однокроковими методами. Геометричний зміст методу Ейлера. Побудова графіку інтегральної кривої. Особливість оцінки похибки за методом Рунге.
-
Проектування блоку обробки сигналів
Розробка фільтру для обробки цифрових сигналів. Блок обробки реалізується на цифрових мікросхемах середньої ступені інтеграції. Аналіз вхідного сигналу, ідеального сигналу та шуму. Обґрунтування вибору фільтрів та алгоритму обробки вхідного сигналу.
-
Визначення площі між функціями інтегралом за методом трапеції на мові Pascal
Складання програми на мові Pascal розрахунку за методом трапецій площі між графіками функцій. Розрахунок за методом трапецій площі між графіками функцій. Алгоритм програми. Кількість відрізків, на які розбивається дільниця інтегрування. Межа інтегрування.