Fraktal yang Tergantung di Dindingku Selama 12 Tahun
(chriskw.xyz)- Setelah menempelkan pola replikasi persegi yang digambar di kertas grafik saat SMP di dinding selama 12 tahun, penulis menganalisisnya sebagai fraktal bernama wallflower, lalu menghubungkannya dengan L-System, aljabar linear, sistem bilangan, hingga generalisasi berdimensi lebih tinggi
- Dimulai dari satu persegi, lalu menyalin bentuk saat ini ke atas, bawah, kiri, dan kanan, kemudian pada langkah berikutnya menyalinnya ke arah yang diputar sekitar 27 derajat, menghasilkan fraktal yang mengisi bidang
- Aturan L-System sederhana
R → RLR,L → RLLmenghasilkan kontur yang mirip tetapi bukan bentuk yang sama, dan bentuk yang lebih umum telah didokumentasikan sebagai Quadratic von Koch island, Quadratic Flake, Minkowski Sausage, dan lain-lain - wallflower dapat ditafsirkan sebagai sistem bilangan berbasis matriks yang menggunakan matriks (M=\begin{bmatrix}-2&1\1&2\end{bmatrix}) sebagai basis dan vektor arah sebagai angka, dengan (\det(M)=-5) yang membalik orientasi pada setiap iterasi
- Generalisasi 3D menjadi canggung karena masalah simetri dan tumpang tindih, sedangkan di 4D dimungkinkan membuat orthotopeflower dengan matriks yang memenuhi syarat, tetapi di bawah batasan yang sama tampaknya hanya 1D, 2D, dan 4D yang memungkinkan
Awal mula fraktal yang menempel di dinding
- Saat SMP, penulis membuat coretan di kertas grafik dengan berulang kali menggabungkan dan menyalin persegi, lalu menempelkannya di dinding untuk dianalisis nanti
- Karena strukturnya menyebar seperti kelopak bunga dan karena lama menempel di dinding, fraktal ini diberi nama wallflower
- Prosedur yang mula-mula digambar adalah sebagai berikut
- Mulai dari satu persegi
- Tempatkan 4 salinan dari keadaan saat ini di kiri, kanan, atas, dan bawah
- Berikutnya, tempatkan 4 salinan dari keadaan saat ini pada posisi di empat arah yang sama tetapi dimiringkan sekitar 27 derajat searah jarum jam
- Ulangi dua pola penempatan itu secara bergantian sampai kertas grafik penuh
- Seperti Gosper Curve, jika diulang terus prosedur ini dapat menutupi wilayah sembarang pada bidang, dan setiap keadaan antara pun dapat men-tile bidang
Hampir sama dengan L-System, tetapi konturnya berbeda
- Sekitar setahun lalu, penulis merasa kontur ini bisa dibuat dengan L-System
- Aturan yang dipakai hanya terdiri dari belokan 90 derajat ke kanan (R) dan ke kiri (L)
- String awalnya adalah (RRRR)
- Pada setiap iterasi, lakukan substitusi (R \rightarrow RLR), (L \rightarrow RLL)
- Beberapa tahap awal tampak seperti kontur wallflower, tetapi saat membuat animasi penulis memastikan bahwa sejak iterasi ke-4 kedua cara itu mulai menyimpang
- Perbedaannya berasal dari cara menempatkan salinan
- Metode “drag and drop” menempatkan salinan dari iterasi ke-3 langsung di atas, bawah, kiri, dan kanan relatif terhadap pusat
- Metode L-System menempatkan salinan ke arah diagonal
- Bentuk yang dihasilkan L-System ini sudah didokumentasikan di banyak tempat
- “Quadratic von Koch island” di List of fractals
- “Quadratic Flake” di Koch snowflake
- Minkowski Sausage
- Mandelbrot’s Quartet karya Jeffrey Ventrella
- Untuk varian drag and drop yang ada di dinding, pencarian lewat Google Images dan penelusuran Wikipedia tidak menemukan bentuk yang sama
- Penulis menemukan aturan (L \rightarrow RLR), (R \rightarrow LLR) yang cocok untuk wallflower, tetapi aturan ini menimbulkan efek pembalikan arah penggambaran kontur pada setiap tahap
Cara menghitung fraktalnya
- Karena wallflower tumbuh dari titik asal ke luar, ia bisa dipandang sebagai cara memasangkan bilangan asli dengan koordinat kisi
- Persegi pusat diberi nilai 0, lalu 4 persegi di sekeliling yang ditambahkan pada iterasi pertama diberi nomor 1, 2, 3, 4 searah jarum jam
- Pada iterasi berikutnya, nomor bisa saja diberikan dengan menyapu dari atas ke bawah dan kiri ke kanan, tetapi cara ini tidak cocok dengan struktur rekursifnya
- Dengan memanfaatkan fakta bahwa setiap kelopak adalah salinan dari iterasi sebelumnya, penomoran dari tengah ke luar dapat digunakan kembali baik di dalam tiap kelopak maupun di antara kelopak
- Dalam skema penomoran ini, kelipatan 5, (5n+1), kelipatan 25, dan seterusnya membentuk pola kisi yang miring
- Alasannya adalah karena jumlah persegi pada setiap iterasi bertambah sebagai (1, 5, 25, 125, ...)
- Setiap iterasi mengambil 1 keadaan sebelumnya dan menambahkan 4 salinannya sehingga totalnya menjadi 5 kali
- Karena itu, pangkat 5 dan representasi basis-5 sangat cocok dengan strukturnya
Sistem bilangan yang memakai matriks sebagai basis
- Jika suatu bilangan diuraikan seperti nilai tempat pada basis-5, posisi pada kisi fraktal dapat ditemukan dengan menjumlahkan vektor yang sesuai dengan setiap nilai tempat
- Misalnya, 231 dipandang sebagai (200 + 30 + 1), lalu vektor posisi masing-masing dijumlahkan untuk memperoleh lokasi 231
- Nilai satu digit didefinisikan sebagai vektor arah
- (\vec{0}=(0,0))
- (\vec{1}=(1,0))
- (\vec{2}=(0,1))
- (\vec{3}=(-1,0))
- (\vec{4}=(0,-1))
- Nilai tempat berbentuk (10^n) awalnya diekspresikan dengan rumus bersyarat yang dibedakan menurut genap dan ganjil, tetapi dengan menerapkan satu matriks berulang kali nilainya bisa dihitung tanpa syarat
- Matriks yang dipakai adalah sebagai berikut
[ M=\begin{bmatrix} -2 & 1 \ 1 & 2 \end{bmatrix} ]
- Matriks ini memenuhi (M^2=5I), sehingga setiap dua langkah skalanya sejajar dengan pembesaran 5 kali
- Karena itu dapat dituliskan sebagai berikut
[ \overrightarrow{(10^n)}=M^n\vec{1} ]
- Struktur ini bisa dipandang sebagai sistem bilangan yang memakai basis matriks dan angka vektor, alih-alih basis skalar dan angka skalar seperti pada sistem bilangan biasa
Determinan membedakan dua fraktal
- Determinan dari (M) adalah (\det(M)=-5), dan karena determinannya negatif, orientasi ruang terbalik pada setiap iterasi
- Akibat pembalikan ini, dibandingkan dengan penomoran asli, posisi nilai seperti 20 dan 40 tampak tertukar
- Untuk menghindari pembalikan, dapat dipilih matriks dengan determinan positif
[ M'=\begin{bmatrix} 2 & 1 \ -1 & 2 \end{bmatrix} ]
[ \det(M')=5 ]
- (M') tidak membalik arah, melainkan terus memutar vektor angka searah jarum jam, dan jika matriks ini dipakai sebagai basis maka versi L-System yang disebut sebelumnya dapat direproduksi
- Perbedaan kedua fraktal itu adalah sebagai berikut
- wallflower berasal dari (M) dengan (\det(M)=-5)
- keluarga quadratic flake yang lebih umum berasal dari (M') dengan (\det(M')=5)
- Nilai mutlak determinan 5 cocok dengan struktur fraktal yang tumbuh 5 kali lipat pada setiap iterasi
- Jika determinannya lebih besar, salinan membesar terlalu cepat dan menyisakan ruang kosong
- Jika determinannya lebih kecil, salinan membesar terlalu lambat sehingga iterasi saling tumpang tindih
- Sudut sekitar 27 derajat berkaitan dengan vektor (\langle1,2\rangle) yang muncul dari syarat koordinat bilangan bulat, determinan (\pm5), dan panjang vektor (\sqrt5)
- Sudut vektor ini adalah (\arctan(2/1)\approx63.43^\circ)
- Jika diukur dari sumbu y, jaraknya sekitar 27 derajat
Aturan penjumlahan dan carry
- Penjumlahan vektor cocok untuk nilai tempat yang telah diuraikan, tetapi bekerja berbeda dari penjumlahan bilangan biasa, misalnya (\vec{2}+\vec{2}\neq\vec{4})
- Angka 1 sampai 4 lebih alami dipandang sebagai arah atas, kanan, bawah, dan kiri daripada sebagai angka literal
- Arah yang berlawanan saling meniadakan
- (\vec{1}+\vec{3}=\vec{0})
- (\vec{2}+\vec{4}=\vec{0})
- Jika kombinasi vektor satuan disusun dalam tabel, sebagian hasil penjumlahannya menjadi nilai dua digit
- Karena itu, saat menjumlahkan bilangan besar perlu menangani carry seperti pada penjumlahan panjang biasa
- Sebagai contoh, ketika menghitung (\vec{22}+\vec{1}), hasilnya menjadi 133 karena aturan (\vec{2}+\vec{1}=\vec{13})
- Penulis tidak membuktikan apakah sistem penjumlahan ini bekerja secara umum, dan membiarkannya untuk diverifikasi oleh pembaca
Sistem bilangan terkait dan penelitian
- Sistem bilangan untuk fraktal wallflower terhubung dengan basis-basis lain yang tidak hanya memakai bilangan asli sebagai angka
- Balanced Ternary memakai (-1,0,1) sebagai angka dan 3 sebagai basis, dan wallflower dapat dipandang sebagai padanan dua dimensi dengan tambahan angka untuk arah positif dan negatif sumbu y
- generalized balanced ternary digeneralisasi ke dimensi sembarang pada kisi permutohedron, dan dalam dua dimensi menjadi kisi heksagonal
- Quater-imaginary Base adalah sistem yang memakai (2i) sebagai basis dan 0, 1, 2, 3 sebagai angka
- (M') dapat dipandang sebagai basis yang bersesuaian dengan bilangan kompleks (2+i), dan Balanced base 2+i (and some gratuitous fractals) oleh Timothy James McKenzie Makarios membahas konsep ini
- Penulis juga menemukan bahan terkait berikut
- Project BinSys: proyek untuk mencari basis matriks dengan determinan 2
- Replicating Tesselations karya Andrew Vince: membahas fraktal, tiling, aljabar linear, dan sistem bilangan dengan lebih ketat, serta memperluasnya melampaui (\mathbb{Z}^2) ke kisi yang lebih umum
Ekspansi ke 3D dan 4D
- Di 3D, penulis membayangkan struktur “3D plus” yang dimulai dari satu kubus lalu disalin ke enam arah
- Syarat yang diinginkan untuk matriks 3x3 adalah sebagai berikut
- Semua elemennya harus bilangan bulat
- Setiap vektor kolom harus berjarak Hamming 3 dari titik asal
- Karena setiap iterasi menambahkan 6 salinan, ukurannya harus menjadi 7 kali lipat, sehingga determinannya harus (\pm7)
- Penulis menemukan matriks 3x3 yang memenuhi syarat itu, tetapi hasil visualisasinya membuat iterasi tampak seperti tertekan, dan iterasi sebelumnya masih terlihat
- Dengan menambahkan dua buah 3D plus, bagian kosong bisa diisi, dan 8 titik pusatnya tersusun seperti titik sudut kubus yang terdistorsi
- Untuk susunan yang lebih simetris, mungkin cukup mensyaratkan setiap kolom saling ortogonal dan memiliki panjang yang sama, tetapi di 3D hal ini tampaknya mustahil jika harus tetap memakai koordinat bilangan bulat
- Di 4D, syaratnya justru cocok
- Jumlah kuadrat komponen setiap vektor kolom cukup bernilai 3
- Ini memungkinkan bentuk dengan 3 dari 4 komponennya bernilai (\pm1) dan satu sisanya 0
- Dengan matriks 4x4 berikut, penulis membangun fraktal 4D
[ \begin{bmatrix} 0 & -1 & -1 & -1 \ 1 & 0 & -1 & 1 \ 1 & 1 & 0 & -1 \ 1 & -1 & 1 & 0 \end{bmatrix} ]
- Fraktal 4D ini dinamai orthotopeflower
- Visualisasi 4D ditangani dengan melihat irisan 3D pada nilai (w) tetap, atau dengan menempatkan kisi 7x7 di dalam kisi 7x7 untuk merepresentasikan jendela empat dimensi
- Pada jendela tampilan 31x31x31x31, bentuk ini tampak berkembang ke luar tanpa efek tertekan berlebihan yang terlihat pada 3D
Dimensi lebih tinggi dan pembalikan terakhir
- Jika batasan yang sama diperluas ke dimensi yang lebih tinggi, tampaknya hanya 1D, 2D, dan 4D yang memenuhi syarat
- 1D adalah balanced ternary
- 2D adalah wallflower atau quadratic flake
- 4D adalah orthotopeflower
- Matriks yang dipilih di 4D mengodekan kuaternion (i+j+k), dan dari sini muncul gagasan balanced nonary quaternion base dengan basis (i+j+k) dan angka (0,\pm1,\pm i,\pm j,\pm k)
- Penulis belum yakin apakah sistem kuaternion ini benar-benar bekerja, dan menyerahkannya pada diri masa depan yang lebih paham matematika
- Upaya untuk memulihkan minat pada matematika dan pemrograman setelah burnout mengubah coretan lama itu menjadi penjelajahan yang terhubung ke fraktal, sistem bilangan, aljabar linear, dan dimensi tinggi
- Sebagai pembalikan terakhir, visualisasi di artikel ini sebenarnya tidak cocok dengan fraktal dinding yang asli
- Iterasi ke-4 pada fraktal asli di dinding ternyata disalin sekitar 27 derajat ke arah sebaliknya
- Saat itu penulis mengira jika terus dimiringkan ke arah yang sama bentuknya akan melenceng dari sumbu, sehingga mencoba mengoreksinya, padahal struktur (M) sudah otomatis mengoreksi dirinya pada setiap tahap
- Artikel ditutup dengan catatan bahwa Donald Knuth pun pernah mengambil wrong turn saat menempelkan fraktal di dinding
1 komentar
Komentar Hacker News
Tulisan yang berwawasan dan digarap dengan sungguh-sungguh, dan visualisasi 3D-nya terutama bagus
Ini mengingatkan pada sesuatu yang dulu saya buat saat mengutak-atik decimation rekursif untuk membuat efek mirip fraktal dari gambar acak
Bisa dicoba langsung di sini: https://jsfiddle.net/nicobrenner/a1t869qf/
Klik
Blursort 2x2beberapa kali untuk membuat frame, lalu klikAnimate. Bisa juga copy/paste gambar, dan semuanya berjalan di browser tanpa backend. Tidak disarankan di mobileSaya jadi tertarik dan sepertinya berhasil membuat bentuk yang mengisi “wallflower” dengan L-system
https://onlinetools.com/math/l-system-generator?draw=AB&skip...
Dipikir-pikir lagi, ini mungkin menghasilkan fraktal lain, tapi saya tidak yakin
https://onlinetools.com/math/l-system-generator?draw=ABCD&sk...
Yang sebelumnya mengisi Koch island
Saya kira ini bacaan ringan, tapi karena harus bekerja, sebagian terpaksa hanya saya baca sekilas
Nanti saya akan kembali untuk mencoba-coba berbagai hal; ini benar-benar tulisan yang dibuat dengan sangat baik
Tulisannya jauh lebih dalam dan intens daripada yang saya kira, terasa sekali dedikasi di baliknya
Saya ingin bertanya kepada penulis: sekarang, apa yang akan direkomendasikan untuk digantung di dinding kamar anak?
Saya menyelipkan sedikit paragraf tentang burnout di bagian akhir tulisan. Dalam kasus saya, akar masalahnya adalah saya kehilangan pesona dan rasa ingin tahu yang dulu saya miliki terhadap matematika dan pemrograman, dan saat menulis artikel ini saya bisa kembali menyentuh rasa takjub kekanak-kanakan yang dulu mudah saya rasakan
Saya mengecek aritmetika dua bilangan dua digit, dan ternyata benar-benar bekerja
Saya mengira
41+14akan menjadi12. Karena kalau menjumlahkan dua kotak ke kanan dan dua kotak ke atas, hasilnya dua kotak ke kanan dan dua kotak ke atasDalam penjumlahan panjang di bawah,
=dipakai untuk menunjukkan baris yang ekuivalen, yaitu penataan ulang suku(1+2=2+1), penguraian angka(41=40+1), dan penjumlahan satu digit(1+4=22), sedangkan->dipakai saat algoritme memberikan digit, dan<dipakai saat berpindah ke kolom berikutnya41+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 == 12Di artikel itu ada dua sistem basis yang berbeda; pada salah satunya
10, 20, 30, 40bergerak searah jarum jam, sedangkan pada yang lain berlawanan arah jarum jam. Keduanya memiliki1, 2, 3, 4yang bergerak searah jarum jam. Penjumlahan di atas mengacu pada sistem kedua yang digunakan di tabel penjumlahan, yaitu sistem dengan digit puluhan yang berlawanan arah jarum jamIni juga bekerja pada sistem yang lain.
14+21seharusnya menjadi1214+21 =10+20+42 ->2 <1+2+4 =13+4 =10+3+4 =10+31 ->1 <1+3 =0 ==12Saya penasaran bagaimana bisa terpikir sistem penomoran “middle out”
Saat memecahkan soal matematika sendiri, saya jarang sekali bisa mendapatkan gagasan yang terasa seperti ilham semacam ini
Saya juga banyak memikirkan bagaimana menggambar fraktal itu dengan program, dan cara yang alami adalah memulai dari tengah lalu memperbesar ke arah luar
Ada anekdot tentang Richard Feynman yang menyimpan kira-kira selusin masalah acak di belakang pikirannya, lalu membuat sedikit kemajuan setiap kali melihat kaitannya, dan ketika akhirnya ia memecahkan salah satunya, orang-orang mengira ia secara ajaib mengetahuinya seketika. Kali ini agak mirip, tapi saya jauh dari level itu, dan saya nyaris hanya bisa melakukannya untuk satu masalah, bukan selusin
Di tempat kerja saya dulu, kami menggantung ini sebagai cetakan berukuran besar di dinding
https://raw.githubusercontent.com/cies/haskell-fractal/refs/... [17MB, maaf karena ini Github]
Ada juga kode Haskell yang digunakan untuk membuatnya: https://github.com/cies/haskell-fractal
Proses menemukan fungsi
sharpenkhususnya menarik. Untuk pencocokan kurva, saya memakai alat yang kini sudah hilang: https://github.com/cies/haskell-fractal/blob/master/fractal....Itu proyek kecil yang menyenangkan
Bagian “memutuskan untuk mendelegasikannya kepada diriku di masa depan yang tahu lebih banyak matematika” terasa sangat relatable
Dalam menentukan gelar apa yang akan saya ambil pun, daftar masalah yang perlu saya pecahkan tetapi belum bisa karena kurang peta dan koneksi internet sangat memengaruhi. Sebagian besar adalah masalah aljabar linear
Sepertinya ada typo dalam rumus polanya. Persamaan tepat setelah “Looking closely you might pick up on the pattern” seharusnya
5**(n/2), bukan5**n, dan5**((n-1)/2), bukan5**(n-1)\overrightarrow{10*4}adalah[0, 25], tetapi dengan rumus aslinya hasilnya[0, 625]Selain itu, mengenai kesalahan Knuth, komentar YouTube mengatakan bahwa fraktalnya sebenarnya benar dan ia hanya keliru mengira titik awal dan titik akhirnya. Secara longgar, fraktal itu simetris terhadap rotasi di tengah, dan justru rotasi itulah yang Knuth anggap salah. Bagaimanapun, ia tetap melakukan kesalahan terkait fraktal, jadi kesimpulannya tetap berlaku