Polinomul de interpolare trigonometric

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:

polinomul trigonometric13. 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:
polinomul trigonometric2
polinomul trigonometric3

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

polinomul trigonometric4

5. Implementare

Visual_C++_Icon
Cod Sursa C++
#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:
polinomul lagrange rezultat

Leave a comment