1. Tema
Determinarea valorii polinomului trigonometric într-un punct care aproximează o funcție pe noduri de interpolare date.
2. Metoda
Polinomul trigonometric de interpolare pentru funcția f(x) pe nodurile x0, x1, x2,…,x2n este:
3. Exemplu
Să se scrie polinomul trigonometric de interpolare pentru funcția f(x)=(x4)/ln x în nodurile de interpolare 2,3,4,5 și să se calculeze valoarea polinomului în 4.5. Precizare:
x | 2 | 3 | 4 | 5 |
Valoarea aproximativă a lui f(x) | 23 | 74 | 185 | 388 |
Rezolvare:
4. Algoritmul
Algoritmul pentru determinarea valorii polinomului trigonometric de interpolare este:
Intrări:
- 2n+1 = 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:
- t = valoarea polinomului trigonometric de interpolare în a
5. Implementare
#include "stdafx.h" #include #include using namespace std; #define max 10 float funct(float u) { float f; f = u*u - u + 1; return f; } void main(void) { float t, p, a; float x[max + 1]; int n, m, i, j; cout << "dati valoarea in care se doreste aproximarea functiei" << endl; cin >> a; cout << "dati numarul de noduri (impar)" << endl; cin >> m; n = (m - 1) / 2; cout << "n= " << n << endl; cout << "dati nodurile" << endl; for (i = 0; i <= 2 * n; i++) { cout << "x[" << i << "]="; cin >> x[i]; } cout << endl; t = 0; for (i = 0; i <= 2 * n; i++) { p = 1; for (j = 0; j <= 2 * n; j++) if (j != i) p = p*sin((a - x[j]) / 2) / sin((x[i] - x[j]) / 2); t = t + funct(x[i])*p; } cout << "Val. pol. in " << a << " este " << t << endl; system("pause"); }
Rezultat: