Fonction en paramettres d'une autre
black light
Messages postés
29
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
bonjour,
je doit écrire une fonction qui calcul la racine d'une autre fonction (mathématique predéfinie de type double qui a un double comme paramètres) avec le théorème des accroissement finis.voici mon code le résultat doit etre 1,.... mais le mien affiche 3.1...... !! svp
je doit écrire une fonction qui calcul la racine d'une autre fonction (mathématique predéfinie de type double qui a un double comme paramètres) avec le théorème des accroissement finis.voici mon code le résultat doit etre 1,.... mais le mien affiche 3.1...... !! svp
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double racine_f (double(*p)(double),float a, float b,int nbiteration)
{ int i; double fx,rslt;
if ((*p)(a)*(*p)(b)<0)///f(a)*f(b) doit etre <0
{ rslt=a+b/2; ///calcul de x0 la moitié de l'interval [a,b]
fx=(*p)(rslt); ///f(x0)
for(i=0;i<nbiteration;i++)
{
if(fx*(*p)(a)<0)
{
b=rslt;
rslt=a+b/2;
fx=(*p)(rslt);
}else if(fx*(*p)(b)>0)
{
a=rslt;
rslt=a+b/2;
fx=(*p)(rslt);
}
}
return(rslt);}return(0);
}
int main()
{ double y=racine_f(cos,(3.14/2),(3.15/2),5);
printf("%lf",y);
return 0;
A voir également:
- Fonction en paramettres d'une autre
- Fonction si et - Guide
- Fonction miroir - Guide
- Comment colorer une cellule excel en fonction du contenu d'une autre cellule - Forum Bureautique
- Fonction moyenne excel - Guide
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
1 réponse
Bonjour,
Je ne vois pas trop le rapport avec le théorème des accroissements finis ???
Ici il s'agit plutôt de la dichotomie. Tu divises l'intervalle en deux jusqu'à trouver la solution.
La moyenne ce n'est pas a+b/2 mais (a+b)/2.
Ensuite, l'algorithme est à revoir.
Un exemple plus concis :
Ce n'est pas printf("%lf",...) mais printf("%f", ...)
Et, il faut mettre un \n avant le return 0; (par exemple printf("%f\n",...) ou alors fflush(stdout).
Je ne vois pas trop le rapport avec le théorème des accroissements finis ???
Ici il s'agit plutôt de la dichotomie. Tu divises l'intervalle en deux jusqu'à trouver la solution.
La moyenne ce n'est pas a+b/2 mais (a+b)/2.
Ensuite, l'algorithme est à revoir.
Un exemple plus concis :
Pour i de 0 à Iteration Faire
moy<-(a+b)/2
Si f(a)*f(moy) > 0 Alors
b <- moy
Sinon
a <- moy
Fin Si
Fin Pour
Ce n'est pas printf("%lf",...) mais printf("%f", ...)
Et, il faut mettre un \n avant le return 0; (par exemple printf("%f\n",...) ou alors fflush(stdout).