Lagrange Polynomial

bayans Messages postés 14 Date d'inscription mardi 17 novembre 2009 Statut Membre Dernière intervention 2 décembre 2012 - 17 nov. 2009 à 21:35
alxidali Messages postés 97 Date d'inscription mardi 21 juillet 2009 Statut Membre Dernière intervention 10 octobre 2011 - 21 nov. 2009 à 20:26
Je souhaite ajouter ces formules dans le code ci-dessus, afin d'executer le cacul de Lagrange Polynomial Interpolation dans le langage c Au fait si le code doit etre modifier,si vous avez des remarques ou des conseil n'hesiter pas je suis la pour apprendre. Ceci sont les formules que je souhaite ajouter dans ce code:

L0(x) = x-x1 / x0-x1 * x-x2 / x0-x2
L1(x) = x-x0 / x1-x0 * x-x2 / x1-x2
L2(x) = x=x0 / x2-x0 * x-x1 / x2-x1

Rsultat: L(x) = f(x0)*L0(x) + f(x1)*L1(x) + f(x2)*L2(x)

Ceci est le code en question:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
float x[3],y[3],xdegre, fx, Lg;
int n,i,j;
n=3;
printf("\nEntrer la valeur de x0 : ");
scanf("%f", &x[0]);
printf("\nEntrer la valeur de x1 : ");
scanf("%f", &x[1]);
printf("\nEntrer la valeur de x2 : ");
scanf("%f", &x[2]);

printf("\nEntrer la valeur de y0 : ");
scanf("%f", &y[0]);
printf("\nEntrer la valeur de y1 : ");
scanf("%f", &y[1]);
printf("\nEntrer la valeur de y2 : ");
scanf("%f", &y[2]);

printf("\nEntrer la valeur de xdegre : ");
scanf("%f", &xdegre);
fx=0.0;
for (i=0;i<5;i++){
Lg = 1;
for(j=0;j<5;j++){
if (j !i) Lg Lg * (xdegre - x[j]) / (x[i] - x[j]);
}
fx=fx + y[i] * Lg;
}
printf("\nLa valeur de f[x] pour x = %f est de : %f ",xdegre,fx);
printf("\n\n");
system("pause");
return(0);
}

3 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
18 nov. 2009 à 00:23
Quelle est la question ?
0
bayans Messages postés 14 Date d'inscription mardi 17 novembre 2009 Statut Membre Dernière intervention 2 décembre 2012
18 nov. 2009 à 01:10
Bon au fait je dois ecrire un simple code danle langage c(plus que je debute dans la programmatiion) capable d'effectuer lagrange polynomial interpolation le code que j'ai poste ne plaisait pas a mon prof il m'a dit que c'etait un programme dynamique il veut me rendre fou qu'est ce que c'est sa bref voila l'ennonce:

Objectif : L'objectif de ce programme est de concevoir et développer un logiciel informatique d'une fonction polynomiale impliquant un ensemble de points de données. Votre algorithme se fondera sur la méthode d'interpolation lagrange.

fonctionnalités : l'entrée au programme devrait consister en un nombre donné de n points de données, les valeurs de la xi variables indépendantes et de la variables f(xi) dépendants à chaque point et la valeur x pour l'interpolation. Les points de données seront stockées dans les baies de "x [ ]" et "f [ ]", et la valeur x pour l'interpolation est stockée dans "x_value". Votre programme doit être capable de déterminer à l'aide de ces informations f (x).

Astuce : Le projet est divisé en une étape en cascade où une étape du programme calcule le polynôme lagrange et l'autre facilite la sortie d'entrée et l'opération de transformation. Le calcul polynomiale en partie peut facilement être mise en oeuvre à l'aide du **nested for loop**, où on calcule le polynôme de base et les variables dépendantes. Aussi, soyez prudent lorsque vous sélectionnez le type de données approprié pour vos variables.

Example de lagrange polynomial :

Supposons que :

X0=0.0------------------ f(x0) = 0.0
X1=1.5-----------------f(x1) = -15
X2=2.0----------------- f(x2) = -17.5

Nous souhaitons trouver un polynôme ; qui décrit le mieux ces points de données. La première étape de l'utilisation d'interpolation de lagrange est d'évaluer les polynômes de base :

L0(x)= x-x1 / x0-x1 * x-x2 / x0-x2

L1(x)= x-x1 / x1-x0 * x-x2 / x1-x2

L2(x)= x-x1 / x2-x0 * x-x2 / x2-x1

Lagrange polynomial est defini :

L(x) = f(x0) * L0(x) + f(x1) * L1(x) + f(x2) * L2(x)

**Une fois de plus voici le programme que j'ai presente mais sa ne plait pas a mon prof pouvez vouz m'aider.**

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
float x[3],y[3],xdegre, fx, Lg;
int n,i,j;
n=3;
printf("\nEntrer la valeur de x0 : ");
scanf("%f", &x[0]);
printf("\nEntrer la valeur de x1 : ");
scanf("%f", &x[1]);
printf("\nEntrer la valeur de x2 : ");
scanf("%f", &x[2]);

printf("\nEntrer la valeur de y0 : ");
scanf("%f", &y[0]);
printf("\nEntrer la valeur de y1 : ");
scanf("%f", &y[1]);
printf("\nEntrer la valeur de y2 : ");
scanf("%f", &y[2]);

printf("\nEntrer la valeur de xdegre : ");
scanf("%f", &xdegre);
fx=0.0;
for (i=0;i<5;i++){
Lg = 1;
for(j=0;j<5;j++){
if (j !i) Lg Lg * (xdegre - x[j]) / (x[i] - x[j]);
}
fx=fx + y[i] * Lg;
}
printf("\nLa valeur de f[x] pour x = %f est de : %f ",xdegre,fx);
printf("\n\n");
system("pause");
return(0);
}
0
alxidali Messages postés 97 Date d'inscription mardi 21 juillet 2009 Statut Membre Dernière intervention 10 octobre 2011
21 nov. 2009 à 20:26
je pense que votre prof vous a dit qu'aucontraire votre programe n'est pas dynamique , car vous obligé l'utilisateur a donné 3 x et puis 3 y , et vous donné a l'entré les tableau de taille 3 , , et si je voullait un seul x et un seul Y , si ca se peux avec lagrange bien sure
0
Rejoignez-nous