0% ont trouvé ce document utile (0 vote)
6 vues7 pages

Programme d'interpolation de Newton en C

Le document contient du code pour plusieurs algorithmes d'analyse numérique : 1) Formule d'interpolation arrière de Newton implémentée en C pour calculer la valeur d'une fonction pour une valeur x donnée en fonction de ses valeurs à d'autres points x. 2) Formule d'interpolation avant de Newton implémentée en C pour calculer la valeur d'une fonction pour un x donné en utilisant des différences avant. 3) Code pour générer et afficher des tables de différences avant et arrière en C à partir d'un ensemble de paires de valeurs x et y. 4) Code implémentant la méthode d'élimination de Gauss en C pour résoudre des systèmes d'équations linéaires.

Traduit par

ScribdTranslations
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
6 vues7 pages

Programme d'interpolation de Newton en C

Le document contient du code pour plusieurs algorithmes d'analyse numérique : 1) Formule d'interpolation arrière de Newton implémentée en C pour calculer la valeur d'une fonction pour une valeur x donnée en fonction de ses valeurs à d'autres points x. 2) Formule d'interpolation avant de Newton implémentée en C pour calculer la valeur d'une fonction pour un x donné en utilisant des différences avant. 3) Code pour générer et afficher des tables de différences avant et arrière en C à partir d'un ensemble de paires de valeurs x et y. 4) Code implémentant la méthode d'élimination de Gauss en C pour résoudre des systèmes d'équations linéaires.

Traduit par

ScribdTranslations
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

//programme pour la formule d'interpolation arrière de Newton

#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

***********Table des différences avant ***********


10.00 1.10 0.90 1.50 -0.40
20,00 2,00 2,40 1,10
30.00 4.40 3.50
40,00

***********Table de différence à recul ***********


10,00 1,10
20,00 2,00 0,90
30.00 4.40 2.40 1.50
40.00 7.90 3.50 1.10 -0.40
*/
Élimination de Gauss en C
#include <stdio.h>

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;

pour (j = 0; j < n + 1; ++j) {


t = a[max][j];
a[max][j] = a[i][j];
a[i][j] = t;
}

pour (j = n; j >= i; --j)


pour (k = i + 1; k < n; ++k)
a[k][j] -= a[k][i] / a[i][i] * a[i][j];

/* pour (k = 0; k < n; ++k) {


pour (j = 0; j < n + 1; ++j)
printf("%.2f\t", a[k][j]);
\n
}*/
}
}

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();

pour (i = 0; i < n; ++i) {


pour (j = 0; j < n + 1; ++j)
printf("%.2f\t", a[i][j]);

}
}

int main(int argc, char *argv[]) {


int i, j;

FICHIER *fin = fopen("[Link]", "r");


fscanf(fin, "%d", &n);
pour (i = 0 ; i < n ; ++i)
pour (j = 0; j < n + 1; ++j)
fscanf(fin, "%f", &a[i][j]);
fclose(fin);

gauss();

retourner 0;
}

Vous aimerez peut-être aussi