Racine niéme

imanedaoudi Messages postés 82 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 24 octobre 2005 - 26 août 2005 à 21:41
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 - 26 août 2005 à 23:46
Salut,
je cherche à calculer la racine niéme d'un float donnée (le n est float aussi:par exemple x à la puissance 0.234).est ce qu'il y a une fonction prédefini qui réalise ce calcul?
j'ai fait un premier essai, mais ca donne pas des resultats juste;
float racinen(float n,float data)
{
float x=1;
if (data==0)return 0;
if (n==0) return 1;
else
while(n!=0)
{x=x*data;
n--;}
return x;
}
remarque:je programme en VC++.
merci pour toute suggestion.
A voir également:

12 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
26 août 2005 à 22:15
Comment veux tu que ta fonction marche...

#include <cmath>



et utilises:

double pow(double x, double n)



Ou un truc du genre, va voir dans le fichier cmath directement.
0
imanedaoudi Messages postés 82 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 24 octobre 2005
26 août 2005 à 22:23
quel fichier cmath?
j'ai deja utilisé la biblio #include <cmath>, le probleme , c'est que je veux calculer la racine nième de x = x puissance 1/n

avec x est float.
0
mondrone Messages postés 246 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 11 mars 2012
26 août 2005 à 22:34
Tu peux pas le faire par une recherche dichotomique avec un pourcentage de précision ? (un peu lent peut etre)



Tu incrémente ta variable x d'unités en unités. Dès que ta variable
dépasse le résultat escompté, tu incrémente d'un dixième, et ainsi de
suite.

Qui ne tente rien...

Ne risque pas d'avoir grand chose !!!

<hr siz="">
0
mondrone Messages postés 246 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 11 mars 2012
26 août 2005 à 22:36
j'oubliais : tu t'arrête quand |x^n-data| Qui ne tente rien...

Ne risque pas d'avoir grand chose !!!

<hr siz="">
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
imanedaoudi Messages postés 82 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 24 octobre 2005
26 août 2005 à 22:46
oui c'est une bonne idée, mais il parait que c'est tres long, j'ai trouvé la fonction powf(x, 1/n) ,que croix que cette fonction est destiner pour calculer la racine niéme d'un float donné, j'ai essayer mais ca donne tjrs pas de bon résultats.
0
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
26 août 2005 à 22:51
salut,

essaie ca:

powf(x, 1./n); // car si ca reste en entier; 1/n = 0. en reel 1./n donne bien l'inverse de n



a+
0
imanedaoudi Messages postés 82 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 24 octobre 2005
26 août 2005 à 22:52
maintenant ca marche tres bien, pour calculer la racine niéme d'un float donnée,j'ai utiliser powf(x, 1/n), j'ai remarqué d'apres le que le résutat obtenu que la fonction calcul la racine niéme de x avec (1/n) est entier, pour resoudre ca il faut mettre powf(x, float(1)/n).
je pense que c'etait ca le probleme
Merci pous vous tous
0
imanedaoudi Messages postés 82 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 24 octobre 2005
26 août 2005 à 22:55
oui ca rejoint ton idée cosmobob merci
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
26 août 2005 à 23:21
Et si t'aime pas les fonctions toutes faites :



x^alpha = exp(alpha*ln(x))



Biensur évité les x négatifs ;)

if(!Meilleur("Joky")) return ERREUR;
0
mondrone Messages postés 246 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 11 mars 2012
26 août 2005 à 23:36
LOL si tu pousse jusque là prend carremment x^alpha
=((-1)^alpha)*(exp(alpha*ln(abs(x)))) o moins ca marche aussi pour les
négatifs

Qui ne tente rien...

Ne risque pas d'avoir grand chose !!!

<hr siz="">
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
26 août 2005 à 23:40
(-1)^alpha ???

Avec alpha en décimal j'pense pas que ça marcherai sinon on aurait fait x^alpha lol :)
if(!Meilleur("Joky")) return ERREUR;<
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
26 août 2005 à 23:46
Mais ya une fonction toute faite pour ca dans cmath, alors pourquoi faire compliquer ?



double pow (double x, double n) qui calcul x^n. Elle est pas bien cette fonction ?


#if _GLIBCPP_HAVE_POWF

inline float

pow(float __x, float __y) { return ::powf(__x, __y); }

#else

inline float

pow(float __x, float __y)

{ return ::pow(static_cast<double>(__x), static_cast<double>(__y)); }

#endif



#if _GLIBCPP_HAVE_POWL

inline long double

pow(long double __x, long double __y) { return ::powl(__x, __y); }

#else

inline long double

pow(long double __x, long double __y)

{ return ::pow(static_cast<double>(__x), static_cast<double>(__y)); }

#endif



Il y a tout ce que l'on veut :)
0
Rejoignez-nous