Lagrange des différences divisées dans C

Fermé
fleurita Messages postés 3 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 7 mai 2007 - 7 mai 2007 à 20:13
 FD - 27 déc. 2007 à 19:03
Bonsoir,
j'ai un projet à réaliser ,je dois programmer lagrange des différences divisées en langage C et s'il vous plait je demande de l'aide pour faire ceci.
je vous prie si c'est possible de m'aider
merci d'avance

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
7 mai 2007 à 21:21
Salut
Tu veux de l'aide, ok, mais faudrait que tu poses ce qui te gêne. Fais déjà tout ce que tu sais faire, post le. Et dis nous en quoi on peut t'aider.
1
merci de m'avoir répondu:
voila ce que j'ai pu faire pour le moment ,et j'arrive pas à terminer la fin

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define NMAX 500


void tab_diff_div (int n,double x[NMAX],double f[NMAX],double ** d)

{
int i,j;

double xi;

//rentrer les valeurs de x[i]
for(i=0;i<=n-1;i++)

{
printf(" entrer les valeurs de x[%d]:",i );
scanf( "%d" ,&xi );
}
//rentrer les valeurs de x[i]
for(i=0;i<=n-1;i++)

{
printf(" entrer les valeurs de f(x%d ,i):",i );
scanf( "%d" ,&f(xi) );
}


// affichage d'un x[i]

for(i=0;i<n-1;i++)
{
printf(" xi %10.2f\n\n",x.d[i]);
}

for(i=0;i<=n;i++)
{
d[i][0]=f[i];
}
for(j=1;j<=n;j++)
{
for(i=0;i<=n-j;i++)
{
d[i][j]=(d[i+1][j-1]-d[i][j-1])/(x[i+j]-x[i]);
}
}
}


double poly_diff_div (int n,double x[NMAX],double ** d,double alpha)

{
int i;
double p;

p=d[0][n];

for(i=0;i<=n;i++)
p=p*(alpha-x[n-i])+d[0][n-i];
{
return (p);
}

}
void main()
{
int n;
double x[NMAX],
double f[NMAX],
double ** d,


tab_diff_div ( n, x[NMAX], f[NMAX],d)
}
0
fleurita Messages postés 3 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 7 mai 2007
7 mai 2007 à 21:42
merci de m'avoir répondu:
voila ce que j'ai pu faire pour le moment ,et j'arrive pas à terminer la fin

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define NMAX 500


void tab_diff_div (int n,double x[NMAX],double f[NMAX],double ** d)

{
int i,j;

double xi;

//rentrer les valeurs de x[i]
for(i=0;i<=n-1;i++)

{
printf(" entrer les valeurs de x[%d]:",i );
scanf( "%d" ,ξ );
}
//rentrer les valeurs de x[i]
for(i=0;i<=n-1;i++)

{
printf(" entrer les valeurs de f(x%d ,i):",i );
scanf( "%d" ,&f(xi) );
}


// affichage d'un x[i]

for(i=0;i<n-1;i++)
{
printf(" xi %10.2f\n\n",x.d[i]);
}

for(i=0;i<=n;i++)
{
d[i][0]=f[i];
}
for(j=1;j<=n;j++)
{
for(i=0;i<=n-j;i++)
{
d[i][j]=(d[i+1][j-1]-d[i][j-1])/(x[i+j]-x[i]);
}
}
}


double poly_diff_div (int n,double x[NMAX],double ** d,double alpha)

{
int i;
double p;

p=d[0][n];

for(i=0;i<=n;i++)
p=p*(alpha-x[n-i])+d[0][n-i];
{
return (p);
}

}
void main()
{
int n;
double x[NMAX],
double f[NMAX],
double ** d,


tab_diff_div ( n, x[NMAX], f[NMAX],d)
}
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
7 mai 2007 à 21:46
Re
Tu n'as toujours pas dit c'était quoi ton problème. lol
Mais je pense qu'il y a une erreur de compilation dans l'utilisation de ton double tableau d.
Il faut que tu utilises un malloc ou calloc pour définir la structure de d.
Mais surtout dis ce qui te pose problème.
0
fleurita Messages postés 3 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 7 mai 2007 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
7 mai 2007 à 21:52
deja je te remercie infinement de m'avoir vite répondu .
en fait mon problème c'est que je bloque en ce moment,j'arrive pas à avancer.
j voudrais savoir est ce que deja,j dois utiliser un double pointeur sur le tableau ou pas.
et d'après toi j dois utiliser les allocations dynamiques.
et est ce que le programme te semble correct.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
7 mai 2007 à 22:00
Tout dépend de tes besoins pour l'allocation dynamique.
Ton tableau d est de taille fixe ? Auquel cas, un tableau statique suffit. Sinon le tableau dynamique s'impose.
Dans les deux cas, float **d; ne suffit pas.


int i;
float **d;
d= (float **)malloc (NBCOLONNES * sizeof (float*));

for (i = 0; i < NBCOLONNES; i++)
d[i] = malloc (NBLIGNES * sizeof (float));


NBCOLONNES et NBLIGNES représentent respectivement le nombre de colonnes et de lignes que tu souhaites avoir dans ta matrice d.
0
slt,
qui peut me proposer un code source ou meme un algorithme d'un programme C qui traite l'interpolation de lagrange.
merci pour votre aide,je crois quc'est plus dur!!!!!
1