ΕAΡΙΝΟ ΕΞΑΜΗΝΟ 2005

ΜΕΤΑΠΤΥΧΙΑΚΟ ΜΑΘΗΜΑ:ΕΙΣΑΓΩΓΗ ΣΤΑ
FRACTALS

ΕΡΓΑΣΙΑ:ΚΑΤΑΣΚΕΥΗ FRACTAL
ΣΥΝΑΡΤΗΣΗ ΠΑΡΕΜΒΟΛΗΣ ΜΕ ΣΕΣ.
ΘΕΩΡΗΤΙΚΑ ΚΑΙ ΥΠΟΛΟΓΙΣΤΙΚΑ.
ΕΡΓΑΣΤΗΚΑΝ ΟΙ ΦΟΙΤΗΤΡΙΕΣ:
ΚΑΤΣΟΥΛΙΔΗ ΑΡΓΥΡΩ 241903
ΚΩΣΤΑΚΗ-ΚΩΣΤΑ ΜΑΡΙΑ 242303
ΜΠΑΝΤΟΥΝΑ ΔΕΣΠΟΙΝΑ 243403

κύκλων. όπου Ν: θετικός ακέραιος. Η Ευκλείδεια γεωμετρία και οι στοιχειώδεις συναρτήσεις όπως το ημίτονο. Fi) : I=0. xN] . Στη συνέχεια. η τριγωνομετρία και η υπολογιστική άλγεβρα μας δίδαξαν πώς να μοντελοποιήσουμε τα σχήματα που βλέπουμε στον πραγματικό κόσμο μέσω ευθειών. Το πείραμα μπορεί να είναι αριθμητικό στον υπολογιστή.1. Σε κάθε περίπτωση το αποτέλεσμα του πειράματος θα είναι η συλλογή δεδομένων της μορφής: { (xi. Αποτελέσματα αυτού του τρόπου σκέψης υπάρχουν σε μεγάλο βαθμό στην καθημερινή μας ζωή. Fi=F(xi). Η διαδικασία αυτή αποτυπώνεται στα παρακάτω σχήματα: .…. Για παράδειγμα.N}.ΓΕΝΙΚΑ-ΕΙΣΑΓΩΓΗ Η Ευκλείδεια γεωμετρία. Θεωρούμε ένα πείραμα που υπολογίζει τις τιμές μιας πραγματικής συνάρτησης F(x) όπου x∈ℜ. κάποιος μπορεί να θεωρήσει ότι ένα ευθύγραμμο τμήμα είναι μια καλή προσέγγιση του γραφήματος των σημείων ή άλλος μπορεί να κατασκευάσει ένα πολυώνυμο όσο το δυνατόν μικρότερου βαθμού γίνεται του οποίου το γράφημα ταιριάζει αρκετά καλά με τα σημεία στο διάστημα [x0. Ο στόχος πάντα είναι ο ίδιος: να αναπαραστήσουμε τα σημεία. Πολλά γραφικά υπολογιστών έχουν δημιουργηθεί ειδικά ώστε να παρέχουν γρήγορο υπολογισμό και παρουσίαση κλασσικών γεωμετρικών σχημάτων. Η κλασσική μέθοδος για να αναλύσουμε αυτά τα δεδομένα ξεκινά αναπαριστώντας τα γραφικά στους άξονες ως υποσύνολο του ℜ2. με ένα κλασσικό γεωμετρικό σχήμα. το συνημίτονο και τα πολυώνυμα αποτελούν τη βάση για τις κλασσικές μεθόδους που χρησιμοποιούμε για να αναλύσουμε πειραματικά δεδομένα. παραβολών και άλλων απλών καμπυλών. xi∈ℜ τέτοια ώστε: x0<x1<x2<x3<…<xN. Αντί για ένα πολυώνυμο μπορεί να χρησιμοποιηθεί ένας γραμμικός συνδυασμός απλών (στοιχειωδών) συναρτήσεων. το οποίο μπορεί εύκολα να ειπωθεί σε κάποιον άλλο. τη γραφική αυτή αναπαράσταση των σημείων την αναλύουμε γεωμετρικά.2. θεωρώντας τα ως υποσύνολο του ℜ2.

Το γράφημα ενός πολυωνύμου είναι μια ευκλείδεια προσέγγιση των σημείων.Μια ευθεία είναι μια ευκλείδεια προσέγγιση των σημείων. .

1. Λέμε ότι η συνάρτηση f παρεμβάλλεται στα σημεία και ότι (το γράφημα της f) περνάει ανάμεσα στα σημεία παρεμβολής.N}.…. Ωστόσο είναι επιθυμητό από τα συστήματα γραφικών να μπορούν να αντιμετωπίσουν ευρύτερου φάσματος προβλήματα. κτίρια.Fi) ∈ℜ2 λέγονται σημεία παρεμβολής. Παρέχουν μια κοινή γλώσσα για την επιστημονική μας δουλειά.τ. για i=1. Αυτό δεν είναι εντυπωσιακό από τη στιγμή που αυτά τα αντικείμενα κατασκευάστηκαν χρησιμοποιώντας Ευκλείδεια γεωμετρία.Fi) ∈ℜ2 : i=0. Σ’ αυτό το κεφάλαιο θα παρουσιάσουμε τις fractal συναρτήσεις παρεμβολής. της καμπύλης σεισμογράφου κ. των δασών κι ακόμα της καμπύλης δεικτών του χρηματιστηρίου.3. των σταλακτιτών. όπου x0<x1<x2<x3<…<xN. Μπορούμε να τις χρησιμοποιήσουμε για να μεταδώσουμε πληροφορίες εύκολα από τον έναν στον άλλο.2. Τα συστήματα γραφικών που συναντάμε στην παραδοσιακή γεωμετρία είναι αποτελεσματικά στο να φτιάχνουμε τις εικόνες αντικειμένων κατασκευασμένων από τον άνθρωπο. των βουνών. όπως ρόδες. Επιπλέον. . Τα σημεία (xi. (Χρειαζόμαστε δηλαδή συναρτήσεις με πολλές ανωμαλίες στο γράφημά τους.….Οι στοιχειώδεις (απλές) συναρτήσεις όπως οι τριγωνομετρικές και οι ρητές έχουν τις ρίζες τους στην Ευκλείδεια γεωμετρία. Τα γραφήματα αυτών των συναρτήσεων μπορούν να χρησιμοποιηθούν για να προσεγγίσουμε εικόνες τοπίων όπως αυτές των οροσειρών.N. Αυτές οι στοιχειώδεις ‘Ευκλείδειες’ συναρτήσεις είναι χρήσιμες όχι μόνο για τη γεωμετρία τους αλλά γιατί μπορούν να εκφραστούν με απλούς τρόπους. οι στοιχειώδεις συναρτήσεις χρησιμοποιούνται σε μεγάλο βαθμό στον επιστημονικό υπολογισμό. ΣΧΟΛΙΟ: Παρεμβολές μπορούν να γίνουν με πολλούς τρόπους. Αυτή είναι η προσέγγιση της εφαπτομένης που μπορεί να χρησιμοποιηθεί αποτελεσματικά κοντά στα περισσότερα σημεία. δρόμους.xN]→ ℜ τέτοια ώστε: f(xi)= Fi.) ΟΡΙΣΜΟΣ: Ένα σύνολο δεδομένων είναι ένα σύνολο σημείων της μορφής:{ (xi. Η συνάρτηση παρεμβολής που αντιστοιχεί σε αυτό το σύνολο σημείων είναι μία συνεχής συνάρτηση f: [x0. Το κοινό τους ‘σημείο’ είναι ότι όταν τα γραφήματά τους ‘μεγεθυνθούν’ όσο χρειάζεται. των. στο σχέδιο μέσω υπολογιστή και στην ανάλυση δεδομένων γιατί μπορούν να αποθηκευτούν σε μικρά αρχεία και να υπολογιστούν από γρήγορους αλγορίθμους. τοπικά μοιάζουν με ευθείες γραμμές.2.λ. σύννεφων. Επιπλέον η fractal διάσταση των γραφημάτων αυτών των συναρτήσεων είναι πάντα 1.

Π.  y Επίσης ορίσαμε ειδικές συναρτήσεις συστολής στον ℜ2.1.….N} σημεία του ℜ2 .1.Tότε υπάρχει μετρική στον ℜ2 ισοδύναμη της ευκλείδιας ώστε η W να είναι συνάρτηση συστολής. Η διαδικασία αυτή μας εξασφαλίζει αφ’ενός την ύπαρξη συνάρτησης παρεμβολής αφ’ετέρου μας δίνει εύκολο τρόπο αναπαράστασης σε Η\Υ.N. Η παρεμβολή με πολυώνυμα μεγάλου βαθμού αποτυγχάνει γι’ αυτό χρησιμοποιούμε splines για να έχουμε μεγάλη ακρίβεια στην προσέγγισή μας. ΘΕΩΡΗΜΑ Έστω {(χι. η οποία είναι συνάρτηση παρεμβολής των {(χι . που έχουν ως σταθερό σημείο το γράφημα της συνάρτησης αυτής.χ. ΕΙΔΙΚΑ Ας δούμε κατασκευή fractal συνάρτηση παρεμβολής με ΣΕΣ Αρχικά ορίζουμε ένα τελεστή στο χώρο των συνεχών συναρτήσεων C([ x   ]) ο οποίος έχει ως σταθερό σημείο συνάρτηση παρεμβολής. Fi ) i= 0.Η συνάρτηση συστολής W με 0<|dn|<1 έχει ένα (ακριβώς) σταθερό σημείο G∈H(ℜ2) το οποίο αποτελεί γράφημα μιας συνεχούς συνάρτησης f .N} .Fi ) i = 0.λπ. πολλαπλασιασμών κ.…. Τα πολυώνυμα χρησιμοποιούνται για την προσέγγιση συναρτήσεων καθώς μπορούν να υπολογιστούν πολύ εύκολα με πεπερασμένο πλήθος προσθαφαιρέσεων.2.…. Αυτά τεκμηριώνονται μέσω των παρακάτω θεωρημάτων ΠΡΟΤΑΣΗ Έστω 0<|dn|<1 n=1.: Από την Αριθμητική Ανάλυση θυμόμαστε ότι ο στόχος μας ήταν η προσέγγιση συναρτήσεων με παρεμβολή με πολυώνυμα και με τμηματικά πολυωνυμικές συναρτήσεις δηλαδή splines (ή κυβικές splines που είναι δύο φορές παραγωγίσιμες).

en . B ∈ H( ℜ2 ) Τα dn είναι τα contractions που θα έχουμε στο πρόγραμμα μας .2.5 πως διαφοροποιείται το γράφημα που προκύπτει τρέχοντας το πρόγραμμα μας. cn . fn n=1.2. Αυτά πρέπει να είναι πάντα 0<|dn| <1 και θα δούμε πως παίρνοντας άλλοτε θετικές ή αρνητικές τιμές.Fi} : i=1. Για να μπορέσουμε να υπολογίσουμε την box διάσταση του γραφήματος G (θεωρητικά). άλλοτε κοντά στο 0 ή στο +1 ή στο –1 ή στο 0.N.Ας δούμε κάποια πράγματα που θα μας βοηθήσουν να καταλάβουμε καλύτερα την fractal συνάρτηση παρεμβολής με ΣΕΣ και πως μπορούμε να υπολογίσουμε την box διάσταση του γραφήματος μας.N d n   y   f n   x   an Εν γένει wn   =  c y    n όπου τα αn .…. xn − xn −1 Έτσι βρίσκουμε αn = x − x N 0 F −F F −F n n −1 n 0 cn = x − x − d n x − x N 0 N 0 en = fn = xN xn −1 − x0 xn xN − x0 xN Fn −1 − x0 Fn x F −x F − dn N 0 0 N xN − x0 xN − x0 και W(B)=w1(B) U w2(B) U … ∈ wN(B) . ΘΕΩΡΗΜΑ: Έστω {xi.….…. 1)Για Ν≥ 2 0  x   en   +   .τα οποία δεν βρίσκονται όλα στην ίδια ευθεία και G το γράφημα παρεμβολής .….2.N σημεία του ℜ2 . .χρησιμοποιούμε ένα θεώρημα.N  xN   xn   x0   xn −1   =  =     F F δίνονται από τις σχέσεις wn  0   n −1  και wn  FN   Fn  n=1.2. n=1.

95+0. N Έτσι έχουμε ∑ |di| (1/Ν)D-1 = 1 ⇒ …κάνοντας πράξεις και i=1 λογαριθμίζοντας ⇒ D=1+log(Σ|di|)/logN Αυτό τον τύπο θα χρησιμοποιήσουμε για να υπολογίσουμε την box διάσταση των παραδειγμάτων που υπάρχουν στο παρακάτω πρόγραμμα που αρκεί να το τρέξουμε σε περιβάλλον matlab.2 i=1 οπότε D=1+log2.2/log4≈ 1. i=1 Εμείς θα ασχοληθούμε με ισαπέχοντα σημεία οπότε αi=1/N.75/log4≈ 2.8+0.3+0. D=1+log3..5 Σχόλιο: Παρατηρούμε ότι ενώ τα σχήματα βγαίνουν διαφορετικά(αλλάζουν τα contractions).93=3.Αν ≤ |di|>1 τότε dimB(G)=D όπου D δίνεται από τη σχέση • N ∑ |di| αiD-1 = 1. 60 παράδειγμα ….. 4 10 παράδειγμα ∑ |di| = 0. D=1+log3. έχουν τελικά την ίδια box διάσταση 4 40 παράδειγμα ∑ |di|=0.2/log4≈ 1.75/log4≈ 2.4=2. 50 παράδειγμα ….8+0.3+0.97+0.9+0.7+0.5 30 παράδειγμα Όμοια D=1+log2.2 i=1 οπότε D=1+log2.7+0. Σχόλιο: Παρατηρούμε ότι ενώ τα σχήματα βγαίνουν διαφορετικά έχουν τελικά την ίδια box διάσταση .5 4 20 παράδειγμα ∑ |di| = 0.75 i=1 οπότε D=1+log3.4=2.2/log4≈ 1. i=1 N Eιδικά αν ∑ |di| ≤⇒⇒ 1τότε dimB(G)=1.75/log4≈ 2.

56+0.[ 1 1 1]) K=[].5.5'). Ο αλγόριθμος ειναι: function interpolation s=get(0.[0 0 s(3) s(4)-70].5+0.'positive contractions near to 1'. clf.55+0. if choice1==0 %first example if K==1 clear.'contractions near to 0. choice1=isempty(K). K = menu('Interpolation Functions'.'mixed contractions'.4 70 παράδειγμα ∑ |di|=0.'Color'.'Position'.07=0.'contractions near to | 1|'. 4 70 παράδειγμα ∑ |di|=0. n=selection for i=1:n paremvoli1(i) pause(3) end %interpolation %second example elseif K==2 clear. clf.'negative contractions near to -1'. set(gcf.1+0. clf.'contractions near to 0'.1+0.57=2. n=selection for i=1:n paremvoli2(i) pause(3) end %interpolation %third example elseif K==3 clear.'positive contractions'.18 i=1 Άρα D=1+log2. n=selection for i=1:n paremvoli3(i) pause(3) end .32<1 άρα κατευθείαν i=1 D=1.'ScreenSize').'negative contractions'.05+0.18/log4≈ 1.

n=selection for i=1:n paremvoli5(i) pause(3) end %interpolation %sixth example elseif K==6 clear. clf. clf. clf. clf. n=selection for i=1:n paremvoli8(i) pause(3) end %interpolation .%interpolation %fourth example elseif K==4 clear. clf. n=selection for i=1:n paremvoli7(i) pause(3) end %interpolation %eighth example elseif K==8 clear. n=selection for i=1:n paremvoli4(i) pause(3) end %interpolation %fifth example elseif K==5 clear. n=selection for i=1:n paremvoli6(i) pause(3) end %interpolation %seventh example elseif K==7 clear.

lineNo.4 5. dlgTitle='Input for Classical Fractals function'.'Name'. 7. .1).steps).2 0.P(:.steps). NN=strcat('negative contractions'.2)).no more than 4'}.1 1.dlgTitle. ans=inputdlg(prompt.7 -0. 9.' n='.N). 12 10]. set(gcf.2 5. 9. 12.8 -0.8 0.'Name'. 7. 10]. def={'4'}.N.5 0.NN) %----------------------------------------------------function paremvoli3(n) N=n.2)). end %--------------------------------------------------------function paremvoli1(n) N=n. P=myFIF(IP.4].N.' n='. P=myFIF(IP. set(gcf.S.NN) %----------------------------------------------------function paremvoli2(n) N=n.8 1.P(:.2 0.4 5.4]. lineNo=1. choice=isempty(ans).3 0. IP=[0.def).N). NN=strcat('positive contractions'.S. if (choice==0) n=ceil(abs(str2num(char(ans(1))))).8 1. N=num2str(n). %contraction factors S=[0.5 0. steps=n. plot(P(:.3 -0. N=num2str(n).7 0.1). plot(P(:. IP=[0.1 1. %contraction factors S=[-0.end end %--------------------------------------------------------function n=selection prompt={'Enter Number of iterations. IP=[0. steps=n.

2 5.0.'Name'.2 0. 1. %contraction factors S=[-0. 10]. steps=n.N.steps).'Name'. P=myFIF(IP.93].NN) %-----------------------------------------------------function paremvoli6(n) .1).4 9. NN=strcat('mixed contractions'. 12. %contraction factors S=[0.8 1. steps=n.8 1.2)).P(:. P=myFIF(IP.97 -0.4].N).P(:.NN) %----------------------------------------------------------------------function paremvoli4(n) N=n. set(gcf.95 -0.2)).3 -0.N).S.5 0.5 0. N=num2str(n).97 0.S. NN=strcat('negative contractions near to -1'. set(gcf.S. plot(P(:.1 1. 10]. %contraction factors S=[0.9 0.4 10]. IP=[0. 0. 9. plot(P(:.7 0.1 1.NN) %----------------------------------------------------function paremvoli5(n) N=n. 0. 1.steps).P(:. IP=[0.1).1).5 9.steps).'Name'. N=num2str(n). NN=strcat('positive contractions near to 1'. set(gcf. 7.8 -0.8 7. steps=n. 7.' n='. P=myFIF(IP.N). N=num2str(n).9 0. 12.93].N.' n='.95 0.N.' n='.1 12. plot(P(:.4 5.2)).

1 12.' n='. NN=strcat('contractions near to 0'.55 -0.2)).5'.1 1.1).4 10]. %contraction factors S=[0.P(:. set(gcf.5 0.2 5.steps).P(:.2]. IP=[0.S.' n='. steps=n. 0.2)).steps). 1. 0.1 0.2 0.'Name'. P=myFIF(IP.56 0.' n='.07].57].7. 1. 1.95 -0. P=myFIF(IP.steps) .9. 0.8 7. 0.93].6.N=n.N). set(gcf.N.'Name'.2)).4 0.NN) %-----------------------------------------------------%-----------------------------------------------------%-----------------------------------------------------function P=myFIF(IP.N.9 0.4 10]. %contraction factors S=[0.P(:.5 9. 1.2 5. P=myFIF(IP.NN) %-----------------------------------------------------function paremvoli7(n) N=n. NN=strcat('contractions near to |1|'.05 -0. %contraction factors S=[0. IP=[0. IP=[0. 0.N.S. N=num2str(n). 1. 0.S. NN=strcat('contractions near to 0.5 9.1). steps=n. plot(P(:.S. 0.1 12.1 -0.1).N). N=num2str(n). steps=n.5.97 -0.N.8 7. plot(P(:.N).NN) %-----------------------------------------------------function paremvoli8(n) N=n. N=num2str(n).'Name'.5 -0. set(gcf.8 1.steps). plot(P(:.

1)+S(1.1)-IP(1.1)=a(j)*A_0(k. f(i)=(IP(N+1.2))/(IP(N+1.1)*IP(i+1.1)*IP(N+1.1))S(i)*(IP(N+1. for j=1:N %map all the points to the section j for k=1:points P(m. for i=1:N a(i)=(IP(i+1. e(i)=(IP(N+1.2)+f(j).2)IP(1. m=m+1. A_0=P.1)-IP(i.1)).1)). c(i)=(IP(i+1. end.1)-IP(1.1)-IP(1.1)*IP(i+1.2)=c(j)*A_0(k. for i=1:steps %for each section m=1.1)-IP(1.2))/(IP(N+1. points=m-1.%IP is a N+1x2 matrix representing the interpolation points %N is the number of mappings and N+1 the number of points %S is a Nx1 matrix representing the contraction factors %steps: is the number of iterations %Here are the map parameters. points=N+1.1)).2)-IP(1.1))/(IP(N+1.1)*IP(1.1)).1)-IP(1. P(m. . end.2))/(IP(N+1. A_0=IP.1)-IP(1.1))/(IP(N+1.j)*A_0(k.2)-IP(i.1)-IP(1.1)*IP(i. end. end.1)+e(j).2)-IP(1.2))/(IP(N+1.1)*IP(i.1))-S(i)*(IP(N+1.

Sign up to vote on this title
UsefulNot useful