1. Tema
Determinarea valorii polinomului Newton într-un punct care aproximează o funcție pe noduri de interpolare date.
2. Metoda
Polinomul de interpolare Newton pentru funcția f(x) pe nodurile x1,x2,…,xn este:
3. Exemplu
Să se scrie polinomul de interpolare Newton pentru funcția f(x)=x2-x+1 și nodurile de interpolare 1,2,5.
Rezolvare:
4. Algoritmul
Algoritmul asociat metodei Newton este:
Intrări:
- n = numărul nodurilor de interpolare
- a = numărul în care se calculează valoarea polinomului
- x = vectorul cu nodurile de interpolare
- f = funcția din metodă
Ieșiri:
- l1 = valoarea polinomului Newton în a
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 l, s, p, p1, a; float x[max + 1]; int n, i, j, k, m; cout << "dati numarul de noduri" << endl; cin >> n; cout << "dati nodurile" << endl; for (i = 1; i <= n; i++) { cout << "x[" << i << "]="; cin >> x[i]; } cout << endl; cout << "dati valoarea in care se aproximeaza functia" << endl; cin >> a; l = funct(x[1]); for (k = 2; k <= n; k++) { s = 0; for (i = 1; i <= k; i++) { p = 1; for (j = 1; j <= k; j++) if (j != i) p = p*(x[i] - x[j]); s = s + funct(x[i]) / p; } p1 = 1; for (m = 1; m <= k - 1; m++) p1 = p1*(a - x[m]); l = l + s*p1; } cout << "Val. pol. in " << a << " este " << l << endl; system("pause"); }
Rezultat: