2 puan yazan GN⁺ 2025-05-23 | 1 yorum | WhatsApp'ta paylaş
  • Ortaokuldayken milimetrik kâğıda çizdiği kare kopyalama desenini 12 yıl boyunca duvarında tutup, bunu wallflower adlı bir fraktal olarak analiz ederek L-System, lineer cebir, sayı sistemleri ve yüksek boyutlu genellemelere kadar bağlıyor
  • Tek bir kareden başlayıp mevcut şekli yukarı, aşağı, sağa ve sola kopyalayan; sonraki adımda ise yaklaşık 27 derece döndürülmüş yönde kopyalayan prosedür, düzlemi dolduran bir fraktal oluşturuyor
  • Basit L-System kuralları R → RLR, L → RLL benzer bir dış hat üretiyor ama aynı şekil değil; daha yaygın biçim Quadratic von Koch island, Quadratic Flake, Minkowski Sausage gibi adlarla belgelenmiş
  • wallflower, (M=\begin{bmatrix}-2&1\1&2\end{bmatrix}) matrisini taban, yön vektörlerini de rakam olarak kullanan matris tabanlı bir sayı sistemi olarak yorumlanabiliyor; (\det(M)=-5) her yinelemede yönelimi ters çeviriyor
  • 3B genelleme simetri ve çakışma sorunları nedeniyle tuhaflaştı; 4B’de koşulları sağlayan bir matrisle orthotopeflower yapılabildi, ancak aynı kısıtlar altında yalnızca 1B, 2B ve 4B mümkün görünüyor

Duvarda asılı duran fraktalın başlangıcı

  • Ortaokuldayken milimetrik kâğıt üzerinde kareleri tekrar tekrar birleştirip kopyalayan bir karalama yaptım ve daha sonra analiz etmek için duvara astım
  • Taç yaprakları gibi yayılan yapısı ve uzun süre duvarda asılı kalma hikâyesi nedeniyle bu fraktala wallflower adını verdim
  • Başta çizdiğim prosedür şöyleydi
    • Tek bir kareyle başla
    • Mevcut durumun 4 kopyasını sola, sağa, yukarıya ve aşağıya yerleştir
    • Sonra mevcut durumun 4 kopyasını aynı dört yönde, yaklaşık 27 derece saat yönünde eğilmiş konumlara yerleştir
    • Milimetrik kâğıt dolana kadar iki yerleştirme yöntemini dönüşümlü olarak tekrarla
  • Bu prosedür, Gosper Curve gibi tekrarlandığında düzlemin herhangi bir bölgesini kaplayabilir ve her ara durum da düzlemi döşeyebilir

L-System ile neredeyse aynı, ama dış hat farklı

  • Yaklaşık bir yıl önce bu dış hattın L-System ile üretilebileceğini düşündüm
  • Kullanılan kurallar yalnızca 90 derece sağa dönüş (R) ve sola dönüş (L) ile kuruluydu
    • Başlangıç dizgesi (RRRR)
    • Her yinelemede (R \rightarrow RLR), (L \rightarrow RLL) ile değiştirme yapılır
  • İlk birkaç adım wallflower ile aynı dış hat gibi görünüyordu; ancak animasyon yaparken 4. yinelemeden itibaren iki yöntemin ayrıştığını doğruladım
  • Fark, kopyaların yerleştirilme biçiminden kaynaklanıyor
    • “Sürükle ve bırak” yöntemi, 3. yinelemenin kopyalarını merkeze göre doğrudan yukarı, aşağı, sağa ve sola yerleştirir
    • L-System yöntemi ise kopyaları çapraz yönlere yerleştirir
  • L-System’in ürettiği biçim zaten çeşitli yerlerde belgelenmiş durumda
  • Duvardaki sürükle-bırak varyantının aynısını Google görsel araması ve Wikipedia gezintisiyle bulamadım
  • wallflower’a uyan kural olarak (L \rightarrow RLR), (R \rightarrow LLR) buldum; ancak bu kural her aşamada dış hattın çizim yönünü tersine çeviren bir etki yaratıyor

Fraktalı sayma biçimi

  • wallflower merkezden dışa doğru büyüdüğü için, doğal sayıları ızgara koordinatlarıyla eşleyen bir yöntem olarak görülebilir
  • Merkezdeki kareyi 0 kabul edip, ilk yinelemede eklenen çevredeki 4 kareyi saat yönünde 1, 2, 3, 4 diye numaralandırdım
  • Sonraki yinelemede yukarıdan aşağıya, soldan sağa tarayarak numara verilebilir; ancak bu yöntem özyinelemeli yapıyla pek iyi uyuşmuyor
  • Her taç yaprağın önceki yinelemenin bir kopyası olmasından yararlanılırsa, numaralar hem taç yaprakların içinde hem de taç yapraklar arasında merkezden dışa doğru yeniden kullanılabilir
  • Bu numaralandırmada 5’in katları, (5n+1), 25’in katları vb. eğik ızgara desenleri oluşturur
  • Bunun nedeni her yinelemede kare sayısının (1, 5, 25, 125, ...) şeklinde artmasıdır
    • Her yineleme önceki duruma 4 kopya ekleyerek toplamda 5 katına çıkar
    • Bu yüzden 5’in kuvvetleri ve 5 tabanındaki gösterim yapıyla iyi örtüşür

Matrisi taban olarak kullanan sayı sistemi

  • Bir sayı 5 tabanındaki basamak değerleri gibi ayrıştırılırsa, her basamak değerine karşılık gelen vektörler toplanarak fraktal ızgaradaki konumu bulunabilir
  • Örneğin 231, (200 + 30 + 1) olarak görülür ve her birinin konum vektörleri toplanarak 231’in konumu elde edilir
  • Tek basamaklı değerler yön vektörleri olarak tanımlanır
    • (\vec{0}=(0,0))
    • (\vec{1}=(1,0))
    • (\vec{2}=(0,1))
    • (\vec{3}=(-1,0))
    • (\vec{4}=(0,-1))
  • (10^n) biçimindeki basamak değerleri başta çift-tek durumuna göre ayrılan koşullu ifadelerle yazılmıştı; ancak tek bir matris tekrar tekrar uygulanırsa koşulsuz hesaplanabilir
  • Kullanılan matris şöyle

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

  • Bu matris (M^2=5I) verir; yani iki adımda bir ölçek 5 katına hizalanır
  • Dolayısıyla şöyle ifade edilebilir

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

  • Bu yapı, skaler taban ve skaler rakamlar kullanan sıradan basamak sistemleri yerine matris tabanı ve vektör rakamlar kullanan bir sayı sistemi olarak görülebilir

Determinant iki fraktalı ayırıyor

  • (M) matrisinin determinantı (\det(M)=-5); negatif determinant nedeniyle her yinelemede uzayın yönelimi tersine döner
  • Bu ters dönme yüzünden, özgün numaralandırmayla karşılaştırıldığında 20 ve 40 gibi değerlerin konumları değişmiş gibi görünür
  • Ters dönmeyi önlemek için pozitif determinantlı bir matris seçilebilir

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

[ \det(M')=5 ]

  • (M') yönelimi ters çevirmeden sayı vektörlerini saat yönünde döndürmeyi sürdürür; bu matris taban olarak kullanıldığında yukarıdaki L-System sürümü yeniden üretilir
  • İki fraktal arasındaki fark şöyle
    • wallflower, (\det(M)=-5) olan (M) matrisinden çıkar
    • Daha yaygın quadratic flake ailesi, (\det(M')=5) olan (M') matrisinden çıkar
  • Determinantın mutlak değeri olan 5, fraktalın her yinelemede 5 kat büyümesiyle uyumludur
    • Determinant daha büyük olursa kopyalar çok hızlı büyür ve boşluklar oluşur
    • Determinant daha küçük olursa kopyalar çok yavaş büyür ve yinelemeler çakışır
  • Yaklaşık 27 derecelik açı; tamsayı koordinatlar, determinant (\pm5) ve vektör uzunluğu (\sqrt5) koşullarından çıkan (\langle1,2\rangle) vektörüyle ilişkilidir
    • Bu vektörün açısı (\arctan(2/1)\approx63.43^\circ)
    • y eksenine göre yaklaşık 27 derece sapar

Toplama kuralları ve elde

  • Vektör toplaması açılmış basamak değerleriyle iyi çalışır; ancak (\vec{2}+\vec{2}\neq\vec{4}) gibi, normal sayı toplamasından farklı davranır
  • 1’den 4’e kadar olanları gerçek rakamlardan ziyade yukarı, sağ, aşağı, sol yönleri olarak görmek daha doğaldır
  • Zıt yönler birbirini götürür
    • (\vec{1}+\vec{3}=\vec{0})
    • (\vec{2}+\vec{4}=\vec{0})
  • Birim vektör kombinasyonları tabloya dökülürse bazı toplama sonuçları iki basamaklı değer olur
  • Bu yüzden büyük sayıları toplarken sıradan uzun toplamada olduğu gibi eldeyi işlemek gerekir
  • Örnek olarak (\vec{22}+\vec{1}) hesaplanırsa, (\vec{2}+\vec{1}=\vec{13}) kuralı nedeniyle sonuç 133 olur
  • Bu toplama sisteminin genel olarak çalışıp çalışmadığını kanıtlamadan, okurun doğrulamasına bırakıyorum

İlgili sayı sistemleri ve araştırmalar

  • Wallflower fraktalının sayı sistemi, rakam olarak yalnızca doğal sayıları kullanmayan başka taban sistemleriyle bağlantılıdır
  • Balanced Ternary rakam olarak (-1,0,1), taban olarak 3 kullanır; wallflower buna y ekseninin pozitif ve negatif yön rakamlarını ekleyen 2 boyutlu bir benzer gibi görülebilir
  • generalized balanced ternary, permutohedron ızgarasıyla herhangi bir boyuta genelleştirilir ve 2 boyutta altıgen ızgara olur
  • Quater-imaginary Base, taban olarak (2i), rakam olarak 0, 1, 2, 3 kullanan bir sistemdir
  • (M'), karmaşık sayı (2+i)’ye karşılık gelen bir taban olarak görülebilir; Timothy James McKenzie Makarios’un Balanced base 2+i (and some gratuitous fractals) yazısı bu kavramı ele alır
  • İlgili kaynak olarak şunları buldum
    • Project BinSys: determinantı 2 olan matris tabanları arayan bir proje
    • Andrew Vince’in Replicating Tesselations: fraktalları, döşemeleri, lineer cebiri ve sayı sistemlerini daha sıkı biçimde ele alır ve (\mathbb{Z}^2)’nin ötesinde genel ızgaralara genişletir

3B ve 4B’ye genişletmek

  • 3B’de tek bir küpten başlayıp altı yönde kopyalayan bir “3D plus” yapısı düşündüm
  • 3x3 matris için istenen koşullar şöyleydi
    • Tüm girdiler tamsayı olmalı
    • Her sütun vektörünün orijinden Hamming uzaklığı 3 olmalı
    • Her yinelemede 6 kopya eklendiğinden boyut 7 katına çıkmalı ve determinant (\pm7) olmalı
  • Koşulları sağlayan bir 3x3 matris buldum; ancak görselleştirme sonucu yinelemelerin ezilmiş gibi bir biçim aldığını ve önceki yinelemenin görünür kaldığını gösterdi
  • İki adet 3D plus daha eklenince boş kısımlar doldurulabildi ve 8 merkez noktası bükülmüş bir küpün köşeleri gibi dizildi
  • Daha simetrik bir yerleşim için her sütunun birbirine dik ve aynı uzunlukta olması koşulu yeterli olabilir; ancak 3B’de bu, tamsayı koordinat koşuluyla uyuşmadığından imkânsız görünüyor
  • 4B’de koşullar denk geliyor
    • Her sütun vektörünün bileşen kareleri toplamının 3 olması yeterli
    • 4 bileşenden 3’ünü (\pm1), birini 0 yapmak mümkün
  • Aşağıdaki 4x4 matrisle 4B fraktalı oluşturdum

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

  • Bu 4B fraktala orthotopeflower adını verdim
  • 4B görselleştirme, (w) değeri sabitlenmiş 3B dilimler olarak bakılarak ya da 7x7 ızgara içine 7x7 ızgaralar yerleştirip dört boyutlu bir pencere gösterilerek ele alındı
  • 31x31x31x31 görüntüleme penceresinde, 3B’de görülen aşırı ezilme olmadan dışa doğru genişliyormuş gibi görünüyor

Daha yüksek boyutlar ve son ters köşe

  • Aynı kısıtlar daha yüksek boyutlara genişletildiğinde, koşulları sağlayan boyutlar yalnızca 1B, 2B ve 4B gibi görünüyor
    • 1B balanced ternary
    • 2B wallflower veya quadratic flake
    • 4B orthotopeflower
  • 4B’de seçilen matris kuaterniyon (i+j+k)’yı kodluyor; bunun üzerinden tabanı (i+j+k), rakamları (0,\pm1,\pm i,\pm j,\pm k) olan balanced nonary quaternion base düşünülebilir
  • Bu kuaterniyon sisteminin gerçekten çalışıp çalışmadığından emin değilim; bunu daha çok matematik bilen gelecekteki kendime bırakıyorum
  • Tükenmişlikten sonra matematik ve programlamaya duyduğum ilgiyi yeniden canlandırma girişimi, eski bir karalamayı fraktallara, sayı sistemlerine, lineer cebire ve yüksek boyutlara uzanan bir keşfe dönüştürdü
  • Son ters köşe olarak, yazıdaki görselleştirmeler küçük resimdeki gerçek duvar fraktalıyla eşleşmiyor
    • Gerçek duvardaki 4. yineleme yaklaşık 27 derece ters yönde kopyalanmış
    • O sırada hep aynı yöne eğmeye devam edersem eksenden sapacağını düşünüp düzeltmeye çalışmıştım; oysa (M)’nin yapısı zaten her adımda kendi kendini düzeltiyor
    • Donald Knuth’un da duvarına fraktal asarken wrong turn yapmış olmasıyla bitiriyorum

1 yorum

 
GN⁺ 2025-05-23
Hacker News yorumları
  • İçgörülü ve özenle hazırlanmış bir yazıydı; 3D görselleştirme özellikle iyiydi.
    Eskiden rastgele bir görüntüden fraktal benzeri bir etki üretmeye çalışırken özyinelemeli decimation ile oynayıp yaptığım şey aklıma geldi.
    Buradan doğrudan deneyebilirsiniz: https://jsfiddle.net/nicobrenner/a1t869qf/
    Blursort 2x2ye birkaç kez basıp kareleri oluşturun, sonra Animatee basın. Görüntü kopyala/yapıştır da mümkün; backend olmadan tamamen tarayıcıda çalışıyor. Mobilde önermem.

    • Bunun 3Dde de çalışıp çalışmayacağını merak ediyorum.
  • Buna takılıp L-system ile “wallflower”ı dolduran bir şekil yapmış gibiyim.
    https://onlinetools.com/math/l-system-generator?draw=AB&skip...
    Tekrar düşününce bu muhtemelen başka bir fraktal üretiyor, ama emin değilim.

  • Hafif bir okuma olacağını sanmıştım, ama çalışmam gerektiği için bazı kısımları ancak göz gezdirerek geçebildim.
    Daha sonra geri gelip şunları bunları kurcalamayı düşünüyorum; gerçekten çok iyi hazırlanmış bir yazı.

  • Beklediğimden çok daha derin ve zorlu bir yazı; ciddi bir adanmışlık hissediliyor.
    Yazara sormak isterim: Şu anda bir çocuk odasının duvarına ne asılmasını önerirdi?

    • Hiç çocuk yetiştirme uzmanı değilim, ama çocuğun o anda tutku ya da hayranlık duyduğu şeyle ilgili olan her şeyin iyi olacağını düşünüyorum.
      Yazının sonlarına tükenmişlikle ilgili küçük bir paragraf ekledim. Benim durumumda sorunun kökü, matematik ve programlamaya duyduğum büyülenme ve merakı kaybetmiş olmamdı; bu yazıyı yazarken eskiden kolayca hissettiğim çocuksu hayranlık duygusuna yeniden ulaşabildim.
  • İki basamaklı iki sayıyla aritmetiği kontrol ettim; gerçekten çalışıyor.
    41+14ün 12 olacağını tahmin etmiştim. Çünkü sağdaki iki kare ile üstteki iki kareyi toplarsanız, yine sağdaki iki kare ve üstteki iki kare oluyor.
    Aşağıdaki uzun toplamada = eşdeğerliği göstermek için, yani terimlerin yeniden düzenlenmesi (1+2=2+1), sayının ayrıştırılması (41=40+1), tek basamaklı toplama (1+4=22) için kullandım; -> algoritmanın basamağı verdiği yerde, < ise sonraki sütuna geçerken kullanıldı.
    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
    Yazıda iki farklı taban sistemi var: Birinde 10, 20, 30, 40 saat yönünde, diğerinde saat yönünün tersinde. İkisinde de 1, 2, 3, 4 saat yönünde. Yukarıdaki toplama, toplama tablosunda kullanılan ikinci sisteme, yani onlar basamaklarının saat yönünün tersinde olduğu sisteme göre.
    Diğer sistemde de çalışıyor. 14+21, 12 olmalı.
    14+21 =10+20+42 ->2 <1+2+4 =13+4 =10+3+4 =10+31 ->1 <1+3 =0 ==12

  • middle out” numaralandırma sistemini nasıl akıl ettiğini merak ediyorum.
    Kendi başıma matematik problemi çözerken böyle ilham gelmiş gibi duran fikirler pek aklıma gelmiyor.

    • Yazıda sıralama biraz farklı görünüyor, ama sonuçta bir noktada fraktalın 5 kat büyüme biçimi, 5 tabanlı sayı sistemi ve yazıda bahsedilen “spiral”in birbirine uyabileceğini fark etmemden çıktı.
      Fraktalı programla nasıl çizeceğimi de çok düşündüm; doğal yöntem ortadan başlayıp dışarı doğru genişlemekti.
      Richard Feynman’ın zihninin arka tarafında rastgele on kadar problem tuttuğu, ne zaman bir bağlantı görse onları biraz ilerlettiği ve sonunda birini çözdüğünde insanların onun bunu sihirli biçimde anında bulduğunu sandığına dair bir anekdot var. Bu da biraz benzerdi; ama ben o seviyenin çok uzağındayım ve on kadar problem değil, ancak tek bir problem için bunu yapabildim.
  • Eskiden çalıştığım yerin duvarına bunu büyük boy baskı olarak asmıştık.
    https://raw.githubusercontent.com/cies/haskell-fractal/refs/... [17MB, Github olduğu için kusura bakmayın]
    Üretmek için kullanılan Haskell kodu da var: https://github.com/cies/haskell-fractal
    Özellikle sharpen fonksiyonunu düşünme süreci ilginçti. Eğri uydurma için artık ortadan kalkmış bir araç kullanmıştım: https://github.com/cies/haskell-fractal/blob/master/fractal....
    Eğlenceli küçük bir projeydi.

  • “Daha fazla matematik bilen gelecekteki kendime devretmeye karar verdim” kısmı bana tanıdık geldi.
    Hangi dereceyi yapacağıma karar vermemde de, çözmem gereken ama yol haritası ve internet bağlantısı yetersiz olduğu için çözemediğim problemler listesi büyük rol oynamıştı. Çoğu lineer cebir problemiydi.

  • Desen formülünde bir yazım hatası var gibi. “Looking closely you might pick up on the pattern” ifadesinin hemen arkasındaki formül 5**n değil 5**(n/2), 5**(n-1) değil 5**((n-1)/2) olmalı.
    \overrightarrow{10*4} [0, 25], ama orijinal formülle [0, 625] çıkıyor.
    Ayrıca Knuth’un hatası konusunda, YouTube yorumlarında onun fraktalının aslında doğru olduğu, sadece başlangıç ve bitiş noktalarını karıştırdığı söyleniyor. Gevşek ifade edersek, o fraktal ortadaki dönüşe göre simetrik ve Knuth’un yanlış sandığı şey de tam olarak o dönüş. Her hâlükârda fraktalla ilgili bir hata yapmış sayılır, yani sonuç değişmiyor.

    • İyi yakalamışsın; formülü düzelttim.