CÓDIGO
#include<iostream>
#include<iomanip>
#define N 20
using namespace std;
// Función tipo void para ingresar datos
#include<iomanip>
#define N 20
using namespace std;
// Función tipo void para ingresar datos
void ingresadatos(double x[N],double y[N],double D[N][N],int n){
int i;
cout<<endl;
for(i=0;i<n;i++){
cout<<"\tDato x"<<i+1<<" = ";cin>>x[i];
cout<<"\tDato y"<<i+1<<" = ";cin>>y[i];
cout<<endl;
D[i][0]=y[i];
}
}
// Función tipo void para hacer la tabla de diferencias divididas
void tabla(double x[N],double y[N],double D[N][N],int n){
int i,j;
for(j=1;j<n;j++){
for(i=j;i<n;i++){
D[i][j]=(D[i][j-1]-D[i-1][j-1])/(x[i]-x[i-j]);
}
}
cout<<"\n\tTABLA DE DIFERENCIAS DIVIDIDAS"<<endl;
for(i=0;i<n;i++){
for(j=0;j<i+1;j++){
cout<<"\t"<<setw(12)<<D[i][j];
}
cout<<endl;
}
}
// Función principal
int main(){
char salir;
int n;
double x[N], y[N], D[N][N];
cout<<setprecision(8)<<fixed;
do{
cout<<"\n\tNro. de datos: ";cin>>n;
ingresadatos(x,y,D,n);
tabla(x,y,D,n);
cout<<"\n\tSalir? s/n ";cin>>salir;
}while(salir != 's' && salir != 'S');
return 0;
}
int i;
cout<<endl;
for(i=0;i<n;i++){
cout<<"\tDato x"<<i+1<<" = ";cin>>x[i];
cout<<"\tDato y"<<i+1<<" = ";cin>>y[i];
cout<<endl;
D[i][0]=y[i];
}
}
// Función tipo void para hacer la tabla de diferencias divididas
void tabla(double x[N],double y[N],double D[N][N],int n){
int i,j;
for(j=1;j<n;j++){
for(i=j;i<n;i++){
D[i][j]=(D[i][j-1]-D[i-1][j-1])/(x[i]-x[i-j]);
}
}
cout<<"\n\tTABLA DE DIFERENCIAS DIVIDIDAS"<<endl;
for(i=0;i<n;i++){
for(j=0;j<i+1;j++){
cout<<"\t"<<setw(12)<<D[i][j];
}
cout<<endl;
}
}
// Función principal
int main(){
char salir;
int n;
double x[N], y[N], D[N][N];
cout<<setprecision(8)<<fixed;
do{
cout<<"\n\tNro. de datos: ";cin>>n;
ingresadatos(x,y,D,n);
tabla(x,y,D,n);
cout<<"\n\tSalir? s/n ";cin>>salir;
}while(salir != 's' && salir != 'S');
return 0;
}
EJECUCIÓN DEL CÓDIGO
Entonces el polinomio de interpolación de Newton es:
p3(x) = 5 - (x-2) + 0.4(x-2)(x-4) - 0.0638888 (x-2)(x-4)(x-7)Representación gráfica en DESMOS.