Polinomul de interpolare Newton

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:

polinomul newton1

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:

polinomul newton2

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

polinomul newton3

5. Implementare

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

Leave a comment