תוכן עניינים:
- שלב 1: מהן מנדלברוט ויוליה סטים?
- שלב 2: מה אתה צריך?
- שלב 3: תוכנית ESP32
- שלב 4: כמה תמונות מוסברות …
וִידֵאוֹ: מנדלברוט וג'וליה קובעות ב- ESP32: 4 שלבים (עם תמונות)
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:14
אתה בהחלט מכיר פרקטלים, המפורסם שבהם הוא סט מנדלברוט.
להלן תוכנית לשחק איתה ב- ESP32. בחרתי ב- ESP32 כי אני חושב שהוא יעשה את החישובים מהר יותר מארדואינו רגיל (תדר שעון גבוה יותר: 240 מגהרץ): כשנייה עד שנייה וחצי לחישוב ותצוגה.
הקוד מוצג במסך מגע 480 x 320 TFT. הוא מחשב את הסטים של מנדלברוט וג'וליה למספר ערכי פרמטרים ומאפשר לך להתקרב לאזורי עניין כדי לראות את ההיבט הפרקטלי (כלומר הימצאותם של אותם מבנים בכל שינוי קנה מידה). רמת הזום מוגבלת בשל הדיוק המוגבל של החישובים, אך ניתן לבצע חצי תריסר זום לפני שהתמונה תתדרדר.
היכונו לחקור את עולם הקסם של פרקטלים …
שלב 1: מהן מנדלברוט ויוליה סטים?
הסט מנדלברוט נקרא על שם בנואה מנדלברוט (1924-2010), מתמטיקאי צרפתי ואמריקאי שעשה עבודות חלוציות בגיאומטריה פרקטלית, שיזם בסוף המאה ה -19 בין היתר פיאנו, סיירפינסקי וג'וליה.
מהם אובייקטים פרקטליים?
אי סדרים של הטבע, שעשויים להיראות כאוטי, כמו קו חוף הים, צורת עננים, עץ, הם למעשה ביטוי לגיאומטריה מורכבת מאוד בקנה מידה משתנה. בהקשר זה, הרעיון של ממד חלקי מחליף את הממד של הממד האוקלידי הרגיל (שהוא תמיד מספר שלם)!
אובייקט פרקטלי הוא כזה שכל חלק ממנו זהה למכלול (זה נקרא דמיון עצמי): המבנה שלו אינו משתנה על ידי שינוי קנה מידה.
המונח "פרקטל" הוא ניאולוגיזם שיצר בנו מנדלברוט בשנת 1974 משורש השורש הלטיני, שפירושו "שבור", "לא סדיר". זה גם שם עצם וגם שם תואר. לתופעות טבע רבות - כגון קווי המתאר של חופי הים או הופעת כרוב רומנסקו (ראו תמונה) - יש צורות פרקטליות משוערות.
לבנוייט מנדלברוט הייתה קריירה קצת לא טיפוסית: לאחר שלימד באוניברסיטת ליל (צרפת), הוא נכנס לתפקיד ב- IBM שם הפך במהירות לעמית IBM, מה שהעניק לו חופש גדול ללימודיו המדעיים. בתחילת שנות השמונים, לאחר שעזב את יבמ, הפך לפרופסור בהרווארד, אך התיישב לצמיתות בייל.
עבודותיו בשנות השישים ותחילת שנות השבעים הביאו אותו לפרסם מאמר מפורסם שכותרתו "אובייקטים פרקטאליים" ובו הראה כי אובייקטים אלה, הנחשבים על ידי חלק גדול מהקהילה המתמטית כקוריוזים בלבד, נמצאו בכל מקום בטבע. הוא נתן הרבה דוגמאות במגוון רחב של תחומים כגון פיזיקה, הידרולוגיה, פיננסים, מטאורולוגיה, גיאוגרפיה, גיאולוגיה, מטלורגיה …
מהו הסט מנדלברוט?
כדי להתחיל, נניח שזה ציור נחמד שנוצר על ידי תוכנית. והתוכנית הזו היא די פשוטה. קיימים רישומים רבים המופקים על ידי מחשב ותוכנות מחשב רבות להפקתם. אז מה כל כך מיוחד בזה? ראשית, קבוצת מנדלברוט היא קבוצת משנה של התוכנית, אוסף נקודות. הוא מכיל אזורים אך גם עקומות חלקות, נימים, נקודות שממנה יוצאים ענפים מרובים ודברים אחרים. שנית: הוא ממש מרתק ובעל היסטוריה מעניינת מאוד.
בתחילת המאה ה -20 פיתחו המתמטיקאים הצרפתים פייר פאטו וגסטון ג'וליה תחום משנה של מתמטיקה בשם דינמיקה הולומורפית. הם התעניינו בפונקציות מסוימות, הפועלות על מספרים, תוך שימוש בכמה מהנוסחאות הפשוטות ביותר שיש. המספרים המדוברים הם מספרים מורכבים, כמויות המיוצגות על ידי שני קואורדינטות (ממש כמו נקודות המטוס) הנקראות חלקים אמיתיים ודמיוניים. הם הומצאו במאה ה -16 על ידי מתמטיקאים כדי לסייע במציאת שורשי פולינומים ופתרון משוואות אך מצאו יישומים רחבים ועמוקים במתמטיקה ובמדעי הפיזיקה. אנו יכולים להוסיף 2 מספרים מורכבים, להכפיל או לחלק אותם ולעשות דברים רבים אחרים. פטו וג'וליה בחנו את המאפיינים של מערכות דינאמיות מסוימות שבהן מספר מורכב משתנה בהתאם לכלל פשוט שחוזר על עצמו שוב ושוב: אין צורך במתמטיקה מסובכת כאן (אז אתה יכול לשכוח את התמונה הראשונה …). הם חשפו את עושרן של מערכות אלה, הגדירו את המערכות הנקראות כיום הסטים של ג'וליה, ולמדו את הדמיון העצמי שלהן, ולכן היבט פרקטלי … אך המילה לא הייתה קיימת באותו זמן כי היא הומצאה רק הרבה יותר מאוחר, על ידי … בנו מנדלברוט!
לאחר עבודת המייסדים, התחום הזה נפל לשכחה. כשהגיעו המחשבים, הם סייעו לחקור הרבה תופעות מתמטיות הדורשות מחשוב אינטנסיבי, כולל התחום שפתחו ג'וליה ופאטו. כך, כאשר בויט מנדלברוט החליט להשתמש במחשבי IBM בשנות השמונים כדי לייצג קבוצה מתמטית מסוימת הקשורה לדינמיקה הולומורפית., הוא השיג ציור מאוד אטרקטיבי ומאוד מסקרן (תמונה ראשונה של החלק הקודם).
מה מייצגת ערכת מנדלברוט? ביסודו של דבר, קיימת מערכת דינמית בסיסית הקשורה לכל נקודה בתמונה. קואורדינטות הנקודה משמשות כפרמטר מתכוונן. נקודות שונות מתאימות לקבוצות שונות של ג'וליה ובהתאם להתנהגותן, נוכל להחליט לצבוע את הנקודה בצורה מסוימת. ערכת Mandelbrot היא קבוצת הפרמטרים שלמערכתם יש מאפיין מסוים.
כיצד מחשבים ערכות מנדלברוט וג'וליה?
עלינו לפרט קצת יותר כיצד לחשב את הסטים הללו. קבוצות מנדלברוט וג'וליה מחושבות על ידי איטרציה חוזרת של נוסחה פשוטה, במקרה שלנו z^n+c. z הוא מספר מורכב המייצג את הקואורדינטות של נקודה בתצוגה. הוא מעריך שלם, ולכן z^n שווה ל- z כפול בעצמו n פעמים, ו- c הוא קבוע.
עבור ערכת מנדלברוט, עבור כל הנקודות באזור התצוגה, אנו מאתחלים את z ל- 0. הקבוע c נלקח שווה לערך הקואורדינטות של הנקודה הנחשבת והנוסחה חוזרת.
להלן הכלל: נקודה היא חלק מהמערכה אם היישום החוזר של נוסחה זו אינו מתרחק (כלומר אינו מוביל לחישובים לעבר מספרים גדולים). ניתן להראות מתמטית שאם תוצאת הנוסחה תעלה על 2 (במודול מכיוון שאנו מדברים על מספרים מורכבים) האיטרציה תסתלק. כדי להשיג במהירות צבעים יפים, אנו עוצרים את האיטרציה כאשר מודול התוצאה עולה על 2 והצבע תואם את מספר האיטרציה הספציפית הזו. אם מספר האיטרציות הופך גדול מדי (כך שאם הנקודה היא חלק מערך מנדלברוט) אנו עוצרים לאחר סף נתון ומשייכים את הצבע השחור לנקודה זו.
ערכת ג'וליה מחושבת בצורה דומה אך החישובים אינם מאתחלים ב -0 אלא בערך הקואורדינטות של הנקודה הנחשבת והקבוע c נבחר על ידי המשתמש ונשאר זהה לכל התמונה.
זהו, אני מקווה שזה ברור … הסברים אלה עוזרים להבין טוב יותר את שאר הוראות השימוש.
שלב 2: מה אתה צריך?
כתב החומר:
- לוח ESP32 אחד
- צג TFT אחד עם מסך מגע ועט
- 1 לוח לחם וחוטים
זהו זה. עלות כוללת מתחת ל 10 דולר.
ESP32 של אספרסיף הוא מיקרו -בקר בעל ליבה כפולה שפועל במהירות של 240 מגה -הרץ, מה שהופך אותו למועמד טוב למחשוב חוזר מהיר ומורכב. יש לו יכולות WiFi ו- Bluetooth שאני לא משתמש בהן בפרויקט זה.
גודל ההוראות בגודל 32 סיביות. החישוב עם משתני 16 ו -32 סיביות הינו מהיר מאוד המאפשר חישובים מדויקים, דבר הבסיסי למטרות התקרבות. ביישום זה, עבור תצוגת 320 x 240, תמונה עשויה בערך בגודל 75, 000 פיקסלים, שכל אחד מהם מחושב באמצעות תהליך איטרטיבי שעשוי לרוץ עד פי 100. זה עשוי להוביל ל -7, 500, 000 חישובים יחודיים, שכל אחד מהם הוא אקספוננציה, כלומר מספר כפלויות …
אז מהירות החישוב היא חיונית כאן, אך הדיוק הוא מהותי. ככל שתגדיל יותר, כך גודל החלק של התצוגה יהיה קטן יותר. המשמעות היא שכל אחד מ -320 x 240 הפיקסלים של התמונה מייצג מספר שקרוב מאוד לשכנותיו. ככל שהזום גדל, הקרבה הזו עולה.
אבל לתמונות פרקטליות יש את המאפיין הזה שהן נשארות ללא שינוי על ידי קנה מידה. אז פרטים קטנים מופיעים בכל מקום ולכל גורם קנה מידה. את הצורה העיקרית של ערכת מנדלברוט, כפי שניתן לראות בתצוגה שבתמונה למעלה, ניתן למצוא במקום אחר בגרסה קטנה בהרבה, ולהציג אותה אם אתה מתקרב מספיק (ראה בסרטון). אבל אם ההבדל בקואורדינטות בין שני פיקסלים שכנים קטן מדי בכדי לאפשר ל- ESP32 לתפוס את ההבדל בהתנהגות, בגלל חוסר דיוק, לא ניתן להציג את האפקט הפרקטלי …
כדי לקבל דיוק טוב, הקוד משתמש במצופים, המקודדים ב- 32 סיביות על ידי ה- ESP32. זה מאפשר עד 6 או 7 רמות התקרבות. שימוש בדייקנות כפולה (64 סיביות) היה מגדיל את עומק ההתרחבות הזה, במחיר של חישובים איטיים יותר, ולכן זמן ארוך יותר בין 2 תמונות.
כדי להפוך אותו לדיוק כפול, פשוט שנה את כל המופעים של "צף" ל"כפול "בקוד והפעל את הקוד. לאחרונה יצרתי גרסה לתצוגה גדולה יותר (HVGA 480 x 320 פיקסלים): צף של 16 סיביות לוקח 3 שניות להציג את התמונה, והכפילויות לוקחות בין 10 ל -20 שניות (פי 3 עד פי 6) אך תומכות ביותר מ -15 רמות זום. התמונה השלישית בפרק זה מציגה את רמת הזום 14 בחלק הימני ביותר של ערכת מנדלברוט.
כיצד לחבר את המסך:
השתמשתי בתצוגת SPI, והפרמטרים נקבעים בקובץ User_Setup.h (בתיקיית ספריית TFT_eSPI):
- מנהל התקן: בטל את התגובה של מנהל ההתקן הנכון לתצוגה שלך. שלי היה #define RPI_ILI9486_DRIVER
-
מספרי סיכה: עבור לסעיף ESP32 של הקובץ ובחר
- #הגדר TFT_MISO 19
- #הגדר TFT_MOSI 23
- #הגדר TFT_SCLK 18
- #define TFT_CS 15 // סיכת בקרה לבחירת שבב
- #define TFT_DC 2 // סיכת בקרת פקודת נתונים
- #define TFT_RST 4 // איפוס סיכה (יכול להתחבר לסיכת RST)
- #define TOUCH_CS 22 // סיכת בחירת שבב (T_CS) של מסך המגע
- גופנים: אין צורך לשנות אותם
-
אפשרויות אחרות: בחרתי את הדברים הבאים
- #define SPI_FREQUENCY 20000000
- #הגדר SPI_READ_FREQUENCY 20000000
- #הגדר SPI_TOUCH_FREQUENCY 2500000
כל השורות האחרות של הקובץ מגיבות.
כייל את יכולת המגע של התצוגה
אם בחירת חלק המסך או הכפתור אינה מדויקת, או אפילו שגויה לחלוטין, הפעל את סקיצת כיול המגע מספריית TFT_eSPI והעתק / הדבק לקוד את המערך שהוא מספק (הקפד להשתמש בערך הנכון עבור כיוון התצוגה., 1 או 3 לנוף).
שלב 3: תוכנית ESP32
הקוד מוצג על מסך מגע 320 x 240 TFT, ומשתמש בספריית TFT_eSPI. הוא מחשב את הסטים של מנדלברוט וג'וליה למספר ערכי מעריכים ומאפשר לך להתקרב לאזורי עניין כדי לראות את ההיבט הפרקטלי (כלומר הימצאותם של אותם מבנים בכל שינוי קנה מידה).
הקוד המצורף הוא גרסה לתצוגה של 480 x 320. בגרסה זו, אתה יכול לשנות את גודל (רוחב וגובה בפיקסלים) של התצוגה. ספריית TFT_eSPI מגדירה את החיבורים בקובץ התקנה (מצורף) אותו יש להכניס לספריית הספרייה.
הקוד מתחיל בהצגת הוראות ההפעלה (ראו תמונה ווידאו)
רוב המסך שמור להצגת תמונות, כפתורי מגע זמינים בצד ימין של המסך:
- R: מבצע "איפוס", כלומר. ה. מציג את התמונה בקנה המידה המרבי שלה,
- U: "ביטול" מאפשר לך לחזור לשלב הקודם (אם אזור הגדילה אינו מעניין, תוכל לבחור חלק אחר של התמונה להתקרבות),
- M או J: מאפשר לך לעבור מהסט של מנדלברוט לסט של ג'וליה ולהיפך.
התוויות של מקשים מסוימים משתנות בהתאם להקשר: הן מציגות את הפונקציה שתתבצע אם תלחץ עליה. כך שאם אתה מציג כרגע את ערכת מנדלברוט, מקש M/J מציג את J שכן אם תלחץ עליו תציג את הסט של ג'וליה (ולהיפך).
אותו דבר לגבי הבחירה של לוח הצבעים. אנו מתחילים בלוח הירוק. המפתח מציע את לוח הצבעים הבא (הכחול). הצבעים הם: אדום, ירוק, כחול, אפור, לוח 1, לוח 2 וחזרה לאדום. השניים האחרונים הם בדיקות משטחים מרובי צבעים המספקים יותר ניגודיות ומאפשרים לראות טוב יותר כמה פרטים.
המפתח עם מספר מאפשר לך לבחור את המעריך n, בלולאה בין 2 ל -7 (וחזרה ל -2). באותה רוח, הוא מציג 3 אם אתה כרגע בן 2 …
לבסוף, בעת הצגת ערכת ג'וליה, יש לבחור את הערך של הקבוע c: מקש C מאפשר לך לעשות זאת, הודות לבורר (ראה תמונה שנייה). הערך של קבוע זה מוצג עם הסט.
לחיצה על התמונה מגדילה את הנקודה שנבחרה. בעיגול קטן מוצג עיגול קטן ומלבן מדגיש את אזור הגדילה של הסט.
התמונה השלישית מראה שזמני המחשוב נשארים בין 0.8 ל -1.2 שניות עבור 320 x 240 פיקסלים, מה שהופך אותו נוח להגדיל ולהציג. הוא מגיע ל -3 שניות עבור 480 x 320 פיקסלים, אך מספק פרטים נוספים.
שלב 4: כמה תמונות מוסברות …
התמונה הגדולה ביותר היא סט המנדלברוט הידוע. המספרים המורכבים המשמשים בתמונה זו נעים בין -2.1 ל- +0.7 ב abscissa, ו- -1.2 עד 1.2 ב- ordinate. אם תגדיל את החלק השמאלי ביותר של התמונה הראשונה הזו, רוב הסיכויים שתקבל סוף סוף את התמונה השנייה, המציגה גרסה קטנה יותר של הסט המקורי שנמצא בקצה השמאלי ביותר של הסט. עבור שתי התמונות הללו, המעריך ('n') שווה ל -2: זהו הערך המשמש בדרך כלל להצגת ערכות מנדלברוט.
אם תשנה ערך זה ל -3 (פשוט לחץ על המקש שאומר 3), תקבל את התמונה השלישית. הבדל אחד ברור הוא גורם הסימטריה: n = 2 נותן סימטריה צירית (כלומר המערכה סימטרית כנגד הציר האופקי החציוני), אך עם n = 3 התמונה הופכת בלתי משתנה על ידי סיבוב של 120 ° (שליש מ -360 °, סיבוב גורם סימטריה 3). והוא שומר על תכונותיו הפרקטליות, אותן ניתן לאמת על ידי התקרבות בקצוות הצורה השחורה.
התמונה הרביעית היא קבוצה של ג'וליה המתקבלת לאחר בחירת ערך מקדם השווה ל- 0.414 ב abscissa ו- 0.09 ב- ordinate. לוח הצבעים האדום נבחר, כפי שניתן לראות במפתח הירוק מימין (ירוק, להיות הצבע הבא לבחירה). התמונה החמישית מציגה את אותו סוג ערכת ג'וליה, שחלק דמיוני גבוה יותר מהקבוע (0.358).
אני מקווה שתיהנו לשחק עם התוכנית הזו ושתוכלו להציג תמונות פרקטליות יפות. אל תהססו לחקור את הסטים של מנדלברוט וג'וליה ולשחק עם הצבעים: הם עוזרים לזהות כמה פרטים שאולי לא נראים עם אלה המונוכרום הפשוט. אולי אפילו תגלו כמה נופים פרקטאליים שאף אחד מעולם לא ראה לפניכם …
_
רוצה לגלות עוד תמונות פרקטליות? פשוט לחץ כאן או חקור אמנות פרקטלית או אפילו פרקטל אסי. אולי ההנחיה הזו תגרום לך לרצות ליצור תמונות מעולות כאלה …
פרס שני בתחרות Made with Math
מוּמלָץ:
צלם תמונות נהדרות באמצעות אייפון: 9 שלבים (עם תמונות)
צלם תמונות נהדרות עם אייפון: רובנו נושאים איתנו סמארטפון לכל מקום בימים אלה, לכן חשוב לדעת כיצד להשתמש במצלמת הסמארטפון שלך לצלם תמונות נהדרות! היה לי רק סמארטפון במשך כמה שנים, ואהבתי להחזיק מצלמה ראויה לתיעוד דברים שאני
מחזיק תמונות עם רמקול מובנה: 7 שלבים (עם תמונות)
מחזיק תמונות עם רמקול מובנה: הנה פרוייקט נהדר לביצוע בסוף השבוע, אם אתה רוצה ליצור רמקול משלך שיכול להכיל תמונות/גלויות או אפילו רשימת מטלות. כחלק מהמבנה אנו הולכים להשתמש ב- Raspberry Pi Zero W כלב הפרויקט, ו
בינה מלאכותית וזיהוי תמונות באמצעות האסקי לנס: 6 שלבים (עם תמונות)
בינה מלאכותית וזיהוי תמונות באמצעות HuskyLens: היי, מה קורה חבר'ה! אקרש כאן מ- CETech. בפרויקט זה, נסתכל על האסקי לנס מ- DFRobot. זהו מודול מצלמה המונע על ידי AI המסוגל לבצע מספר פעולות בינה מלאכותית כגון זיהוי פנים
שעון תמונות Google: 7 שלבים (עם תמונות)
שעון תמונות של Google: מדריכים אלה מראים כיצד להשתמש ב- ESP32 ו- LCD ליצירת שעון דיגיטלי עם תצוגת תמונות אקראית ברקע בכל דקה. התמונות הגיעו משיתוף אלבום תמונות Google שלך, פשוט הזן את קישור השיתוף ESP32 יעשה את העבודה; >
מסגרת תמונות Raspberry Pi בפחות מ -20 דקות: 10 שלבים (עם תמונות)
מסגרת תמונות Raspberry Pi בפחות מ -20 דקות: כן, זו עוד מסגרת צילום דיגיטלית! אבל רגע, הוא מלוטש יותר, וכנראה המהיר ביותר להרכבה ולריצה