- •Лабораторна робота №1 поліноміальна інтерполяція
- •1.1.1 Інтерполяційний багаточлен Лагранжа
- •1.1.2 Схема Ейткена
- •1.1.3 Кінцеворізницеві інтерполяційні формули
- •1.2 Завдання до роботи
- •1.3 Контрольні питання
- •Лабораторна робота № 2 апроксимація функцій, які задані таблицею
- •2.1 Короткі теоретичні положення
- •2.2 Завдання до роботи
- •2.3 Контрольні питання
- •Лабораторна робота №3 інтерполяція функції кубічними сплайнами
- •3.1 Короткі теоретичні положення
- •3.2 Завдання до роботи
- •3.3 Контрольні питання
- •Лабораторна робота №4 чисельне інтегрування
- •4.1 Короткі теоретичні положення
- •4.1.1 Квадратурні формули прямокутників, трапецій і Сімпсона
- •4.1.2 Алгоритм прямокутників-трапецій
- •4.2 Завдання до роботи
- •4.3 Контрольні питання
- •Лабораторна робота №5 чисельне диференціювання
- •5.1 Короткі теоретичні положення
- •5.1.1 Обчислення похідної за її визначенням
- •5.2 Кінцеворізницеві апроксимації похідних
- •5.3 Формули чисельного диференціювання на основі інтерполяційних багаточленів Лагранжа
- •5.2 Завдання до роботи
- •5.3 Контрольні питання
- •6 Література
- •Навчальне видання
3.3 Контрольні питання
Приведіть визначення сплайна. Що таке дефект сплайна?
У чому відмінність інтерполяції кубічними сплайнами від кусочно-кубічної інтерполяції?
Який сплайн називається природним? Приведіть його визначення.
Охарактеризуйте метод прогону як спосіб знаходження коефіцієнтів сплайна. Приведіть систему зв'язків, яка лежить в основі методу.
Який сплайн називається квадратичним?
Приведіть визначення b-сплайна cтупеню m-1 (m=1, 2, 3, 4).
Додаток 3.1
//Програма побудови кубічного сплайну, що інтерполює задану функцію
#include <stdio.h>
#include <conio.h>
#include <cmath>
void main ()
{
int i,n=20;
float a,b1,h,s,x,x0,x1;
float *m=new float[n];
float *l=new float[n];
float *y=new float[n];
float *b=new float[n];
printf ("Enter n - number of intervals in [a, b]\n");
scanf_s("%i",&n);
printf ("Enter coordinates of points a, b\n");
scanf_s ("%f%f",&a, &b1);
printf ("Enter values of function y(xi) in xi,");
printf (" it is know, y(0) = f(a), y(n) =f(b)\n");
for (i=0; i<=n; i++)
scanf_s("%f",&y[i]);
printf ("Enter values x\n");
scanf_s("%f",&x);
/* Умови на кінцях відрізка: m(0)=f'(а)=1 і m(n)=f’(b)=0 */
for(m[0]=1,m[n]=l[0]=0,h=(b1-a)/n,i=1; i<=n-1; i++)
{
b[i]=3*(y[i+1]-y[i-1])/h;
l[i]=-1/(l[i-1]+4);
m[i]=l[i]*(m[i-1]-b[i]);
};
for(i=n-1; i>=1; i--)
m[i]=l[i]*m[i+1]+m[i];
if((x>a)&&(x<b1))
{
i=floor((x-a)/h)+1;
x0=a+(i-1)*h;
x1=x0+h;
s=y[i-1]*((x-x1)*(x-x1)*(2*(x-x0)+h))/(h*h*h)+y[i]*((x-x0)*(x-x0)*(2*(x1-x)+h))/(h*h*h)+m[i-1]*(x-x1)*(x-x1)*(x-x0)/(h*h)+m[i]*(x-x0)*(x-x0)*(x-x1)/(h*h);
printf ("x = %f s = %f",x,s);
};
printf("\nPress any key for continue...");
_getch();
delete []m;
delete []l;
delete []y;
delete []b;
}
Лабораторна робота №4 чисельне інтегрування
Мета роботи - вивчити основні квадратурні формули й алгоритми чисельного інтегрування.
4.1 Короткі теоретичні положення
4.1.1 Квадратурні формули прямокутників, трапецій і Сімпсона
Для наближеного обчислення
певного інтеграла
розіб'ємо відрізок інтегрування
на
рівних частин крапками
(
- крок
розбивки,
Значення
функції
в
крапках розбивки
позначимо через
.
Безперервна підінтегральна функція
заміняється сплайном – кусочно
поліноміальною функцією
який апроксимує дану
функцію. Інтегруючи функцію
на
відрізку
,
прийдемо до деякої формули чисельного
інтегрування (квадратурної формули).
Залежно від функції , яка апроксимує підінтегральну функцію, будемо одержувати різні квадратурні формули.
Якщо на кожної частині
ділення відрізка
функцію
замінити функцією, що приймає постійне
значення, рівне, наприклад, значенню
функції
в серединній крапці
-й
частини
то функція
буде
мати східчастий вигляд:
У цьому випадку
і одержуємо квадратурну формулу прямокутників:
(4.1)
Якщо функцію
на
кожному відрізку
замінити її лінійною інтерполяцією по
крапках
і
то одержимо безперервну кусочно-лінійну
функцію
Тут
.
Графіком цієї функції є ламана лінія.
У цьому випадку
і одержуємо квадратурну формулу трапеції:
(4.2)
Можна одержати квадратурну
формулу Сімпсона, яка також називається
формулою парабол, якщо сплайн
,
що апроксимує підінтегральну функцію
,
являє собою безперервну функцію,
складену з парабол, що примикають одна
до одної. Зажадаємо, щоб на відрізку
парабола проходила через крапки
,
,
.
Використовуючи побудову інтерполяційного
багаточлена Лагранжа другого порядку
на відрізку
,
одержимо
Для подальших перетворень
уведемо змінну
за допомогою рівності
Значенням
,
рівним 0, 1/2 , 1, відповідають значення
,
рівні
Виразимо сплайн через нову змінну :
З огляду на те що
маємо
і в результаті приходимо до квадратурної формули парабол:
(4.3)
Наближене значення інтеграла
,
яке обчислене за квадратурною формулою
парабол, можна виразити через значення
й
-
результати обчислень за квадратурними
формулами прямокутників і трапецій:
Похибка кожної квадратурної
формули оцінюється величиною залишкового
члена
,
що залежить від кроку розбивки
(або від числа розбивок
):
Приведемо оцінки похибок квадратурних формул у тому випадку, коли підінтегральна функція має безперервну похідну другого порядку:
для формули прямокутників
для формули трапецій
Якщо підінтегральна функція має безперервну похідну четвертого порядку, то справедливою є така оцінка похибки формули Сімпсона:
Помітимо, що при інтегруванні ступеневої функції, ступінь якої не вище трьох, квадратурна формула Сімпсона дає точний результат.
Приклад. Знайти
наближені значення інтеграла
за допомогою квадратурних формул
прямокутників, трапецій і Сімпсона,
якщо відрізок інтегрування [0,1] розбитий
на n=2; 4; 10 рівних частин. Оцінити величину
похибки отриманих результатів у кожному
випадку.
Рішення. Позначимо
через
похибку результату інтегрування за
квадратурними формулами (тут
).
Знайдемо похідні підінтегральної
функції
до
четвертого порядку включно й максимальні
абсолютні значення похідних другого
й четвертого порядків на відрізку
[0,1]:
,
,
,
,
,
При n=4 одержимо наступні оцінки величин похибки результатів:
;
;
.
Результати обчислень за квадратурними формулами прямокутників, трапецій і Сімпсона для різних чисел розбивок n і похибки цих результатів зведені в таблицю.
Таблиця 4.1 – Результати обчислень
Квадратурна формула |
n=2 |
n=4 |
n=10 |
|||
|
|
(4) |
|
(10) |
|
|
прямокутників |
1,40977 |
0,1699 |
1,44875 |
0,0425 |
1,46039 |
0,0068 |
трапецій |
1,57158 |
0,3398 |
1,49068 |
0,085 |
1,46717 |
0,0136 |
Сімпсона |
1,46371 |
0,0045 |
1,46272 |
0,0003 |
1,46265 |
10-5 |
Практично важливо вести обчислення до досягнення заданої точності по тій або іншій квадратурній формулі. Цієї мети задовольняє метод подвійного перерахування, що полягає в наступному. За квадратурною формулою проводять обчислення інтеграла із кроком h і одержують значення (h). Потім зменшують крок удвічі й одержують нове наближене значення інтеграла (h/2). Щоб визначити, як сильно ухиляється значення (h/2) від точного значення інтеграла , використовується правило Рунге:
де k=2 для формул прямокутників і трапецій і k=4 для формули Сімпсона.
При заданій точності обчислення зі зменшуваним кроком закінчуются при виконанні умови
При цьому приймають
із точністю
.
