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
FD - 27 déc. 2007 à 19:03
2 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
7 mai 2007 à 21:21
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.
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.
7 mai 2007 à 21:40
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)
}
7 mai 2007 à 21:42
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)
}
7 mai 2007 à 21:46
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.
7 mai 2007 à 21:52
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.
7 mai 2007 à 22:00
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.