2 पॉइंट द्वारा GN⁺ 2025-05-23 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • मिडिल स्कूल के समय ग्राफ पेपर पर बनाए गए वर्ग-प्रतिलिपि पैटर्न को 12 साल तक दीवार पर चिपकाकर रखा गया, फिर उसका wallflower नाम के एक फ्रैक्टल के रूप में विश्लेषण किया गया और उसे L-System, linear algebra, number systems, तथा higher-dimensional generalization से जोड़ा गया
  • एक वर्ग से शुरू करके वर्तमान आकृति को ऊपर, नीचे, बाएँ, दाएँ कॉपी किया जाता है, और अगले चरण में लगभग 27 डिग्री घुमाई गई दिशा में कॉपी करने की प्रक्रिया एक plane-filling फ्रैक्टल बनाती है
  • सरल L-System नियम R → RLR, L → RLL मिलती-जुलती रूपरेखा बनाते हैं, लेकिन वही आकृति नहीं; अधिक प्रचलित रूप Quadratic von Koch island, Quadratic Flake, Minkowski Sausage आदि नामों से प्रलेखित हैं
  • wallflower को matrix (M=\begin{bmatrix}-2&1\1&2\end{bmatrix}) को base मानकर, और direction vectors को अंकों की तरह लिखने वाले matrix-based number system के रूप में समझा जा सकता है, जहाँ (\det(M)=-5) हर iteration पर दिशा पलट देता है
  • 3D generalization symmetry और overlap की समस्याओं के कारण असहज लगी, जबकि 4D में शर्तें पूरी करने वाले matrix से orthotopeflower बनाया जा सका; लेकिन यही constraints रखने पर संभवतः केवल 1D, 2D, और 4D ही संभव दिखते हैं

दीवार पर टंगे फ्रैक्टल की शुरुआत

  • मिडिल स्कूल में ग्राफ पेपर पर वर्गों को बार-बार जोड़कर और कॉपी करके एक डूडल बनाया गया था, और बाद में उसका विश्लेषण करने के लिए उसे दीवार पर लगा दिया गया
  • पंखुड़ियों की तरह फैलती संरचना और लंबे समय तक दीवार पर टंगे रहने की वजह से इस फ्रैक्टल को wallflower कहा गया
  • मूल रूप से बनाई गई प्रक्रिया यह थी
    • एक वर्ग से शुरू करें
    • वर्तमान अवस्था की 4 प्रतियाँ बाएँ, दाएँ, ऊपर, नीचे रखें
    • अगली बार वर्तमान अवस्था की 4 प्रतियाँ उन्हीं चार दिशाओं में, लेकिन लगभग 27 डिग्री clockwise झुकी हुई स्थिति में रखें
    • ग्राफ पेपर भरने तक इन दोनों व्यवस्थाओं को बारी-बारी दोहराएँ
  • यह प्रक्रिया Gosper Curve की तरह दोहराने पर समतल के किसी भी क्षेत्र को ढक सकती है, और इसकी हर मध्यवर्ती अवस्था भी plane को tile कर सकती है

L-System से लगभग समान, लेकिन अलग रूपरेखा

  • लगभग एक साल पहले लगा कि इस रूपरेखा को L-System से बनाया जा सकता है
  • इस्तेमाल किए गए नियम केवल 90 डिग्री दाएँ मोड़ (R) और बाएँ मोड़ (L) से बने थे
    • शुरुआती string है (RRRR)
    • हर iteration में (R \rightarrow RLR), (L \rightarrow RLL) से प्रतिस्थापन होता है
  • शुरुआती कुछ चरण wallflower जैसी ही रूपरेखा देते दिखे, लेकिन animation बनाते समय पता चला कि चौथी iteration से दोनों तरीके अलग होने लगते हैं
  • अंतर कॉपी की व्यवस्था के तरीके से आता है
    • “drag and drop” तरीका तीसरी iteration की प्रतियों को केंद्र के सापेक्ष सीधे ऊपर, नीचे, बाएँ, दाएँ रखता है
    • L-System तरीका प्रतियों को diagonal दिशाओं में रखता है
  • L-System जो आकृति बनाता है, वह पहले से कई जगह documented है
  • दीवार पर मौजूद drag and drop वाला variant Google image search और Wikipedia खोज से भी नहीं मिला
  • wallflower के लिए (L \rightarrow RLR), (R \rightarrow LLR) नियम मिले, लेकिन यह नियम हर चरण में रूपरेखा खींचने की दिशा को उलट देते हैं

फ्रैक्टल को गिनने का तरीका

  • wallflower मूल बिंदु से बाहर की ओर बढ़ता है, इसलिए इसे प्राकृतिक संख्याओं और grid coordinates के बीच संबंध के रूप में देखा जा सकता है
  • केंद्र के वर्ग को 0 मानकर, पहली iteration में जुड़े आसपास के 4 वर्गों को clockwise क्रम में 1, 2, 3, 4 संख्या दी जाती है
  • अगली iteration में ऊपर से नीचे, बाएँ से दाएँ स्कैन करके नंबर दिए जा सकते हैं, लेकिन यह तरीका recursive structure से अच्छी तरह मेल नहीं खाता
  • हर पंखुड़ी पिछली iteration की एक प्रति है, इस तथ्य का उपयोग करके पंखुड़ी के भीतर और पंखुड़ियों के बीच, दोनों जगह केंद्र से बाहर की ओर वही numbering दोबारा इस्तेमाल की जा सकती है
  • इस numbering में 5 के गुणज, (5n+1), 25 के गुणज आदि झुके हुए grid pattern बनाते हैं
  • कारण यह है कि हर iteration में वर्गों की संख्या (1, 5, 25, 125, ...) बनती जाती है
    • हर iteration में पिछली अवस्था 1 रहती है और उसकी 4 प्रतियाँ जुड़ती हैं, इसलिए कुल आकार 5 गुना हो जाता है
    • इसलिए 5 की powers और base-5 representation इस संरचना से अच्छी तरह मेल खाते हैं

matrix को base की तरह इस्तेमाल करने वाला number system

  • किसी संख्या को base-5 के digit place की तरह तोड़कर, हर digit place से जुड़े vector को जोड़ने पर फ्रैक्टल grid में उसकी स्थिति मिल सकती है
  • उदाहरण के लिए 231 को (200 + 30 + 1) मानकर, हर हिस्से का position vector जोड़ने से 231 की स्थिति मिलती है
  • एक-अंकीय मान direction vectors से परिभाषित होते हैं
    • (\vec{0}=(0,0))
    • (\vec{1}=(1,0))
    • (\vec{2}=(0,1))
    • (\vec{3}=(-1,0))
    • (\vec{4}=(0,-1))
  • (10^n) जैसे digit place को पहले even/odd पर निर्भर शर्तों से व्यक्त किया गया था, लेकिन एक ही matrix को बार-बार लागू करने से इसे बिना शर्त निकाला जा सकता है
  • इस्तेमाल किया गया matrix यह है

[ M=\begin{bmatrix} -2 & 1 \ 1 & 2 \end{bmatrix} ]

  • इस matrix के लिए (M^2=5I) होता है, इसलिए हर दो चरण पर आकार 5 गुना होकर फिर से संरेखित हो जाता है
  • इसलिए इसे इस तरह लिखा जा सकता है

[ \overrightarrow{(10^n)}=M^n\vec{1} ]

  • यह संरचना सामान्य positional notation से अलग है, जहाँ scalar base और scalar digits होते हैं; यहाँ matrix base और vector digits इस्तेमाल होते हैं

determinant दो फ्रैक्टल को अलग करता है

  • (M) का determinant (\det(M)=-5) है, और negative determinant की वजह से हर iteration में space की orientation पलट जाती है
  • इसी उलटाव के कारण मूल numbering की तुलना में 20 और 40 जैसी संख्याओं की स्थिति बदली हुई दिखती है
  • इस पलटाव से बचने के लिए positive determinant वाला matrix चुना जा सकता है

[ M'=\begin{bmatrix} 2 & 1 \ -1 & 2 \end{bmatrix} ]

[ \det(M')=5 ]

  • (M') orientation को पलटे बिना digit vectors को लगातार clockwise घुमाता है, और इस matrix को base मानने पर ऊपर वाला L-System version दोबारा बन जाता है
  • दोनों फ्रैक्टल का अंतर यह है
    • wallflower, (\det(M)=-5) वाले (M) से आता है
    • अधिक प्रचलित quadratic flake परिवार, (\det(M')=5) वाले (M') से आता है
  • determinant का परिमाण 5 इस संरचना से मेल खाता है, जहाँ हर iteration में फ्रैक्टल का आकार 5 गुना होता है
    • determinant बड़ा होगा तो प्रतियाँ बहुत जल्दी बड़ी हो जाएँगी और खाली जगहें बनेंगी
    • determinant छोटा होगा तो प्रतियाँ बहुत धीरे बड़ी होंगी और iterations एक-दूसरे पर चढ़ने लगेंगी
  • लगभग 27 डिग्री का कोण integer coordinates, determinant (\pm5), और vector length (\sqrt5) की शर्तों से निकलने वाले (\langle1,2\rangle) vector से जुड़ा है
    • इस vector का कोण (\arctan(2/1)\approx63.43^\circ) है
    • y-axis के सापेक्ष यह लगभग 27 डिग्री दूर है

जोड़ के नियम और carry

  • vector addition विस्तारित digit places के लिए तो ठीक बैठता है, लेकिन (\vec{2}+\vec{2}\neq\vec{4}) की तरह यह सामान्य संख्यात्मक जोड़ से अलग तरह से काम करता है
  • 1 से 4 तक को वास्तविक अंकों की बजाय ऊपर, दाएँ, नीचे, बाएँ दिशाओं के रूप में देखना अधिक स्वाभाविक है
  • विपरीत दिशाएँ एक-दूसरे को निरस्त कर देती हैं
    • (\vec{1}+\vec{3}=\vec{0})
    • (\vec{2}+\vec{4}=\vec{0})
  • unit vectors के संयोजन की तालिका बनाने पर कुछ जोड़ परिणाम दो-अंकीय मान बन जाते हैं
  • इसी वजह से बड़ी संख्याओं को जोड़ते समय सामान्य long addition की तरह carry संभालना पड़ता है
  • उदाहरण के लिए (\vec{22}+\vec{1}) की गणना करने पर, (\vec{2}+\vec{1}=\vec{13}) नियम की वजह से परिणाम 133 आता है
  • यह जोड़ प्रणाली सामान्य रूप से काम करती है या नहीं, इसका प्रमाण नहीं दिया गया और इसे पाठकों की जाँच के लिए छोड़ा गया

संबंधित number systems और शोध

  • wallflower फ्रैक्टल का number system उन अन्य positional systems से जुड़ता है, जिनमें digits केवल natural numbers नहीं होते
  • Balanced Ternary में (-1,0,1) digits और 3 base के रूप में इस्तेमाल होते हैं, और wallflower को इसका y-axis की धनात्मक/ऋणात्मक दिशाओं वाले अंकों के साथ एक 2-dimensional analogue माना जा सकता है
  • generalized balanced ternary permutohedron lattice के जरिए arbitrary dimensions तक generalize होता है, और 2D में यह hexagonal lattice बन जाता है
  • Quater-imaginary Base एक ऐसी प्रणाली है जिसमें (2i) base है और 0, 1, 2, 3 digits हैं
  • (M') को complex number (2+i) के अनुरूप base माना जा सकता है, और Timothy James McKenzie Makarios की Balanced base 2+i (and some gratuitous fractals) इस विचार पर चर्चा करती है
  • संबंधित सामग्री के रूप में ये संदर्भ मिले
    • Project BinSys: determinant 2 वाले matrix base की खोज का प्रोजेक्ट
    • Andrew Vince का Replicating Tesselations: fractals, tiling, linear algebra, और number systems को अधिक कठोर रूप से लेता है और (\mathbb{Z}^2) से आगे सामान्य lattices तक बढ़ाता है

3D और 4D तक विस्तार

  • 3D में एक cube से शुरू करके छह दिशाओं में कॉपी करने वाली “3D plus” संरचना पर विचार किया गया
  • 3x3 matrix के लिए चाही गई शर्तें ये थीं
    • सभी entries integer होनी चाहिए
    • हर column vector की Hamming distance मूल बिंदु से 3 होनी चाहिए
    • हर iteration में 6 प्रतियाँ जुड़ती हैं, इसलिए आकार 7 गुना होना चाहिए और determinant (\pm7) होना चाहिए
  • इन शर्तों को पूरा करने वाला 3x3 matrix मिला, लेकिन visualization में iteration दबी हुई दिखी और पिछली iteration झलकती रही
  • दो और 3D plus जोड़ने पर खाली हिस्से भरे जा सके, और 8 केंद्र-बिंदु किसी twisted cube के vertices जैसे व्यवस्थित दिखे
  • अधिक symmetric व्यवस्था के लिए यह पर्याप्त शर्त हो सकती है कि हर column एक-दूसरे के orthogonal हों और उनका आकार समान हो, लेकिन 3D में यह integer-coordinate शर्त के साथ संभव नहीं लगता
  • 4D में यह शर्तें मेल खा जाती हैं
    • हर column vector के अवयवों के वर्गों का योग 3 होना चाहिए
    • 4 अवयवों में 3 को (\pm1) और एक को 0 रखना संभव है
  • निम्न 4x4 matrix से 4D फ्रैक्टल बनाया गया

[ \begin{bmatrix} 0 & -1 & -1 & -1 \ 1 & 0 & -1 & 1 \ 1 & 1 & 0 & -1 \ 1 & -1 & 1 & 0 \end{bmatrix} ]

  • इस 4D फ्रैक्टल को orthotopeflower कहा गया
  • 4D visualization को (w) मान स्थिर रखकर 3D slices के रूप में, या 7x7 grid के भीतर 7x7 grid रखकर 4D window दिखाने के रूप में संभाला गया
  • 31x31x31x31 viewing window में यह 3D में दिखी अत्यधिक दबी हुई आकृति के बिना बाहर की ओर फैलता हुआ दिखता है

उच्चतर dimensions और अंतिम मोड़

  • यही constraints उच्च dimensions तक बढ़ाने पर ऐसा लगता है कि शर्तें केवल 1D, 2D, और 4D में पूरी होती हैं
    • 1D है balanced ternary
    • 2D है wallflower या quadratic flake
    • 4D है orthotopeflower
  • 4D में चुना गया matrix quaternion (i+j+k) को encode करता है, और इसके आधार पर base (i+j+k) तथा digits (0,\pm1,\pm i,\pm j,\pm k) वाला balanced nonary quaternion base सोचा जा सकता है
  • यह quaternion प्रणाली वास्तव में काम करती है या नहीं, यह स्पष्ट नहीं है; इसे अधिक गणित जानने वाले भविष्य के स्वयं के लिए छोड़ दिया गया
  • burnout के बाद गणित और programming में रुचि फिर से जगाने की कोशिश ने एक पुराने डूडल को fractals, number systems, linear algebra, और higher dimensions तक फैली खोज में बदल दिया
  • आखिरी मोड़ यह है कि लेख के visualizations thumbnail में दिखे असली दीवार वाले फ्रैक्टल से मेल नहीं खाते
    • असली दीवार वाली चौथी iteration लगभग 27 डिग्री विपरीत दिशा में कॉपी की गई है
    • उस समय लगा था कि लगातार एक ही दिशा में झुकाने से यह axes से हट जाएगा, इसलिए उसे सुधारने की कोशिश की गई, लेकिन (M) की संरचना तो पहले से ही हर चरण में खुद को सुधार लेती है
    • अंत में यह कहते हुए बात खत्म होती है कि Donald Knuth ने भी दीवार पर फ्रैक्टल लगाते समय wrong turn लिया था

1 टिप्पणियां

 
GN⁺ 2025-05-23
Hacker News की टिप्पणियाँ
  • यह एक insight भरा और बहुत मेहनत से लिखा गया लेख था, और 3D visualization खास तौर पर अच्छा लगा
    याद आया कि पहले मैंने किसी arbitrary image से fractal-जैसा effect बनाने के लिए recursive decimation से खेलते हुए कुछ बनाया था
    इसे यहां खुद आज़मा सकते हैं: https://jsfiddle.net/nicobrenner/a1t869qf/
    Blursort 2x2 को कुछ बार दबाकर frames बनाएं और फिर Animate दबाएं। Image copy/paste भी हो सकता है, और बिना backend के सब कुछ browser में चलता है। Mobile पर recommend नहीं करूंगा

    • सोच रहा हूं कि क्या यह 3D में भी काम करेगा
  • इसमें इतना डूब गया कि लगता है मैंने L-system से “wallflower” को भरने वाला रूप बना दिया
    https://onlinetools.com/math/l-system-generator?draw=AB&skip...
    फिर सोचने पर, यह शायद कोई दूसरा fractal generate करता है, लेकिन पक्का नहीं

  • लगा था हल्का-फुल्का पढ़ने वाला लेख होगा, लेकिन काम करना था इसलिए कुछ हिस्से बस सरसरी तौर पर देखने पड़े
    बाद में वापस आकर चीज़ों को छेड़कर देखने का इरादा है; वाकई बहुत अच्छी तरह बनाया गया लेख है

  • यह उम्मीद से कहीं ज्यादा गहरा और कठिन लेख निकला, जिसमें साफ dedication दिखती है
    लेखक से पूछना चाहूंगा: आज आप किसी बच्चे के कमरे की दीवार पर क्या टांगने की सलाह देंगे?

    • मैं parenting expert बिल्कुल नहीं हूं, लेकिन मुझे लगता है कि उस पल बच्चे में जुनून या विस्मय जगाने वाली किसी भी चीज़ से जुड़ी चीज़ अच्छी होगी
      लेख के आखिर में burnout पर एक छोटा paragraph जोड़ा है। मेरे मामले में समस्या की जड़ यह थी कि maths और programming के प्रति जो fascination और curiosity थी, वह खो गई थी; यह लेख लिखते हुए मैं फिर से उस बच्चे जैसे विस्मय को छू सका, जो पहले आसानी से महसूस होता था
  • दो अंकों वाली दो संख्याओं का arithmetic check किया, और यह सच में काम करता है
    मुझे लगा था 41+14 का result 12 होगा। क्योंकि दाईं ओर दो खाने और ऊपर की ओर दो खाने जोड़ने पर दाईं ओर दो खाने, ऊपर की ओर दो खाने ही मिलते हैं
    नीचे की लंबी addition में = का इस्तेमाल equivalence दिखाने के लिए किया है, यानी terms को rearrange करना (1+2=2+1), number decomposition (41=40+1), single-digit addition (1+4=22); -> का इस्तेमाल algorithm द्वारा digit देने पर, और < का इस्तेमाल अगले column में जाने पर किया है
    41+14 = (40+1)+(10+4) = 40 + 10 + (1+4) = 40 + 10 + 22 -> 1s digit = 2 < 4 + 1 + 2 = 22 + 2 = 20 + 2 + 2 = 20 + 41 -> 10s digit = 1 < 2 + 4 = 0 -> done == 12
    लेख में दो अलग-अलग base systems हैं: एक में 10, 20, 30, 40 clockwise हैं, और दूसरे में counterclockwise। दोनों में 1, 2, 3, 4 clockwise हैं। ऊपर वाली addition दूसरी system के आधार पर है, जो addition table में इस्तेमाल हुई है, यानी जिसमें tens places counterclockwise हैं
    दूसरी system में भी यह काम करता है। 14+21 को 12 होना चाहिए
    14+21 =10+20+42 ->2 <1+2+4 =13+4 =10+3+4 =10+31 ->1 <1+3 =0 ==12

  • सोच रहा हूं कि “middle out” number system का ख्याल कैसे आया होगा
    जब मैं अकेले maths problems solve करता हूं, तो ऐसे inspired ideas शायद ही कभी सूझते हैं

    • लेख में क्रम थोड़ा अलग दिखता है, लेकिन आखिरकार शुरुआत इस एहसास से हुई कि fractal का 5 गुना बढ़ने का तरीका, base-5 number system, और लेख में बताई गई “spiral” एक-दूसरे में fit हो सकते हैं
      मैंने काफी सोचा कि fractal को program से कैसे draw किया जाए, और natural तरीका यही था कि बीच से शुरू करके बाहर की ओर expand किया जाए
      Richard Feynman के बारे में एक किस्सा है कि वह दिमाग के पीछे करीब दर्जन भर random problems रखे रहते थे, और जब भी कोई connection दिखता, उनमें थोड़ा-थोड़ा progress करते; और जब आखिरकार उनमें से कोई solve कर लेते, तो लोग सोचते कि उन्होंने जादू की तरह तुरंत समझ लिया। इस बार कुछ वैसा ही था, लेकिन मैं उस level के आसपास भी नहीं हूं, और दर्जन भर नहीं बल्कि बस एक problem के साथ ही मुश्किल से ऐसा कर पाया
  • जहां मैं पहले काम करता था, वहां की दीवार पर इसे बड़े printout के रूप में लगाया हुआ था
    https://raw.githubusercontent.com/cies/haskell-fractal/refs/... [17MB, Github के लिए माफ़ी]
    इसे generate करने में इस्तेमाल Haskell code भी है: https://github.com/cies/haskell-fractal
    खास तौर पर sharpen function तक पहुंचने की प्रक्रिया दिलचस्प थी। curve fitting के लिए एक अब गायब हो चुके tool का इस्तेमाल किया था: https://github.com/cies/haskell-fractal/blob/master/fractal....
    मजेदार छोटा project था

  • “इसे ज्यादा maths जानने वाले भविष्य के अपने-आप को सौंपने का फैसला किया” वाला हिस्सा relatable लगा
    कौन-सी degree करनी है, यह तय करने में भी उन problems की list का बड़ा असर पड़ा जिन्हें मुझे solve करना था, लेकिन map और internet connection की कमी की वजह से हल नहीं कर पाया था। उनमें ज्यादातर linear algebra problems थीं

  • pattern formula में typo लगता है। “Looking closely you might pick up on the pattern” के ठीक बाद वाली expression 5**n नहीं बल्कि 5**(n/2), और 5**(n-1) नहीं बल्कि 5**((n-1)/2) होनी चाहिए
    \overrightarrow{10*4} [0, 25] है, लेकिन original formula से [0, 625] आता है
    साथ ही Knuth की गलती के बारे में, YouTube comments में कहा गया है कि उनका fractal असल में सही था और उन्होंने सिर्फ start point और end point को confuse किया था। loosely कहें तो वह fractal center rotation के लिहाज से symmetric है, और Knuth ने उसी rotation को गलत मान लिया था। खैर, fractal से जुड़ी गलती तो हुई ही, इसलिए conclusion बना रहता है

    • सही पकड़ा, और formula ठीक कर दिया