1. Tema
Determinarea valorii polinomului Lagrange într-un punct care aproximează o funcție pe noduri de interpolare date.
2. Metoda
Polinomul de interpolare Lagrange pentru funcția f(x) pe nodurile x1,x2,…,xn este:
3. Exemplu
Să se găsească polinomul de interpolare Lagrange pentru funcția f(x)=x3 și nodurile x1=1, x2=3, x3=5.
Rezolvare:
4. Algoritmul
Algoritmul pentru determinarea valorii polinomului Lagrange este:
Intrări:
- n = numărul nodurilor de interpolare
- a = punctul în care se calculează valoarea polinomului
- x = vectorul cu nodurile de interpolare
- f = funcția din metodă
Ieșiri:
- l = valoarea polinomului Lagrange în a
5. Implementare
#include "stdafx.h" #include using namespace std; #define max 10 float funct(float t) { float f; f = t*t*t; return f; } void main(void) { float l, p, a; float x[max + 1]; int n, i, j; cout << "dati valoarea in care se doreste aproximarea functiei" << endl; cin >> a; 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; l = 0; for (i = 1; i <= n; i++) { p = 1; for (j = 1; j <= n; j++) if (j != i) p = p*(a - x[j]) / (x[i] - x[j]); l = l + funct(x[i])*p; } cout << "Val. pol. in " << a << " este " << l << endl; system("pause"); }
Rezultat:
Acest cod ruleaza avand legea functiei f data , dar daca nu am avea legea acelei functii ?
LikeLike