top of page

Η καμπύλη Peano


Θα μπορούσατε να φανταστείτε ότι κατασκευάζοντας μια γραμμή με μια απλή κλωστή θα μπορούσατε να προστατευθείτε από τη βροχή; Ή ότι θα μπορούσατε να χωρέσετε μια κεραία μήκους 10 μέτρων μέσα σε ένα μικρό κινητό τηλέφωνο; Κι όμως γίνεται...


Το σημερινό άρθρο αναφέρεται σε μια εξωτική μαθηματική καμπύλη, την καμπύλη Peano που τελευταία βρίσκει πρακτικές εφαρμογές στην μικροηλεκτρονική. Εκτός από της βασικές της ιδιότητες, στο άρθρο περιέχεται και κώδικας σε MatLab για την υλοποίησή της. Το άρθρο απαιτεί βασικές γνώσεις μαθηματικών (Ανάλυσης), άρα απαιτεί γνώσεις φοιτητών ΑΕΙ, ΤΕΙ, ΕΑΠ (ΠΛΗ 10, ΠΛΗ 12, ΦΥΕ 10) που έχουν ολοκληρώσει ένα χρόνο σπουδών. Μπορεί όμως να διαβαστεί και από μαθητές Λυκείου με ενδιαφέρον για τέτοια θέματα.


Η καμπύλη Peano (Peano Curve) έγινε γνωστή γιατί είναι το πρώτο παράδειγμα καμπύλης που "γεμίζει τον χώρο". Ανακαλύφθηκε από τον Giuseppe Peano το 1890, εξαιτίας ενός παλαιότερου αποτελέσματος του Cantor που ισχυριζόταν ότι τα σύνολα [0,1] και [0,1]^2 περιέχουν "ίσο πλήθος στοιχείων". Η καμπύλη Peano (ως παραμέτρηση) είναι μια συνεχής και επί απεικόνιση (από το [0,1] στο [0,1]^2), δεν είναι όμως 1-1. Αυτό ακριβώς το γεγονός (ότι η καμπύλη Peano είναι επί στο [0,1]^2) δηλώνει ότι ουσιαστικά η καμπύλη διέρχεται από κάθε σημείο του μοναδιαίου τετραγώνου (δηλαδή του [0,1]^2). Εξ' ου και το όνομα "καμπύλη που γεμίζει τον χώρο" (space filling curve). Επομένως, η Hausdorff διάστασή της είναι 2, ενώ κάθε άλλη συνήθης συνεχής και παραγωγίσιμη καμπύλη έχει διάσταση 1.


Υπάρχουν διάφοροι τρόποι για να κατασκευάσει κανείς την καμπύλη Peano. Εδώ θα παρουσιάσουμε έναν πολύ απλό που βασίζεται στη μεθοδολογία των επαναλαμβανόμενων συστημάτων συναρτήσεων (iterated function systems). Πρέπει να τονίσουμε όμως ότι η καμπύλη Peano προκύπτει ως το όριο μια διαδικασίας, επομένως δεν πρόκειται για μια καμπύλη που μπορούμε να σχεδιάσουμε με ένα απλό μολύβι.


Η παρακάτω παρουσίαση εξηγεί την κατασκευή βήμα προς βήμα. Ξεκινάμε με μια "αρχική" πολυγωνική γραμμή (που μοιάζει με ένα "ξαπλωμένο" ψηφιακό 2). Η πολυγωνική γραμμή έχει 3 παράλληλες κατακόρυφες γραμμές που απέχουν 1/3 μεταξύ τους (η πρώτη στη θέση x=1/6, η δεύτερη στη θέση x=1/2 και η τρίτη στη θέση x=5/6) και 2 παράλληλες οριζόντιες γραμμές (η πρώτη στη θέση y=1/6 και η δεύτερη στη θέση y=5/6). Το βέλος δείχνει την κατεύθυνση της καμπύλης (δηλαδή στην περίπτωση παραμέτρησης δείχνει το πως προκύπτουν τα σημεία αυξάνοντας την παράμετρο t).

Χωρίζουμε το τετράγωνο σε εννέα (9) μικρότερα ίσα τετράγωνα και τοποθετούμε σε κάθε τετράγωνο το αρχικό σχήμα κατάλληλα μετασχηματισμένο (η παρουσίαση δείχνει τους απαραίτητους μετασχηματισμούς). Όταν ολοκληρώσουμε επαναλαμβάνουμε την ίδια διαδικασία (δηλαδή χωρίζουμε το τετράγωνο σε 9 μικρά ίσα τετράγωνα κ.ο.κ.), θεωρώντας ως αρχικό σχήμα αυτό που προέκυψε από το προηγούμενο βήμα. Η διαδικασία συνεχίζεται στο άπειρο και το όριό της είναι η καμπύλη Peano.



Παρακάτω βλέπετε ένα σύντομο animation με τα πρώτα 5 βήματα της κατασκευής. Σε αυτή την περίπτωση όμως έχουμε ενώσει τα μέρη της καμπύλης σε κάθε βήμα. Είναι εμφανές για ποιο λόγο λέμε ότι η καμπύλη "γεμίζει τον χώρο".

Μπορούμε εύκολα να δούμε ότι η απόσταση των παράλληλων πλευρών του σχήματος σταδιακά μειώνεται. Για παράδειγμα, οι παράλληλες κατακόρυφες γραμμές αρχικά έχουν απόσταση 1/3, μετά το πρώτο βήμα η απόσταση αυτή γίνεται 1/9, ακολούθως 1/27 κ.ο.κ. Γενικά μπορούμε να πούμε ότι μετά από n βήματα, η απόσταση αυτή θα είναι ίση με 1/3^(n+1). Προφανώς, όταν πάρουμε το όριο η απόσταση αυτή θα τείνει στο 0. Αυτό επαληθεύει πως η καμπύλη γεμίζει το μοναδιαίο τετράγωνο στο οποίο περιέχεται. Παρότι, προφανώς η καμπύλη Peano είναι καμπύλη και όχι επιφάνεια, μόλις αποδείξαμε ότι είναι αδιαπέραστη από τη βροχή!



Με παρόμοιο τρόπο μπορούμε να αποδείξουμε η καμπύλη Peano έχει μη πεπερασμένο μήκος. (Σε αυτή την περίπτωση υποθέτουμε ότι έχουμε ενώσει τα κομμάτια της, όπως φαίνεται στο animation)

Το αρχικό σχήμα έχει 3 κατακόρυφες γραμμές μήκους 2/3 η κάθε μια και 2 οριζόντιες με μήκος 1/3 η κάθε μια. Το συνολικό μήκος επομένως είναι μεγαλύτερο από 2+2/3 = 8/3.

Στο πρώτο βήμα της κατασκευής δημιουργούνται 9 μικρότερες πολυγωνικές γραμμές με μήκος 8/9 η κάθε μια (αφού κάθε μια πολυγωνική γραμμή είναι το 1/3 της αρχικής). Συνολικά το μήκος της καμπύλης που προκύπτει στο πρώτο βήμα είναι μεγαλύτερο του 8.

Στο δεύτερο βήμα θα έχουμε 9 πολυγωνικές γραμμές με μήκος 8/3 η κάθε μια, άρα συνολικό μήκος μεγαλύτερο από 3*8=24.

Προκύπτει, επομένως, ότι τα μήκη των καμπυλών σε κάθε βήμα είναι όροι γεωμετρικής προόοδου με λόγο λ=3 και πρώτο όρο το 8/3. Το όριο μιας τέτοιας ακολουθίας είναι το άπειρο.

Τέλος, πρέπει να τονίσουμε ότι η καμπύλη Peano έχει πολλαπλά σημεία, δηλαδή υπάρχουν σημεία από τα οποία περνάει περισσότερες από μία φορές!

 

Κώδικας Matlab για κατασκευή της καμπύλης Peano

Παρακάτω παρέχεται κώδικας σε Matlab που μπορεί να σχεδιάσει τα διαδοχικά βήματα της καμπύλης Peano. Αλλάξτε την τιμή της μεταβλητής number of iterations και δείτε το αποτέλεσμα. Μην επιλέξετε τιμή μεγαλύτερη του 7, γιατί θα χρειαστείτε μεγάλη ποσότητα μνήμης RAM.


%The Peano Curve (line)!!! clear; W=[ 1/3 0 0 1/3 0 0; -1/3 0 0 1/3 1/3 1/3; 1/3 0 0 1/3 0 2/3; 1/3 0 0 -1/3 1/3 1; -1/3 0 0 -1/3 2/3 2/3; 1/3 0 0 -1/3 1/3 1/3; 1/3 0 0 1/3 2/3 0; -1/3 0 0 1/3 1 1/3; 1/3 0 0 1/3 2/3 2/3]; number_of_maps = length(W(:,1)); A0=[1/6 1/6; 1/6 5/6; 1/2 5/6; 1/2 1/6; 5/6 1/6; 5/6 5/6 ]; number_of_points_of_line = length(A0(:,1)); %with DIA number_of_iterations = 5; Peano=MYDIA_R2(A0,W,number_of_maps,number_of_iterations); X=Peano(:,1); Y=Peano(:,2); %plot(X, Y , 'b.' , 'MarkerSize' , 1); line(X,Y,'Color','b'); xlim([0,1]);



Ο κώδικας χρησιμοποιεί και την παρακάτω συνάρτηση:


%A0 is the initial set represented by a Mx2 matrix %N is the number of the mappings %K is the number of iterations %W is the matrix Nx6 containing the parameters of the mappings %Each row (i) contains the 6 coefficients of the map w_i. a,b,c,s,d,e % / \ / \ % |a b| | d | %w=| | + | | % |c s| | e | % \ / \ / %The function returns the matrix FP N^K x 2!!! function B=MYDIA_R2(A0,W,N,K) A=A0; [M,l]=size(A0); points=M; if (K==0) B = A0; end; for (i=1:K) B = zeros(points*N,2); for j=1:points %for every point x=A(j,1); y=A(j,2); for r=1:N %map the point through each map B(points*(r-1)+j,1)=W(r,1)*x+W(r,2)*y+W(r,5); B(points*(r-1)+j,2)=W(r,3)*x+W(r,4)*y+W(r,6); end; end; points=M*N^i; A=B; end;



Για μεγαλύτερη ταχύτητα, μπορείτε να αντικαταστείσετε την συνάρτηση "MYDIA_R2" με την "MYDIA_R2_fast" που δίνουμε παρακάτω. Δουλεύει με τον ίδιο ακριβώς τρόπο. Όμως η MYDIA_R2 είναι πιο κατανοητή.

function B=MYDIA_R2_fast(A0,W,N,K) A=A0; [M,l]=size(A0); points=M; if (K==0) B = A0; end; maps = length(W(:,1)); for i=1:K %iterations B = zeros(points*N,2); for j=1:maps W_map = [W(j,1) W(j,2); W(j,3) W(j,4)]'; Add_map = repmat([W(j,5) W(j,6)],points,1); B(1+(j-1)*points:j*points,:) = A*W_map + Add_map; %B(:,1+(j-1)*points:j*points) = bsxfun(@plus,W_map*A,[W(j,5); W(j,6)]); end; points=M*N^i; if (i<K) A=B; end; end;

 

Κατασκευή Κεραιών

Τελευταία υπάρχει ερευνητικό ενδιαφέρον για την κατασκευή μικροκεραιών με σχήμα που μοιάζει με κάποιο βήμα της κατασκευής της καμπύλης Peano. Το πλεονέκτημα τέτοιων κεραιών είναι ότι μπορεί να έχουν πολύ μεγάλο μήκος και να καταλαμβάνουν πολύ μικρό χώρο (όπως βλέπεται στο διπλανό σχήμα). Θεωρητικά, ανάλογα με τους περιορισμούς της τεχνολογίας, μπορούμε μέσα σε ένα μικρό τετράγωνο τσιπάκι να χωρέσουμε μια κεραία μήκους αρκετών χιλιομέτρων...


Σχετικά άρθρα μπορείτε να διαβάσετε εδώ:

 

Για τις καμπύλες Peano μπορείτε να διαβάσετε περισσότερα στους παρακάτω συνδέσμους:




Featured Posts
Recent Posts
Archive
Search By Tags
Follow Us
  • Facebook Basic Square
  • Twitter Basic Square
  • Google+ Basic Square

Σχετικοί Σύνδεσμοι

bottom of page