Deutsch English Français Italiano |
<ujtt5v$2t5a$1@cabale.usenet-fr.net> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!weretis.net!feeder8.news.weretis.net!news.trigofacile.com!usenet-fr.net!.POSTED!not-for-mail From: Olivier Miakinen <om+news@miakinen.net> Newsgroups: fr.sci.maths Subject: =?UTF-8?Q?Re:_[LONG][Solution_et_programme]_solve_a_+_k_b_~_entier_?= =?UTF-8?Q?=28_i.e._=c3=a0_moins_d'epsilon_d'un_entier_=29?= Date: Sat, 25 Nov 2023 23:41:03 +0100 Organization: There's no cabale Lines: 104 Message-ID: <ujtt5v$2t5a$1@cabale.usenet-fr.net> References: <654d3788$0$25951$426a74cc@news.free.fr> <uirkc1$176f$1@cabale.usenet-fr.net> <ujqo1k$1h3re$1@news.usenet.ovh> NNTP-Posting-Host: 200.89.28.93.rev.sfr.net Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Trace: cabale.usenet-fr.net 1700952063 95402 93.28.89.200 (25 Nov 2023 22:41:03 GMT) X-Complaints-To: abuse@usenet-fr.net NNTP-Posting-Date: Sat, 25 Nov 2023 22:41:03 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 SeaMonkey/2.49.4 In-Reply-To: <ujqo1k$1h3re$1@news.usenet.ovh> Bytes: 4993 Le 24/11/2023 18:55, robby a écrit : > comme mon accès usenet s'est stabilisé, je recopie ici l'échange par > mail et y répond dans le post [suivant, je suppose] Je ne sais pas si ta recopie de mon message est lisible en format flowed. Mais, au moins pour moi qui n'acceptes pas ce format, ça ne l'est pas du tout. Alors je vais recopier moi-même mon message. Le 13/11/2023 10:59, Fabrice NEYRET a écrit : > >> [...] > sur ce fil j'ai ces réponses de toi. ( mais il ne sais plus m'afficher > les précédentes) Euh... je ne comprends pas lesquelles, mais bon, tu en as eu. ;-) > s'il en manque un d'important, je dois pouvoir le retouver sur google > groupes, mais ce présent mail me parait clair. Ok. >> Tout d'abord, je rappelle que si b est entier ou rationnel, > > en pratique b = 2pi ;-) C'est parfait. >> [...] > >> Je calcule alors la fraction continue (ou continuée) de b2, et ses réduites >> successives, jusqu'à ce que le dénominateur de la réduite soit supérieur ou >> égal à 1/epsilon. > > mon but était d'éviter les boucles, mais comme b est une constante ça va. Oui, tu peux précalculer toutes les réduites pour tout niveau de précision souhaité. En plus, avec 2pi, il te suffit d'une poignée de valeurs à tester pour avoir une très bonne précision. >> a = 2.718281828459045 = 2 + 0.7182818284590451 (a1 + a2) >> b = 3.141592653589793 = 3 + 0.14159265358979312 (b1 + b2) >> profondeur = 3 >> Fraction continue de b2 : [0, 7, 15] >> Réduite de b2 : 15/106 = 0.14150943396226415 >> Ceci convient pour epsilon ≥ 1/106 = 0.009433962264150943 >> delta = 106 × b2 - 15 = 0.008821280518070296 >> delta est positif, on calcule incr = (1 − a2)/(delta) >> incr = 31.93619916789386, arrondi à 32 >> Le nombre k cherché vaut 32 × 106 = 3392 > > et on est alors certain qu'il n'y en a pas de plus petit ? Alors non. D'une part, parce que l'on peut améliorer la précision d'un facteur de 2 sans aucun problème. En effet, le calcul que je faisais s'assurait qu'entre deux valeurs successives de k j'obtenais deux résultats successifs espacés d'epsilon. Mais du coup, lorsqu'il y a un entier entre ces deux résultats successifs, cet entier est à une distance inférieure à epsilon/2 de l'un des deux résultats, ce qui est deux fois meilleur que la distance d'epsilon que j'avais envisagée ! Et d'autre part parce que les calculs que je fais dépendent essentiellement de la valeur de b et ne peuvent pas vraiment tenir compte de la valeur de a. Par exemple, si tu prends a = 7−2pi et b = 2pi, mon algorithme n'a aucun moyen de trouver que la valeur k = 1 donne exactement a + k b = 7. Chose amusante, avec ces valeurs a = 7−2pi et b = 2pi, le k trouvé pour la réduite 1/3 (k = 15) est plus grand que celui trouvé pour la réduite 1/4 (k = 8). > > le coup du delta était dans ton post rouge dont le contenu ne s'affiche > plus, mais je vois que c'est dans ton python: Mon post « rouge » (???) >> if delta > 0: >> print("delta est positif, on calcule incr = (1 − a2)/(delta)") >> incr = (1 - a2)/delta >> elif delta < 0: >> print("delta est négatif, on calcule incr = (a2)/(− delta)") >> incr = - a2/delta > >> C'est très efficace parce que la fraction continue de pi comporte >> plusieurs grands nombres (7, 15, 292) et que donc les approximations >> sont très bonnes. > > j'espere qu'il en va de même de 2pi, alors ! Je m'attendais à ce que ce soit vraiment le cas, mais il y a un peu plus de petits nombres au début pour 2pi que pour pi. Curieux. Cela dit c'est quand même bien mieux que e, surtout si tu vas jusqu'à la profondeur 7 et le nombre 146. pi : [3, 7, 15, 1, 292, 1, 1, 1, 2, 1, ...] 2pi : [6, 3, 1, 1, 7, 2, 146, 3, 6, 1, ...] -- Olivier Miakinen