SéancedeTDetTP
pourMPetMP*
LycéeClémenceau
Décembre2016
Préliminaires.
Onpeutchargerlalibrairie‘decimal’:fromdecimalimport*quipermetdemanipulerdesnombresen
précisionarbitraire.
Onpeutlireicilasyntaxepourl’utilisationdesprogrammesavecDecimal:
https://docs.python.org/2/library/decimal.html
On peut s’inspirer des 3 documents newton.py, dichotomie.py et secante.py sur le site
http://plouffe.fr/IUT/Clemenceau
Articletraitantdusujetici:http://www.plouffe.fr/simon/gendev/ouici:
http://rxiv.org/pdf/1408.0193v1.pdf
Énoncé1
UtilisationdelaméthodedeNewtonpourlecalculdel’inversed’unnombreréel.
UtiliserunalgorithmeenPythonpourrésoudreleproblèmeenprécisionpardéfaut(53bits)eten
précisionétenduegrâceàl’appeldeDecimal(x).Calculerl’inversedePià1000décimales.
BiensûrpouravoirPià1000décimales,ilsuffitdetaperenUnixlacommande:
Énoncé2
Algorithmesplusavancéspourledéveloppementdesnombresenbasesdiverses.
LedéveloppementensériedeEngel.Soitunnombreréely,onpeutécrire
Référence:https://fr.wikipedia.org/wiki/D%C3%A9veloppement_en_s%C3%A9rie_de_Engel
Pouryarriver,onpeutremarquerquelaplupartdesalgorithmesdugenrefractioncontinuéeou
développementensériedeEngelpeuventêtredécritsdelafaçonsuivanteàl’aidede2suites.
Pourledéveloppementenfractioncontinuéebienconnuona
Fractioncontinue,icietsontlespartiesentièresetfractionnairesd’unnombre

,

Ilsuffitdoncdeprogrammerunepetiteroutinepermettantd’yarriver.
ParexempleavecledéveloppementensériedeEngel,Briggsaeul’idéed’utiliserl’algorithmesuivant.
Ouditautrement: 
,

Onremarquequelenombreexp1acommedéveloppementensériedeEngelquiest1,2,3,4,5,….
Égalementquesinh11,6,20,42,72,110,156,210,272,342,420,506,….
Calculerledéveloppementdetanh1aumoins10termesenPythonenutilisantlemoduledecimal.
Énoncé3
Danslemêmeesprit,ilexisteunautredéveloppementexotiquequiestledéveloppementenfraction
égyptienne.Leségyptiensavaientl’habituded’exprimerlesquantitésparuneséried’inversesd’entiers.
Plusprécisément,pourunnombreréelxdonnéona
1
1
1
1
1
Lesx,sontcalculésavecl’équationderécurrencesuivante.

1,y
Parexemple,enMaplel’algorithmedevient:
egyptien:=proc(s)
local i, j, max, aa, bb, lll, prod, S, T, kk;
S := evalf(frac(abs(s)));
max := 10^(Digits - 10);
prod := 1;
lll := [0];
while prod <= max do T := 1 + trunc(1/S); S := S - 1/T; lll := [T, op(1 .. nops(lll), lll)];
prod := prod*T end do;
aa := [seq(op(nops(lll) - kk, lll), kk = 1 .. nops(lll) - 1)];
bb := convert(aa, list);
RETURN(bb)
end proc
S’eninspirerpourécrireunprogrammeenPythonquifaitlamêmechoseettrouverledéveloppement
enfractionégyptiennedunombre0,99999999999999999999999…attentionlaréponsen’estpas
triviale.Sipossibleoudisponibleaveclemoduledecimalà100chiffresdeprécision.
Énoncé4
Danslamêmeveine,écrireunalgorithmeenPythonpourdévelopperunnombreenbasefactorielle.
Commeonlesait,lenombreeacommedéveloppement[1,1,1,1,1,…]danscettebase.UncertainW.
Sierpinskis’estdemandéunjoursilesautresnombresconnusavaientundéveloppementaussiélégant.
Eneffetonpeutécrire:pourunxdonée(toujoursentre0et1).
!,
 
!
Cequinousdonne 
0!
1!
2!
3!
4!
Oùlessontdonnésaveclaformulederécurrence.
Trouverledéveloppementenbasefactorielledunombre3enprécisionstandardPythoneten
précisionétenduegrâceaumoduledecimal.
Énoncé5
Pourlesbraves
Engénéralisantleprocédédavoirunnombreécritenbasediverseonpeutimaginerparexemplede
développerunnombrexenbase 1,pouryvoirapparaîtrededrôlesdemotifspourcertains
x,maisseulementcertainsx.Parexemple,lenombre1/24danscettebaseest:[0,22,18,22,18,22,18,
22,18,22,…].
Voicil’équivalentdecetalgorithmeenMaple:
Basesbizarres :=proc(s, b, sgn, k)
local i, j, v, premier, fin, lll, liste, w, baz;
baz := evalf(b);
v := abs(frac(evalf(s)));
fin := trunc(evalf(Digits/log10(b)));
lll := [seq(i^k*(baz^i + sgn), i = 1 .. fin)];
liste := [];
for i to fin do w := trunc(v*lll[i]); v := v - w/lll[i]; liste :=
[op(liste), w] end do;
RETURN(liste)
end proc
S’eninspirerpourécrireuneroutineenPythonfaisantlamêmechoseenprécisionstandardeten
précisionétenduegrâceaumoduledecimal.
Pourfinir,cedernieralgorithmeenbasebizarreapermisdetrouverceci:
124
 1264
 1


Énoncé6pourlesbravesparmilesbraves.
Laracinecarréeinverserapideetlaconstante
0x5f3759df.
Voicil’histoired’unétrangealgorithme.Ils’agitdecalculer
/
,pourtantsimple.
Cetalgorithmeestapparunécessairedanslesordinateurspourleurpermettred’afficherunescèneavec
delalumièreréfléchie.LacompagnieSiliconGraphicsadéveloppécetalgorithmepourquilpuisseêtre
trèsrapidesurdesmotsmémoirede32bitsdanslesannées1990.
Onpeutvoirunrésumétrèsinstructifici:
https://github.com/ajcr/ajcr.github.io/blob/master/_posts/2016‐04‐01‐fast‐inverse‐square‐root‐
python.md
Enfrançaissurwikipedia:
https://fr.wikipedia.org/wiki/Racine_carr%C3%A9e_inverse_rapide
Enanglais(meilleureexplication)
https://en.wikipedia.org/wiki/Fast_inverse_square_root
Ondemandealors(énoncé)decoder cet algorithme en Python et d’évaluer le temps de calcul
précisément.
Ensuite,comparercetalgorithmeavecceluiplusclassiqueducalculaveclaméthodedeNewtonpure.
Onpeutvoiricidifférentesméthodespourlecalculdelaracinecarrée:
https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Approximations_that_depend_on_
the_floating_point_representation
Aufinal,ondemandedetrouverlaméthodelaplusrapideenpointflottant(précisionnormaleenPython)
qualliesimplicitéd’implantationetrapidité.OncomprendquePythonn’estpaslelangageleplusrapide
pourcecalculmaisencomparantlesdifrentesméthodes:trouvercellequiseraitlaplusrapidesion
traduitl’algorithmeenC++avecuncodageutilisantleIEEE754.
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !