Σ’ αυτό το βίντεο παρουσιάζονται οι λύσεις των ασκήσεων της Ενότητας 3
για το ενδιάμεσο επίπεδο.
Η ερώτηση ζητούσε να δημιουργήσουμε
ένα fractal χρησιμοποιώντας ένα αρχικό ευθύγραμμο τμήμα
και στη συνέχεια προσθέτοντας 3 επιπλέον τμήματα
σ’ αυτό, να δημιουργήσουμε αυτό το είδος σχήματος.
Επομένως, το fractal μοιάζει πολύ με
την καμπύλη Koch. Απλά προσθέτει ένα επιπλέον
ευθύγραμμο τμήμα, αλλά εξακολουθεί να διαιρεί
το αρχικό ευθύγραμμο τμήμα, αυτό εδώ,
σε 3 τμήματα και μετά να εισάγει
αυτό το επιπλέον τμήμα.
Επομένως, η διάσταση Hausdorff
γι’ αυτό το σχήμα θα ήταν ο λόγος log5 προς log3,
το οποίο είναι περίπου 1,46.
Τώρα ας πάμε στο μοντέλο NetLogo
κι ας το κατασκευάσουμε.
Τρέχουμε λοιπόν
το μοντέλο “KochCurve.nlogo”,
πατάμε “setup” και μετά “step”.
Και μπορείτε να επαναλάβετε αυτή την καμπύλη Koch
αρκετές φορές.
Τώρα πατήστε το κουμπί “Code”.
Εδώ είμαστε στην καρτέλα “Code” με τον κώδικα του προγράμματος.
Ας μετακινηθούμε προς τα κάτω στη διαδικασία επανάληψης “to iterate”
και αυτό είναι το σημείο εισαγωγής της καμπύλης Koch.
Αυτό θα το αλλάξουμε έτσι ώστε
να δημιουργείται το νέο σχήμα,
το οποίο είναι παρόμοιο, οπότε θα κρατήσουμε ένα μέρος του κώδικα.
Αλλά ας αντικαταστήσουμε αυτό το “60” με “90”
και μετά αυτό το “rt 120” με “rt 90”,
και στη συνέχεια πρέπει να το ξανακάνουμε όλο αυτό.
οπότε θα κάνω αντιγραφή και επικόλληση αυτού του κομματιού
και το τελευταίο μας τμήμα
παραμένει “lt 90”.
Ας δούμε αν δουλεύει …
Ελέγχουμε αν ο κώδικας
είναι σωστός.
Ο κώδικας φαίνεται εντάξει,
επομένως επιστρέφω στη διεπαφή
και τρέχω το πρόγραμμα: πατώ “setup”
και μετά “step”, και επαναλαμβάνω μερικές φορές.
Και φαίνεται ότι κάτι δεν πάει καλά.
Αυτό που πραγματικά συμβαίνει είναι ότι το σχήμα
βγαίνει έξω από τα όρια του παραθύρου προβολής.
Είναι μεγαλύτερο από το παράθυρο προβολής.
Επιλέγουμε λοιπόν “Settings” και αυξάνουμε
τη μέγιστη συντεταγμένη Y του παραθύρου
maximum PY core (“max-pycor”).
Ας την κάνουμε 90.
Πατάμε “OK”.
Και τώρα ας δούμε αν αυτό δουλεύει.
“setup”, “step”
Ας κατεβούμε προς τα κάτω για να δούμε
ολόκληρο το σχήμα.
Ας επαναλάβουμε μερικές φορές.
Και φαίνεται να είναι σωστό.
Το επόμενο βήμα της εργασίας
είναι να οριστεί ξανά το σχήμα
στο πρόγραμμα Box Counting,
και στη συνέχεια να ελεγχθεί η διάστασή του
χρησιμοποιώντας “box counting” και να συγκριθεί
με τη διάσταση Hausdorff.
Εδώ έχω ανοίξει το μοντέλο
“ BoxCountingDimension.nlogo”.
Πατήστε το κουμπί με την ετικέτα “Koch Curve”,
και μετά το κουμπί “iterate”.
Και μπορούμε να δούμε το οικείο σχήμα της καμπύλης Koch
να επαναλαμβάνεται αρκετές φορές.
Αυτό το πρόγραμμα επίσης μας δίνει τη δυνατότητα
να αναλύσουμε τη διάσταση “box counting”
ενός σχήματος της επιλογής μας, πράγμα που θα κάνουμε
σε λίγο. Αρχικά όμως ας τροποποιήσουμε
το κουμπί “Koch Curve” ώστε να γίνει
το κουμπί για την εργασία μας.
Ας σύρουμε λοιπόν τον δείκτη (κέρσορα) κατά μήκος
του κουμπιού με την ετικέτα “Koch Curve”,
και με δεξί κλικ ας επιλέξουμε “Edit”.
Στη συνέχεια αλλάζουμε την εμφανιζόμενη ετικέτα
“Koch Curve” σε “hw-3”, συντομογραφία του “Homework 3”.
Επίσης, χρειάζεται ν’ αλλάξουμε αυτή τη γραμμή
“set fractal-example”
έτσι ώστε να γίνει “hw-3” αντί για “Koch Curve”.
Βεβαιωθείτε ότι διατηρείτε τις παρενθέσεις,
“hw-3” και μετά πατήστε “OK”.
Τώρα έχουμε ένα κουμπί διαμόρφωσης (setup)
για το σχήμα της εργασίας μας.
Επομένως, τώρα πρέπει ν’ αλλάξουμε
την αντίστοιχη διαδικασία ώστε να παράγει το σωστό σχήμα.
Ας πάμε λοιπόν στο κουμπί “Code”,
ας μετακινηθούμε προς τα κάτω στη διαδικασία αρχικοποίησης “to setup”
και στη γραμμή που λέει
"if fractal-example=koch-curve"
θα αλλάξουμε το "koch-curve" σε “hw-3”.
Στη συνέχεια ας μετακινηθούμε προς τα κάτω στην περίπτωση "koch-curve"
της επαναληπτικής διαδικασίας “to iterate-example”
και ας αλλάξουμε πάλι το "koch-curve" σε “hw-3”.
Και πρέπει να επαναπρογραμματίσουμε τις οδηγίες.
Συνεπώς, πάλι, αυτό είναι ίδιο
με το πρώτο μέρος της άσκησης.
Στρεφόμαστε αριστερά 90,
εδώ δεξιά 90.
Και πρέπει όλο αυτό να το ξανακάνουμε.
Επομένως θα κάνω αντιγραφή και επικόλληση αυτού του τμήματος.
Στρεφόμαστε δεξιά 90 πάλι, για να επιστρέψουμε
στο αρχικό ευθύγραμμο τμήμα.
Και στο τέλος,
στρεφόμαστε αριστερά 90.
Στη συνέχεια, ελέγχουμε τον κώδικα.
Επιστρέφουμε στη διεπαφή.
Πατάμε “hw-3” και μετά “iterate”.
Τώρα μπορούμε να δούμε το σχήμα μας να εξελίσσεται.
Θα κάνω 3 επαναλήψεις
Τώρα ας πάμε προς τα κάτω στο τμήμα “Box-Counting Controls”
και ας πατήσουμε “Box Counting Setup”
και μετά “Box Counting Go”.
Και μπορούμε να δούμε το πρόγραμμα
να εκτελεί τον υπολογισμό των κουτιών του νέου μας σχήματος.
Το αφήνουμε να τρέξει για λίγο,
να κάνει τουλάχιστον μισή δωδεκάδα επαναλήψεις.
Τρέχει κάπως αργά,
γι’ αυτό θα προσπαθήσω
να το επιταχύνω λίγο.
Ας δούμε αν αυτό βοηθά.
Και μπορούμε να δούμε ότι στη γραφική παράσταση “ Box-Counting Plot”
αποτυπώνονται όλα τα σημεία που παράγονται σε κάθε τρέξιμο.
Μετρά λοιπόν τον αριθμό των κουτιών
και το συγκρίνει με το μέγεθος κάθε κουτιού
Ας το σταματήσουμε πηγαίνοντας στα “Tools”
και επιλέγοντας “Halt” με κύλιση προς τα κάτω.
Μετά θα πατήσουμε “Find Best-Fit Line” (ή “Linear Regression”).
Κι αυτό μας δείχνει ότι παίρνουμε
μια διάσταση “box counting” ίση με 1,254
και μπορούμε να τη συγκρίνουμε
με τη διάσταση Hausdorff ίση με 1,465.
Βλέπουμε ότι είναι σχετικά ακριβής,
αλλ’ ίσως όχι τόσο όσο θα θέλαμε.
Επομένως θα μπορούσαμε ν’ αλλάξουμε το αρχικό μήκος πλευράς κουτιού
κι επίσης το βήμα αύξησης
και να πειραματιστούμε μ’ αυτό για να δούμε αν θα πετύχουμε
καλύτερη προσαρμογή για την κατανομή μας.
Θα αφήσω τον πειραματισμό σε σας.
Κι εδώ ολοκληρώνεται
η άσκηση ενδιαμέσου επιπέδου για την Ενότητα 3.