Angka ini merupakan salah satu fraktal pertama yang dipelajari para ilmuwan. Itu berasal dari tiga salinan Kurva Koch, yang pertama kali muncul dalam makalah matematikawan Swedia Helge von Koch pada tahun 1904. Kurva ini diciptakan sebagai contoh garis kontinu yang tidak dapat bersinggungan dengan titik mana pun. Garis dengan sifat ini telah dikenal sebelumnya (Karl Weierstrass membuat contohnya pada tahun 1872), tetapi kurva Koch luar biasa karena kesederhanaan desainnya. Bukan suatu kebetulan jika artikelnya berjudul “Pada kurva kontinu tanpa garis singgung, yang muncul dari geometri dasar.”

Gambar dan animasinya dengan sempurna menunjukkan bagaimana kurva Koch dibuat langkah demi langkah. Iterasi pertama hanyalah segmen awal. Kemudian dibagi menjadi tiga bagian yang sama besar, yang tengah diselesaikan segitiga beraturan dan kemudian dibuang. Hasilnya adalah iterasi kedua - garis putus-putus yang terdiri dari empat segmen. Operasi yang sama diterapkan pada masing-masingnya, dan diperoleh langkah konstruksi keempat. Melanjutkan dengan semangat yang sama, Anda bisa mendapatkan lebih banyak garis baru (semuanya akan menjadi garis putus-putus). Dan apa yang terjadi pada batasnya (ini sudah menjadi benda imajiner) disebut kurva Koch.

Sifat dasar kurva Koch

1. Ini kontinu, tetapi tidak dapat dibedakan sama sekali. Secara kasar, inilah alasan mengapa ia diciptakan - sebagai contoh dari "orang aneh" matematika semacam ini.

2. Memiliki panjang yang tak terhingga. Misalkan panjang ruas asal sama dengan 1. Pada setiap langkah konstruksi, setiap ruas yang membentuk garis tersebut kita ganti dengan garis putus-putus yang panjangnya 4/3 kali. Artinya panjang seluruh garis putus-putus dikalikan 4/3 pada setiap langkahnya: panjang garis dengan bilangan N sama dengan (4/3) N-1 . Oleh karena itu, garis batas tidak punya pilihan selain panjangnya tak terhingga.

3. Kepingan salju Koch membatasi luas yang terbatas. Dan ini terlepas dari kenyataan bahwa kelilingnya tidak terbatas. Properti ini mungkin tampak paradoks, tetapi jelas - kepingan salju benar-benar masuk ke dalam lingkaran, sehingga luasnya jelas terbatas. Luasnya dapat dihitung, dan Anda bahkan tidak memerlukan pengetahuan khusus untuk ini - rumus luas segitiga dan jumlahnya perkembangan geometri berlangsung di sekolah. Bagi yang berminat, penghitungannya tercantum di bawah ini dalam cetakan kecil.

Biarkan sisi segitiga beraturan asal sama dengan A. Maka luasnya adalah . Mula-mula sisinya adalah 1 dan luasnya adalah: . Apa yang terjadi ketika iterasi meningkat? Kita dapat berasumsi bahwa segitiga sama sisi kecil terikat pada poligon yang sudah ada. Pertama kali hanya ada 3, dan berikutnya jumlahnya 4 kali lebih banyak dari sebelumnya. Artinya, aktif N langkah ke-th akan selesai Tn= 3 4 N–1 segitiga. Panjang sisi masing-masing segitiga adalah sepertiga dari sisi segitiga yang diselesaikan pada langkah sebelumnya. Jadi sama dengan (1/3) N. Luasnya sebanding dengan kuadrat sisi-sisinya, jadi luas setiap segitiga adalah . Untuk nilai yang besar N Ngomong-ngomong, ini sangat sedikit. Kontribusi total segitiga-segitiga ini terhadap luas kepingan salju adalah Tn · S n= 3/4 · (4/9) N · S 0 . Oleh karena itu setelahnya N-langkah, luas gambar akan sama dengan jumlah S 0 + T 1 · S 1 + T 2 · S 2 + ... +Tn S N = . Kepingan salju diperoleh setelah jumlah langkah yang tak terbatas, yang sesuai dengan N→ ∞. Hasilnya adalah jumlah yang tak terbatas, tetapi ini adalah jumlah dari barisan geometri yang menurun; ada rumusnya: . Luas kepingan salju adalah .

4. Dimensi fraktal sama dengan log4/log3 = log 3 4 ≈ 1,261859... . Perhitungan yang akurat akan membutuhkan usaha yang besar dan penjelasan yang detail, oleh karena itu berikut ini gambaran tentang pengertian dimensi fraktal. Dari rumus hukum pangkat N(δ ) ~ (1/δ )D, Di mana N- jumlah kotak berpotongan, δ - ukurannya, dan D- dimensi, kita mengerti D= catatan 1/ δ N. Persamaan ini berlaku sampai penambahan suatu konstanta (sama untuk semua δ ). Gambar tersebut menunjukkan iterasi kelima pembuatan kurva Koch; kotak kotak yang berpotongan dengannya diberi warna hijau. Panjang ruas asal adalah 1, jadi pada gambar di atas panjang sisi persegi adalah 1/9. 12 kotak diarsir, log 9 12 ≈ 1.130929... . Belum mirip banget sama 1.261859... . Mari kita lihat lebih jauh. Pada gambar tengah, persegi berukuran setengah, ukurannya 1/18, diarsir 30. log 18 30 ≈ 1.176733... . Sudah lebih baik. Di bawah, kotaknya masih berukuran setengahnya; 72 buah sudah dicat. catatan 72 30 ≈ 1.193426... . Bahkan lebih dekat. Maka Anda perlu menambah angka iterasi dan sekaligus mengurangi kuadratnya, maka nilai “empiris” dimensi kurva Koch akan terus mendekati log 3 4, dan pada batasnya akan bertepatan sepenuhnya.

Kepingan salju fraktal, salah satu objek geometris paling terkenal dan misterius, dideskripsikan oleh Helga von Koch pada awal abad kita. Menurut tradisi, dalam literatur kita disebut kepingan salju Koch. Ini adalah sosok geometris yang sangat “runcing”, yang secara metaforis dapat dilihat sebagai hasil dari Bintang Daud yang berulang kali “berkembang biak” dengan dirinya sendiri. Enam sinar utamanya ditutupi dengan simpul “jarum” besar dan kecil yang jumlahnya tak terbatas. Setiap fragmen mikroskopis dari kontur kepingan salju bagaikan dua kacang polong, dan berkas besar tersebut, pada gilirannya, berisi fragmen mikroskopis yang sama dalam jumlah tak terhingga.

Pada simposium internasional tentang metodologi pemodelan matematika di Varna pada tahun 1994, saya menemukan karya penulis Bulgaria yang menggambarkan pengalaman mereka menggunakan kepingan salju Koch dan objek serupa lainnya dalam pelajaran sekolah menengah untuk mengilustrasikan masalah pembagian ruang dan aporia filosofis Zeno. Selain itu, dari sudut pandang pendidikan, menurut saya, prinsip membangun struktur geometris fraktal beraturan sangat menarik - prinsip perkalian rekursif elemen dasar. Bukan tanpa alasan alam “menyukai” bentuk fraktal. Hal ini dijelaskan secara tepat oleh fakta bahwa mereka diperoleh dengan reproduksi sederhana dan mengubah ukuran suatu blok bangunan dasar tertentu. Seperti yang Anda ketahui, alam tidak dipenuhi dengan berbagai alasan dan, jika memungkinkan, puas dengan solusi algoritmik yang paling sederhana. Perhatikan baik-baik kontur daunnya, dan dalam banyak kasus Anda akan menemukan hubungan yang jelas dengan bentuk kontur kepingan salju Koch.

Visualisasi struktur geometris fraktal hanya dapat dilakukan dengan bantuan komputer. Sudah sangat sulit untuk membuat kepingan salju Koch di atas urutan ketiga secara manual, tetapi Anda benar-benar ingin melihat ke dalam ketidakterbatasan! Oleh karena itu, mengapa tidak mencoba mengembangkan program komputer yang sesuai. Di RuNet Anda dapat menemukan rekomendasi untuk membuat kepingan salju Koch dari segitiga. Hasil dari algoritma ini tampak seperti kumpulan garis-garis yang berpotongan. Lebih menarik untuk menggabungkan angka ini dari "potongan". Kontur kepingan salju Koch terdiri dari segmen-segmen dengan panjang yang sama yang miring pada 0°, 60°, dan 120° terhadap sumbu x horizontal. Jika kita menyatakannya masing-masing 1, 2 dan 3, maka kepingan salju dengan urutan apa pun akan terdiri dari kembar tiga yang berurutan - 1, 2, 3, 1, 2, 3, 1, 2, 3... dst. Masing-masing dari ketiga jenis ini segmen dapat dilampirkan ke yang sebelumnya di satu atau ujung lainnya. Dengan mempertimbangkan keadaan ini, kita dapat berasumsi bahwa kontur kepingan salju terdiri dari enam jenis segmen. Mari kita nyatakan sebagai 0, 1, 2, 3, 4, 5. Jadi, kita mendapat kesempatan untuk menyandikan kontur orde apa pun menggunakan 6 digit (lihat gambar).

Kepingan salju tingkat tinggi diperoleh dari pendahulunya tingkat rendah dengan mengganti setiap sisi dengan empat, terhubung seperti telapak tangan terlipat (_/\_). Tepi tipe 0 diganti dengan empat tepi 0, 5, 1, 0 dan seterusnya sesuai tabel:

0 0 1 5 0
1 1 2 0 1
2 2 3 1 2
3 3 4 2 3
4 4 5 3 4
5 5 0 4 5

Segitiga sama sisi sederhana dapat dianggap sebagai kepingan salju Koch orde nol. Dalam sistem pengkodean yang dijelaskan, ini sesuai dengan entri 0, 4, 2. Segala sesuatu yang lain dapat diperoleh dengan penggantian yang dijelaskan. Saya tidak akan memberikan kode prosedur di sini dan dengan demikian menghilangkan kesenangan Anda dalam mengembangkan program Anda sendiri. Saat menulisnya, sama sekali tidak perlu menggunakan panggilan rekursif eksplisit. Bisa diganti dengan siklus biasa. Dalam proses kerja, Anda akan memiliki alasan lain untuk memikirkan tentang rekursi dan perannya dalam pembentukan bentuk kuasi-fraktal dunia sekitar kita, dan di ujung jalan (jika, tentu saja, Anda tidak terlalu malas untuk melewatinya sampai akhir) Anda akan dapat mengagumi pola rumit kontur kepingan salju fraktal, dan akhirnya melihat wajah ketidakterbatasan.

Topik: Fraktal.

1. Perkenalan. Singkat referensi sejarah tentang fraktal. 2. Fraktal adalah unsur geometri yang ada di alam.

3. Objek dengan sifat fraktal di alam. 4. Definisi istilah “fraktal”.

5.Kelas fraktal.

6.Deskripsi proses fraktal. 7.Prosedur untuk memperoleh himpunan fraktal.

8.1 Kokha Rusak (prosedur perolehan).

8.2 Kepingan Salju Koch (Fraktal Koch).

8.3 Spons Menger.

9. Contoh penggunaan fraktal.

Perkenalan. Latar belakang sejarah singkat tentang fraktal.

Fraktal adalah cabang muda matematika diskrit.

DI DALAM Pada tahun 1904, Koch dari Swedia menemukan kurva kontinu yang tidak bersinggungan di mana pun - kurva Koch.

DI DALAM Pada tahun 1918, orang Prancis Julia mendeskripsikan seluruh keluarga fraktal.

DI DALAM Pada tahun 1938, Pierre Levy menerbitkan artikel “Kurva dan permukaan bidang dan spasial yang terdiri dari bagian-bagian yang serupa dengan keseluruhan.”

DI DALAM 1982 Benoit Mandelbrot menerbitkan buku "The Fractal Geometry of Nature".

DENGAN Dengan menggunakan konstruksi dan rumus sederhana, gambar diperoleh. “Lukisan fraktal” muncul.

Sejak 1993, World Scientific telah menerbitkan jurnal “Fractals”.

Fraktal adalah elemen geometri di alam.

Fraktal adalah alat untuk mendeskripsikan objek seperti model pegunungan, terjal garis pantai, sistem peredaran darah dari banyak kapiler dan pembuluh darah, tajuk pohon, air terjun yang mengalir, pola beku pada kaca.

Atau ini: daun pakis, awan, noda.

Gambar objek tersebut dapat direpresentasikan menggunakan grafik fraktal.

Objek dengan sifat fraktal di alam.

KarangBintang Laut dan Bulu BabiKerang Laut

Bunga dan tumbuhan (brokoli, kubis) Buah-buahan (nanas)

Mahkota pohon dan daun tanaman Sistem sirkulasi dan bronkus manusia dan hewan Di alam mati:

Batas-batas objek geografis (negara, wilayah, kota) Garis pantai Pegunungan Kepingan Salju Awan Petir

Pola terbentuk pada kaca Kristal Stalaktit, stalagmit, heliktit.

Definisi terminologi "fraktal".

Fraktal adalah angka geometris, yang memenuhi satu atau lebih properti berikut:

Ia mempunyai struktur kompleks yang tidak sepele pada perbesaran apa pun (di semua skala); Ia (kira-kira) mirip dengan dirinya sendiri.

Ia memiliki dimensi pecahan Hausdorff (fraktal) atau melebihi dimensi topologi; Dapat dibangun dengan prosedur rekursif.

Untuk bangun datar beraturan seperti lingkaran, elips, grafik fungsi halus pecahan kecil dalam skala yang sangat besar tampak seperti pecahan garis lurus. Untuk fraktal, peningkatan skala tidak menyebabkan penyederhanaan struktur; untuk semua skala kita akan melihat gambar yang sama rumitnya.

Kelas fraktal

Fraktal adalah suatu struktur yang terdiri dari bagian-bagian (substruktur) yang serupa dengan keseluruhan.

Beberapa fraktal, sebagai unsur alam, dapat diklasifikasikan sebagai fraktal geometris (konstruktif).

Sisanya dapat digolongkan sebagai fraktal dinamis (aljabar).

Prosedur untuk mendapatkan himpunan fraktal.

Ini adalah prosedur rekursif sederhana untuk mendapatkan kurva fraktal: tentukan garis putus-putus sembarang dengan nomor terbatas tautan - generator. Selanjutnya setiap segmen generator diganti di dalamnya. Kemudian tiap segmen di dalamnya kembali digantikan oleh generator, dan seterusnya ad infinitum.

Tampil: pembagian suatu ruas satuan menjadi 3 bagian (a), luas persegi satuan menjadi 9 bagian (b), kubus satuan menjadi 27 bagian (c) dan 64 bagian (d). Banyaknya bagian adalah n, faktor skalanya adalah k, dan dimensi ruangnya adalah d. Kami memiliki hubungan berikut: n = kd,

jika n = 3, k = 3, maka d = 1; jika n = 9, k = 3, maka d = 2; jika n = 27, k = 3, maka d = 3.

jika n = 4, k = 4, maka d = 1; jika n = 16, k = 4, maka d = 2; jika n = 64, k = 4, maka d = 3. Dimensi ruang dinyatakan dalam bilangan bulat: d = 1, 2, 3; untuk n = 64, nilai d adalah

Lima langkah membangun polyline Koch ditampilkan: segmen dengan satuan panjang (a), dibagi menjadi tiga bagian (k = 3), dari empat bagian (n = 4) - garis putus-putus (b); setiap ruas lurus dibagi menjadi tiga bagian (k2 = 9) dan dari 16 bagian (n2 = 16) - garis putus-putus (c); prosedur ini diulangi untuk k3 = 27 dan n3 = 64 – garis putus-putus (g); untuk k5 = 243 dan n5 = 1024 – garis putus-putus (e).

Dimensi

Ini adalah dimensi pecahan atau fraktal.

Polyline Koch, yang diusulkan oleh Helg von Koch pada tahun 1904, bertindak sebagai fraktal yang cocok untuk memodelkan kekasaran garis pantai. Mandelbrot memasukkan unsur keacakan ke dalam algoritma konstruksi garis pantai, namun tidak mempengaruhi kesimpulan utama mengenai panjang garis pantai. Karena batasnya

Panjang garis pantai cenderung tak terhingga karena kekasaran pantai yang tiada habisnya.

Tata cara perataan garis pantai apabila berpindah dari skala yang lebih rinci ke skala yang kurang rinci, yaitu.

Kepingan salju Koch (fraktal Koch)

Sebagai dasar konstruksi, Anda tidak dapat mengambil segmen dengan satuan panjang, tetapi segitiga sama sisi, di setiap sisinya Anda dapat memperluas prosedur mengalikan ketidakteraturan. Dalam hal ini, kita mendapatkan kepingan salju Koch (Gbr.), dan terdiri dari tiga jenis: segitiga yang baru terbentuk diarahkan hanya ke luar dari segitiga sebelumnya (a) dan (b); hanya di dalam (dalam); secara acak baik ke luar atau ke dalam (d) dan (e). Bagaimana Anda mengatur prosedur untuk membuat fraktal Koch.

Beras. Kepingan Salju Koch

Pada Gambar. dua diagram vektor ditampilkan; Angka-angka di atas tanda panah mungkin akan menimbulkan pertanyaan: apa maksudnya? Vektor 0 bertepatan dengan arah positif sumbu absis, karena faktor fasa exp (i2πl/6) pada l = 0 mempertahankan arahnya. Vektor 1 diputar relatif terhadap vektor 0 dengan sudut 2π/6, ketika l= 1. Vektor 5 mempunyai faktor fasa exp (i2π5/6), l = 5. Vektor terakhir mempunyai faktor fasa yang sama dengan vektor pertama ( aku = 0). Bilangan bulat l mencirikan sudut faktor fase vektor satuan.

Langkah pertama (Gbr.) menentukan prosedur rekursif untuk semua langkah selanjutnya dan, khususnya, untuk langkah kedua (Gbr.). Bagaimana cara berpindah dari himpunan bilangan φ1 = (0 1 5 0) ke φ2 = (0 1 5 0 1 2 0 1 5 0 4 5 0 1 5 0)? Jawaban: melalui perkalian matriks langsung, yaitu setiap elemen suatu matriks dikalikan dengan matriks aslinya. Karena dalam hal ini kita berhadapan dengan array satu dimensi, yaitu. Karena matriks adalah vektor, maka setiap elemen vektor-matriks yang satu dikalikan dengan semua elemen vektor-matriks lainnya. Selain itu, unsur-unsur matriks-vektor φ1 terdiri dari fungsi eksponensial exp (i2πl/6), oleh karena itu, 10 pada saat mengalikan bilangan h perlu dijumlahkan sesuai mod (6), dan tidak dikalikan.

Saat itu musim dingin luar biasa hangat di Boston, namun kami masih menunggu turunnya salju pertama. Menyaksikan salju turun melalui jendela, saya memikirkan tentang kepingan salju dan bagaimana strukturnya sama sekali tidak mudah untuk dijelaskan secara matematis. Namun ada satu jenis kepingan salju khusus, yang dikenal sebagai kepingan salju Koch, yang dapat dijelaskan dengan relatif sederhana. Hari ini kita akan melihat bagaimana bentuknya dapat dibuat menggunakan COMSOL Multiphysics Application Builder.

Pembuatan Kepingan Salju Koch

Seperti yang telah kami sebutkan di blog kami, fraktal dapat digunakan dalam . Kepingan Salju Koch adalah fraktal, yang penting karena ada proses iteratif yang sangat sederhana untuk membangunnya:

  1. Mari kita mulai dengan segitiga sama sisi, yang sebenarnya merupakan iterasi ke-0 dari kepingan salju Koch.
  2. Mari kita cari titik pusat di setiap tepi kepingan salju saat ini.
  3. Di tengah setiap sisi, tambahkan segitiga sama sisi yang menonjol keluar dengan sisi sama dengan 1/3 panjang sisi saat ini.
  4. Mari kita tentukan iterasi berikutnya dari kepingan salju Koch yang berada di luar kepingan salju sebelumnya dan semua segitiga yang ditambahkan.
  5. Ulangi langkah 2-4 sebanyak yang diperlukan.

Prosedur ini diilustrasikan pada gambar di bawah untuk empat iterasi pertama menggambar kepingan salju.

Empat iterasi pertama dari kepingan salju Koch. Gambar oleh Wxs - Karya sendiri. Berlisensi di bawah CC BY-SA 3.0, melalui Wikimedia Commons.

Konstruksi geometri kepingan salju Koch

Karena sekarang kita tahu algoritma mana yang harus digunakan, mari kita lihat cara membuat struktur seperti itu menggunakan COMSOL Multiphysics Application Builder. Kami akan membuka file baru dan membuat objek 2D bagian geometri di simpul Definisi global. Untuk objek ini, kita akan menetapkan lima parameter masukan: panjang sisi segitiga sama sisi; X- Dan kamu– koordinat titik tengah alas; dan komponen vektor normal yang diarahkan dari titik tengah alas ke titik sudut yang berlawanan, seperti terlihat pada gambar di bawah.


Lima parameter yang digunakan untuk mengatur ukuran, posisi, dan orientasi segitiga sama sisi.


Mengatur parameter masukan bagian geometris.
Poligon primitif digunakan untuk membuat segitiga sama sisi.


Objek dapat berputar mengelilingi bagian tengah tepi bawah.


Suatu benda dapat dipindahkan relatif terhadap titik asal.

Sekarang kita telah mendefinisikan bagian geometrisnya, kita menggunakannya satu kali pada bagian tersebut Geometri. Segitiga tunggal ini setara dengan iterasi ke-nol dari kepingan salju Koch, dan sekarang mari kita gunakan Pembuat Aplikasi untuk membuat kepingan salju yang lebih kompleks.

Markup UI Aplikasi di Pembuat Aplikasi

Aplikasi ini memiliki antarmuka pengguna yang sangat sederhana. Ini hanya berisi dua komponen yang dapat berinteraksi dengan pengguna: Penggeser (Penggeser)(ditandai sebagai 1 pada gambar di bawah), yang dengannya Anda dapat mengatur jumlah iterasi yang diperlukan untuk membuat kepingan salju, dan Tombol(label 2), dengan mengklik geometri yang dihasilkan dibuat dan ditampilkan. ada juga Prasasti teks(label 3) dan Tampilan (Display) data(label 4), yang menunjukkan jumlah iterasi yang ditentukan, serta jendelanya Grafik(label 5), yang menampilkan geometri akhir.


Aplikasi ini memiliki satu formulir dengan lima komponen.

Aplikasi ini memiliki dua Definisi, salah satunya mendefinisikan nilai bilangan bulat yang disebut Iterasi, yang defaultnya adalah nol tetapi dapat diubah oleh pengguna. Array ganda 1D yang disebut Pusat juga ditentukan. Elemen tunggal dalam array memiliki nilai 0,5, yang digunakan untuk mencari titik pusat setiap sisi. Nilai ini tidak pernah berubah.


Pengaturan untuk dua Definisi.

Komponen Slider di UI mengontrol nilai integer, parameter Iterasi. Tangkapan layar di bawah menunjukkan pengaturan untuk "Slider" dan nilainya, yang ditetapkan sebagai bilangan bulat dalam rentang antara 0 dan 5. Sumber yang sama (seperti untuk slider) juga dipilih untuk komponen Tampilan Data untuk menampilkan jumlah iterasi yang ditentukan pada layar aplikasi. Kami membatasi pengguna potensial hingga lima iterasi karena algoritme yang digunakan kurang optimal dan tidak terlalu efisien, namun cukup sederhana untuk diimplementasikan dan didemonstrasikan.


Pengaturan untuk komponen "Slider".

Selanjutnya, mari kita lihat pengaturan tombol kita, yang ditunjukkan pada gambar di bawah. Saat tombol ditekan, dua perintah dijalankan. Pertama, metode CreateSnowFlake dipanggil. Geometri yang dihasilkan kemudian ditampilkan di jendela grafik.


Pengaturan tombol.

Kita sekarang telah melihat antarmuka pengguna aplikasi kita dan kita dapat melihat bahwa pembuatan geometri kepingan salju harus dilakukan melalui metode yang disebut. Mari kita lihat kode untuk metode ini, dengan penomoran baris ditambahkan ke kiri dan konstanta string disorot dengan warna merah:

1 model.geom("geom1" ).feature().clear(); 2 model.geom("geom1" ).create("pi1" , "PartInstance" ); 3 model.geom("geom1" ).menjalankan("sirip" ); 4 untuk (int iter = 1; iter "geom1" ).getNEdges()+1; 6 UnionList = "pi" + iter; 7 untuk (int edge = 1; edge "geom1" ).getNEdges(); edge++) ( 8 String newPartInstance = "pi" + iter + edge; 9 model.geom("geom1" ).create(newPartInstance, "PartInstance" ).set("part" , "part1" ); 10 with(model. geom("geom1" ).feature(newPartInstance)); 11 setEntry("inputexpr" , "Panjang" , toString(Math.pow(1.0/3.0, iter))); 12 setEntry("inputexpr" , "px" , model.geom("geom1" ).edgeX(tepi, Tengah)); 13 setEntry("inputexpr" , "py" , model.geom("geom1" ).edgeX(tepi, Tengah)); 14 setEntry("inputexpr " , "nx" , model.geom("geom1" ).edgeNormal(tepi, Tengah)); 15 setEntry("inputexpr" , "ny" , model.geom("geom1" ).edgeNormal(tepi, Tengah)) ; 16 endwith(); 17 UnionList = newPartInstance; 18 ) 19 model.geom("geom1" ).create("pi" +(iter+1), "Union" ).selection("input" ).set(UnionList ); 20 model.geom("geom1" ).feature("pi" +(iter+1)).set("intbnd" , "off" ); 21 model.geom("geom1" ).run("sirip" ); 22)

Mari kita telusuri kode baris demi baris untuk memahami fungsi apa yang dilakukan setiap baris:

  1. Menghapus semua barisan geometri yang ada sehingga kita bisa memulai dari awal.
  2. Kami membuat satu contoh objek - "segitiga" kami, menggunakan ukuran, orientasi, dan lokasi default. Ini adalah kepingan salju orde nol kami dengan label pengenal pi1.
  3. Mari kita selesaikan geometrinya. Operasi ini diperlukan untuk memperbarui semua indeks geometri.
  4. Mari kita mulai proses iterasi melalui semua iterasi kepingan salju yang diberikan, menggunakan definisi Iterasi sebagai kondisi penghentian.
  5. Kami mendefinisikan array string kosong, UnionList. Setiap elemen array berisi pengidentifikasi berbagai objek geometris. Panjang array ini sama dengan jumlah edge pada iterasi terakhir ditambah satu.
  6. Kami mendefinisikan elemen pertama dalam array UnionList. Ini adalah pengidentifikasi hasil iterasi sebelumnya. Ingatlah bahwa iterasi nol telah dibuat di baris 1-3. Nilai integer iter secara otomatis dikonversi ke string dan ditambahkan ke akhir string "pi" .
  7. Kami menelusuri jumlah tepi kepingan salju yang dihasilkan sebelumnya.
  8. Kami menetapkan label pengenal untuk instance baru dari suatu objek yang mengakses dari instance bagian "segitiga" yang dibuat di tepi ini. Perhatikan bahwa nilai integer iter dan edge ditambahkan secara berurutan ke akhir string pi , label pengidentifikasi instance objek.
  9. Kami membuat instance objek "segitiga" dan memberinya label pengidentifikasi yang baru saja ditentukan.
  10. Kami menunjukkan bahwa baris 11-15 merujuk pada instance objek saat ini (bagian instance) menggunakan pernyataan with()/endwith().
  11. Tentukan panjang sisi segitiga tersebut. Orde ke-nol mempunyai panjang sisi satu, sehingga iterasi ke-n mempunyai panjang sisi (1/3)n. Fungsi toString() diperlukan untuk mentransmisikan (mengonversi) tipe data - angka floating point menjadi string.
  12. Kami mengatur X-koordinat segitiga baru, sebagai titik pusat sisi iterasi terakhir. Metode edgeX didokumentasikan dalam . Ingatlah bahwa Pusat diatur ke 0,5.
  13. Kami mengatur kamu-koordinat.
  14. Kami mengatur X-komponen vektor normal segitiga. Metode edgeNormal juga didokumentasikan dalam Manual Referensi Pemrograman COMSOL.
  15. Kami mengatur kamu-komponen vektor normal.
  16. Kami menutup pernyataan with()/endwith().
  17. Tambahkan pengidentifikasi label segitiga saat ini ke daftar semua objek.
  18. Kami menutup pencarian di semua sisi.
  19. Kami membuat Boolean Union (penyatuan logis) dari semua objek menjadi barisan geometris. Kami menetapkan nilai pi baru ke label N, di mana N adalah nomornya Berikutnya iterasi. Tanda kurung diperlukan di sekitar (iter+1) agar nilai iter yang bertambah diubah menjadi string.
  20. Kami menunjukkan bahwa batas internal objek akhir tidak dipertahankan.
  21. Mari kita selesaikan geometrinya. Operasi terakhir memperbarui semua indeks geometri untuk iterasi kepingan salju berikutnya.
  22. Kami menutup siklus iterasi pembuatan kepingan salju.

Dengan demikian, kami telah mencakup semua aspek dan elemen aplikasi kami. Mari kita lihat hasilnya!


Aplikasi sederhana kami untuk membuat kepingan salju Koch.

Kita dapat memperluas aplikasi kita untuk menulis geometri ke sebuah file, atau bahkan melakukan analisis tambahan secara langsung. Misalnya, kita dapat mendesain antena fraktal. Jika Anda tertarik dengan desain antena, lihat contoh kami, atau bahkan buat tata letaknya dari awal.

Cobalah sendiri

Jika Anda ingin membuat aplikasi ini sendiri, namun belum menyelesaikan Pembuat Aplikasi, sumber daya berikut mungkin berguna bagi Anda:

  • Unduh panduannya Pengantar Lingkungan Pengembangan Aplikasi dalam Bahasa Inggris
  • Tonton video ini dan pelajari cara menggunakannya
  • Baca topik ini untuk memahami cara penggunaan aplikasi simulasi

Setelah Anda mempelajari materi ini, Anda akan melihat bagaimana fungsi aplikasi dapat diperluas untuk mengubah ukuran kepingan salju, mengekspor geometri yang dibuat, memperkirakan luas dan keliling, dan banyak lagi.

Aplikasi seperti apa yang ingin Anda buat di COMSOL Multiphysics? untuk bantuan.

Angka ini merupakan salah satu fraktal pertama yang dipelajari para ilmuwan. Itu berasal dari tiga salinan Kurva Koch, yang pertama kali muncul dalam makalah matematikawan Swedia Helge von Koch pada tahun 1904. Kurva ini diciptakan sebagai contoh garis kontinu yang tidak dapat bersinggungan dengan titik mana pun. Garis dengan sifat ini telah dikenal sebelumnya (Karl Weierstrass membuat contohnya pada tahun 1872), tetapi kurva Koch luar biasa karena kesederhanaan desainnya. Bukan suatu kebetulan jika artikelnya berjudul “Pada kurva kontinu tanpa garis singgung, yang muncul dari geometri dasar.”

Menulis fungsi yang memanggil dirinya sendiri secara rekursif adalah salah satu cara untuk menghasilkan diagram fraktal di layar. Namun, bagaimana jika Anda ingin baris-baris pada Cantor di atas ditetapkan sebagai objek terpisah yang dapat dipindahkan secara mandiri? Fungsi rekursifnya sederhana dan elegan, namun tidak memungkinkan Anda melakukan lebih dari sekadar membuat template itu sendiri.

Berikut peraturannya. Kurva Koch dan pola fraktal lainnya sering disebut "monster matematika". Hal ini disebabkan oleh paradoks aneh yang muncul ketika Anda menerapkan definisi rekursif berkali-kali. Jika panjang garis awal asli adalah satu, iterasi pertama kurva Koch akan menghasilkan panjang garis empat pertiga. Lakukan lagi dan Anda mendapatkan enam belas sembilan. Saat Anda melakukan iterasi hingga tak terhingga, panjang kurva Koch mendekati tak terhingga. Namun, ini cocok dengan ruang terbatas kecil yang disediakan di sini, di makalah ini!

Tahap pertama membangun kurva Koch

Gambar dan animasinya dengan sempurna menunjukkan bagaimana kurva Koch dibuat langkah demi langkah. Iterasi pertama hanyalah segmen awal. Kemudian dibagi menjadi tiga bagian yang sama besar, bagian tengah diselesaikan hingga membentuk segitiga beraturan lalu dibuang. Hasilnya adalah iterasi kedua - garis putus-putus yang terdiri dari empat segmen. Operasi yang sama diterapkan pada masing-masingnya, dan diperoleh langkah konstruksi keempat. Melanjutkan dengan semangat yang sama, Anda bisa mendapatkan lebih banyak garis baru (semuanya akan menjadi garis putus-putus). Dan apa yang terjadi pada batasnya (ini sudah menjadi benda imajiner) disebut kurva Koch.

Karena kami sedang mengerjakan pemrosesan piksel hingga di Bumi, paradoks teoretis ini tidak akan menjadi faktor bagi kami. Kita dapat melanjutkan dengan cara yang sama seperti himpunan Cantor dan menulis fungsi rekursif yang menerapkan aturan Koch secara berulang-ulang. Namun, kita akan menyelesaikan masalah ini secara berbeda dengan memperlakukan setiap segmen kurva Koch sebagai objek terpisah. Ini akan membuka beberapa kemungkinan desain. Misalnya, jika setiap segmen adalah sebuah objek, kita dapat mengizinkan setiap segmen bergerak secara independen dari lokasi aslinya dan berpartisipasi dalam simulasi fisika.

Sifat dasar kurva Koch

1. Ini kontinu, tetapi tidak dapat dibedakan sama sekali. Secara kasar, inilah alasan mengapa ia diciptakan - sebagai contoh dari "orang aneh" matematika semacam ini.

2. Memiliki panjang yang tak terhingga. Misalkan panjang ruas asal sama dengan 1. Pada setiap langkah konstruksi, setiap ruas yang membentuk garis tersebut kita ganti dengan garis putus-putus yang panjangnya 4/3 kali. Artinya panjang seluruh garis putus-putus dikalikan 4/3 pada setiap langkahnya: panjang garis dengan bilangan N sama dengan (4/3) n–1 . Oleh karena itu, garis batas tidak punya pilihan selain panjangnya tak terhingga.

Selain itu, kita dapat menggunakan warna acak, ketebalan garis, dll. Untuk menampilkan setiap segmen secara berbeda. Untuk menyelesaikan tugas kita dalam memperlakukan setiap segmen sebagai objek terpisah, pertama-tama kita harus memutuskan apa yang harus dilakukan objek tersebut. Fitur apa yang harus dimilikinya?

Mari kita lihat apa yang kita miliki. Dengan elemen di atas, bagaimana dan di mana kita menerapkan aturan dan prinsip rekursi Koch? Dalam simulasi ini, kami selalu mengikuti dua generasi: generasi sekarang dan generasi berikutnya. Ketika kami selesai menghitung generasi berikutnya, sekarang menjadi relevan dan kami melanjutkan ke penghitungan generasi berikutnya yang baru.

3. Kepingan salju Koch membatasi luas yang terbatas. Dan ini terlepas dari kenyataan bahwa kelilingnya tidak terbatas. Properti ini mungkin tampak paradoks, tetapi jelas - kepingan salju benar-benar masuk ke dalam lingkaran, sehingga luasnya jelas terbatas. Luasnya dapat dihitung, dan Anda bahkan tidak memerlukan pengetahuan khusus untuk ini - rumus luas segitiga dan jumlah barisan geometri diajarkan di sekolah. Bagi yang berminat, penghitungannya tercantum di bawah ini dalam cetakan kecil.

Kami akan menggunakan teknik serupa di sini. Seperti inilah tampilan kodenya. Tentu saja, hal di atas tidak termasuk "pekerjaan" sebenarnya di sini yang mendefinisikan aturan-aturan ini. Bagaimana cara kita membagi satu ruas garis menjadi empat seperti yang dijelaskan dalam aturan? Konstruksi fraktal didasarkan pada konsep ketidakterbatasan. Langkah 2: Kami akan membagi segmen ini menjadi tiga bagian yang sama dan menaikkan segitiga sama sisi di bagian tengah. Langkah 3: Pada empat segmen baru kita akan melakukan langkah tersebut.

Persimpangan alat di antara dua objek, klik pada lingkaran. Kepingan salju Koch adalah kurva fraktal khusus yang dibuat oleh ahli matematika Koch, dimulai dengan renda Koch. Ini adalah kurva yang ditarik sepanjang sisi segitiga sama sisi. Tali Koch dibuat di setiap sisi segitiga.

Biarkan sisi segitiga beraturan asal sama dengan A. Lalu wilayahnya. Mula-mula sisinya adalah 1 dan luasnya adalah: . Apa yang terjadi ketika iterasi meningkat? Kita dapat berasumsi bahwa segitiga sama sisi kecil terikat pada poligon yang sudah ada. Pertama kali hanya ada 3, dan berikutnya jumlahnya 4 kali lebih banyak dari sebelumnya. Artinya, aktif N Pada langkah ke-th, T n = 3 · 4 n–1 segitiga akan selesai. Panjang sisi masing-masing segitiga adalah sepertiga dari sisi segitiga yang diselesaikan pada langkah sebelumnya. Artinya sama dengan (1/3) n. Luasnya sebanding dengan kuadrat sisi-sisinya, jadi luas setiap segitiga adalah . Untuk nilai yang besar N Ngomong-ngomong, ini sangat sedikit. Kontribusi total segitiga-segitiga ini terhadap luas kepingan salju adalah T n · S n = 3/4 · (4/9) n · S 0 . Oleh karena itu setelahnya N langkah ke-lima, luas bangun tersebut akan sama dengan jumlah S 0 + T 1 · S 1 + T 2 · S 2 + ... +T n · S n = . Kepingan salju diperoleh setelah jumlah langkah yang tak terbatas, yang sesuai dengan n → ∞. Hasilnya adalah jumlah yang tak terbatas, tetapi ini adalah jumlah dari barisan geometri yang menurun; ada rumusnya: . Luas kepingan salju adalah sama.

Tabel berikut menunjukkan langkah pertama dalam membuat kurva. Untuk membuat fraktal, Anda hanya perlu menyisipkan tiga salinan kurva di sepanjang sisi segitiga. Perhatikan bahwa sosok kedua adalah Bintang Daud. Hasil akhirnya adalah kurva tertutup yang dibangun di atas segitiga sama sisi. Perlu dicatat bahwa frit tersebut berisi bintang berujung enam. Desainnya sangat mirip dengan fraktal pentagonal.

Ada cara lain untuk membuat kepingan salju. Konstruksi yang diuraikan di atas dapat didefinisikan sebagai konstruksi dengan penjumlahan, karena bangun awalnya, segitiga, menambahkan unsur-unsur lain. Ada substruktur yang menghilangkan elemen, bukan bentuk aslinya.

4. Dimensi fraktal adalah log4/log3 = log 3 4 ≈ 1,261859... . Perhitungan yang akurat akan membutuhkan usaha yang besar dan penjelasan yang detail, oleh karena itu berikut ini gambaran tentang pengertian dimensi fraktal. Dari rumus hukum pangkat N(δ) ~ (1/δ)D, dimana N- jumlah kotak berpotongan, δ - ukurannya, D- dimensi, kita peroleh bahwa D = log 1/δ N. Persamaan ini berlaku sampai penambahan konstanta (sama untuk semua δ ). Gambar tersebut menunjukkan iterasi kelima pembuatan kurva Koch; kotak kotak yang berpotongan dengannya diberi warna hijau. Panjang ruas asal adalah 1, jadi pada gambar sebelah kiri panjang sisi persegi adalah 1/9. 12 kotak diarsir, log 9 12 ≈ 1.130929... . Belum mirip banget sama 1.261859... . Mari kita lihat lebih jauh. Pada gambar tengah, persegi berukuran setengah, ukurannya 1/18, diarsir 30. log 18 30 ≈ 1.176733... . Sudah lebih baik. Di sebelah kanan, kotaknya masih setengah ukuran, sudah dicat 72 buah. catatan 72 30 ≈ 1.193426... . Bahkan lebih dekat. Maka Anda perlu menambah angka iterasi dan sekaligus mengurangi kuadratnya, maka nilai “empiris” dimensi kurva Koch akan terus mendekati log 3 4, dan pada batasnya akan bertepatan sepenuhnya.

Pilihan

Kepingan salju Koch "terbalik" diperoleh jika kita membuat kurva Koch di dalam segitiga sama sisi asli.

Garis Cesaro. Alih-alih segitiga sama sisi Yang digunakan sama kaki dengan sudut alas 60° hingga 90°. Pada gambar, sudutnya adalah 88°.

Opsi persegi. Di sini kotaknya sudah selesai.

Analog tiga dimensi. ruang Koch.