1. Tema
Determinarea diferenței divizate pentru o funcție și noduri de interpolare date.
2. Metoda
Diferența divizată pentru funcția f(x) pe nodurile x1, x2,…,xk (k:=2) este:
3. Exemplu
Să se determine diferența divizată de ordinul 4 pentru funcția f(x)=x2+x+1 și nodurile de interpolare 1,2,3,4.
Rezolvare:
4. Algoritmul
Algoritmul pentru determinarea diferențelor divizate este:
Intrări:
- k = numărul nodurilor de interpolare
- x = vectorul cu nodurile de interpolare
- f = funcția din metodă
Ieșiri:
- dd = diferența divizată
5. Implementare
#include "stdafx.h" #include using namespace std; #define max 10 float funct(float t) { float f; f = t*t + t + 1; return f; } void main(void) { float dd, p; float x[max + 1]; int k, i, j; cout << "dati ordinul diferentei divizate" << endl; cin >> k; cout << "dati nodurile" << endl; for (i = 1; i <= k; i++) { cout << "x[" << i << "]="; cin >> x[i]; } cout << endl; dd = 0; for (i = 1; i <= k; i++) { p = 1; for (j = 1; j <= k; j++) if (j != i) p = p*(x[i] - x[j]); dd = dd + funct(x[i]) / p; } cout << "Diferente divizata de ordinul " << k << " este " << dd << endl; system("pause"); }
Rezultat: