Fonction en paramettres d'une autre
black light
Messages postés
36
Statut
Membre
-
fiddy Messages postés 11653 Statut Contributeur -
fiddy Messages postés 11653 Statut Contributeur -
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
- Colorer une cellule en fonction de la valeur d'une autre cellule - 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).