Mundarija:

Mandelbrot va Yuliya ESP32: 4 qadam (rasmlar bilan) o'rnatadilar
Mandelbrot va Yuliya ESP32: 4 qadam (rasmlar bilan) o'rnatadilar

Video: Mandelbrot va Yuliya ESP32: 4 qadam (rasmlar bilan) o'rnatadilar

Video: Mandelbrot va Yuliya ESP32: 4 qadam (rasmlar bilan) o'rnatadilar
Video: µ-Spec MkII: Audio w. Spectrum Analyzer: 0 - 8.5 k Hz Sweep - Audio from MEMS Mic (ADMP401) on ESP32 2024, Noyabr
Anonim
Image
Image
Mandelbrot va Yuliya ESP32 formatida
Mandelbrot va Yuliya ESP32 formatida
Mandelbrot va Yuliya ESP32 formatida
Mandelbrot va Yuliya ESP32 formatida

Siz fraktallarni bilasiz, ularning eng mashhuri Mandelbrot to'plamidir.

Bu erda ESP32 -da o'ynash uchun dastur. Men ESP32 ni tanladim, chunki u hisob -kitoblarni standart Arduino -ga qaraganda tezroq bajaradi deb o'ylayman (soat chastotasi yuqori: 240 MGts): hisoblash va ko'rsatish uchun taxminan bir soniyadan bir yarimgacha.

Kod 480 x 320 TFT sensorli ekranda aks etadi. U Mandelbrot va Julia to'plamlarini bir nechta parametr qiymatlari uchun hisoblab chiqadi va fraktal tomonni ko'rish uchun (masalan, har bir shkaladagi o'zgarishlarda bir xil tuzilmalarning mavjudligi) ko'rish uchun qiziqish maydonlarini yaqinlashtirishga imkon beradi. Hisob -kitoblarning aniqligi cheklanganligi sababli, kattalashtirish darajasi cheklangan, lekin tasvir pasayishidan oldin yarim o'nlab yaqinlashtirish mumkin.

Fraktallarning sehrli dunyosini o'rganishga tayyor bo'ling …

1 -qadam: Mandelbrot va Yuliya to'plamlari nima?

Mandelbrot va Yuliya to'plamlari nima?
Mandelbrot va Yuliya to'plamlari nima?
Mandelbrot va Yuliya to'plamlari nima?
Mandelbrot va Yuliya to'plamlari nima?
Mandelbrot va Yuliya to'plamlari nima?
Mandelbrot va Yuliya to'plamlari nima?

Mandelbrot to'plami frantsuz va amerikalik matematik Benoit Mandelbrot (1924-2010) sharafiga 19-asr oxirida frankal geometriyada pionerlik ishini olib borgan, Peano, Sierpinski va Julia tomonidan boshlangan.

Fraktal ob'ektlar nima?

Dengiz qirg'og'ining chizig'i, bulutlarning shakli, daraxt kabi tartibsiz bo'lib tuyulishi mumkin bo'lgan tabiatning qonunbuzarliklari aslida o'zgarib borayotgan miqyosdagi juda murakkab geometriyaning ifodasidir. Shu nuqtai nazardan, kasrli o'lchov tushunchasi odatdagi evklid o'lchovining o'rnini bosadi (bu har doim butun son)!

Fraktal ob'ekt shundayki, uning har qanday qismi bir butunga o'xshaydi (bu o'ziga o'xshashlik deb ataladi): uning tuzilishi o'lchov o'zgarishi bilan o'zgarmasdir.

"Fraktal" atamasi 1974 yilda Benoit Mandelbrot tomonidan lotincha fraktus ildizidan yaratilgan neologizm bo'lib, "buzilgan", "tartibsiz" degan ma'noni anglatadi. Bu ham ot, ham sifat. Ko'p tabiiy hodisalar, masalan, qirg'oq chizig'i yoki Romanesko karamining ko'rinishi (rasmga qarang) - taxminan fraktal shakllarga ega.

Benoit Mandelbrotning kasbi biroz noaniq edi: Lill universitetida (Frantsiya) o'qitgandan so'ng, u IBMda lavozimni egalladi va u erda tezda IBMga a'zo bo'ldi, bu unga ilmiy tadqiqotlar uchun katta erkinlik berdi. 1980 -yillarning boshlarida, IBMdan ketganidan so'ng, u Garvard professori bo'ldi, lekin Yelga doimiy joylashdi.

Uning 1960 va 1970 -yillardagi ishlari "Fraktal ob'ektlar" nomli mashhur maqolani nashr etishga undadi, unda u matematik jamoaning katta qismi shunchaki qiziquvchan deb hisoblagan bu ob'ektlar tabiatning hamma joylarida topilganligini ko'rsatdi. U fizika, gidrologiya, moliya, meteorologiya, geografiya, geologiya, metallurgiya kabi turli sohalarda ko'plab misollar keltirdi.

Mandelbrot to'plami nima?

Boshlash uchun aytaylik, bu dastur tomonidan yaratilgan chiroyli rasm. Va bu dastur juda oddiy, ularni yaratish uchun kompyuterda chizilgan rasmlar va ko'plab kompyuter dasturlari mavjud. Xo'sh, buning o'ziga xos xususiyati nimada? Birinchidan, Mandelbrot to'plami - bu rejaning kichik qismi, ballar to'plami. U maydonlarni o'z ichiga oladi, lekin silliq egri chiziqlar, iplar, bir nechta novdalar chiqadigan nuqtalar va boshqa narsalarni o'z ichiga oladi. Ikkinchidan: bu haqiqatan ham ajoyib va juda qiziqarli tarixga ega.

20-asr boshlarida frantsuz matematiklari Per Fatu va Gaston Yuliya holomorfik dinamika deb nomlangan matematikaning pastki sohasini yaratdilar. Ular ma'lum funktsiyalarga qiziqish bildirishdi, raqamlarga amal qilib, mavjud bo'lgan eng oddiy formulalardan foydalanishdi. Ko'rib chiqilayotgan raqamlar murakkab sonlar bo'lib, ular haqiqiy va xayoliy qismlar deb ataladigan ikkita koordinata (xuddi tekislik nuqtalari kabi) bilan ifodalanadi. Ular XVI asrda matematiklar tomonidan polinomlarning ildizlari va tenglamalar echimini topish uchun ixtiro qilingan, lekin matematika va fizika fanlarida keng va chuqur qo'llanmalar topilgan. Biz ikkita murakkab sonni qo'shishimiz, ko'paytirishimiz yoki bo'linishimiz va boshqa ko'p narsalarni qilishimiz mumkin. Fatou va Yuliya murakkab sonlar qayta -qayta takrorlanadigan oddiy qoidaga ko'ra o'zgarib turadigan ba'zi dinamik tizimlarning xususiyatlarini o'rgangan: bu erda murakkab matematikaga hojat yo'q. (Shunday qilib, siz birinchi tasvirni unutishingiz mumkin …). Ular bu tizimlarning boyligini ochib berishdi, hozirda Yuliya to'plamlari deb nomlangan to'plamlarni aniqladilar va ularning o'ziga o'xshashligini, shuning uchun fraktal jihatlarini o'rganishdi … lekin bu so'z o'sha paytda mavjud bo'lmagan, chunki uni keyinchalik Benoît Mandelbrot ixtiro qilgan!

Ta'sischilar ishidan so'ng, bu domen unutildi. Kompyuterlar kelganida, ular jadal hisob -kitoblarni talab qiladigan ko'plab matematik hodisalarni, shu jumladan, Julia va Fatou tomonidan ochilgan domenni o'rganishga yordam berishdi, shuning uchun Benoit Mandelbrot 1980 -yillarda IBM kompyuterlaridan holomorfik dinamikaga tegishli ma'lum bir matematik to'plamni ifodalash uchun foydalanishga qaror qilganida., u juda jozibali va juda qiziq chizilgan rasmni oldi (oldingi bo'limning birinchi surati).

Mandelbrot to'plami nimani anglatadi? Asosan, tasvirning har bir nuqtasi bilan bog'liq bo'lgan asosiy dinamik tizim mavjud. Nuqtaning koordinatalari sozlanishi parametr vazifasini bajaradi. Turli xil nuqtalar Yuliyaning turli xil to'plamlariga to'g'ri keladi va ularning xatti -harakatlariga qarab, biz nuqtai nazarni ma'lum bir tarzda bo'yashga qaror qilishimiz mumkin. Mandelbrot to'plami - bu tizim ma'lum bir xususiyatga ega bo'lgan parametrlar to'plami.

Mandelbrot va Yuliya to'plamlarini qanday hisoblash mumkin?

Biz bu to'plamlarni qanday hisoblash haqida biroz batafsilroq gapirishimiz kerak. Mandelbrot va Yuliya to'plamlari oddiy formulaning takrorlanishi bilan hisoblanadi, bizning holda z^n+c. z - displeydagi nuqta koordinatalarini ifodalovchi murakkab son. butun sonli ko'rsatkichdir, shuning uchun z^n o'z -o'zidan n marta ko'paytirilganda z ga teng, c esa doimiydir.

Mandelbrot to'plami uchun, ko'rsatish maydonining barcha nuqtalari uchun, biz z ni 0 ga boshlaymiz. S doimiyligi ko'rib chiqilayotgan nuqta koordinatalari qiymatiga teng qabul qilinadi va formulani takrorlaydi.

Mana qoida: nuqta - bu to'plamning bir qismi, agar bu formulani takror ishlatish bir -biridan farq qilmasa (ya'ni ko'p sonli hisob -kitoblarga olib kelmasa). Matematik tarzda ko'rsatish mumkinki, agar formulaning natijasi 2 dan oshsa (modul bo'yicha, chunki biz murakkab sonlar haqida gapirayapmiz), iteratsiya farq qiladi. Chiroyli ranglarni tezda olish uchun, natija moduli 2 dan oshsa va rang o'sha takrorlanish soniga to'g'ri kelsa, biz iteratsiyani to'xtatamiz. Agar takrorlanishlar soni juda katta bo'lsa (agar nuqta Mandelbrot to'plamining bir qismi bo'lsa), biz belgilangan chegaradan keyin to'xtab, qora rangni shu nuqtaga bog'laymiz.

Yuliya to'plami shunga o'xshash tarzda hisoblab chiqilgan, lekin hisoblar 0 -da boshlanmagan, lekin ko'rib chiqilgan nuqtaning koordinatalari qiymati bo'yicha va v doimiy foydalanuvchi tomonidan tanlangan va butun tasvir uchun bir xil bo'lib qoladi.

Hammasi shunday, umid qilamanki, bu aniq … Bu tushuntirishlar foydalanish bo'yicha ko'rsatmalarni qolgan qismini yaxshiroq tushunishga yordam beradi.

2 -qadam: Sizga nima kerak?

Sizga nima kerak?
Sizga nima kerak?
Sizga nima kerak?
Sizga nima kerak?
Sizga nima kerak?
Sizga nima kerak?
Sizga nima kerak?
Sizga nima kerak?

Hisobot materiallari:

  • 1 ESP32 karta
  • Sensorli ekran va qalam bilan 1 TFT displey
  • 1 ta non paneli va simlar

Bo'ldi shu. Umumiy qiymati 10 dollardan kam.

Espressif ESP32 - bu 240 MGts chastotali ikki yadroli mikrokontroler, bu uni tez va murakkab takrorlanadigan hisoblash uchun yaxshi nomzod qiladi. U WiFi va Bluetooth imkoniyatlariga ega, men bu loyihada foydalanmayman.

Ko'rsatmalar to'plami hajmi 32 bit. 16 va 32 bitli o'zgaruvchilar bilan hisoblash juda tez, bu esa aniq hisoblash imkonini beradi, bu maqsadni yaqinlashtirish uchun asosiy hisoblanadi. Ushbu ilovada, 320 x 240 displey uchun, tasvir taxminan 75000 pikseldan iborat bo'lib, ularning har biri 100 marta takrorlanishi mumkin bo'lgan takroriy jarayon yordamida hisoblanadi. Bu 7,500,000 birlik hisob -kitoblarga olib kelishi mumkin, ularning har biri eksponentatsiya, ya'ni bir necha marta ko'paytirish …

Bu erda hisoblash tezligi juda muhim, lekin aniqlik asosiy hisoblanadi. Qancha yaqinlashtirsangiz, ko'rsatiladigan qismning kattaligi shunchalik kichik bo'ladi. Bu shuni anglatadiki, tasvirning har 320 x 240 piksellari qo'shnilariga juda yaqin bo'lgan raqamni bildiradi. Kattalashtirish kuchaygan sari bu yaqinlik oshadi.

Ammo fraktal tasvirlar shunday xususiyatga ega, ular masshtab orqali o'zgarmaydi. Kichik tafsilotlar hamma joyda va har qanday o'lchov omili uchun paydo bo'ladi. Mandelbrot to'plamining asosiy shakli, yuqoridagi rasmda ko'rsatilgandek, boshqa joydan ancha kichikroq versiyada bo'lishi mumkin va agar siz uni yaqinlashtirsangiz ko'rsatiladi (videoni ko'ring). Ammo agar ikkita qo'shni piksel orasidagi koordinata farqi ESP32 -ning xulq -atvoridagi farqni aniqlay olmasligi uchun juda kichik bo'lsa, fraktal effekt ko'rsatilmaydi …

Yaxshi aniqlik uchun kod ESP32 tomonidan 32 bitli kodlangan floatlardan foydalanadi. Bu 6 yoki 7 darajaga yaqinlashtirish imkonini beradi. Ikkita aniqlikdan foydalanish (64 bit) sekinlashtirish hisobiga, bu yaqinlashtirish chuqurligini oshirib yuboradi, shuning uchun 2 ta tasvir o'rtasida ko'proq vaqt bo'ladi.

Ikki marta aniqlik kiritish uchun koddagi "float" ning barcha hodisalarini "dubl" ga o'zgartiring va kodni ishga tushiring. Men yaqinda kattaroq displey uchun versiya yaratdim (HVGA 480 x 320 piksel): 16 bitli suzish tasvirni ko'rsatish uchun 3 soniya, dubl esa 10 dan 20 sekundgacha (3 dan 6 barobar ko'proq) oladi, lekin 15 dan ortiq kattalashtirish darajasini qo'llab -quvvatlaydi.. Ushbu bobdagi uchinchi rasmda Mandelbrot to'plamining o'ng tomonidagi 14-sonli zoom darajasi ko'rsatilgan.

Displeyni qanday ulash mumkin:

Men SPI displeyidan foydalandim va parametrlar User_Setup.h faylida (TFT_eSPI kutubxona papkasida) o'rnatiladi:

  • Haydovchi: displeyingiz uchun to'g'ri drayverni izohlamang. Meniki #define RPI_ILI9486_DRIVER edi
  • Pin raqamlari: faylning ESP32 bo'limiga o'ting va tanlang

    • #TFT_MISO 19 ni aniqlang
    • #TFT_MOSI 23 ni aniqlang
    • #TFT_SCLK 18 ni aniqlang
    • #define TFT_CS 15 // Chip tanlash boshqaruv pimi
    • #define TFT_DC 2 // Ma'lumotlar buyrug'ini boshqarish pimi
    • #define TFT_RST 4 // PIN kodni tiklash (RST piniga ulanishi mumkin)
    • #deuine TOUCH_CS 22 // Sensorli ekranni tanlash pinini (T_CS)
  • Shriftlar: ularni o'zgartirish shart emas
  • Boshqa variantlar: Men quyidagilarni tanladim

    • #SPI_FREQUENCY 20000000 ni aniqlang
    • #SPI_READ_FREQUENCY 20000000 ni aniqlang
    • #SPI_TOUCH_FREQUENCY 2500000 ni aniqlang

Faylning boshqa barcha satrlari izohlangan.

Displeyning sensorli quvvatini sozlang

Agar ekran qismini yoki tugmani tanlash aniq bo'lmasa yoki umuman noto'g'ri bo'lsa, TFT_eSPI kutubxonasidan sensorli kalibrlash eskizini ishga tushiring va u taqdim etayotgan qatorga kodni joylashtiring (ekran yo'nalishi uchun to'g'ri qiymatdan foydalanganingizga ishonch hosil qiling)., Peyzaj uchun 1 yoki 3).

3 -qadam: ESP32 dasturi

ESP32 dasturi
ESP32 dasturi
ESP32 dasturi
ESP32 dasturi
ESP32 dasturi
ESP32 dasturi

Kod 320 x 240 TFT sensorli ekranda aks etadi va TFT_eSPI kutubxonasidan foydalanadi. U Mandelbrot va Julia to'plamlarini bir necha eksponentli qiymatlar uchun hisoblab chiqadi va fraktal tomonni ko'rish uchun (masalan, har bir shkaladagi o'zgarishlarda bir xil tuzilmalarning mavjudligi) ko'rish uchun qiziqish maydonlarini yaqinlashtirishga imkon beradi.

Qo'shilgan kod 480 x 320 displey uchun versiya. Ushbu versiyada siz displey hajmini (piksel va balandlik) o'zgartirishingiz mumkin. TFT_eSPI kutubxonasi kutubxona katalogiga qo'yilishi kerak bo'lgan o'rnatish faylidagi (biriktirilgan) ulanishlarni belgilaydi.

Kod ishga tushirish ko'rsatmalarini ko'rsatish bilan boshlanadi (rasm va videoga qarang)

Ekranning katta qismi tasvirlarni ko'rsatish uchun ajratilgan, ekranning o'ng tomonida sensorli tugmalar mavjud:

  • R: "qayta o'rnatish" ni amalga oshiradi, ya'ni. e. tasvirni maksimal miqyosda ko'rsatadi,
  • U: "qaytarish" oldingi bosqichga qaytishga imkon beradi (agar kattalashtirilgan hudud qiziq bo'lmasa, siz kattalashtirish uchun tasvirning boshqa qismini tanlashingiz mumkin),
  • M yoki J: sizga Mandelbrot to'plamidan Yuliya to'plamiga o'tish imkonini beradi va aksincha.

Ba'zi kalitlarning teglari kontekstga qarab o'zgaradi: ular bosilganda bajariladigan funktsiyani ko'rsatadi. Agar siz hozirda Mandelbrot to'plamini ko'rsatsangiz, M/J tugmachasi J ni ko'rsatadi, chunki siz uni bosganingizda siz Julianing to'plamini ko'rsatasiz (va aksincha).

Xuddi shu narsa rang palitrasini tanlashga ham tegishli. Biz yashil palitradan boshlaymiz. Kalit keyingi palitrani taklif qiladi (ko'k rang). Paletkalar: qizil, yashil, ko'k, kulrang, 1 -palitra, 2 -palitra va qizil ranggacha. Oxirgi ikkitasi - ko'p rangli kontrastni ta'minlaydigan, bir nechta tafsilotlarni yaxshiroq ko'rishga imkon beradigan, ko'p rangli palet testlari.

Raqamli kalit 2 dan 7 gacha (va 2 ga qaytadi) n sonli eksponentni tanlash imkonini beradi. Xuddi shu ruhda, agar siz hozir 2 da bo'lsangiz, u 3 ni ko'rsatadi

Nihoyat, Yuliya to'plamini ko'rsatganda, doimiy c qiymatini tanlash kerak: C tugmasi selektor yordamida buni amalga oshirishga imkon beradi (ikkinchi rasmga qarang). Bu konstantaning qiymati to'plam bilan birga ko'rsatiladi.

Rasmni bosish tanlangan nuqta atrofida kattalashadi. Tegishli nuqtada kichik doira ko'rsatiladi va to'rtburchaklar to'plamning kattalashtirilgan zonasini ajratib ko'rsatadi.

3 -rasmda hisoblash vaqti 320 x 240 pikselli 0,8 dan 1,2 sekundgacha bo'lganligi ko'rsatilgan, bu esa uni kattalashtirish va ko'rsatishni qulay qiladi. U 480x320 pikselli 3 soniyaga etadi, lekin batafsil ma'lumot beradi.

4 -qadam: Ba'zi rasmlar tushuntirilgan …

Ba'zi rasmlar tushuntirilgan …
Ba'zi rasmlar tushuntirilgan …
Ba'zi rasmlar tushuntirilgan…
Ba'zi rasmlar tushuntirilgan…
Ba'zi rasmlar tushuntirilgan …
Ba'zi rasmlar tushuntirilgan …

Eng katta rasm - bu mashhur Mandelbrot to'plami. Bu tasvirda ishlatilgan murakkab sonlar absitsiyada -2.1 dan +0.7 gacha, ordinatda -1.2 dan 1.2 gacha. Agar siz birinchi rasmning eng chap qismini kattalashtirsangiz, ikkinchisini olish ehtimoli bor, u to'plamning eng chap tomonida joylashgan asl to'plamning kichikroq versiyasini ko'rsatadi. Bu ikkala tasvir uchun eksponent ('n') 2 ga teng: bu odatda Mandelbrot to'plamlarini ko'rsatish uchun ishlatiladigan qiymat.

Agar siz bu qiymatni 3 ga o'zgartirsangiz (3 tugmachasini bosing), siz uchinchi tasvirni olasiz. Aniq farq simmetriya omilidir: n = 2 eksenel simmetriyani beradi (ya'ni, to'plam gorizontal o'qning o'rtasiga nosimmetrikdir), lekin n = 3 bilan tasvir 120 ° burilish (360 ° ning uchdan bir qismi, aylanish) bilan o'zgarmas bo'ladi. simmetriya koeffitsienti 3). Va u o'zining fraktal xususiyatlarini saqlab qoladi, buni qora shaklning chekkalarini kattalashtirib tekshirish mumkin.

4 -rasm - Julia to'plami, abscissa 0,414 va ordinat bo'yicha 0,09 ga teng koeffitsient qiymatini tanlagandan so'ng olingan. Qizil rang palitrasi tanlangan, buni o'ngdagi yashil tugma ko'rinib turibdi (yashil, keyingi rang). Beshinchi rasmda bir xil turdagi Julia tasvirlangan, bu konstantaning yuqori tasavvurli qismi (0.358).

Umid qilamanki, siz ushbu dastur bilan o'ynashni yoqtirasiz va siz chiroyli fraktal rasmlarni namoyish qila olasiz. Mandelbrot va Julia to'plamlarini o'rganishdan tortinmang va palitralar bilan o'ynang: ular oddiy monoxromli ko'rinmaydigan ba'zi tafsilotlarni aniqlashga yordam beradi. Siz hatto sizdan oldin hech kim ko'rmagan ba'zi fraktal landshaftlarni kashf qilishingiz mumkin …

_

Yana fraktal tasvirlarni kashf etmoqchimisiz? Bu erga bosing yoki fraktal san'ati yoki hatto ascii fraktalini o'rganing. Ehtimol, bu ko'rsatma sizni shunday ajoyib tasvirlarni yaratishga undaydi …

Matematika musobaqasi yordamida tayyorlangan
Matematika musobaqasi yordamida tayyorlangan
Matematika musobaqasi yordamida tayyorlangan
Matematika musobaqasi yordamida tayyorlangan

"Matematika bilan yaratilgan" tanlovining ikkinchi mukofoti

Tavsiya: