Xreferat.com » Рефераты по информатике и программированию » Дослідження методів інтерполяції

Дослідження методів інтерполяції

МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ

Вінницький національний технічний університет

Факультет автоматики і комп’ютерних систем управління

Кафедра автоматики та інформаційно-вимірювальної техніки


Дослідження методів інтерполяції

Пояснювальна записка

до курсової роботи з дисципліни "Моделювання на ЕОМ"

Завдання на курсову роботу


Виконав:

студент групи 2АВ-06 О. Г Кирста

Перевірив:

к.т.н., доц. В.В. Кабачій


Вінниця, 2009

Анотація


Кирста О.Г. Дослідження методів інтерполяції. Вінниця, ВНТУ. - 2006.

Українська мова, стор., іл.

В курсовій роботі на прикладі інтерполяції напруги вольтметра розглянуто методи інтерполяції: ітераційний та метод розподілених різниць. Методи алгоритмізовано і реалізовано на ЕОМ в середовищі мови програмування Turbo Pascal 7.0. Наводяться блок-схема і лістинг програми.

Зміст


Вступ

1. Короткі теоретичні відомості

1.1 Задача інтерполяції

1.2 Інтерполяційна формула Лагранжа

1.3 Метод розподілених різниць

2. Алгоритми методів

3. Алгоритмізація розв’язання задачі

3.1 Вхідні та вихідні дані

3.2 Структура програми

3.3 Розробка плану дослідження роботи програми

4. Розв’язання задачі в пакеті прикладних програм

5. Аналіз результатів моделювання

6. Інструкція користувачеві

Висновки

Література

Додатки


Вступ


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

З’являються задачі, які не можна розв’язати за допомогою класичної математики і отримати точний розв’язок, і взагалі досить часто про отримання точного розв’язку не доводиться говорити, оскільки отримати його при існуючих умовах просто неможливо. Тож ставляться задачі отримати приблизні розв’язки, але якомога близькі до точних. Тому в таких задачах використовуються різні наближені методи рішення тієї чи іншої задачі.

Чисельні методи направлені на вирішення задач, що виникають на практиці. Вирішення задачі чисельними методами зводиться до арифметичних та логічних операцій над числами, що вимагає застосування обчислювальної техніки. Умови і рішення задач найчастіше є наближеними, тобто мають похибки, причинами яких є невідповідність побудованої математичної моделі реальному об’єкту, похибки методів обчислень, похибки округлення тощо.

Обчислювальна техніка сьогодення є потужним засобом для фактичного виконання обчислень. Завдяки цьому в багатьох випадках стало можливим відмовитись від наближеного трактування прикладних задач і перейти до їх вирішення в точній постановці. Розумне використання сучасної обчислювальної техніки не можливе без вмілого застосування чисельних методів.

1. Короткі теоретичні відомості


1.1 Задача інтерполяції


Мета інтерполяції - побудова функції Дослідження методів інтерполяції, яка приймає в окремих точках Дослідження методів інтерполяції (вузли інтерполяції) значення,


Дослідження методів інтерполяції (1)


що збігається з раніше заданими значеннями в цих точках невідомої функції Дослідження методів інтерполяції. Геометрично це означає, що потрібно знайти криву Дослідження методів інтерполяції певного типу, яка проходить через систему точок Дослідження методів інтерполяції (рисунок 1).


Дослідження методів інтерполяції

Рисунок 1. Інтерполяція даних


В загальних випадках ця задача має нескінчену множину розв’язків чи зовсім не має розв’язку, але вона стає однозначною, якщо замість довільної функції Дослідження методів інтерполяції шукати поліном Дослідження методів інтерполяції ступеня не вище Дослідження методів інтерполяції, який задовольняє умову (1), тобто


Дослідження методів інтерполяції (2)


Інтерполяційну формулу Дослідження методів інтерполяції, як правило, використовують для наближеного обчислення значень даної функції Дослідження методів інтерполяції для Дослідження методів інтерполяції. Така операція зветься інтерполяцією. Треба відзначити, що розрізняють інтерполяцію в вузькому розумінні, коли Дослідження методів інтерполяції, та екстраполяцію, коли Дослідження методів інтерполяції знаходиться за межами інтервалу Дослідження методів інтерполяції, тобто Дослідження методів інтерполяції чи Дослідження методів інтерполяції. [1]


1.2 Інтерполяційна формула Лагранжа


Інтерполяція за Лагранжем вживається в загальному випадку для довільно розташованих вузлів.

Інтерполяційний поліном для методу Лагранжа представлений у вигляді:


Дослідження методів інтерполяції, (3)


де всі Дослідження методів інтерполяції (j=0,…, n) - поліноми ступеня n, коефіцієнти яких можна знайти з допомогою (n+1) рівняння: Дослідження методів інтерполяції.

Для полінома, який шукаємо, отримаємо:


Дослідження методів інтерполяції (4)


Формулу (1.8) називають інтерполяційний многочлен Лагранжа.

Треба відзначити дві головні властивості поліномів Лагранжа:


Дослідження методів інтерполяції (5) 2)


якщо Дослідження методів інтерполяції лінійно залежить від Дослідження методів інтерполяції, то слушний принцип суперпозиції: інтерполяційний поліном суми декількох функцій дорівнює сумі інтерполяційних поліномів доданків.

Похибка при інтерполяції за Лагранжем може бути оцінена таким чином:


Дослідження методів інтерполяції (6)

де Дослідження методів інтерполяції. (7)


1.3 Метод розподілених різниць


Інтерполяційні формули можна отримати, вживаючи визначення поділених різниць.

Так відношення


Дослідження методів інтерполяції (8)


називається розподіленою різницею першого порядку, а відношення


Дослідження методів інтерполяції (9)


розподіленою різницею другого порядку.

Розподілені різниці порядку n можна отримати з рекурентного співвідношення


Дослідження методів інтерполяції. (10)


Для інтерполяції можна використати інтерполяційну формулу Ньютона для нерівно віддалених значень аргументу: [1]


Дослідження методів інтерполяціїДослідження методів інтерполяції (11).


2. Алгоритми методів


Для інтерполяції методом розподілених різниць спочатку необхідно обчислити за формулою (8) розподілені різниці першого порядку, далі за формулою (9) - розподілені різниці 2 порядку, і так визначати розподілені різниці до порядку n-1, де n - кількість відомих значень функцій при відповідних відомих значеннях аргументу, використовуючи формулу (10). Відповідні обчислення просто реалізувати за допомогою циклу, в я кому значення розподілених різниць вищих порядків будуть обчислюватися за відомими значеннями аргументів та функцій і обчислених на попередньому кроці розподілених різниць нижчих порядків.

Після цього за формулою (11) здійснюється інтерполяція в необхідних точках.

При інтерполяції методом Лагранжа використовується формула (4). Спочатку за формулою (5) визначаються коефіцієнти Дослідження методів інтерполяції, які далі множаться на відповідні значення функції, і шуканий інтерполяційний поліном визначається як сума добутків коефіцієнтів Дослідження методів інтерполяції на відповідні значення функції.

3. Алгоритмізація розв’язання задачі


3.1 Вхідні та вихідні дані


Для розв’язання поставленої задачі потрібні певні вхідні данні, на основі яких будуть проводитись обчислення. Вхідними даними для інтерполяції є значення напруги при певних значеннях температури. Вони подаються у вигляді тарировочної таблиці 1.


Таблиця 1. Тарировочна таблиця для термопари

Дослідження методів інтерполяції

20 40 60 80 100 120

Дослідження методів інтерполяції

-0,67 -0,25 -0,17 0,61 1,06 1,52

Вихідними даними є значення напруги при температурах Дослідження методів інтерполяції.

Дані, які вводяться для обчислення зміни температури термопари мають тип real, тобто вони є даними дійсного типу. Всі вхідні та вихідні данні можна звести в таблицю.


Таблиця 2. Вхідні та вихідні данні

Назва змінної Ідентифікатор Тип
1

Значення Т,Дослідження методів інтерполяції

t [i] Real
2 Значення U, мВ u [i] Real
3

Результат U (75Дослідження методів інтерполяції), мВ

РР Real
4

Результат U (93Дослідження методів інтерполяції), мВ

ZZ Real

3.2 Структура програми


Программа використовує функції стандартних модулів Crt і Graph. Модуль Crt забезпечує роботу з клавіатурою та екраном в текстовому режимі, а модуль Graph забезпечує роботу з графікою. [2]

В розробленій програмі використовується текстове меню, тобто всі функції можуть використовуватись нескінченну кількість разів. Така властивість забезпечується завдяки використанню циклу в головній програмі, вихід з якого здійснюється лише при одній умові: натисненні послідовно клавіш. "Esc" та "Enter".

В програмі використовується три процедури: перша використовується для відображення на екрані тарировочної таблиці для термопари, а друга - для графічного представлення результатів інтерполяції, третя - для виведення на екран меню. Решта процедур та обчислень входять в склад основної програми.

В основній програмі проводиться обробка запитів користувача та інтерполяція напруги в точках у відповідності до заданого методу. Інтерфейсна частина реалізована у текстовому режимі та складається з виводу на екран запитів до користувача та обробки натиснутих клавіш. Виведення даних виконано окремо для кожного методу. Результати виводяться на екран графічно та в текстовій формі.


Дослідження методів інтерполяції

Рисунок 2. Логічна схема основної програми


3.3 Розробка плану дослідження роботи програми


Для впевненості роботи програми проведемо її тестування. Але тестування необхідно виконувати в два основних етапи: тестування головної програми, тобто достовірність роботи головного меню програми і самих пунктів меню, та правильність обчислень за заданими методами.

Перевіримо правильність роботи програми. Запускаємо програму. При запуску програми (ехе-файл чи з середовища Турбо Паскаль) з'являється головне меню програми (рисунок 2). Вибір необхідного пункту меню здійснюється натисканням відповідних цифрових клавіш на клавіатурі, вихід з програми - послідовно клавіш. "Esc" та "Enter".


Дослідження методів інтерполяції

Рисунок 3. Меню програми


Натискаємо клавішу "Esc", за нею - "Enter" - програма закривається.

Натискаємо клавішу "1" - програма видає результати інтерполяції напруги методом розподілених різниць в заданих точках.


Дослідження методів інтерполяції

Рисунок 4. Результати інтерполяції напруги методом розподілених різниць в заданих точках


Натискаємо клавішу "2" - програма видає результати інтерполяції напруги за методом Лагранжа в заданих точках.


Дослідження методів інтерполяції

Рисунок 5. Результати інтерполяції напруги за методом Лагранжа в заданих точках


Отже, програма розв’язує задачу інтерполяції в заданих точках. При цьому використовуються дані з таблиці 1.

Оскільки інтерполяційні поліноми повинні задовільняти умову (2), то результатами роботи програми при Дослідження методів інтерполяції, де Дослідження методів інтерполяції - задані таблично значення температури, повинні бути задані значення напруги Дослідження методів інтерполяції при відповідних значеннях температури. Для перевірки правильності роботи програми перевіримо, чи виконується дана умова. Замінюємо значення температури на Дослідження методів інтерполяції, і програма видає результати, показані на рисунку (6).


Дослідження методів інтерполяції

Рисунок 6. Результати інтерполяції напруги вольтметра при температурі Дослідження методів інтерполяції.


Отже, розроблена програма є практичною реалізацією поставленого завдання.

4. Розв’язання задачі в пакеті прикладних програм


Інтерполяцію напруги в точках Дослідження методів інтерполяції здійснимо в пакеті прикладних програм MathCAD, використавши процедуру linterp (vx,vy,x), де vx - вектор значень аргументів, vy - вектор відповідних значень функції, x - задані значення аргументу функції, для яких треба вирішити задачу інтерполяції. Результати можна представити як значення функції при заданих значеннях аргументу, так і у вигляді графіка.


Дослідження методів інтерполяції

Рисунок 7. Результати вирішення задачі в пакеті MathCAD


З рисунку видно, що результатом інтерполяції при Дослідження методів інтерполяції є значення напруги U=0,415 мВ, а при Дослідження методів інтерполяції - U=0,903 мВ.

5. Аналіз результатів моделювання


Визначимо похибки моделювання, прийнявши за точний розв’язок розв’язок в пакеті прикладних програм MathCAD.

Абсолютні похибки знайдемо за формулою


Дослідження методів інтерполяції, (12)


де Дослідження методів інтерполяції - абсолютна похибка, Дослідження методів інтерполяції - значення напруги, отримане в пакеті MathCAD, Дослідження методів інтерполяції - значення напруги, яке є результатом роботи програми.

Відносні похибки обчислимо за формулою


Дослідження методів інтерполяції. (13)


Абсолютна похибка при застосуванні методу розподілених різниць дорівнює при Дослідження методів інтерполяції


Дослідження методів інтерполяції, при Дослідження методів інтерполяції

Дослідження методів інтерполяції.


Відносна похибка для даного методу при Дослідження методів інтерполяції


Дослідження методів інтерполяції, а при Дослідження методів інтерполяції Дослідження методів інтерполяції.


Визначимо похибки, що виникають при застосуванні методу Лагранжа. При Дослідження методів інтерполяції


Дослідження методів інтерполяції, при Дослідження методів інтерполяції

Дослідження методів інтерполяції.


Відносна похибка для даного методу при Дослідження методів інтерполяції


Дослідження методів інтерполяції, а при Дослідження методів інтерполяції

Дослідження методів інтерполяції.


Результати роботи програми є однаковими, як при застосуванні методу Лагранжа, так і методу розподілених різниць, похибки обчислень є суттєвими.

6. Інструкція користувачеві


Програма розроблена з використанням мови програмування Turbo Pascal 7.0 та має назву Interpol.

Для запуску програми необхідно запустити файл Interpol. exe.

Після запуску програми з’являється меню, реалізоване в текстовому режимі, яке дозволяє вибрати необхідний метод інтерполяції.

Для вибору методу розподілених різниць необхідно натиснути клавішу "1", для вибору методу Лагранжа - клавішу "2".

Після вибору методу для графічного представлення результатів інтерполяції функції в точках необхідно натиснути клавішу "Enter".

Для виходу з програми необхідно послідовно натиснути клавіші "Esc" та "Enter".

Висновки


В даній курсовій роботі було вирішено задачу інтерполяції напруги вольтметра в точках Дослідження методів інтерполяції.

Розроблено програму, що розв’язує задачу методами розподілених різниць та Лагранжа. Задача інтерполяції вирішена в пакеті прикладних програм MathCAD, і визначено похибки моделювання.

Програма при вирішенні задачі допускає суттєві похибки, при цьому похибка обчислення напруги збільшується зі збільшенням значенням температури.

Розроблена програма є практичною реалізацією поставленого завдання. Програма наочно, а саме, в графічному та текстовому вигляді, дозволяє реалізувати процес інтерполяції.

Література


1. Квєтний Р.Н. Методи комп’ютерних обчислень. Навчальний посібник. -Вінниця: ВДТУ, 2001.

2. Фаронов В.В. Турбо Паскаль 7.0. Начальний курс. Учебное пособие. -М.: Издательство "ОМД Групп", 2003.

3. Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы. - М.: Наука, 1987.

4. Дубовий В. М, Квєтний Р.Н. Основи застосування ЕОМ у інженерній діяльності. -К.: ІСДО України, 1994.

5. Глинський Я.М., Анохін В. Є., Ряжська В.А. Паскаль. 3-є вид. - Львів: "Деол", 2002.

Додатки


Додаток А. Блок-схема основної програми


Дослідження методів інтерполяції

Додаток Б. Лістинг програми


Program interpol;

Uses Crt,Graph;

Const t1=75; t2=93;

T: array [0. .5] of integer = (20,40,60,80,100,120);

U: array [0. .5] of real = (-0.67,-0.25,-0.17,0.61,1.06,1.52);

Var

A1: array [0. .5] of real;

A2: array [0. .5] of real;

A3: array [0. .5] of real;

A4: array [0. .5] of real;

A5: array [0. .5] of real;

driver,mode, i,j: integer;

x,x1,dx,y,y1,dy0,dy1,dy2,dy3,dy4,dy5,dy6,dy7: integer;

e,PP,P1,P2,Z1,Z2,ZZ: real; Ch: char;

LL0,LL1,LL2,LL3,LL4,LL5: real;

{----------------------------------------------------------------------------------------}

{TABLUCIA}

{----------------------------------------------------------------------------------------}

procedure tabluca;

begin

TextBackGround (white);

ClrScr;

TextColor (red);

Writeln ('');

GoToXY (20,10);

Writeln ('TARUROVO4NA TABLUCIA DLIA TERMOPARU');

GoToXY (15,12);

Writeln ('------------------------------------------------');

GoToXY (15,13);

Writeln ('| T,C | 20 | 40 | 60 | 80 | 100 | 120 |');

GoToXY (15,14);

Writeln ('------------------------------------------------');

GoToXY (15,15);

Writeln ('|U,mV | - 0.67| - 0.25| - 0.17| 0.61 | 1.06 | 1.52|');

GoToXY (15,16);

Writeln ('------------------------------------------------');

end;

{----------------------------------------------------------------------------------------}

{-------------------------Graphik-----------------------------------------------------}

procedure graphik (driver,mode,x,x1,dx,y,y1,dy0,dy1,dy2,dy3,dy4,dy5,dy6,dy7: integer);

begin

driver: =detect;

initgraph (driver,mode,'C: progra~1TPbgi');

setviewport (20, 20,getmaxx-59,getmaxy-59,true);

clearviewport;

setbkcolor (white);

x: =20; y: =20;

dy0: = (getmaxy div 2 - (trunc (80*u [0])));

dy1: = (getmaxy div 2 - (trunc (80*u [1])));

dy2: = (getmaxy div 2 - (trunc (80*u [2])));

dy3: = (getmaxy div 2 - (trunc (80*PP)));

dy4: = (getmaxy div 2 - (trunc (80*u [3])));

dy5: = (getmaxy div 2 - (trunc (80*ZZ)));

dy6: = (getmaxy div 2 - (trunc (80*u [4])));

dy7: = (getmaxy div 2 - (trunc (80*u [5])));

dx: =t [1] -t [0] ;

setcolor (red);

line (4*dx,dy0,6*dx,dy1);

line (6*dx,dy1,8*dx,dy2);

line (8*dx,dy2,6*dx+t1,dy3);

line (6*dx+t1,dy3,10*dx,dy4);

line (10*dx,dy4,7*dx+t2,dy5);

line (7*dx+t2,dy5,12*dx,dy6);

line (12*dx,dy6,14*dx,dy7);

repeat

setcolor (green);

line (20,y,getmaxx,y);

line (x, 20,x,getmaxy);

x: =x+20; y: =y+20;

y1: =getmaxy div 2;

setcolor (blue);

outtextxy (2*20,y1,'0 20 40 60 80 100 120');

outtextxy (20,y1-60*2,' 1.5');

outtextxy (20,y1-40*2,' 1.0');

outtextxy (20,y1-20*2,' 0.5');

outtextxy (20,y1+60*2,'-1.5');

outtextxy (20,y1+40*2,'-1.0');

outtextxy (20,y1+20*2,'-0.5');

until keypressed;

if readkey=#0 then driver: =ord (readkey);

closegraph

end;

{---------------------ZASTAVKA--------------------------------------------------}

{---------------------------------------------------------------------------------------}

procedure zastavka;

begin

clrscr; GoToXY (14,2);

Writeln (' (C) CopyRight by Alexander Kyrsta, BHTY, 1AM-03');

GoToXY (29,5); Writeln ('PROGRAM INTERPOL, 2006');

Writeln; GoToXY (32,13); Writeln ('VUBERITb METOD'); Writeln;

GoToXY (24,15); Writeln ('1-METOD ROZPODILENUX RIZNUCb. ');

GoToXY (24,17); Writeln (' 2-METOD LAGRANJA. ');

GotoXY (24,25); Writeln (' Press Esc+Enter for exit ');

end;

{-------------------------------------------------------------------}

{------------------OSNOVNA PROGRAMA------------------------------------}

begin

zastavka;

repeat

ch: =readkey;

case ch of

{-------------METOD ROZPODILENUX RIZNUCb----------------------------}

#49: begin

{ROZPODILENI RIZNUCI 1 PORIADKY}

for i: =0 to 4 do begin

a1 [i]: = ( (u [i+1] -u [i]) / (t [i+1] -t [i]));

{writeln (a1 [i]: 3: 6); } end;

{ROZPODILENI RIZNUCI 2 PORIADKY}

for i: =0 to 3 do begin

a2 [i]: = ( (a1 [i+1] -a1 [i]) / (t [i+2] -t [i]));

{writeln (a2 [i]: 3: 7); } end;

{ROZPODILENI RIZNUCI 3 PORIADKY}

for i: =0 to 2 do begin

a3 [i]: = ( (a2 [i+1] -a2 [i]) / (t [i+3] -t [i]));

{writeln (a3 [i]: 3: 16); } end;

{ROZPODILENI RIZNUCI 4 PORIADKY}

for i: =0 to 1 do begin

a4 [i]: = ( (a3 [i+1] -a3 [i]) / (t [i+4] -t [i]));

{writeln (a4 [i]: 3: 16); } end;

{ROZPODILENI RIZNUCI 5 PORIADKY}

for i: =0 to 0 do begin

a5 [i]: = ( (a4 [i+1] -a4 [i]) / (t [i+5] -t [i]));

{writeln (a5 [i]: 3: 16); } end;

clrscr; tabluca;

P1: =u [0] +a1 [0] * (t1-t [0]) +a2 [0] * (t1-t [0]) * (t1-t [1]) +a3 [0] * (t1-t [0]) * (t1-t [1]) * (t1-t [2]);

P2: =a4 [0] * (t1-t [0]) * (t1-t [1]) * (t1-t [2]) * (t1-t [3]) +a5 [0] * (t1-t [0]) * (t1-t [1]) * (t1-t [2]) * (t1-t [3]) * (t1-t [4]);

PP: =P1+P2;

Z1: =u [0] +a1 [0] * (t2-t [0]) +a2 [0] * (t2-t [0]) * (t2-t [1]) +a3 [0] * (t2-t [0]) * (t2-t [1]) * (t2-t [2]);

Z2: =a4 [0] * (t2-t [0]) * (t2-t [1]) * (t2-t [2]) * (t2-t [3]) +a5 [0] * (t2-t [0]) * (t2-t [1]) * (t2-t [2]) * (t2-t [3]) * (t2-t [4]);

ZZ: =Z1+Z2;

writeln; GoToXY (25,17);

writeln ('Pru T=75C U=',PP: 2: 6,'mV');

Writeln; GoToXY (25,18);

writeln ('Pru T=93C U=',ZZ: 2: 6,'mV');

GoToXY (30,22);

writeln ('PRESS ENTER');

readln;

graphik (x,x1,dx,y,y1,dy0,dy1,dy2,dy3,dy4,dy5,dy6,dy7,driver,mode);

end;

{-------METOD LAGRANJA-------------------------------------------------------}

#50: begin

clrscr; tabluca;

e: =t1;

LL0: =u [0] * (e-40) * (e-60) * (e-80) * (e-100) * (e-120) / ( (20-40) * (20-60) * (20-80) * (20-100) * (20-120));

LL1: =u [1] * (e-20) * (e-60) * (e-80) * (e-100) * (e-120) / ( (40-20) * (40-60) * (40-80) * (40-100) * (40-120));

LL2: =u [2] * (e-20)

Похожие рефераты: