You are on page 1of 6

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

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ


«КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ
імені ІГОРЯ СІКОРСЬКОГО»

ФАКУЛЬТЕТ ЕЛЕКТРОНІКИ
КАФЕДРА ЕЛЕКТРОННИХ ПРИСТРОЇВ ТА СИСТЕМ

ЗВІТ
ПРО ВИКОНАННЯ ЛАБОРАТОРНОЇ РОБОТИ №3
З ДИСЦИПЛІНИ «ЧИСЕЛЬНІ МЕТОДИ»

ТЕМА РОБОТИ: «Чисельне диференціювання»

ВАРІАНТ №6
ВИКОНАВ: студент гр. ДЕ-11 Коніков Дмитро
(Прізвище, Ім’я)

ПРИЙНЯВ: викладач Олена АБАКУМОВА 2022 р.


(Ім’я, Прізвище) (Оцінка, Підпис) (Дата)

КИЇВ

КПІ ім. ІГОРЯ СІКОРСЬКОГО

2022
Виконання роботи
Завдання: на основі інтерполяційних формул Ньютона з точністю до 0.001
знайти значення першої та другої похідних за даних значень аргумента для
y=f ( x )
функції , що задана таблицею:

Таблиця 2

1.5 10.517
2.0 10.193
2.5 9.807
3.0 9.387
3.5 8.977
4.0 8.637
4.5 8.442
5.0 8.482
5.5 8.862
6.0 9.701
6.5 11.132
7.0 13.302
х1=2,08 , х2=5,58 ,
Розв’язання:
Складемо для заданої функції таблицю кінцевих різниць:

 i  Xi  Yi  ∆ 1 y i  ∆ 2 y i  ∆ 3 y i  ∆ 4 y i  ∆ 5 y i  ∆ 6 y i  ∆ 7 y i  ∆ 8 y i  ∆ 9 y i  ∆ 10 y i  ∆ 11 y i
0 1,5 10.517 −0.324 −0.062 0.028 0.016 0,000 −0.001 0.002 -0.003 0.003 0,000 −0.009
1 2.0 10.193 −0.386 −0.034 0.044 0.016 −0.001 0.001 -0.001 0,000 0.003 -0.009  
2 2,5 9.807 −0.42 0.01 0.06 0.015 0,000 0,000 -0.001 0.003 -0.006    
3 3.0 9.387 −0.41 0.07 0.075 0.015 0,000 -0.001 0.002 -0.003      
4 3,5 8.977 −0.34 0.145 0.09 0.015 −0.001 0.001 -0.001        
5 4.0 8.637 −0.195 0.235 0.105 0.014 0,000 0,000          
6 4,5 8.442 0.04 0.34 0.119 0.014 0,000            
7 5.0 8.482 0.38 0.459 0.133 0.014              
8 5,5 8.862 0.839 0.592 0.147                
9 6.0 9.701 1.431 0.739                  
10 6,5 11.132 2,170                    
11 7.0 13.302                      
1) Для значення x1 = 2,08 , за початкове значення беремо x1 = 2,0.
Оскільки h=0,5, то
x−x 0 2 , 08−2,0
q= = =0,16 ; q> 0
h 0,5

Обчислення проводимо за формулами:


2 3 2
' 1 2q−1 2 3q −6q+2 3 2q −9q +11 q−3 4
y (x )≈ ( Δy1 + Δ y 1+ Δ y 1+ Δ y1 )
h 2 6 12
2
'' 1 2 3 6 q −18 q+11 4
y ( x )≈ 2
(∆ y 1 + ( q−1 ) ∆ y 1+ ∆ y1)
h 12

Звідси:

( )
2
'' 1 6 ( 0,16 ) −18 ( 0,16 ) +11
y ( 2,08 ) ≈ −0,034 + ( 0,16−1 ) 0,044 + 0,016 ≈−0,23971 4
( 0,5 ) 2
12

Відповідь: y ' ( 2,08 ) ≈−0,736 , y ' ' ( 2,08 ) ≈−0,2 4


2) Для значення x2 = 5,58 , за початкове значення беремо x9 = 6,0.
Оскільки h=0,5, то
x−x 9 5,58−6,0
q= = =−0,84 ; q<0
h 0,5

Обчислення проводимо за формулами:

2 3 2
' 1 2 q+1 2 3 q +6 q+2 3 2 q +9 q +11q +3 4
y (x )≈ ( Δy 8 + Δ y 7+ Δ y 6+ Δ y 5)
h 2 6 12
1 2 6 q 2+ 18 q+11 4
y ' ' (x )≈ (∆ y 7 + ( q+ 1 ) ∆ 3
y 6 + ∆ y 5)
h
2
12

Звідси:

' 1 2(−0,84)+1 3(−0,84)2+6(−0,84)+2 2(−0,84)3 +9(−0 ,84)2+11(−0,84)+3


y (5,58)≈ (0,839+ 0,459+ 0,119+ 0,014)
0,5 2 6 12
≈ 1,32675

'' 1 6 (−0,84 )2 +18 (−0,84 ) +11


y (5,58)≈ (0,459)+ (−0,84 +1 ) 0,119+ 0,014 ¿ ≈1,91269
0,5
2
12

Відповідь: y ' ( 5,58 ) ≈ 1,327 , y ' ' ( 5,58 ) ≈ 1,913

Програмна реалізація з методички

#include <iostream>
using namespace std;
int main(int argc, char* argv[]){
const int n = 6;
double X[] = { 1.5, 2.0, 2.5, 3.0, 3.5, 4.0 };
double Y[] = { 10.517, 10.193, 9.807, 9.387, 8.977, 8.637 };
double y1[n];
double y2[n];
double y3[n];
double y4[n];
double y5[n];
double xx, t, G, L, h;
int k, i, j;

cout << "Table of values of a function:" << endl;


cout << "\tX" << "\t|" << "\tY" << endl;
cout << " ---------------------------" << endl;
for (i = 0; i < n; i++)
cout << "\t" << X[i] << "\t|" << "\t" << Y[i] << endl;
cout << endl;
cout << "Enter value X: ";
cin >> xx;
h = 0;
i = 1;
t = 0;
k = 0;
h = (X[i] - X[i - 1]);
t = (xx - X[i - 1]) / h; // вірно працює лише в околі точки х0
for (j = 1; j < n; j++)
{
y1[k] = Y[j] - Y[j - 1];
k++;
}
k = 0;
for (j = 1; j < n - 1; j++)
{
y2[k] = y1[j] - y1[j - 1];
k++;
}
k = 0;
for (j = 1; j < n - 2; j++)
{
y3[k] = y2[j] - y2[j - 1];
k++;
}
k = 0;
for (j = 1; j < n - 3; j++)
{
y4[k] = y3[j] - y3[j - 1];
k++;
}
k = 0;
for (j = 1; j < n - 4; j++)
{
y5[k] = y4[j] - y4[j - 1];
k++;
}
G = (y1[0] + y2[0] * (2 * t - 1) / 2 + y3[0] * (3 * t * t - 6 * t + 2) / 6 + y4[0] * (4 * t * t * t - 18 * t * t +
22 * t - 6) / 24 + y5[0] * (5 * t * t * t * t - 40 * t * t * t + 105 * t * t - 100 * t + 24) / 120) / h;
cout << "Y' = " << G << endl;
L = (y2[0] + y3[0] * (t - 1) + y4[0] * (12 * t * t - 36 * t + 22) / 24 + y5[0] * (20 * t * t * t - 120 * t * t + 210 * t -
100) / 120) / (h * h);
cout << "Y\" = " << L;
return 0;
}

You might also like