Fonction ln

Résolu
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 28 avril 2004 à 21:44
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 14 juil. 2004 à 12:04
J'aimerais faire une fonction pour calculer un valeur approchée d'un logarithme (népérien par exemple). Je sais qu'entre -1 et 1 je peux utiliser un dévéloppement en série entière de ln, mais le problème c'est en dehors de cet intervalle. J'ai bien essayé en calculant l'intégrale de 1/x mais ca n'est pas très précis, ou bien c'est trop lent.
Quelqu'un sait-il comment je peux faire (par exemple comment est codée la fonction log de math.h, ou bien dans les calculatrices classiques) ?
Merci pour vos réponses
A voir également:

6 réponses

cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
28 avril 2004 à 23:49
bon j'ai une idée pour comment faire.
en utilisant ln(x) = -ln(1/x), on se débrouille toujours pour ke x > 1. ensuite, on mets x entre 1 et 10 en utilisant ln(10^n.x')=n.ln(10)+ln(x') (fo calculer ln(10) une bonne fois pour toute juste)
puis apres, pour se rapprocher de 1, suffit d'utiliser ln(x) = 2 ln(sqrt(x)) (note k'au bout de 5 racines carrées de suite, on a nécessairement x entre 1 et 1.1)
et la tu prends le développement en série, ki devient tres bon vu k'on est a coté de 1.
j'ai pas testé mais sur le papier ca a l'air de bien aller en tout k ;)
ha et si tu veu calculer racine carré sans utiliser le sqrt de math.h, suffit d'utiliser la suite (mettons on veu calculer racine(a)) :
u0 = a;
u(n+1) = 0.5( u(n) + a/u(n) ).
en+ elle converge tres vite !! (c'est la méthode de newton)
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
28 avril 2004 à 21:45
le série entière c'est bien sur entre 0 et 2, c'est ln(1+x) entre -1 et 1
0
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
28 avril 2004 à 23:18
bon c'est pas forcement une bonne méthode, mais pour calculer ailleurs ke dans ]0;1[ il suffit d'utiliser ln(x) = -ln(1/x).
le probleme avec le developpement en série de ln, c'est ke mettons si on va juska l'ordre n, le reste intégral (qui dépend de n) n'est pas du tout borné (vu ke la dérivée n+1eme de ln est (-1)^(n)*n!/x^(n+1) ...)
dc ya des chance ke pour x entre 0 et 0.2, estimer ln x par les 1ers termes de la série de ln(1-x) soit tres mauvais.
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
29 avril 2004 à 09:10
Merci beaucoup! En fait le truc c'est qu'il faut toujours se ramener au voisinage de 1, je vais faire ce que tu as dit
0

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

Posez votre question
Stepharcher Messages postés 117 Date d'inscription samedi 12 avril 2003 Statut Membre Dernière intervention 8 septembre 2008
14 juil. 2004 à 03:14
Il existe une formule pour le logarithme que l'on appelle dévelloppement limité et qui s'implifie la vie :

ln(1+x)= x-[(x^2)/2]+[(x^3)/3]-[(x^4)/4]... etc
ln(1-x)= -x-[(x^2)/2]-[(x^3)/3]-[(x^4)/4]... etc

On a des formules pour le cos, sin, tan ( forcement ), exp, puissance et surment d'autre encore.

>:) Stéph >:)
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
14 juil. 2004 à 12:04
Oui mais ces formules ne sont sympathiques que dans un voisinage défini, ici un voisinage de 0
ln(1+x)~x au voisinage de 0
(c'est ce dont je parlais dans mon premier post, la série entière)
0
Rejoignez-nous