Një spirale numrash

Për ditët e fundit, unë kam studiuar pyetjen vijuese në StackExchange në lidhje me një spirale integers. Ne po kërkojmë një formulë të mbyllur për koordinatat e elementit \(n\) -th në spiralen e plotë të mëposhtme, e cila shtrihet nga origjina jashtë dhe më tej dhe më tej në pafundësi:

..  9 10 11 12
23  8  1  2 13
22  7  0  3 14
21  6  5  4 15
20 19 18 17 16

Së pari ne ndajmë numrat natyrorë në grupet vijuese:

$$G_1 = \{ 1,...,8 \}\\G_2 = \{ 9, ..., 24 \}\\G_3 = \{ 25, ... 48 \}\\...\\G_k = \left\{ (2k-1)^2, (2k+1)^2 - 1 \right\}$$

Ne e quajmë

$$a^2 = \left(\left \lfloor \left( \frac{\left \lfloor \sqrt{n} \right \rfloor + 1}{2} \right) \right \rfloor \cdot 2 - 1 \right)^2$$

numri fillestar në një grup.

Brenda një grupi ka katër nëngrupe me madhësi të barabartë \(G_1\) për \(G_1\) është \(g_1 = \{ 1,2 \}, g_2 = \{ 3,4 \}, g_3 = \{ 5,6 \}, g_4 = \{7,8\}\) ). Nëse \(n\) nga një nëngrup në tjetrin, drejtimi në shtegun e spirales (në drejtim të akrepave të orës në shembullin tonë) gjithashtu ndryshohet në të njëjtën kohë. Ne marrim drejtimin aktual \( b \in \{0,1,2,3\} \) duke pjesëtuar pozicionin \(na^2\) brenda një grupi me numrin e elementeve në një nëngrup:

$$b = \left \lfloor \frac{ n - a^2 }{ \text{abs}\left( a \right) + 1 } \right \rfloor$$

Tani mund të përcaktojmë elementin e parë brenda një nëngrupi \(g_n\) duke shtuar një shumëfishtë \(b\) të numrit \(a+1\) të elementeve brenda një grupi në numrin fillestar \(a^2\):

$$c = a^2 + b \cdot (a+1)$$

Tani ne mund të përcaktojmë me një vëzhgim të thjeshtë:

$$x_{right} = \left(n - c - \frac{ a + 1 }{2}+1\right),\, y_{right} = \left(\frac{ a + 1 }{2}\right) \\ x_{bottom} = \left(\frac{ a + 1 }{2}\right),\, y_{bottom} = (-1) \cdot \left( n - c - \frac{ a + 1 }{2}+1\right) \\ x_{left} = (-1) \cdot \left(n - c - \frac{ a + 1 }{2}+1\right),\, y_{left} = (-1) \cdot \left(\frac{ a + 1 }{2}\right) \\ x_{top} = (-1) \cdot \left(\frac{ a + 1 }{2}\right),\, y_{top} = \left( n - c - \frac{ a + 1 }{2}+1\right)$$

Ne duam të përfaqësojmë \(f(n)\) në një përfaqësim të mbyllur dhe gjithashtu pa dallime rasti. Ne përdorim funksionin Signum, unë e kam përshkruar procedurën këtu . Kështu që marrim një formulë të pastër si një funksion i \(n\) , ne marrim:

Me ndihmën e SVG.js , ne mund të shohim në këtë vizualizim të vogël se e gjithë gjëja funksionon vërtet:

See the Pen ulam spiral by David Vielhuber (@vielhuber) on CodePen.

Spiralja njihet gjithashtu si spirale e Ulamit dhe ka një lidhje emocionuese me numrat kryesor.

Mbrapa