Diferențe divizate

1. Tema

Determinarea diferenței divizate pentru o funcție și noduri de interpolare date.

2. Metoda

Diferența divizată pentru funcția f(x) pe nodurile x1, x2,…,xk (k:=2) este:

diferente divizate1

 3. Exemplu

Să se determine diferența divizată de ordinul 4 pentru funcția f(x)=x2+x+1 și nodurile de interpolare 1,2,3,4.

Rezolvare:

diferente divizate2

4. Algoritmul

Algoritmul pentru determinarea diferențelor divizate este:

Intrări:

  • k = numărul nodurilor de interpolare
  • x = vectorul cu nodurile de interpolare
  • f = funcția din metodă

Ieșiri:

  • dd = diferența divizată

diferente divizate3

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 dd, p;
	float x[max + 1];
	int k, i, j;
	cout << "dati ordinul diferentei divizate" << endl; cin >> k;
	cout << "dati nodurile" << endl;
	for (i = 1; i <= k; i++)
	{
		cout << "x[" << i << "]="; cin >> x[i];
	}
	cout << endl;
	dd = 0;
	for (i = 1; i <= k; i++)
	{
		p = 1;
		for (j = 1; j <= k; j++)
		if (j != i)
			p = p*(x[i] - x[j]);
		dd = dd + funct(x[i]) / p;
	}
	cout << "Diferente divizata de ordinul " << k << " este " << dd << endl;
	system("pause");
}
 Rezultat:
diferente divizate rezultat

Leave a comment