Partie IPartie IIPartie IIIConsidérons la solution algorithmique au problème numéro 
38 du livre "Tâches pour les enfants de 5 à 15 ans"
Calculez le montant:
 f r a c 1 1 c d o t 2  + f r a c 1 2 c d o t 3 + f r a c 1 3 c d o t 4 + . . . + F r a c 1 99 c d o t 100      
(avec une erreur ne dépassant pas 1% de la réponse)
Voici un algorithme pour calculer les sommes partielles de cette série dans 
Scheme (Lisp) dans 
drRacket (drRacket vous permet d'effectuer des calculs en fractions ordinaires):
#lang racket (define series_sum ( lambda (n) (if (= n 0) 0 (+ (/ 1 (* n (+ n 1))) (series_sum(- n 1))) ) ) ) (series_sum 10) (series_sum 100) (series_sum 1000) (series_sum 10000) (series_sum 100000) (series_sum 1000000) (define series_sum_1 ( lambda (n) (if (= n 0) 0 (+ (/ 1.0 (* n (+ n 1.0))) (series_sum_1(- n 1.0))) ) ) ) (series_sum_1 10) (series_sum_1 100) (series_sum_1 1000) (series_sum_1 10000) (series_sum_1 100000) (series_sum_1 1000000) 
Les deux derniers exemples drRacket calculés avec une erreur

Ce programme peut être exécuté sur ide 
ideone.com et 
codepad.org en ligne .
Le même algorithme en Python def series_sum(n): if n==0: return 0 else: return 1.0/(n*(n+1.0))+series_sum(n-1.0) print(series_sum(10)) print(series_sum(100)) 
Lien vers ideone.com
 Si nous considérons des sommes partielles dans des fractions ordinaires, nous pouvons voir que la somme de la série est
 f r a c n n + 1
Permettez-moi de vous rappeler que 
 lim fracnn+1= frac11+ frac1n= frac11=1 à 
n to inftyLe deuxième volume du cours de calcul différentiel et intégral 363 (4) examine le cas général
 sum frac1( alpha+n)( alpha+n+1)= frac1 alpha+1
La tâche du 
cours "Mathématiques pour les développeurs":
Trouver le nombre de membres dans une séquence 
 frac2n−14n+5 allongé en dehors de l'intervalle 
(1− frac11000;1+ frac11000)Passons au sujet principal de l'article.
Prenons un exemple de plus d'un livre de problèmes.
43 . Nombre de lapins (Fibonacci), forment une séquence 
(a1=1),1,3,5,8,13,21,34,..., dans lequel 
an+2=an+1+an pour tout le monde 
n=1,2,... . Trouvez le plus grand diviseur commun des nombres 
a100 et 
a99 .
Réponse: Deux nombres de Fibonacci adjacents sont des nombres premiers, c'est-à-dire 
 gcd(un+1,un)=1(Le pgcd est le plus grand commun diviseur, c'est-à-dire GCD).
«Preuve du livre« Au-delà des pages d'un manuel de mathématiques »[10-11]
Cap de spoilerDe l'égalité u n + 2 = u n + 1 + u n il s'ensuit que  g c d ( u n + 2 , u n + 1 ) = g c d ( u n + 1 , u n )  . En reculant de cette façon, nous arrivons à  gcd(u2,u1)= gcd(1,1)=1 , et donc deux nombres de Fibonacci adjacents sont des nombres premiers.
Preuve que 
 gcd(un+2,un+1)= gcd(un+1,un) le livre n'est pas donné, mais selon l'algorithme euclidien
 gcd(un+2,un+1)= gcd(un+1,r)où 
r - reste de la division 
un+2 sur 
un+1et depuis pour les numéros de Fibonacci 
r=unalors
 gcd(un+2,un+1)= gcd(un+1,un) Dans la tâche suivante, vous devez calculer le nombre d' 
or , 
 frac sqrt5+12 environ1618 . [Il s'agit du rapport d'aspect d'une carte postale qui reste similaire lors de la découpe d'un carré dont le côté est le plus petit côté de la carte postale.]
53 . Pour une séquence de nombres de Fibonacci 
an tâches 43 trouver la limite de la relation 
 fracan+1an tout en s'efforçant 
n à l'infini:
 fracan+1an=2, frac32, frac53, frac85, frac138, frac2113, frac3421.
Considérons les segments représentant les différences de deux membres adjacents de la série 
 fracan+1an .

Même les membres de la série 
 fracan+1an représentent une séquence croissante 
xn frac32, frac85, frac2113,...,
Membres de rang impair 
 fracan+1an représentent une séquence décroissante 
yn2, frac53, frac138,...,
Par le lemme d'intervalle intégré (Cours de calcul différentiel et intégral, 38)
c= limxn= limyn
Pour notre ligne à un moment donné 
c égalité équitable 
 fracan+2an+1= fracan+1anDiviser 
an+2=an+1+an sur 
an+1 nous obtenons l'équation 
 fracan+2an+1=1+ fracanan+1 .
En remplaçant 
 fracan+2an+1=x, fracanan+1= frac1x nous obtenons l' 
équation quadratique x=1+ frac1x .
Si dans le programme 
geogebra nous connectons les points 2 et 
 frac32 , 
 frac32 et 
 frac53 , 
 frac53 et 
 frac85 etc. - obtenir un chiffre 
auto-similaire
En général, il existe un algorithme standard pour calculer les nombres de Fibonacci en Python.
Cet algorithme est disponible sur 
Python.org def fib(n): a, b = 0, 1 while a < n: print(a) a, b = b, a+b fib(100) 
Vous pouvez vérifier le 
lienModifiez cet algorithme pour qu'il imprime une approximation du nombre d'or. Pour deux nombres adjacents a et b, nous diviserons la somme a + b par b
 def fib(n): a, b = 0.0 , 1.0 while a < n: print((a+b)/b) a, b = b, a+b fib(100) 
Vous pouvez vérifier le 
lienVoici quelques tâches du tutoriel 
SICP concernant le nombre d'or.
Les tâchesExercice 1.13.Démontrer que 
Fib (n) est l'entier le plus proche de 
 varphin/ sqrt5 où 
 varphi=(1+ sqrt5)/2 .
Exercice 1.35.Montrez que le nombre d'or 
 varphi (section 1.2.2) est un point fixe de transformation 
x à1+1/x et utiliser ce fait pour calculer 
 varphi en utilisant la procédure à virgule fixe.
Exercice 1.37.... Définir la procédure cont-frac de sorte que le calcul (cont-frac ndk) donne la valeur 
k - fraction continue finie élémentaire. Testez votre procédure en calculant des approximations à 1 / φ avec
 (cont-frac (lambda (i) 1.0) (lambda (i) 1.0) k) 
pour les valeurs séquentielles 
k .
  L'exemple suivant du livre de tâches "Tâches pour les enfants de 5 à 15 ans"
54 . Calculer la fraction continue infinie
1+ frac12+ frac11+ frac12+ frac11+ frac12+...
UPD Considérez l'équation
 alpha=1+ frac12+ frac1 alpha
Selon les théorèmes 236 et 235 du livre «Number Theory»:
 alpha= fracP1 alpha+P0Q1 alpha+Q0
Nous composons un tableau de valeurs 
Pn et 
Qn à 
n=0,1:pour que 
 alpha= frac3 alpha+12 alpha+1,2 alpha2−2 alpha−1=0et depuis 
 alpha>0, alors
 alpha= frac1+ sqrt32
Considérez le problème du livre «Derrière les pages d'un manuel de mathématiques» [10-11]
4 . Afficher ce numéro 
 sqrt1+ sqrt1+ sqrt1+... égal au nombre 
 varphi définir le nombre d'or.
Considérez l' 
option xn= sqrtc+ sqrtc+...+ sqrtcCours de calcul différentiel et intégral, 35 (2)
De cette façon xn+1 obtenu de xn selon la formule
xn+1= sqrtc+xn
... Par le théorème principal, les options xn a une limite finie a . Pour le déterminer, on passe à la limite de l'égalité
x2n+1=c+xn;
Nous obtenons de telle manière que a satisfait l'équation quadratique
a2=c+a
Cette équation a les racines de différents signes; mais la limite qui nous intéresse a ne peut pas être négatif, par conséquent, il est exactement égal à la racine positive:
a= frac sqrt4c+1+12
D'où nous pouvons conclure que le "nombre d'or" est une solution à l'équation 
a2=c+aà 
c=1 .
De plus, dans le cours du calcul différentiel et intégral, 35 (3), un algorithme pour calculer le nombre inverse est considéré
Soit c Est un nombre positif et mettez xn=cyn . La relation de récursivité écrite ci-dessus sera remplacée par:
yn+1=yn(2−cyn)
Prendre la valeur initiale y0 sous la condition: 0<y0< frac1c nous obtenons cela yn augmente de façon monotone, aura tendance à  frac1c . Selon ce schéma, sur les machines à compter, le nombre inverse est calculé c .
Algorithme de calcul des nombres inverses 
c en Python:
( 
Ideone.com et 
codepad.org )
 def reciprocal(c,y0,n): arr=[] for i in range(n): arr.append(y0) y0=y0*(2-c*y0) return arr 
La fonction réciproque prend un nombre en entrée 
c valeur initiale 
y0 , nombre d'itérations 
n et renvoie un tableau "d'approximations" au nombre 
 frac1c .
y0=0,1 à 
c<10y0=0,01 à 
 y0=0,001
y0=0,001 à 

etc.
Exemples de fonctionnement de la fonction réciproque avec divers 
c >>> reciprocal(3,0.1,10) 
[0,1, 0,17, 0,2533, 0,31411733000000003, 0,3322255689810133, 0,3333296519077525,
0.3333333332926746, 0.3333333333333333337, 0.3333333333333333337, 0.3333333333333333337]
 >>> reciprocal(8,0.1,10) 
[0,1, 0,12, 0,1248, 0,12499968, 0,1249999999991808, 0,125, 0,125, 0,125, 0,125, 0,125]
 >>> reciprocal(5,0.1,10) 
[0,1, 0,15000000000000002, 0,18750000000000003, 0,19921875000000003, 0,19999694824218753, 0,1999999999534339, 0,20000000000000004, 0,1999999999999999998,
0,1999999999999999998, 0,1999999999999999998]
Interprétation géométrique
Essayons d'utiliser la méthode tangente pour approximer le nombre inverse.
Tangentes 
y=f′(x0)(x−x0)+f(x0) graphique de fonction 
y= frac1x sont exprimés par la formule 
y= frac2x0− fracxx20Substitution de nombres 

 au lieu de 
x0 on obtient les équations des tangentes
y=2−x
y=1− fracx4
y= frac23− fracx9
y= frac12− fracx16
Construisez ces graphiques

Si vous déplacez l'hyperbole vers le bas pour 
 alpha , puis il traverse l'axe des abscisses au point 
 frac1 alpha .
L'équation tangente est convertie en 
y= frac2x0− fracxx20− alphaEn outre, l'équation de l'équation de la tangente à zéro et l'expression 
x nous obtenons l'équation 
x=x0− fracf(x0)f′(x0)Au lieu de cela 
f(x0) remplaçant 
 frac1x0− alphaAu lieu de cela 
f′(x0) remplaçant 
− frac1x20Nous obtenons l'expression 
x=x0+( frac1x0− alpha)x20En élargissant les supports, nous obtenons 
x=x0+x0− alphax20Remplaçant 

 dans l'équation 
x=x0(2− alphax0) et voir quelles valeurs vont "traverser" 
x à 
 alpha=2 nous obtenons 

Substitution de ces valeurs dans l'équation 
y= frac2x0− fracxx20−2 nous devenons directs
y=0,111− fracx0,897
y=0,222− fracx0,81
y=0,816− fracx0,504
y=0,857− fracx0,49
y=1,5− fracx0,326
y=2− fracx0,25

Extraction de racine carrée
Revenant aux expressions irrationnelles, nous considérons une méthode itérative d'extraction de la racine carrée.
Nous allons écrire un algorithme en utilisant 
la méthode itérative Heronxn+1= frac12(xn+ fracaxn)
 def square_root(a,n):  
codepad.orgCalcul de la racine carrée à l'aide des fractions continues utilisées par 
Rafael BombelliPour trouver la valeur  sqrtn , on définit d'abord toute son approximation:  sqrtn=a pmr où  . Alors n=(a pmr)2=a2 pm2ar+r2 . De là, il est facile de déduire que r= frac|n−a2|2a pmr . Remplacement de l'expression résultante dans la formule  sqrtn=a pmr , nous obtenons une expansion continue des fractions:
 . Alors n=(a pmr)2=a2 pm2ar+r2 . De là, il est facile de déduire que r= frac|n−a2|2a pmr . Remplacement de l'expression résultante dans la formule  sqrtn=a pmr , nous obtenons une expansion continue des fractions:
a pm frac|na2|2a pm frac|na2|2a pm frac|na2|2a pm cdots
Ainsi, nous pouvons écrire l'algorithme d'extraction de racine carrée en utilisant la décomposition en une fraction continue
 def square_root(n,a,n_count):  
codepad.orgEn général, les nombres réels et complexes, ainsi que les fonctions d'une ou plusieurs variables, peuvent être des numérateurs et des dénominateurs privés.
La méthode d'extraction de la partie entière permet de représenter un nombre irrationnel sous la forme d'une fraction continue infinie avec des unités dans les numérateurs (numérateurs fréquents égaux à l'unité).
Voici un exemple d'une expansion fractionnelle continue d'un nombre 
 sqrt5 extrait du livre "Algèbre"
 sqrt5−2= frac( sqrt5−2)( sqrt5+2) sqrt5+2= frac1 sqrt5+2
De cette façon  sqrt5=2+ frac1 sqrt5+2
Sélectionnez la partie entière du nombre  sqrt5+2:E( sqrt5+2)=4 . Moyens  sqrt5+2 peut être représenté comme  . Il est clair que  alpha= sqrt5+2−4= sqrt5−2 donc  sqrt5+2=4+ sqrt5+2 . Encore une fois, nous détruisons l'irrationalité dans le numérateur du deuxième terme:
 . Il est clair que  alpha= sqrt5+2−4= sqrt5−2 donc  sqrt5+2=4+ sqrt5+2 . Encore une fois, nous détruisons l'irrationalité dans le numérateur du deuxième terme:
 sqrt5−2= frac1 sqrt5+2
Le résultat est:
 sqrt5=2+ frac14+ frac1 sqrt5+2
Faisons une autre étape similaire:
 sqrt5=2+ frac14+ frac14+ frac1 sqrt5+2
Il est facile de voir que le processus d'isolement de la partie entière et la formation d'une fraction continue dans cet exemple n'a pas de fin. Dans chaque nouveau dénominateur apparaîtra 4 et terme  sqrt5−2 . Il est donc clair que  sqrt5 est représentée comme une fraction continue infinie:
 sqrt5=[2,4,4,4,...]
Hypothèse
Si 
d in mathbbN, sqrtd notin mathbbN puis la fraction continue du nombre 
 sqrtd+[ sqrtd] purement périodique.
Evarist Galois a prouvé cette hypothèse.
C'est-à-dire si à la partie non périodique de la fraction 
[1;2,2,2,...]= sqrt2 ajouter toute la partie 
[ sqrt2]=1 alors nous obtenons une fraction purement périodique 
![[2,2,2, ...] $](https://habrastorage.org/getpro/habr/formulas/b6e/953/dd7/b6e953dd761156c7baf3eba299c5871e.svg)
 .
 sqrt3=[1;1,2,...]; sqrt3+1=[2,1,...] sqrt5=[2;4,4,4,...]; sqrt5+2=[4,4,4,...] sqrt6=[2;2,4,...]; sqrt6+2=[4,2,...] sqrt13=[3;1,1,1,1,6,...]; sqrt13+3=[6,1,1,1,1,1,...]Cloud Computing WolframAlpfaWolframAlpfa calcule les fractions continues en utilisant l'opération de fraction continue
Calculez la valeur 
 sqrt3le lienCalculez la valeur 
 sqrt3+1le lien Si dans la décomposition racine selon la méthode Bombelli
\ sqrt {n} = a \ pm {\ frac {| na ^ {2} |} {2a \ pm {\ frac {| na ^ {2} |} {2a \ pm {\ frac {| na ^ { 2} |} {2a \ pm \ cdots}}}}}}} $
ajouter au premier terme 
a , on obtient une fraction purement périodique
\ sqrt {n} + a = 2a \ pm {\ frac {| na ^ {2} |} {2a \ pm {\ frac {| na ^ {2} |} {2a \ pm {\ frac {| na ^ {2} |} {2a \ pm \ cdots}}}}}}}
Il reste à amener la fraction à une forme plus familière (avec des unités au numérateur).
Divisez le numérateur et le dénominateur de la fraction par 
|n−a2| nous obtenons l'expression
\ sqrt {n} + a = 2 a \ pm {\ frac {1} {\ frac {2a} {| na ^ {2} |} \ pm {\ frac {1} {2a \ pm {\ frac { 1} {\ frac {2a} {| na ^ {2} |} \ pm \ cdots}}}}}}}
De cette façon
 sqrt2+1=2+ frac1 frac21+ frac12+ frac1 frac21+...=[2,2,2,...]
 sqrt3+1=2+ frac1 frac22+ frac12+ frac1 frac22+...=[2,1,...]
 sqrt5+2=4+ frac1 frac41+ frac14+ frac1 frac41+...=[4,4,4,...]
 sqrt6+2=4+ frac1 frac42+ frac14+ frac1 frac42+...=[4,2,...]
 sqrt13+3=6+ frac1 frac64+ frac16+ frac1 frac64+...=[6, frac32,...]
Nous allons écrire un programme qui calcule l'approximation de la fraction continue 
[6, frac32,...] #lang racket (define continued_fraction ( lambda (n) (if (= n 0) 1 (+ 6 (/ 1 (+ 3/2 (/ 1 (continued_fraction(- n 1)))))) ))) (continued_fraction 4) 
codepad.orgDans la quatrième étape, nous obtenons 

 ce qui est égal 

 tout 
 sqrt13+3 environ6,60555127 .
PS Résoudre le problème («Problèmes pour les enfants de 5 à 15 ans»)
27 . Prouver que le reste de la division d'un nombre 
2p−1 premier impair
p est égal à 
1(exemples: 
22=3a+1,24=5b+1,26=7c+1,210−1=1023=10 cdot93) .
Ce problème est examiné dans l'article 
Amazing Adventures of Continued Fractions du magazine Quantum.
Livres:
"Tâches pour les enfants de 5 à 15 ans" V. I. Arnold.
«Le cours du calcul différentiel et intégral» G. M. Fichtenholtz
"Théorie des nombres" A. A. Buchstab
«Derrière les pages d'un manuel de mathématiques» N. Ya. Vilenkin, L. P. Shibasov, Z. F. Shibasova
«Algèbre» N. Ya. Vilenkin, R. S. Guter, S. I. Schwarzburd
Arithmétique numérique Ercegovac Milos D., Lang Tomas
«La structure et l'interprétation des programmes informatiques» Harold Abelson, Gerald Sassman
Voir aussi
L'article "Sur une tâche qui n'est plus proposée lors de l'entretien".
Le 
blog de Spice IT Recruitment 
publie des tâches d'entrevue dans diverses entreprises.
Tâches pour les interviews dans Yandex.
Dans 
cette vidéo, A. Savvateev résout des problèmes avec des interviews chez Tesla.