Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_ОМ1_new.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
2.65 Mб
Скачать

Зразок виконання завдання

Завдання: наближено відбудувати функцію , що задана таблицею

0

0.2

0.4

0.6

0.8

1

1.2715

2.4652

3.6443

4.8095

5.9614

7.1005

у точках 0.1 та 0.9 за допомогою інтерполяційних багаточленів Ньютона.

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

Складемо для заданої функції таблицю кінцевих різниць:

і

0

0

1.2715

1.1937

-0.0146

0.0007

-0.0001

0.0000

1

0.2

2.4652

1.1791

-0.0139

0.0006

-0.0001

2

0.4

3.6443

1.1652

-0.0133

0.0005

3

0.6

4.8095

1.1519

-0.0128

4

0.8

5.9614

1.1391

5

1

7.1005

За умовою крок таблиці .

Для за початкове значення беремо .

Тоді .

Обчислення проводимо за першою інтерполяційною формулою Ньютона:

.

Отже

.

Для маємо: , .

Обчислення проводимо за другою інтерполяційною формулою Ньютона:

.

Отже

Відповідь: 1.8702, 6.5325.

Приклад програми

#include <conio.h>

#include <iostream.h>

double XX[] = {1.415, 1.42, 1.425, 1.43, 1.435, 1.44, 1.445, 1.45,1.455,1.46, 1.465};

double YY[] = {0.888551, 0.889599, 0.890637, 0.891667, 0.892687, 0.893698, 0.8947, 0.895693, 0.896667, 0.897653, 0.898619};

double y[10];

long int fakt;

double tt, t, G, L, r;

int p, k, i, j;

void main()

{

cout<<"Тable of values of a function:"<<endl;

cout<<"X: ";

for(i=0; i<10; i++)

cout<<XX[i]<<" | ";

cout<<endl;

cout<<"Y: ";

for(i=0; i<10; i++)

cout<<YY[i]<<" | ";

cout<<endl;

cout<<endl;

cout<<"Еnter value X: ";

// Код у коментарях використовується для випадку інтерполяції назад

cin>>r;

for(i=0; i<10; i++)

y[i]=YY[i];

fakt=1;

i=1;

t=(r-XX[i-1])/(XX[i]-XX[i-1]); // t=(r-XX[10])/(XX[i]-XX[i-1]);

tt=t;

p=10;

L=YY[0]; // L=YY[10];

for(i=1; i<10; i++)

{

k=0;

for(j=1; j<p; j++)

{

y[k]=y[j]-y[j-1];

k++;

}

p--;

fakt*=i;

G=y[0]*tt/fakt; // G=y[p]*tt/fakt;

tt*=t-i; // tt*=t+i;

L+=G;

}

cout<<"Y = "<< L;

getch();

}