Petit souci de formule
Résolu/Fermé
lefleau02
Messages postés
26
Date d'inscription
vendredi 24 août 2007
Statut
Membre
Dernière intervention
4 juin 2008
-
24 août 2007 à 19:26
lefleau02 Messages postés 26 Date d'inscription vendredi 24 août 2007 Statut Membre Dernière intervention 4 juin 2008 - 22 sept. 2007 à 00:08
lefleau02 Messages postés 26 Date d'inscription vendredi 24 août 2007 Statut Membre Dernière intervention 4 juin 2008 - 22 sept. 2007 à 00:08
A voir également:
- Petit souci de formule
- Formule si et - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Formule excel moyenne - Guide
- Formule excel - Guide
- Excel mise en forme conditionnelle formule - Guide
30 réponses
Sacabouffe
Messages postés
9427
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
29 mai 2009
1 834
24 août 2007 à 23:50
24 août 2007 à 23:50
Salut Lefleau
Si c'est juste une indication que tu veux:
Utilise le fait que ln(x) est congru à un unique réel m modulo ln(10) avec 0=< m < ln(10).
Si l'indication de suffit pas, dis moi...
Si c'est juste une indication que tu veux:
Utilise le fait que ln(x) est congru à un unique réel m modulo ln(10) avec 0=< m < ln(10).
Si l'indication de suffit pas, dis moi...
lefleau02
Messages postés
26
Date d'inscription
vendredi 24 août 2007
Statut
Membre
Dernière intervention
4 juin 2008
25 août 2007 à 09:43
25 août 2007 à 09:43
d'accord donc deja merci pour ta réponse et si j'ai bien compris
j'utilise ln(x)=m(ln(10)) mais ensuite est ce que je peux utilisé l'inverse de ln(x) et aussi est ce que c'est la meme que log(10) soit 10^x ?
et oui je suis un noob en math mais bon je me rattrape en programmation
j'utilise ln(x)=m(ln(10)) mais ensuite est ce que je peux utilisé l'inverse de ln(x) et aussi est ce que c'est la meme que log(10) soit 10^x ?
et oui je suis un noob en math mais bon je me rattrape en programmation
Sacabouffe
Messages postés
9427
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
29 mai 2009
1 834
25 août 2007 à 10:51
25 août 2007 à 10:51
Non, non... c'est pas ça.
ln(x) est congru à un unique réel m modulo ln(10) avec 0=< m < ln(10) ça veut dire:
il existe un unique m € R et un unique n € Z tels que:
(1)0=< m < ln(10)
et
(2)ln(x) = m + n.ln(10)
En fait si tu connais pas ce tout petit résultat, ça prend pas 3 pages pour le démonter, il faut juste utiliser la partie entière:
Soit n la partie entière de ln(x)/ln(10).
Alors par définition de la partie entière on a:
n=< ln(x)/ln(10) < n+1
Notant m=ln(x) - n.ln(10) on vérifie facilement que m et n vérifient (1) et (2).
Pour la suite de ton problème tu passes à l'exponentielle.
Ensuite pour le truc avec M1 c'est la même chose, utilise la congruence de 10.ln(M) modulo ln(10).
Le fait que l'entier y1 est compris entre 0 et 9 découlera des inégalités que tu as sur M et M1.
ln(x) est congru à un unique réel m modulo ln(10) avec 0=< m < ln(10) ça veut dire:
il existe un unique m € R et un unique n € Z tels que:
(1)0=< m < ln(10)
et
(2)ln(x) = m + n.ln(10)
En fait si tu connais pas ce tout petit résultat, ça prend pas 3 pages pour le démonter, il faut juste utiliser la partie entière:
Soit n la partie entière de ln(x)/ln(10).
Alors par définition de la partie entière on a:
n=< ln(x)/ln(10) < n+1
Notant m=ln(x) - n.ln(10) on vérifie facilement que m et n vérifient (1) et (2).
Pour la suite de ton problème tu passes à l'exponentielle.
Ensuite pour le truc avec M1 c'est la même chose, utilise la congruence de 10.ln(M) modulo ln(10).
Le fait que l'entier y1 est compris entre 0 et 9 découlera des inégalités que tu as sur M et M1.
lefleau02
Messages postés
26
Date d'inscription
vendredi 24 août 2007
Statut
Membre
Dernière intervention
4 juin 2008
25 août 2007 à 14:32
25 août 2007 à 14:32
et bien la c'est parfait je te remercie beaucoup tu m'as bien débloqué encore une fois merci
je ne termine pas encore se sujet pour au cas ou j'aurais encore quelque questions mais sa devrait aller
je ne termine pas encore se sujet pour au cas ou j'aurais encore quelque questions mais sa devrait aller
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Sacabouffe
Messages postés
9427
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
29 mai 2009
1 834
25 août 2007 à 18:35
25 août 2007 à 18:35
OK, pas de problème...
Sacabouffe
Messages postés
9427
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
29 mai 2009
1 834
25 août 2007 à 19:12
25 août 2007 à 19:12
Ah... autre chose...
J'ai pas montré l'unicité de m et n dans mon message (t'en parlais pas dans l'énoncé).
Si t'en as besoin tu le feras :-) ça prend 2 lignes...
J'ai pas montré l'unicité de m et n dans mon message (t'en parlais pas dans l'énoncé).
Si t'en as besoin tu le feras :-) ça prend 2 lignes...
lefleau02
Messages postés
26
Date d'inscription
vendredi 24 août 2007
Statut
Membre
Dernière intervention
4 juin 2008
26 août 2007 à 20:20
26 août 2007 à 20:20
oui je te remercie je pense que sa je pourrai au moins le faire lol tu va pas faire tout mon devoir ^^
lefleau02
Messages postés
26
Date d'inscription
vendredi 24 août 2007
Statut
Membre
Dernière intervention
4 juin 2008
12 sept. 2007 à 15:22
12 sept. 2007 à 15:22
Malheureusement je n'ai pas réussi a résoudre mon problème
Alors pour info
Les congruences on était abordé mais pas détaillé
alors comme je tourne en rond pour résoudre le problème pourrais tu me détailler le calcul pour la première question du sujet s'il te plait ?
Alors pour info
Les congruences on était abordé mais pas détaillé
alors comme je tourne en rond pour résoudre le problème pourrais tu me détailler le calcul pour la première question du sujet s'il te plait ?
Sacabouffe
Messages postés
9427
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
29 mai 2009
1 834
12 sept. 2007 à 17:29
12 sept. 2007 à 17:29
Rebonjour
Bon ben c'est pas trop évident de taper des trucs dans un post sans éditeur de texte. Le mieux c'est que tu récupères ce fichier.
S'il y a ds trucs que tu comprends pas dis-moi.
Bonne fin de journée.
PS : j'ai pas relu, il y a peut-être des erreurs...
Bon ben c'est pas trop évident de taper des trucs dans un post sans éditeur de texte. Le mieux c'est que tu récupères ce fichier.
S'il y a ds trucs que tu comprends pas dis-moi.
Bonne fin de journée.
PS : j'ai pas relu, il y a peut-être des erreurs...
lefleau02
Messages postés
26
Date d'inscription
vendredi 24 août 2007
Statut
Membre
Dernière intervention
4 juin 2008
12 sept. 2007 à 21:23
12 sept. 2007 à 21:23
ok je comprend mieux maintenant la partie exponentiel je n'y arrivé pas du coup je bloqué bettement
je te remercie beaucoup j'ai plus qu'a bien le comprendre le complete et a l'ajouté a l'interface que je viens de finir
je te remercie beaucoup j'ai plus qu'a bien le comprendre le complete et a l'ajouté a l'interface que je viens de finir
lefleau02
Messages postés
26
Date d'inscription
vendredi 24 août 2007
Statut
Membre
Dernière intervention
4 juin 2008
14 sept. 2007 à 22:49
14 sept. 2007 à 22:49
Décidément j'ai encore une petite question
le but initial de cette démonstration était de dégager un algorithme pour la calcul de log10(x)
Donc la démonstration je l'ai comprise sa il n'y a pas de souci seulement je me retrouve bloqué par les deux inconnu M et y
si je fait apparaitre log10(x) sa donne sa
log10(x) = (ln M + ln 10^y) / ln 10
alors est ce que je part pas du tout de la bonne formule ? est ce que j'ai fait une erreur ?
le but initial de cette démonstration était de dégager un algorithme pour la calcul de log10(x)
Donc la démonstration je l'ai comprise sa il n'y a pas de souci seulement je me retrouve bloqué par les deux inconnu M et y
si je fait apparaitre log10(x) sa donne sa
log10(x) = (ln M + ln 10^y) / ln 10
alors est ce que je part pas du tout de la bonne formule ? est ce que j'ai fait une erreur ?
Sacabouffe
Messages postés
9427
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
29 mai 2009
1 834
15 sept. 2007 à 17:58
15 sept. 2007 à 17:58
Salut Lefleau02
Là tout à coup je me rend compte que j'ai été un peu stupide de travailler avec le logarithme népérien pour ton problème. C'était carrément plus naturel avec le logarithme en base 10, plus simple et en plus t'aurais surement mieux vu d'où allait bien pouvoir venir ton algorithme.
Du coup prends plutôt ce fichier.
Pour ton algorithme, l'égalité que tu as écrite est juste (au passage oublie pas que log10 = ln/ln(10)) et je pense que c'est bien comme ça qu'il faut partir.
Tu as log10(x) = y + log10(M) avec 0 =< log10(M) < 1
Ensuite 10 log10(M) = y1 + log10(M1) avec 0 =< log10(M1) < 1
C'est-à-dire log10(M) = y1/10 + log10(M1)/10 avec 0 =< log10(M1)/10 < 1/10
Et donc log10(x) = y + y1/10 + log10(M1)/10 avec 0 =< log10(M1)/10 < 1/10
Et tu itères le procédé M1^10=M2.10^y2 avec 1 =< M2 < 10 et y2 € {0,1,2, ..., 9} .
Dans ce cas tu as log10(x) = y + y1/10 + y2/100 + log10(M2)/100 avec 0 =< log10(M2)/100 < 1/100.
Bis repetita...
Du coup tu vois que pour tout n, yn est la nième décimale de log10(x) car
log10(x) = y + y1/10 + ......... + yn/10^n + log10(Mn)/10^n avec 0 =< log10(Mn)/10^n < 1/10^n
Voilà...
Et tu arrêtes ton algorithme à la décimale que tu veux. C'est bon? Tu veux que je détailles un peu plus?
Là tout à coup je me rend compte que j'ai été un peu stupide de travailler avec le logarithme népérien pour ton problème. C'était carrément plus naturel avec le logarithme en base 10, plus simple et en plus t'aurais surement mieux vu d'où allait bien pouvoir venir ton algorithme.
Du coup prends plutôt ce fichier.
Pour ton algorithme, l'égalité que tu as écrite est juste (au passage oublie pas que log10 = ln/ln(10)) et je pense que c'est bien comme ça qu'il faut partir.
Tu as log10(x) = y + log10(M) avec 0 =< log10(M) < 1
Ensuite 10 log10(M) = y1 + log10(M1) avec 0 =< log10(M1) < 1
C'est-à-dire log10(M) = y1/10 + log10(M1)/10 avec 0 =< log10(M1)/10 < 1/10
Et donc log10(x) = y + y1/10 + log10(M1)/10 avec 0 =< log10(M1)/10 < 1/10
Et tu itères le procédé M1^10=M2.10^y2 avec 1 =< M2 < 10 et y2 € {0,1,2, ..., 9} .
Dans ce cas tu as log10(x) = y + y1/10 + y2/100 + log10(M2)/100 avec 0 =< log10(M2)/100 < 1/100.
Bis repetita...
Du coup tu vois que pour tout n, yn est la nième décimale de log10(x) car
log10(x) = y + y1/10 + ......... + yn/10^n + log10(Mn)/10^n avec 0 =< log10(Mn)/10^n < 1/10^n
Voilà...
Et tu arrêtes ton algorithme à la décimale que tu veux. C'est bon? Tu veux que je détailles un peu plus?
lefleau02
Messages postés
26
Date d'inscription
vendredi 24 août 2007
Statut
Membre
Dernière intervention
4 juin 2008
15 sept. 2007 à 18:05
15 sept. 2007 à 18:05
je te remercie pour ta reponse je vais prendre le temps de bien regarder et de comprendre toutes tes explications et je te dirais si j'ai tout compris
en tout cas merci pour ta patience
en tout cas merci pour ta patience
Sacabouffe
Messages postés
9427
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
29 mai 2009
1 834
15 sept. 2007 à 18:10
15 sept. 2007 à 18:10
De rien, ça me dérange pas...
lefleau02
Messages postés
26
Date d'inscription
vendredi 24 août 2007
Statut
Membre
Dernière intervention
4 juin 2008
15 sept. 2007 à 18:13
15 sept. 2007 à 18:13
Pour le fichier je viens de le parcourir et je pense avoir compris par contre je ne comprend pas comment tu passe de cette ligne
C'est-à-dire log10(M) = y1/10 + log10(M1)/10 avec 0 =< log10(M1)/10 < 1/10
a celle ci
Et donc log10(x) = y + y1/10 + log10(M1)/10 avec 0 =< log10(M1)/10 < 1/10
C'est-à-dire log10(M) = y1/10 + log10(M1)/10 avec 0 =< log10(M1)/10 < 1/10
a celle ci
Et donc log10(x) = y + y1/10 + log10(M1)/10 avec 0 =< log10(M1)/10 < 1/10
Sacabouffe
Messages postés
9427
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
29 mai 2009
1 834
15 sept. 2007 à 18:49
15 sept. 2007 à 18:49
En remplaçant log10(M) = y1/10 + log10(M1)/10 dans la ligne log10(x) = y + log10(M).
lefleau02
Messages postés
26
Date d'inscription
vendredi 24 août 2007
Statut
Membre
Dernière intervention
4 juin 2008
15 sept. 2007 à 21:03
15 sept. 2007 à 21:03
donc au niveau programmation soit je fait une fonction recursive soit jutilise le logarithme népérien c'est sa ? j'ai bien compris ?
et une autre question comment déterminé M et y ? je teste toute les solution ?
et une autre question comment déterminé M et y ? je teste toute les solution ?
Sacabouffe
Messages postés
9427
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
29 mai 2009
1 834
16 sept. 2007 à 03:18
16 sept. 2007 à 03:18
Euh ben non, en si je t'ai dit de pas oublier que log10 = ln/ln(10) dans le mesage 12 c'était parce que ta formule log10(x) = (ln M + ln 10^y) / ln 10 de ton message 11 se simplifiait en log10(x) = y + log10(M).
Pour ton algorithme je pense que tu dois te fixer un nombre de décimales au début (appelons le n) et tu fais une boucle jusqu'à ce que t'atteignes n en incrémentant à chaque boucle la valeur du log10 calculé:
premier passage : log10 = y
deuxième passage log10 = log10 + y1/10
troisième passage log10 = log10 +y2/100
etc...
et au final log10 = y + y1/10 + ..... + yn/10^n
Pour déterminer le M et le y il y a que la première fois que c'est un peu chiant.
En fait c'est facile de vérifier que y= inf { p ; x/10^p < 10 } (d'ailleurs si tu veux faire comme ça pour les 2 premières questions ça reste possible et ça te permet de faire le lien avec ton algorithme).
Pour le tout premier passage dans la boucle le mieux c'est de séparer le cas où x < 1 et le cas où x >= 1.
Si x < 1, tu pars de y=-1 et tu diminues alors y jusqu'à ce que x/10^y >= 10 et le bon y c'est celui qui vaut celui que tu viens de tester +1.
Si x >= 1, la première valeur de y (en partant de 0 et en augmentant) telle que x/10^y < 10 est la bonne.
Pour les boucles suivantes pas besoin de faire de disjonction de cas puisque tu as tout le temps Mn^10 > = 1. Tu pars de 0 et tu augmentes.
Voilà et je me permets d'apporter une toute petite modification à ce que j'ai dit au message 12:
""Du coup tu vois que pour tout n, yn est la nième décimale de log10(x)""
En fait c'est vrai si x >= 1, sinon c'est pas tout à fait ça...
Pour ton algorithme je pense que tu dois te fixer un nombre de décimales au début (appelons le n) et tu fais une boucle jusqu'à ce que t'atteignes n en incrémentant à chaque boucle la valeur du log10 calculé:
premier passage : log10 = y
deuxième passage log10 = log10 + y1/10
troisième passage log10 = log10 +y2/100
etc...
et au final log10 = y + y1/10 + ..... + yn/10^n
Pour déterminer le M et le y il y a que la première fois que c'est un peu chiant.
En fait c'est facile de vérifier que y= inf { p ; x/10^p < 10 } (d'ailleurs si tu veux faire comme ça pour les 2 premières questions ça reste possible et ça te permet de faire le lien avec ton algorithme).
Pour le tout premier passage dans la boucle le mieux c'est de séparer le cas où x < 1 et le cas où x >= 1.
Si x < 1, tu pars de y=-1 et tu diminues alors y jusqu'à ce que x/10^y >= 10 et le bon y c'est celui qui vaut celui que tu viens de tester +1.
Si x >= 1, la première valeur de y (en partant de 0 et en augmentant) telle que x/10^y < 10 est la bonne.
Pour les boucles suivantes pas besoin de faire de disjonction de cas puisque tu as tout le temps Mn^10 > = 1. Tu pars de 0 et tu augmentes.
Voilà et je me permets d'apporter une toute petite modification à ce que j'ai dit au message 12:
""Du coup tu vois que pour tout n, yn est la nième décimale de log10(x)""
En fait c'est vrai si x >= 1, sinon c'est pas tout à fait ça...
lefleau02
Messages postés
26
Date d'inscription
vendredi 24 août 2007
Statut
Membre
Dernière intervention
4 juin 2008
16 sept. 2007 à 09:50
16 sept. 2007 à 09:50
D'accord je comprend a peu pres pour determiner les variable
et pour ce qui est ce la programmation je devrai pouvoir faire un truc du genre
public static nDecimalCourante;
et pour ce qui est ce la programmation je devrai pouvoir faire un truc du genre
public static nDecimalCourante;
public static float log10X(int x, int nDecimalSouhaite) { // definition des variable // Calcul du premier log // incrementation de nDecimal // test de nDecimalCourante Si nDecimalSouhaite!=nDecimalCourante on rappel log }
Sacabouffe
Messages postés
9427
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
29 mai 2009
1 834
16 sept. 2007 à 15:54
16 sept. 2007 à 15:54
C'est en C que tu le fais?
J'ai un peu oublié ce langage depuis le temps...
En Matlab ça donnerait un truc comme ça:
Et pis après il y a la possibilité d'améliorer pour comparer le résultat avec la fonction log10 de Matlab, etc...
Il se peut que l'appellation "nieme décimale" pour l'arrêt de la boucle soit pas apprécié vu que c'est pas vraiment la "nieme décimale" quand x<1. Tu peux éventuellement dire "approximation à 10^(-n) près", ce sera peut-être mieux...
J'ai un peu oublié ce langage depuis le temps...
En Matlab ça donnerait un truc comme ça:
function[res]=log10app(x,n) clear y; clear M; clear res; res=0; M=0; format long if (x<=0 || n<0) res='Erreur'; else for k=0:n y=0; if k==0 if x<1 while x/10^(y-1)<10 y=y-1; end else while x/10^y>=10 y=y+1; end end M=x/10^y; res=y; else while M^10/10^y>=10 y=y+1; end M=M^10/10^y; res=res+y/10^k; end end end
Et pis après il y a la possibilité d'améliorer pour comparer le résultat avec la fonction log10 de Matlab, etc...
Il se peut que l'appellation "nieme décimale" pour l'arrêt de la boucle soit pas apprécié vu que c'est pas vraiment la "nieme décimale" quand x<1. Tu peux éventuellement dire "approximation à 10^(-n) près", ce sera peut-être mieux...