Programme d'interpolation de Newton en C
Programme d'interpolation de Newton en C
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define pf printf
#define sf scanf
#define maxn 100
#define ordre 4
vide principal()
{
flottant ax[maxn+1], ay[maxn+1], diff[maxn+1]
[commande+1],nr=1,dr=1,x,p,h,yp;
int n,i,j,k;
effacer();
pf("entrez la valeur de n\n");
sf("%d",&n);
pf("entrez les valeurs sous la forme x,y\n");
pour(i=1;i<=n;i++)
{sf("f",&ax[i],&ay[i]);}
pf("entrez la valeur de x pour laquelle la valeur de y est souhaitée\n");
sf("%f", &x);
h=ax[2]-ax[1];
pour(i=n;i>=1;i--)
ay[i]-ay[i-1];
pour(j=2;j<=ordre;j++)
{
pour(i=n;i>j;i--)
diff[i][j] = diff[i][j-1] - diff[i-1][j-1];
}
i=n;
p=(x-ax[i])/h;
yp=ay[i];
pour(k=1;k<=commande;k++)
{
nr*=p+k-1;
dr*=k;
yp += (nr/dr) * diff[i][k];
}
pf("quand x =%f y= %f",x,yp);
getch();
}
#include<stdio.h>
#include<conio.h>
vous principal()
int
flottant xo, y[20], f[10][10], X[10], Y[10], h, u, p;
clrscr();
printf("Entrez la valeur de n (Nombre de paires de données - 1) : \n");
scanf("%d", &n);
printf("Entrez la valeur initiale de x :\n");
scanf("%f", &xo);
printf("Entrez la taille de l'étape h :\n ");
scanf("%f", &h);
printf("Entrez les valeurs de y\n");
pour(i=0;i<n+1;i++)
scanf("%f", &y[i]);
printf("Entrez le nombre requis de valeurs interpolées de y :\n ");
scanf("%d", &l);
printf("Entrez les %d valeurs de X pour lesquelles les valeurs de y sont requises :\n", l);
pour(k=0;k<l;k++)
scanf("%f" ,&X[k]);
pour(j=0;j<n+1;j++)
f[0][j]=y[j];
pour(i=1;i<n+1;i++)
pour(j=0;j<n+1-i;j++)
f[i][j]=f[i-1][j+1]-f[i-1][j];
pour(k=0;k<l;k++)
(X[k]-xo)/h;
y[0];
p=1;
pour(i=1;i<n+1;i++)
p = p * (u - i + 1) / i;
Y[k]=Y[k]+p*f[i][0];
}
printf("Les valeurs de X et Y sont : %f\t%f\n", X[k], Y[k]);
}
getch();
}
//programme pour la formule d'interpolation de Newton en avant
#include<stdio.h>
#include<conio.h>
#include<process.h>
#include<math.h>
void main()
{
int n;
int i,j;
float ax[10];
float ay[10];
flotte x;
float y=0;
flotta h;
flotte p;
float diff[20][20];
flottant y1, y2, y3, y4;
clrscr();
!! FORMULE D'INTERPOLATION AVANCÉE DE NEWTON GRAGORY !!
Par KRISHAN
entrez le nombre de termes ->
scanf("%d", &n);
entrez la valeur sous la forme de x->
pour(i=0;i<n;i++)
{
entrez la valeur de x%d->
scanf("%f", &ax[i]);
}
entrez la valeur sous la forme de y->
pour(i=0;i<n;i++)
{
entrez la valeur de y %d->
scanf("%f",&ay[i]);
}
entrez la valeur de x pour
laquelle vous voulez la valeur de y->
scanf("%f", &x);
h=ax[1]-ax[0];
pour(i=0;i<n-1;i++)
diff[i][1]=ay[i+1]-ay[i];
pour(j=2;j<=4;j++)
pour(i=0;i<n-j;i++)
diff[i][j]=diff[i+1][j-1]-diff[i][j-1];
fait
{
i++;
}
tandis que(ax[i]<x);
i--;
p=(x-ax[i])/h;
y1=p*diff[i-1][1];
y2=p*(p+1)*diff[i-1][2]/2;
y3=p*(p+1)*(p-1)*diff[i-2][3]/6;
y4=(p+2)*(p+1)*p*(p-1)*diff[i-3][4]/24;
y=ay[i]+y1+y2+y3+y4;
printf("\n\t\t quand x=%6.4f,y=%6.8f",x,y);
!! APPUYEZ SUR ENTRER POUR SORTIR !!
getch();
}
#include<stdio.h>
#include<math.h>
int main()
{
float x[10],y[15][15];
int n,i,j;
//nombre d'articles
printf("Entrez n : ");
scanf("%d", &n);
printf("X Y ");
pour(i = 0;i<n;i++){
scanf("%f %f", &x[i], &y[i][0]);
}
//table de différence avant
pour(j=1;j<n;j++)
pour(i=0;i<(n-j);i++)
y[i][j] = y[i+1][j-1] - y[i][j-1];
***********Table de Différences Avancées ***********
//afficher la table des différences avant
pour(i=0;i<n;i++)
{
printf("\t%.2f",x[i]);
pour(j=0;j<(n-i);j++)
printf("\t%.2f",y[i][j]);
\n
}
//table de différences en arrière
pour(j=1;j<n;j++)
//pour j = 0, l'entrée est prise initialement donc nous commençons à j=1
pour(i=n-1;i>(j-1);i--)
y[i][j] = y[i][j-1] - y[i-1][j-1];
***********Table des différences arrière ***********
//Afficher le tableau des différences arrière
pour(i=0;i<n;i++)
{
printf("\t%.2f",x[i]);
pour(j=0;j<=i;j++)
printf("\t%.2f",y[i][j]);
}
retourner 0;
}
/**
Exécution d'échantillon
Entrez n : 4
X Y
10 1.1
20 2.0
30 4.4
40 7.9
int n;
float a[10][11];
void substitutionAvant() {
int i, j, k, max;
flot t;
pour (i = 0; i < n; ++i) {
max = i;
pour (j = i + 1; j < n; ++j)
si (a[j][i] > a[max][i])
max = j;
void éliminationInverse() {
int i, j;
pour (i = n - 1; i >= 0; --i) {
a[i][n] = a[i][n] / a[i][i];
a[i][i] = 1;
pour (j = i - 1; j >= 0; --j) {
a[j][n] -= a[j][i] * a[i][n];
a[j][i] = 0;
}
}
}
void gauss() {
int i, j;
substitutionAvant();
inverseÉlimination();
}
}
gauss();
retourner 0;
}