Knuthova iterovaná mocninová notace
V matematice je notace iterovaných sil Knutha notací, která umožňuje psát velmi velká celá čísla a kterou zavedl Donald Knuth v roce 1976. Myšlenka této notace je založena na konceptu opakované umocňování , v stejně jako umocňování sestává z iterovaného násobení nebo násobení iterovaného sčítání .
Úvod
Iterovat jednoduchou funkci
Iterace jednoduché funkce se používá v aritmetice k definování složitější operace. Z funkce nástupce , která umožňuje konstrukci přirozených celých čísel po sobě jdoucích přírůstcích , je tak přidání definováno jako iterovaná přírůstek:
na+b=na+1+1+⋯+1⏟ b kopie 1{\ displaystyle {\ begin {matrix} a + b = a + \ underbrace {1 _ {} + 1+ \ dots +1} \\\ qquad \ quad \ \ b {\ mbox {kopie}} 1 \ end {matrix}}}Násobení je definováno jako iterovaný sčítání:
na×b=na+na+⋯+na⏟ b kopie na{\ displaystyle {\ begin {matrix} a \ times b = \ underbrace {a _ {} + a + \ dots + a} \\\ qquad \ quad \ \ b {\ mbox {kopie}} a \ end { matice}}}Podobně je umocňování definováno jako iterované násobení:
nab=na×na×⋯×na⏟ b kopie na{\ displaystyle {\ begin {matrix} a ^ {b} = \ underbrace {a _ {} \ times a \ times \ dots \ times a} \\\ qquad \ b {\ mbox {kopie}} a \ end {matrix}}}
Zobecnění
Z přírůstku jako primitivní operace umožňují následné iterace definovat nejprve sčítání, poté násobení a potom umocňování. Knuth chtěl tento princip zobecnit; za tímto účelem zavedl novou notaci pro umocňování, šipku nahoru :
na↑b=nab{\ displaystyle a \ uparrow b = a ^ {b}}který může takto zobecnit pomocí dvojité šipky nahoru pro iterovanou umocňování - kterou nazývá tetrace :
na↑↑b=na↑na↑⋯↑na⏟=nana...na b kopie na{\ displaystyle {\ begin {matrix} a \ uparrow \ uparrow b = \ underbrace {a \ uparrow a \ uparrow \ cdots \ uparrow a} = a _ {} ^ {a ^ {{} ^ {. \, ^ { . \, ^ {. \, ^ {a}}}}}} \\\ \ \ b {\ mbox {kopie}} a \ end {matice}}}V souladu s touto definicí získáváme:
3↑↑2=33=27{\ displaystyle 3 \ uparrow \ uparrow 2 = 3 ^ {3} = 27 \, \!}
3↑↑3=333=327=7625597484987{\ displaystyle 3 \ uparrow \ uparrow 3 = 3 ^ {3 ^ {3}} = 3 ^ {27} = 7 \, 625 \, 597 \, 484 \, 987 \, \!}
3↑↑4=3333=37625597484987{\ displaystyle 3 \ uparrow \ uparrow 4 = 3 ^ {3 ^ {3 ^ {3}}} = 3 ^ {7 \, 625 \, 597 \, 484 \, 987} \, \!}
3↑↑5=33333{\ displaystyle 3 \ uparrow \ uparrow 5 = 3 ^ {3 ^ {3 ^ {3 ^ {3}}}} \, \!}
atd.
Termín má formu a má číslice, tj. Více než desetinná místa.
3↑↑4=3333{\ displaystyle 3 \ uparrow \ uparrow 4 = 3 ^ {3 ^ {3 ^ {3}}}}12580 ... 39387{\ displaystyle 12580 ... 39387}3638334640025{\ displaystyle 3 \, 638 \, 334 \, 640 \, 025}3,6×1012{\ displaystyle 3,6 \ krát 10 ^ {12}}
Určitě umožňuje psát velmi velká čísla, ale Knuth se tím nezastavil. Pokračoval definováním operátoru trojité šipky nahoru, což je iterovaná aplikace operátoru dvojité šipky nahoru :
na↑↑↑b=na↑↑na↑↑⋯↑↑na⏟=na↑↑(na↑↑(⋯↑↑na))) b kopie na{\ displaystyle {\ begin {matrix} a \ uparrow \ uparrow \ uparrow b = \ underbrace {a _ {} \ uparrow \ uparrow a \ uparrow \ uparrow \ dots \ uparrow \ uparrow a} = a _ {} \ uparrow \ uparrow (a \ uparrow \ uparrow (\ dots \ uparrow \ uparrow a))) \\\ qquad \ qquad \ \, b {\ mbox {kopie}} a \ end {matice}}} (operace prováděné zprava doleva)
pak pokračoval s operátorem čtyřnásobné šipky nahoru :
na↑↑↑↑b=na↑↑↑na↑↑↑⋯↑↑↑na⏟b kopie na{\ displaystyle {\ begin {matrix} a \ uparrow \ uparrow \ uparrow \ uparrow b = \ underbrace {a _ {} \ uparrow \ uparrow \ uparrow a \ uparrow \ uparrow \ uparrow \ dots \ uparrow \ uparrow \ uparrow a} \ \\ qquad \ qquad \ quad b {\ mbox {kopie}} a \ end {matice}}}A tak dále. Obecné pravidlo říká, že operátor n -arrow je posloupnost operátorů ( n - 1) -arrows. Obecněji,
b{\ displaystyle b}b{\ displaystyle b}
na ↑↑...↑⏟ b=na ↑...↑⏟ na ↑...↑⏟ na ... na ↑...↑⏟ na ne ne-1 ne-1 ne-1 ⏟ b kopie na{\ displaystyle {\ begin {matrix} a \ \ underbrace {\ uparrow _ {} \ uparrow \! \! \ dots \! \! \ uparrow} \ b = a \ \ underbrace {\ uparrow \! \! \ tečky \! \! \ uparrow} \ a \ \ underbrace {\ uparrow _ {} \! \! \ dots \! \! \ uparrow} \ a \ \ dots \ a \ \ underbrace {\ uparrow _ {} \! \ ! \ dots \! \! \ uparrow} \ a \\\ quad \ \ \, n \ qquad \ \ \ \ underbrace {\ quad n _ {} \! - \! \! 1 \ quad \ \, n \ ! - \! \! 1 \ qquad \ quad \ \ \ \, n \! - \! \! 1 \ \ \} \\\ qquad \ qquad \ quad \ \ b {\ mbox {kopie}} a \ konec {matrix}}}
Komutativita
Vyjádření není komutativní : pokud se a a b liší, liší se od . Je to stejné pro provozovatele následujících: , , atd.
na↑b{\ displaystyle a \ uparrow b}b↑na{\ displaystyle b \ uparrow a}↑{\ displaystyle \ uparrow}↑↑{\ displaystyle \ uparrow \ uparrow}↑↑↑{\ displaystyle \ uparrow \ uparrow \ uparrow}
Závorky a asociativita
Ačkoli žádná závorka je psáno, výpočty spojené přednostní právo pro každého provozovatele , , atd
↑{\ displaystyle \ uparrow}↑↑{\ displaystyle \ uparrow \ uparrow}↑↑↑{\ displaystyle \ uparrow \ uparrow \ uparrow}
Příklad: =3↑2↑↑3↑4{\ displaystyle 3 \ uparrow 2 \ uparrow \ uparrow 3 \ uparrow 4}3↑(2↑↑(3↑4))){\ displaystyle 3 \ uparrow (2 \ uparrow \ uparrow (3 \ uparrow 4)))}
Je to proto, že umocňování není asociativní , proto je důležité pořadí, ve kterém jsou operace prováděny. Takže (tj. ) Není (tj. ). Ve výše uvedeném jsou operace prováděny zprava doleva, jinými slovy, závorky jsou spojeny zprava doleva.
3↑(2↑3){\ displaystyle 3 \ uparrow (2 \ uparrow 3)}3↑8=6561{\ displaystyle 3 \ uparrow 8 = 6 \, 561}(3↑2)↑3{\ displaystyle (3 \ uparrow 2) \ uparrow 3}9↑3=729{\ displaystyle 9 \ uparrow 3 = 729}
Všimněte si, že na základě pravidel moci dostaneme = = . Pokud by si někdo vybral prioritní sdružení vlevo, přivedlo by to druhého energetického operátora zpět k „jednoduché“ multiplikační operaci. Růst moci je silnější, když zvětšíme člen vpravo (to je u původu nekomutativity):
(3↑2)↑3{\ displaystyle (3 \ uparrow 2) \ uparrow 3}(3↑2)×(3↑2)×(3↑2){\ displaystyle (3 \ uparrow 2) \ krát (3 \ uparrow 2) \ krát (3 \ uparrow 2)}3↑(2×3){\ displaystyle 3 \ uparrow (2 \ krát 3)}
3↑(2↑3){\ displaystyle 3 \ uparrow (2 \ uparrow 3)}= = je větší než = = .
3↑(2×2×2){\ displaystyle 3 \ uparrow (2 \ krát 2 \ krát 2)}3↑8{\ displaystyle 3 \ uparrow 8}(3↑2)↑3{\ displaystyle (3 \ uparrow 2) \ uparrow 3}(3×3)↑3{\ displaystyle (3 \ krát 3) \ uparrow 3}9↑3{\ displaystyle 9 \ uparrow 3}
Sdružení je proto vybráno jako priorita vpravo; je to jediná volba, která produkuje růst hodný nového operativního znamení.
Výsledek bude tedy 6 561 a ne 729.
3↑2↑3{\ displaystyle 3 \ uparrow 2 \ uparrow 3}
Definice iterovaných pravomocí
Knuthovy iterované síly jsou formálně definovány takto:
na↑neb={nab-li ne=11 -li b=0na↑ne-1(na↑ne(b-1))Pokud ne {\ displaystyle a \ uparrow ^ {n} b = \ left \ {{\ begin {matrix} a ^ {b} \ qquad \ qquad \ qquad \ qquad && {\ mbox {si}} n = 1 \ quad \\ 1 \ qquad \ qquad \ qquad \ qquad \ && {\ mbox {si}} b = 0 \ quad \, \\ a \ uparrow ^ {n-1} (a \ uparrow ^ {n} (b-1)) && {\ mbox {jinak}} \ \, \ end {matrix}} \ vpravo.}pro všechna celá čísla a , b a n, kde b ≥ 0 a n ≥ 1.
Tuto rodinu funkcí lze definovat iteračním programem:
function Knuth(rang: naturel; a, b: naturel) : naturel
begin
if rang = 1
then R = a^b
else begin
R := 1 (* 1 est élément neutre à droite pour l'exponentiation *)
(* Application b fois de l'opérateur à gauche "a Knuth(rang-1)" *)
for compteur := 1 to b do R := Knuth(rang-1, a, R)
end
return R
end.
nebo rekurzivním programem ( například v Haskellu ):
(↑) :: Integer -> (Integer, Integer) -> Integer
a ↑ (1,b) = a^b
_ ↑ (_,0) = 1
a ↑ (n,b) = a ↑ (n-1,a ↑ (n,b-1))
Poznámky ke skórování
Ve výrazu b , píšeme exponent b v horní části dopisu . Mnoho prostředí, jako jsou programovací jazyky a e - maily v prostém textu, však toto dvojrozměrné uspořádání nepodporuje. Navrhli proto lineární zápis, a ** b pro Fortran a a ↑ b pro jiná prostředí; šipka směřující nahoru naznačuje povýšení na sílu. Pokud znaková sada neobsahuje šipku, použije se háček ^ nebo obě hvězdičky ** .
Další notace použitá v tomto článku je ↑ n k označení operátoru šipky řádu n (kde ↑ 1 odpovídá ↑ samotnému).
Jak jsme řekli výše, všechny tyto operátory (včetně klasické umocňování a ↑ b ) nejsou asociativní a při absenci závorek musí být spojeny, zprava doleva, to znamená - to znamená, že hodnocení se provádí zprava doleva pro výraz, který obsahuje alespoň dva z těchto operátorů. Například a ↑ b ↑ c znamená a ↑ ( b ↑ c ), a nikoli ( a ↑ b ) ↑ c, které by pak bylo napsáno a ↑ ( b × c ):
3↑↑3=3↑23=333 hodnota 3(33)=327=7625597484987 a žádná (33)3=273=3(3⋅3)=39=19683.{\ displaystyle 3 \ uparrow \ uparrow 3 = 3 \ uparrow ^ {2} 3 = 3 ^ {3 ^ {3}} {\ mbox {má hodnotu}} 3 ^ {(3 ^ {3})} = 3 ^ {27} = 7 \, 625 \, 597 \, 484 \, 987 {\ text {a ne}} \ vlevo (3 ^ {3} \ vpravo) ^ {3} = 27 ^ {3} = 3 ^ { (3 \ cdot 3)} = 3 ^ {9} = 19 \, 683.}Je dobrý důvod zvolit si toto hodnocení zprava doleva; Skutečně, pokud by byl výběr zleva doprava, pak ↑↑ b by znamenalo ↑ ( ↑ ( b -1)) a ↑↑ by nebyl nový operátor.
Zevšeobecnění Knuthovy notace
Některá čísla jsou tak velká, že Knuthova šípová notace je příliš těžkopádná na to, aby je popsala. To je například případ Grahamova čísla . Tyto hyperopérateurs nebo zřetězené šipka Conway pak mohou být použity.
na↑neb=hyper(na,ne+2,b)=na→b→ne(Knuth)(Conway){\ displaystyle {\ begin {matrix} a \ uparrow ^ {n} b && = && {\ mbox {hyper}} (a, n + 2, b) && = && a \ to b \ to n \\ {\ mbox {(Knuth)}} &&&&&&&& {\ mbox {(Conway)}} \ end {matrix}}}Knuthova šipka bude použita pro malá čísla vzhledem k těmto, zatímco zřetězené šipky nebo hyperoperátoři budou vhodné pro větší; když se tyto notace samy stanou nedostatečnými, jako je tomu například u Goodsteinových sekvencí , je stále možné použít hierarchii rychlého růstu (což je zhruba ekvivalent definování notace , kde α je pořadové číslo ).
na↑αb{\ displaystyle a \ uparrow ^ {\ alpha} b}
Reference
-
přírůstek je proces přidávání číslo. Například v zápisu celých čísel domino (nebo malými oblázky) by to spočívalo v přidání domina (nebo oblázku).1{\ displaystyle 1}
-
Pokračování A014222 v online encyklopedii celočíselných řetězců .
-
Vynecháváme kvalifikátor „nahoru“.
-
„Horní písmeno“ je termín používaný v typografii.
Bibliografie
externí odkazy
<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">