Смекни!
smekni.com

Інтерполювання функцій (стр. 8 из 9)

ІФН 2-га ІФГ 1-ша ІФГ 2-га ІФБ ІФС
0,00070% 0,00062% 0,00893% 1,04270% 0,00004%

Таблиця 5. Відносні похибки.

Бачимо, найкраще наближення до значення, одержаного за ІФН 1-ою, досягається інтерполяційною формулою Стірлінга.

Висновок. Як зазначалося вище (див. пункт 1.6), ІФС краще використовувати, для інтерполювання в середині таблиці, в чому ми і переконалися в даному прикладі, оскільки

знаходиться всередині таблиці.

1.8.2 Приклад 2

Знайти значення функції

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

Таблиця 6. Значення функції

xi f(xi)
0,698 2,22336
0,706 2,24382
0,714 2,26446
0,727 2,29841
0,736 2,32221
0,747 2,35164
0,760 2,38690
0,769 2,41162
0,782 2,44777

Розв’язання:

Оскільки в умові сказано використовувати лише розділені різниці другого і третього порядку, то формула Ньютона для нерівновіддалених вузлів (1. 7. 5) матиме вигляд:

,

де

.

Попередньо обчислимо необхідні значення розділених різниць (табл. 7).

Таблиця 7. Розділені різниці

і xi f(xi) f(xi,xi+1) f(xi,xi+1,xi+2)
0 0,698 2,22336 0,02046 0,00018
1 0,706 2,24382 0,02064 0,01331
2 0,714 2,26446 0,03395 -0,01015
3 0,727 2,29841 0,02380 0,00563
4 0,736 2,32221 0,02943 0,00583
5 0,747 2,35164 0,03526 -0,01054
6 0,760 2,38690 0,02472 0,01143
7 0,769 2,41162 0,03615
8 0,782 2,44777

Для визначення

приймаємо
. Для зручності складаємо допоміжну розрахункову таблицю (табл. 8), звідки отримаємо:

Таблиця 8. Розрахункова таблиця


1.9 Програмна реалізація

1.9.1 Призначення програми

Дану програму було розроблено з метою надання можливості за допомогою ЕОМ обчислювати наближені значення функції у випадку, коли функція задана таблично, використовуючи для цього інтерполяційні формули для рівновіддалених вузлів (1. 2. 7), (1. 2. 11), (1. 3. 4), (1. 3. 6), (1. 4. 3), (1. 5. 1) та інтерполяційну формулу (1. 7. 5)- для нерівновіддалених вузлів. Крім того, враховано можливість отримання загального вигляду відповідного інтерполяційного поліному наближення з метою подальшого використання при, наприклад, плануванні експериментів в біології, фізиці, хімії, географії, медицині та ін. галузях науки.

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

1.9.2 Основні процедури

Програмну реалізацію було здійснено в інтегрованому середовищі розробки Microsoft Visual Studio 2008 Team System у проекті типу Visual C# з використанням мови програмування С# на базі технології .NET Framework 2.0. Програма має назву «InterPolation».

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

DeltaCount – функція для побудови таблиці кінцевих різниць по заданим данним (вхідними даними є введені користувачем значення функції типу double);

Fact – функція для обчислення факторіалів, необхідних для застосування формул (5), (9), (12), (13), (15), (16). Вхідними даними для цієї функції слугує степінь полінома n, введеного користувачем, яка має тип integer;

EvalNewtonNerivni – функція, яка перевіряє, чи вузли інтерполяції є рівновіддаленими, чи нерівновіддаленим. У випадку нерівновіддалених вузлів обчислює наближене значення функції за формулою (20). Дана функція використовує вже написану функцію DeltaCount, для отримання необхідних для формули данних.

EvalFFNewton – функція, яка застосовує першу інтерполяційну формулу Ньютона згідно з введеними даними і використовуючи функцію DeltaCount та функцію Fact. Результатом її виконання буде наближене значення функції згідно формули (5) типу double;

FFNewton– функція, що виводить формулу (5) і обчислене згідно функції EvalFFNewton наближення функції;

EvalSFNewton - функція, яка застосовує другу інтерполяційну формулу Ньютона згідно з введеними даними і використовуючи функцію DeltaCount та функцію Fact. Результатом її виконання буде наближене значення функції згідно формули (9) типу double;

FFNewton – функція, що виводить формулу (9) і обчислене згідно функції EvalSFNewton наближення функції;

Аналогіно відповідно працють функції EvalFFGauss і FFGauss для першої формули Гауса, EvalSFGauss і SFGauss для другої формули Гауса, EvalFStirling і FStirling для формули Стірлінга та EvalFBessel і FBessel для формули Бесселя.

GetX0 – функція для визначення умовного нуля
відповідно до формул, які застосовуються, тобто тут також використовується функція DeltaCount;

PaintPlot – функція для побудови графіку. В даному випадку сам графік будується в електронній таблиці Excel, результат імпортується в С# і відбувається вивід у вікно програми;

WhereIsX – функція, яка визначає, де знаходиться х у таблиці кінцевих різниць (ближче до початку, кінця чи до середени) і відповідно до того як написано вище в теоретичній частині у випадку, коли користувач забуде обрати формулу для обчислень, сама обирає, яку формулу краще застосовувати;

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

1.9.3 Інструкція по використанню програми

Для запуску програми «InterPolation» потрібно відкрити папку Release і запустити InterPolation.ехе. В результаті з’явиться вікно програми (мал. 2).

Мал. 2. Інтерфейс основної форми програми

У полі «х» вводиться значення аргументу, для якого необхідно наближено обчислити значення функції, заданої відповідною таблицею. У полі «степінь многочлена» користувачеві необхідно ввести степінь многочленна для наближення функції. У поле «крок» потрібно ввести крок h, а в полі «Розміри таблиці» вводиться кількість даних фіксованих значень функції. Потім у відповідному віконці обирається формула, яка застосовується для наближення. Після цього натискаємо кнопку «Застосувати» і у вікні ще з’являється табличка для вводу хі, уі. Після заповнення таблиці потрібно натиснути кнопку «Інтерполяція» для того, щоб програма виконала необхідні обчислення і видала результат. Крім того, з правого боку є випадаючий список «Варіант», де користувач може обрати один із 30-ти варіантів вихідних даних, що містяться в [7], потім знову ж таки обрати степінь полінома, х, формули, які хоче застосовувати. В меню «Файл» користувач може обрати «Тестовий варіант». В результаті програма виведе всі результати обчислень згідно прикладу 1 (пункт 1.8.1) (мал. 3):

Мал. 3. Тестовий варіант

В меню файл користувач також може обрати «Зберегти». В результаті програма збереже результати роботи програми у файл. Тип файлу визначає сам користувач. Тобто, якщо, наприклад, зберегти результати обчислень тестового варіанту у текстовому документі, то відкривши цей файл будемо мати наступне (мал. 4):

Мал. 4. Лістинг результатів

1.9.4 Перевірка працездатності програми

Покажемо працездатність програми на прикладі 1 (пункт 1.8.1). Для цього можна самостійно ввести всі необхідні дані або обрати в меню файл, як зазначалося вище, пункт «тестовий варіант». Як видно з результатів, отриманих при застосуванні програми (мал. 3), всі формули дають майже однакове наближення, окрім формули Бесселя (дану формулу краще використовувати при

). Особливо добре це видно з графіка. Тепер порівняємо отриманий результат із розрахунками, отриманими за допомогою електронної таблиці Excel (див. мал. 5).