MacBookPro.lan 2026-5-2:21:34:24

This commit is contained in:
oskar
2026-05-02 21:34:24 +02:00
parent 9a7b7f4c66
commit 700f6d235b
+155 -2
View File
@@ -534,9 +534,162 @@ Conway leur donne des noms d'éléments (de l'hydrogène à l'uranium, ce qui fa
> [!proposition]+ Calcul de la valeur de $\lambda$
> L
> L'annexe 1 fournit le code permettant (entre autres) une approximation de $\lambda$.
> Il est évident que $\lambda$ est un nombre algébrique de degré $92$.
> [!proposition]+ Théorème cosmologique
> Toute chaine (autre que $[\;]$ et $[22]$) finit, après assez de dérivations, par
# Annexes
## Code source utilisé pour le calcul
## Annexe 1 - Code source utilisé pour le calcul
```python
import numpy as np
# Liste de dictionnaires représentant les éléments
ELEMENTS = [{"num": 1, "name": "H", "deriv": ["H"]}, #{{{
{"num": 2, "name": "He", "deriv": ["Hf","Pa","H","Ca","Li"]},
{"num": 3, "name": "Li", "deriv": ["He"]},
{"num": 4, "name": "Be", "deriv": ["Ge","Ca","Li"]},
{"num": 5, "name": "B", "deriv": ["Be"]},
{"num": 6, "name": "C", "deriv": ["B"]},
{"num": 7, "name": "N", "deriv": ["C"]},
{"num": 8, "name": "O", "deriv": ["N"]},
{"num": 9, "name": "F", "deriv": ["O"]},
{"num": 10, "name": "Ne", "deriv": ["F"]},
{"num": 11, "name": "Na", "deriv": ["Ne"]},
{"num": 12, "name": "Mg", "deriv": ["Pm", "Na"]},
{"num": 13, "name": "Al", "deriv": ["Mg"]},
{"num": 14, "name": "Si", "deriv": ["Al"]},
{"num": 15, "name": "P", "deriv": ["Ho", "Si"]},
{"num": 16, "name": "S", "deriv": ["P"]},
{"num": 17, "name": "Cl", "deriv": ["S"]},
{"num": 18, "name": "Ar", "deriv": ["Cl"]},
{"num": 19, "name": "K", "deriv": ["Ar"]},
{"num": 20, "name": "Ca", "deriv": ["K"]},
{"num": 21, "name": "Sc", "deriv": ["Ho", "Pa", "H", "Ca", "Co"]},
{"num": 22, "name": "Ti", "deriv": ["Sc"]},
{"num": 23, "name": "V", "deriv": ["Ti"]},
{"num": 24, "name": "Cr", "deriv": ["V"]},
{"num": 25, "name": "Mn", "deriv": ["Cr", "Si"]},
{"num": 26, "name": "Fe", "deriv": ["Mn"]},
{"num": 27, "name": "Co", "deriv": ["Fe"]},
{"num": 28, "name": "Ni", "deriv": ["Zn", "Co"]},
{"num": 29, "name": "Cu", "deriv": ["Ni"]},
{"num": 30, "name": "Zn", "deriv": ["Cu"]},
{"num": 31, "name": "Ga", "deriv": ["Eu", "Ca","Ac","H","Ca","Zn"]},
{"num": 32, "name": "Ge", "deriv": ["Ho", "Ga"]},
{"num": 33, "name": "As", "deriv": ["Ge", "Na"]},
{"num": 34, "name": "Se", "deriv": ["As"]},
{"num": 35, "name": "Br", "deriv": ["Se"]},
{"num": 36, "name": "Kr", "deriv": ["Br"]},
{"num": 37, "name": "Rb", "deriv": ["Kr"]},
{"num": 38, "name": "Sr", "deriv": ["Rb"]},
{"num": 39, "name": "Y", "deriv": ["Sr", "U"]},
{"num": 40, "name": "Zr", "deriv": ["Y","H","Ca","Tc"]},
{"num": 41, "name": "Nb", "deriv": ["Er", "Zr"]},
{"num": 42, "name": "Mo", "deriv": ["Nb"]},
{"num": 43, "name": "Tc", "deriv": ["Mo"]},
{"num": 44, "name": "Ru", "deriv": ["Eu", "Ca","Tc"]},
{"num": 45, "name": "Rh", "deriv": ["Ho", "Ru"]},
{"num": 46, "name": "Pd", "deriv": ["Rh"]},
{"num": 47, "name": "Ag", "deriv": ["Pd"]},
{"num": 48, "name": "Cd", "deriv": ["Ag"]},
{"num": 49, "name": "In", "deriv": ["Cd"]},
{"num": 50, "name": "Sn", "deriv": ["In"]},
{"num": 51, "name": "Sb", "deriv": ["Pm", "Sn"]},
{"num": 52, "name": "Te", "deriv": ["Eu", "Ca","Sb"]},
{"num": 53, "name": "I", "deriv": ["Ho", "Te"]},
{"num": 54, "name": "Xe", "deriv": ["I"]},
{"num": 55, "name": "Cs", "deriv": ["Xe"]},
{"num": 56, "name": "Ba", "deriv": ["Cs"]},
{"num": 57, "name": "La", "deriv": ["Ba"]},
{"num": 58, "name": "Ce", "deriv": ["La", "H","Ca","Co"]},
{"num": 59, "name": "Pr", "deriv": ["Ce"]},
{"num": 60, "name": "Nd", "deriv": ["Pr"]},
{"num": 61, "name": "Pm", "deriv": ["Nd"]},
{"num": 62, "name": "Sm", "deriv": ["Pm", "Ca","Zn"]},
{"num": 63, "name": "Eu", "deriv": ["Sm"]},
{"num": 64, "name": "Gd", "deriv": ["Eu", "Ca","Co"]},
{"num": 65, "name": "Tb", "deriv": ["Ho", "Gd"]},
{"num": 66, "name": "Dy", "deriv": ["Tb"]},
{"num": 67, "name": "Ho", "deriv": ["Dy"]},
{"num": 68, "name": "Er", "deriv": ["Ho", "Pm"]},
{"num": 69, "name": "Tm", "deriv": ["Er", "Ca","Co"]},
{"num": 70, "name": "Yb", "deriv": ["Tm"]},
{"num": 71, "name": "Lu", "deriv": ["Yb"]},
{"num": 72, "name": "Hf", "deriv": ["Lu"]},
{"num": 73, "name": "Ta", "deriv": ["Hf", "Pa","H","Ca","W"]},
{"num": 74, "name": "W", "deriv": ["Ta"]},
{"num": 75, "name": "Re", "deriv": ["Ge", "Ca","W"]},
{"num": 76, "name": "Os", "deriv": ["Re"]},
{"num": 77, "name": "Ir", "deriv": ["Os"]},
{"num": 78, "name": "Pt", "deriv": ["Ir"]},
{"num": 79, "name": "Au", "deriv": ["Pt"]},
{"num": 80, "name": "Hg", "deriv": ["Au"]},
{"num": 81, "name": "Tl", "deriv": ["Hg"]},
{"num": 82, "name": "Pb", "deriv": ["Tl"]},
{"num": 83, "name": "Bi", "deriv": ["Pm", "Pb"]},
{"num": 84, "name": "Po", "deriv": ["Bi"]},
{"num": 85, "name": "At", "deriv": ["Po"]},
{"num": 86, "name": "Rn", "deriv": ["Ho", "At"]},
{"num": 87, "name": "Fr", "deriv": ["Rn"]},
{"num": 88, "name": "Ra", "deriv": ["Fr"]},
{"num": 89, "name": "Ac", "deriv": ["Ra"]},
{"num": 90, "name": "Th", "deriv": ["Ac"]},
{"num": 91, "name": "Pa", "deriv": ["Th"]},
{"num": 92, "name": "U", "deriv": ["Pa"]}]
#}}}
# dictionnaire numéro --> élément
# permet de retrouver un élément par son numéro atomique
NUM_OF = {elt["name"]: elt["num"] for elt in ELEMENTS}
#####################################################
# CRÉATION DE LA MATRICE DES DÉRIVATIONS D'ÉLÉMENTS #
#####################################################
# initialisation
matrix = [[0 for _ in range(len(ELEMENTS))] for _ in range(len(ELEMENTS))]
# remplissage
for elt in ELEMENTS:
num = elt["num"]
for dv_elt in elt["deriv"]:
matrix[num-1][NUM_OF[dv_elt]-1] += 1
# conversion en tableau numpy
matrix = np.array(matrix)
# AFFICHER LA MATRICE
print("Matrice 𝑀 :")
print("", ""*92, "\n",
"\n".join([''.join([" 12│12─12┼12"[val + 3*(9==col%10) + 6*(9==ln%10)] for col, val in enumerate(line)]) for ln, line in enumerate(matrix)]),
"\n", ""*92, "",
sep="")
# CALCUL DE λ
eigvals = np.linalg.eigvals(matrix)
λ = eigvals[np.argmax(np.abs(eigvals))]
print(f"λ = {np.real(λ)} + {np.imag(λ)}𝑖")
############################################################
# CALCUL DE LA PLUS PETITE BORNE POUR LE THÉORÈME CHIMIQUE #
############################################################
def nb_derivations_engendre_tous_les_elements(elt_num: int):
"""compte le nombre de dérivations nécessaires pour que l'élément numéro elt_num engendre tous
les autres"""
counts = np.zeros((92,))
counts[elt_num-1] = 1
derivations_count = 0
while np.min(counts) == 0:
counts = counts @ matrix
derivations_count += 1
return derivations_count
min_steps_required = 0
for elt_num in range(2, 93):
min_steps_required = max(min_steps_required,
nb_derivations_engendre_tous_les_elements(elt_num))
print("Borne pour le théorème chimique :", min_steps_required)
```