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 à

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:
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:
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.