Lagrange des différences divisées dans C

fleurita Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
 FD -
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   Statut Contributeur Dernière intervention   1 846
 
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
fleurita
 
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   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   1 846
 
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   Statut Membre Dernière intervention   > fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention  
 
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   Statut Contributeur Dernière intervention   1 846 > fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention  
 
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
FD
 
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