Εισαγωγή στο Matlab Σεπτέμβριος, 2007 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng www.eng.ucy.ac.cy/petros Εισαγωγή στο Matlab 1
Περιεχόμενα Εισαγωγικά στοιχεία Η/Υ και Πληροφορικής Εισαγωγή στο πρόγραμμα Matlab Βασικές λειτουργίες Διανύσματα και μητρώα Γραφικές απεικονίσεις και παραστάσεις γραφικές απεικονίσεις σημείων και ευθύγραμμων τμημάτων γραφικές παραστάσεις συναρτήσεων γραφικές παραστάσεις πολλαπλών συναρτήσεων πολλαπλές γραφικές παραστάσεις πολλαπλά γραφικά σχήματα Εισαγωγή στο Matlab 2
Αρχεία Μatlab Αρχεία Εντολών Αρχεία Δεδομένων Προγραμματισμός με το Matlab Αρχεία συναρτήσεων Λογικά τεστ Βρόγχοι Αριθμητικές μέθοδοι Επίλυσης μη γραμμικών εξισώσεων (μέθοδος διχοτόμησης) Αριθμητικής ολοκλήρωσης (κανόνας του τραπεζίου) Αλγόριθμοι Ταξινόμηση στοιχείων (ταξινόμηση με εισαγωγή) Αναζήτηση στοιχείων (δυαδική αναζήτηση) Εισαγωγή στο Matlab 3
Βασικά στοιχεία Η/Υ Ιστορικά στοιχεία H/Y και πληροφορικής: 1939, Atanasoff και Berry: πρώτος ψηφιακόs Η/Υ 1939-44, Howard Aiken: πρώτος μεγάλης κλίμακας Η/Υ (Harvard Mark I) 1944 44, Alan Turing: πρώτος προγραμματιζόμενος ψηφιακόs Η/Υ (COLOSSUS) 1943-44 444: 4: πρώτος γενικής χρήσης ψηφιακόs Η/Υ (ENIAC) Εισαγωγή στο Matlab 4
Ιστορικά στοιχεία H/Y και πληροφορικής ( συνεχ.) Δεκαετία 1960: εφεύρεση ολοκληρωμένων κυκλωμάτων => σημαντική μείωση μεγέθους Η/Υ 1969: ARPANET: Γέννηση του διαδίκτυου Δεκαετία 1970: πρώτοι μικρουπολογιστές 1976: Κατασκευάζεται ο πρώτος υπερυπολογιστής (Cray-1) 1981: Κατασκευάζεται ο προσωπικός Η/Υ IBM PC 1989-90, 90, Tim Berners-Lee: World-Wide Wide Web (WWW), HTML, & HTTP 1993 & 1994: Δημιουργούνται τα Mosaic & Netscape WWW browsers Εισαγωγή στο Matlab 5
Πρόοδος Τεχνολογίας Ηλεκτρονικών Υπολογιστών 5 ΜΒ σκληρός Δίσκος (1956) 4 GΒ (4 x 1024 = 4096 MB) USB Memory key (2006) Εισαγωγή στο Matlab 6
Πρόοδος Τεχνολογίας Ηλεκτρονικών Υπολογιστών ENIAC (1943-4) 4) ~30 τόνους 2.4 m x 0.9 m x 30 m 2007 128MB ROM / 64MB RAM 400MHz Samsung CPU > 1 GΒ G (1024 MB) storage card (LME for Pocket PC,,.net, Java ) Εισαγωγή στο Matlab 7
Βασικά στοιχεία ψηφιακών Η/Υ Βασικές λειτουργίες: αποθήκευση πληροφοριών ανάκληση πληροφοριών ταχύτατη εκτέλεση μαθηματικών πράξεων Υλικό (hardware): Βασική αρχιτεκτονική: Eίσοδος δεδομένων (input data) Λογισμικό(software (software): Προγράμματα Η/Υ: Προγράμματα συστημάτων: λειτουργικά συστήματα (Unix, MSDOS, Windows, Linux, κλπ), μεταγλωττιστές, κλπ. Προγράμματα εφαρμογών: π.χ.. Notepad, Word, Excel, Powerpoint, Οutlook,, Netscape, Internet Explorer, Matlab, Mathcad, Autocad, κλπ. Δεδομένα προγραμμάτων Η/Υ K.M.E. (CPU) Επεξεργαστής (processor) Πρωτεύων μνήμη (RAM) Έξοδος αποτελεσμάτων (Output data) Εισαγωγή στο Matlab 8
Πρόγραμμα αριθμητικών υπολογισμών: : Matlab Εισαγωγή στο Matlab 9
Περιβάλλον και παράθυρα Matlab Εισαγωγή στο Matlab 10
Φάκελος εργασίας Matlab Εισαγωγή στο Matlab 11
Πληροφορίες/βοήθεια για το Matlab Εκκίνηση προγράμματος >> help ( >> more on) >> help matlab\general >> help beep >> demos Ιστοσελίδα κατασκευαστών: http://www.mathworks.com >> doc >> lookfor <XYZ> Χρήση σαν απλή υπολογιστική Εισαγωγή στο Matlab 12
Βασικές λειτουργίες Matlab Τελεστές: >> help ops >> help colon Προτεραιότητα τελεστών Αριθμητικές εκφράσεις Μεταβλητές: ( ) ^ *, / +, - <, <=, ==, =>, > &, (17+3)/2+6/3 17+3/2+6/3 >> who Your variables are: a ans r >> clear >> whos >> pi ans = 3.1416 >> r = 5 r =5 >> pi * r ^ 2 ans = 78.5398 >> a = ans; >> a a = 78.5398 >> a = pi * r ^ 2 a = 78.5398 Εισαγωγή στο Matlab 13
Αριθμητικοί τελεστές Plus + Unary plus + Minus - Unary minus - Matrix multiply * Array multiply.* Matrix power ^ Array power.^ Backslash or left matrix divide \ (INV(A)*B ) Slash or right matrix divide / (A*INV(B) A*INV(B)) Left array divide.\ (element-by-element division) Right array divide./ (element-by-element division) Εισαγωγή στο Matlab 14
Προτεραιότητα τελεστών transpose (.'), power (.^), complex conjugate transpose ('), matrix power (^) unary plus (+), unary minus (-),( logical negation (~) multiplication (.*), right division (./), left division (.\), matrix multiplication (*), matrix right division (/), matrix left t division (\)( addition (+), subtraction (-)( colon operator (:) less than (<), less than or equal to (<=), greater than (>), greater than or equal to (>=), equal to (==), not equal to (~=) short-circuit logical AND (&&) short-circuit logical OR ( ) Εισαγωγή στο Matlab 15
Τριγονομετρικές συναρτήσεις sin - Sine. sind sinh asin asind asinh cos cosd cosh acos acosd acosh - Sine of argument in degrees. - Hyperbolic sine. - Inverse sine. - Inverse sine, result in degrees. - Inverse hyperbolic sine. - Cosine. - Cosine of argument in degrees. - Hyperbolic cosine. - Inverse cosine. - Inverse cosine, result in degrees. - Inverse hyperbolic cosine. Εισαγωγή στο Matlab 16
tan - Tangent. tand tanh atan atand - Tangent of argument in degrees. - Hyperbolic tangent. - Inverse tangent. - Inverse tangent, result in degrees. atan2 - Four quadrant inverse tangent. atanh - Inverse hyperbolic tangent. sec - Secant. secd sech asec asecd asech - Secant of argument in degrees. - Hyperbolic secant. - Inverse secant. - Inverse secant, result in degrees. - Inverse hyperbolic secant. Εισαγωγή στο Matlab 17
csc cscd csch acsc acscd acsch - Cosecant. - Cosecant of argument in degrees. - Hyperbolic cosecant. - Inverse cosecant. - Inverse cosecant, result in degrees. - Inverse hyperbolic cosecant. cot - Cotangent. cotd coth acot acotd acoth - Cotangent of argument in degrees. - Hyperbolic cotangent. - Inverse cotangent. - Inverse cotangent, result in degrees. - Inverse hyperbolic cotangent. Εισαγωγή στο Matlab 18
Εκθετικές/Λογαριθμικές συναρτήσεις exp log - Exponential. - Natural logarithm. log10 - Common (base 10) logarithm. log2 - Base 2 logarithm and dissect floating point number. pow2 - Base 2 power and scale floating point number. realsqrt sqrt - Square root of number greater than or equal to zero. - Square root. Εισαγωγή στο Matlab 19
Συναρτήσεις στρογγυλοποιήσεων fix floor ceil - Round towards zero. - Round towards minus infinity. - Round towards plus infinity. round - Round towards nearest integer. mod - Modulus (signed remainder after division). rem sign - Remainder after division. - Signum. Εισαγωγή στο Matlab 20
>> x = 1.333 x = 1.3330 >> floor(x) ans = 1 >> ceil(x) ans = 2 >> round(x) ans = 1 x = -0.6667 >> floor(x) ans = -1 >> ceil(x) ans = 0 >> round(x) ans = -1 >> Εισαγωγή στο Matlab 21
Διανύσματα και μητρώα >> a(2) 2 >> a(1) = 6; >> a 6 2 3 >> c(2,3) 11 >> c(1,1:2) >> c(2,2) = -5; >> c 6 7 6 7 8 9-5 11 Εισαγωγή στο Matlab 22
>> d = a * b 4 5 8 10 12 15 >> e = c * a 44 62 >> a >> c 1 2 3 6 9 7 10 8 11 >> sum(a) 6 Εισαγωγή στο Matlab 23
x = [ 1 2 3 4 1 1 ] u = x * y y = [ 4 2 1 3 1 2 ] v = x.* y >> w = x * y = [ 11 11 19 15 ] >> inv(w) = [ -0.3409 0.2500 0.4318-0.2500 ] >> w * inv(w) = [ 1.0 0.0 0.0 1.0 ] >> det(w) = -44 = [ 4 4 3 12 1 2 ] >> eye(3) = [ 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 ] >> zeros(2,3) = [ 0.0 0.0 0.0 0.0 0.0 0.0 ] Εισαγωγή στο Matlab 24
>> a = [ 1 2 3 4 5 6] a = 1 2 3 4 5 6 >> a*b ans = 13 13 28 28 >> b = [ 0 1 ; 2 0 ; 3 4] b = 0 1 2 0 3 4 >> c = a * b c = 13 13 28 28 >> z = a.* b' z = 0 4 9 4 0 24 Εισαγωγή στο Matlab 25
>> format compact >> a=rand(3,3) a = 0.1897 0.3028 0.6979 0.1934 0.5417 0.3784 0.6822 0.1509 0.8600 >> b=eye(3)*4 b = 4 0 0 0 4 0 0 0 4 >> inv(b)*a ans = 0.0474 0.0757 0.1745 0.0484 0.1354 0.0946 0.1706 0.0377 0.2150 >> a/b ans = 0.0474 0.0757 0.1745 0.0484 0.1354 0.0946 0.1706 0.0377 0.2150 >> b\ab ans = 0.0474 0.0757 0.1745 0.0484 0.1354 0.0946 0.1706 0.0377 0.2150 Εισαγωγή στο Matlab 26
Πληροφορίες πινάκων size - Size of array. length - Length of vector. numel - Number of elements. disp - Display matrix or text. zeros - Zeros array. ones - Ones array. Βασικοί πίνακες eye - Identity matrix. rand - Uniformly distributed random numbers. Εισαγωγή στο Matlab 27
Συναρτήσεις πινάκων rank - Matrix rank. det - Determinant. trace - Sum of diagonal elements. \ and / - Linear equation solution. inv - Matrix inverse. eig - Eigenvalues and eigenvectors. Εισαγωγή στο Matlab 28
Ανάλυση δεδομένων max - Largest component. min - Smallest component. mean - Average or mean value. median - Median value. std - Standard deviation. var - Variance. sort - Sort in ascending order. sortrows - Sort rows in ascending order. sum - Sum of elements. prod - Product of elements. hist cumsum cumprod - Histogram. - Cumulative sum of elements. - Cumulative product of elements. Εισαγωγή στο Matlab 29
Γραφικές απεικονίσεις σημείων >> x1 = 5; >> y1 = 7; >> plot(x1,y1,'*') % Σχεδιασμός σημείων (x1,y1) >> grid on % Προσθήκη κύριων γραμμών στο διάγραμμα >> title('sxediash Shmeioy') % Προσθήκη τίτλου >> xlabel('x') >> ylabel('y') % Προσθήκη τίτλων στους άξονες σχεδίασης Εισαγωγή στο Matlab 30
Γραφικές απεικονίσεις σημείων >> clf >> x1 = 5; >> y1 = 7; >> plot(x1,y1,'*') >> grid on >> title('sxediash Shmeioy') >> xlabel('x') >> ylabel('y') >> hold on >> axis equal >> myaxes = [ 1 10 4 9 ]; >> axis(myaxes) >> plot(7,6,'o') Εισαγωγή στο Matlab 31
Γραφικές απεικονίσεις σημείων και ευθειών >> clf ; clear; >> x1 = 5; y1 = 7; >> x2 = 7; y2 = 6; >> x3 = 4.2; y3 = 5.5; >> x = [x1 x2 x3]; >> y = [y1 y2 y3]; >> axis equal >> axis([ 1 10 4 9 ]); >> hold on >> plot(x,y, *') >> x(4)=x1; y(4)=y1; >> plot(x,y) >> grid on >> title( Sxediasmos shmeiwn kai trigwnoy') >> xlabel('x') >> ylabel('y') Εισαγωγή στο Matlab 32
Γραφικές παραστάσεις >> x = 0:0.25:15; (αρχή:βήμα:τέλος) % Αυτόματος καθορισμός διανύσματος με τιμές γωνιών >> y = sin(x); % Αυτόματος υπολογισμός διανύσματος με τιμές ημιτόνων >> plot(x,y) % Σχεδιασμός σημείων (x,y) >> grid on % Προσθήκη κύριων γραμμών στο διάγραμμα >> title('sxediash Hmitonoy') % Προσθήκη τίτλου >> xlabel('x') >> ylabel('y') % Προσθήκη τίτλων στους άξονες σχεδίασης Εισαγωγή στο Matlab 33
Παράδειγμα Σχεδιάστε την γραφική παράσταση της εξίσωσης: όπου: 0 <= theta <= 100 >> clf >> clear >> theta = 0:0.5:100 >> z = 15*cos(theta/2) >> z = z + 7.5 * sin(theta/5); >> plot(theta,z) >> grid on >> title('askhsh 2h') >> xlabel('theta') >> ylabel('z') Εισαγωγή στο Matlab 34
Παράδειγμα x4=x1+5; y4=22.5+5*cos((x3-5)/dx*2*pi); plot(x4,y4, 'r'); x3=x1+5; y3=15+cos((x3-5)/dx*2*pi); plot(x3,y3, k'); x2=x1; y2=7.5+cos(x2/dx*2*pi); plot(x2,y2, g--'); dx=10 x1=0:0.1:dx; y1=cos(x1); plot(x1,y1); grid on hold on axis([-2 30-2 30]) Εισαγωγή στο Matlab 35
>> figure(1) >> clf >> x = 0:0.25:15; >> y = sin(x); >> plot(x,y, r ) >> grid on Πολλαπλές γραφικές παραστάσεις >> title('sxediash Hmitonoy') >> xlabel('x') >> ylabel( Hmitono,Synhmitono ) >> z = cos(x); >> hold on >> plot(x,z) >> plot(x,z, or ) Eναλλακτικά: plot(x,y,'r',x,z, x,z,'or') Εισαγωγή στο Matlab 36
figure(2) subplot(3,2,1) plot(x,y,'-') title('x-y Plot ') subplot(3,2,3) plot(x,y,'--') grid on title('x-y Plot with grid') subplot(3,2,4) plot(x,z) grid on title('x-z Plot with grid') subplot(3,2,6) plot(x,z, 'o') title('x-z Plot: o ') Πολλαπλά γραφικά σχήματα subplot(3,2,5) plot(x,z, '*') title('x-z Plot: *') Εισαγωγή στο Matlab 37
Γραφικές παραστάσεις και απεικονίσεις: Σχεδιάστε τα σημεία (-3,-2), (0,1), (2,2), (4,5) και (7,9) χρησιμοποιώντας το σύμβολα ο και διακεκομμένη γραμμή στο 3 ον τομέα ενός σχήματος αποτελούμενου από 2 γραμμές και 2 στήλες, όπως πιο κάτω: >> x = [ -3 0 2 4 7 ]; >> y = [ -2 1 2 5 9 ] >> subplot(2,2,3) >> plot(x,y,'o') >> grid on >> hold on >> plot(x,y,'--') Εισαγωγή στο Matlab 38
Βασικές συναρτήσεις δισδιάστατων γραφικών plot - Linear plot. loglog - Log-log scale plot. semilogx - Semi-log scale plot. semilogy - Semi-log scale plot. plotyy - Graphs with y tick labels on the left and right. Εισαγωγή στο Matlab 39
axis - Control axis scaling and appearance. zoom - Zoom in and out on a 2-D plot. grid - Grid lines. box - Axis box. hold - Hold current graph. subplot - Create axes in tiled positions. plotedit - Tools for editing and annotating plots. title xlabel ylabel text gtext - Graph title. - X-axis label. - Y-axis label. - Text annotation. - Place text with mouse. Εισαγωγή στο Matlab 40
Τρισδιάστατα γραφικά >> x=0:0.02:10; >> y=sin(x sin(x) >> z=cos(x cos(x) >> plot3(x,y,z) >> grid on >> xlabel('x') ') >> ylabel('y') ') >> zlabel('z') ') >> title('using plot3') Εισαγωγή στο Matlab 41
Βασικές συναρτήσεις τρισδιάστατων γραφικών plot3 - Plot lines and points in 3-D space. mesh - 3-D mesh surface. surf - 3-D colored surface. fill3 - Filled 3-D polygons. Εισαγωγή στο Matlab 42
axis - Control axis scaling and appearance. grid - Grid lines. box - Axis box. hold - Hold current graph. axes - Create axes in arbitrary positions. subplot - Create axes in tiled positions. daspect pbaspect - Data aspect ratio. - Plot box aspect ratio. xlim ylim zlim - X limits. - Y limits. - Z limits. Εισαγωγή στο Matlab 43
Εξειδικευμένες συναρτήσεις δισδιάστατων γραφικών area - Filled area plot. bar - Bar graph. barh - Horizontal bar graph. comet - Comet-like trajectory. compass - Compass plot. feather - Feather plot. fill - Filled 2-D polygons. hist - Histogram. pie - Pie chart. Εισαγωγή στο Matlab 44
Γενικές συναρτήσεις γραφικών figure - Create figure window. clf - Clear current figure. close - Close figure. refresh - Refresh figure. subplot - Create axes in tiled positions. axis - Control axis scaling and appearance. box - Axis box. hold - Hold current graph. ishold - Return hold state. Εισαγωγή στο Matlab 45
Αρχεία Matlab: αρχεία Μ (M-files) mymfile.m >> mymfile File Set Path Εισαγωγή στο Matlab 46
Αρχεία δεδομένων Matlab >> load w.dat >> w >> w(2,1) 4 5 6 7 8 9 7 Εισαγωγή στο Matlab 47
>> x = 1:2:11; >> y = [4 7-33 2]; >> save C:\mySaved1 x >> save C:\mySaved2 >> clear all >> load C:\mySaved1 >> x >> y >> load C:\mySaved2 >> y Αρχεία Matlab: load/save % Save workspace variables to disk % Load workspace variables from disk 1 3 5 7 9 11??? Undefined function or variable y'. 4 7-3 2 Εισαγωγή στο Matlab 48
Σχεδίαση με βάση αρχεία Matlab temps.dat >> temperatures temperatures.m Εισαγωγή στο Matlab 49
Απλές εντολές σε M-file: Αρχεία συναρτήσεων Matlab a = 2.5; e = pi * a ^ 2; mymfile1.m >> mymfile1 >> e e = 19.634954 Συναρτήσεις: myfunction1.m function embado=myfunction1(x) embado = pi * x ^2; return >> e = myfunction1(10) e = 314.1593 >> myfunction1(0.5) ans = 0.7854 >> x=myfunction1(17.5) x = 962.1128 Εισαγωγή στο Matlab 50
Ορισμός συναρτήσεως: myfun1.m function y=myfun1(x) y = x*x*x; return Σώμα συνάρτησης Συναρτήσεις function apotelesma = synarthsh1(parametroi) Ορισμός συνάρτησης myfun2.m function myfun2(x,y) x + y return >> clear all >> z=myfun1(8) >> y??? Undefined function or variable 'y'. >> z z = 512 >> myfun2(8,7) ans = 15 Εισαγωγή στο Matlab 51
Επιστροφή πολλαπλών τιμών και τοπικές μεταβλητές function [a2,b3] = MyFun1(x,y) a2 = x^2; b3 = y^3; a2 = 75; return b3 = -45; x = 3; y = -12; [k,m]] = MyFun1(2,5); >> testmyfun1 k = 4 m = 125 a2 = 75 k m a2 b3 x y b3 = -45 x = 3 y = -12 Εισαγωγή στο Matlab 52
Σχετικοί τελεστές (Relational operators) > < > = < = = = ~ = Equal == Not equal ~= Less than < Greater than > Less than or equal <= Greater than or equal >= Εισαγωγή στο Matlab 53
Λογικοί τελεστές (Logical operators) && ~ Short-circuit logical AND && Short-circuit logical OR Logical NOT ~ Εισαγωγή στο Matlab 54
Λογικά τεστς >> x = 5; >> y = 7; >> x < y 1 >> x >= y - 3 1 >> x == y - 3 0 >> 0 < x &&& x+2 > y 0 >> 0 < x y > x 1 >> ~ (x < 5) 1 Εισαγωγή στο Matlab 55
if έκφραση1 end εκτελείται μόνο αν η έκφραση1 είναι αληθής Διακλαδώσεις if έκφραση1 else end εκτελείται μόνο αν η έκφραση1 είναι αληθής εκτελείται μόνο αν η έκφραση1 δεν είναι αληθής if έκφραση1 εκτελείται μόνο αν η έκφραση1 είναι αληθής elseif έκφραση2 εκτελείται μόνο αν η έκφραση1 δεν είναι αληθής και η έκφραση2 είναι αληθής else εκτελείται αν καμία έκφραση δεν είναι αληθής end Εισαγωγή στο Matlab 56
Παράδειγμα διακλαδώσεων rand1.m Εισαγωγή στο Matlab 57
Δομή ελέγχου switch x=3 switch x end case 1 y1 = x case 3 y3 = x+3 case 7 y7 = x+777 otherwise zz = x^2 >> x = 3 y3 = 6 Εισαγωγή στο Matlab 58
Δομή ελέγχου switch x = -4 switch x end case 1 y1 = x case 3 y3 = x+3 case 7 y7 = x+777 otherwise zz = x^2 >> x = -4 zz = 16 Εισαγωγή στο Matlab 59
Βρόγχοι for μεταβλητή = αρχική τιμή : (προαιρετικό( προαιρετικό) βήμα : τελική τιμή εντολές end for i=1:5 disp(i^2) end 1 4 9 16 25 for i=5: 5:-1:1 if i == 3 continue end disp(i^2) end 25 16 4 1 Εισαγωγή στο Matlab 60
Βρόγχοι (συνεχ.) while λογική έκφραση εντολές end (μέσα στις οποίες πρέπει κάτι σχετικό με την λογική έκφραση να αλλάζει, ήναυπάρχεικάποιο break, ώστε να αποφεύγεται βρόγχος επ άπειρον) i = 0; while i<10 i = i + 2 end disp(i) i = 2 i = 4 i = 6 i = 8 i = 10 10 i = 0; while 1 if i>=10 break end i = i + 2 end disp(i) continue: συνέχεια με επόμενη εκτέλεση βρόγχου for ή while break: τερματισμός εκτέλεσης βρόγχων for και while Εισαγωγή στο Matlab 61
Δομές ελέγχου if - Conditionally execute statements. else - Execute statement if previous IF condition failed. elseif - Execute if previous IF failed and condition is true. end - Terminate scope of control statements. for - Repeat statements a specific number of times. while - Repeat statements an indefinite number of times. break - Terminate execution of WHILE or FOR loop. continue - Pass control to the next iteration of a loop. switch - Switch among several cases based on expression. case - SWITCH statement case. otherwise - Default SWITCH statement case. Εισαγωγή στο Matlab 62
Σύγκριση Matlab και άλλων γλωσσών προγραμματισμού Matlab σε σύγκριση με: Fortran C/C++ Java Visual Basic/VB.net C# Εισαγωγή στο Matlab 63
Είσοδος δεδομένων/έξοδος αποτελεσμάτων io1.m a = input('aktina kykloy: : '); p = 2 * pi * a; e = pi * a ^ 2; fprintf(' Dokimh: : %s ', 'Matlab') fprintf('\n Aktina = %f ', a) fprintf('\n Perimetros = %.3f ', p) fprintf(' \n Epifaneia = %f ', e) fprintf(' p = %f \t t e = %f ', p, e) fprintf(' %s = %f ', 'a', a) fprintf(' %s = %f ', 97, a) >> io1 Aktina kykloy: 5 Dokimh: Matlab Aktina = 5.0000 Perimetros = 31.416 Epifaneia = 78.539816 p= 31.415927 e = 78.539816 a = 5 a = 5 Εισαγωγή στο Matlab 64
Μορφοποίηση αποτελεσμάτων >> format long >> pi ans = 3.14159265358979 >> format short >> pi ans = 3.1416 >> format compact >> format loose >> format short e >> format long e >> format long g >> format long g >> format + Εισαγωγή στο Matlab 65
disp(x): παρουσιάζει τον πίνακα x >> disp(pi) >> t= 'Testing 3.1416 >> x = 4.5 >> disp(t) Testing >> disp x x >> disp(x) 4.5 Εισαγωγή στο Matlab 66
Εκτέλεση εντολών υπό μορφή χαρακτήρων >> s='2*3-5+3/2 >> eval(s) ans =2.5000 >> s2 = 'x = 45/9-2' s2 = x = 45/9-2 >> eval(s2) x = 3.00 Εισαγωγή στο Matlab 67
Μέγιστες και ελάχιστες τιμές >> realmax ans =1.7977e+308 >> realmin ans =2.2251e-308 INF : Infinity NaN : Not-a-Number Εισαγωγή στο Matlab 68
Εντολές Λειτουργικού Συστήματος cd copyfile movefile - Change current working directory. - Copy file or directory. - Move file or directory. delete - Delete file or graphics object. pwd - Show (print) current working directory. dir - List directory. ls mkdir rmdir - List directory. - Make new directory. - Remove directory.! - Execute operating system command. Εισαγωγή στο Matlab 69
Εντολές Χώρου Εργασίας (workspace) who - List current variables. whos - List current variables, long form. clear - Clear variables and functions from memory. load - Load workspace variables from disk. save - Save workspace variables to disk. quit - Quit MATLAB session. exit - Exit from MATLAB. Εισαγωγή στο Matlab 70
Εντολές ελέγχου what - List MATLAB-specific files in directory. type - List M-file. M open - Open files by extension. which - Locate functions and files. Εισαγωγή στο Matlab 71
Χρονικές συναρτήσεις now - Current date and time as date number. date - Current date as date string. clock - Current date and time as date vector. datestr - String representation of date. calendar - Calendar. cputime - CPU time in seconds. tic - Start stopwatch timer. toc - Stop stopwatch timer. pause - Wait in seconds. Εισαγωγή στο Matlab 72
Αριθμητικές μέθοδοι Επίλυση προβλημάτων των οποίων δεν υπάρχουν ή δεν έχουν βρεθεί ακόμη αναλυτικές λύσεις. Σειρά συγκεκριμένων βημάτων υπολογισμών με στόχο την εύρεση μιας έστω προσεγγιστικής λύσης με ικανοποιητική ακρίβεια. Χαρακτηριστικά μιας καλής αριθμητικής μεθόδου: Ακρίβεια λύσης (μικρή διαφορά από πραγματική λύση) Κόστος λύσης (απαιτούμενος χρόνος επίλυσης) Σύγκλιση και ευστάθεια μεθόδου Σφάλματα: απόλυτο σφάλμα (π.x. Υ προσεγ. - Υ ακριβές ) σχετικό σφάλμα (π.χ.. Υ προσεγ. - Υ ακριβές / Υ ακριβές ) Εισαγωγή στο Matlab 73
Αριθμητική επίλυση μη-γραμμικών εξισώσεων Έχοντας μια συνάρτηση να βρεθεί (ή να βρεθούν) η ρίζα (ρίζες) για τις οποίες η συνάρτηση ισούται με μηδέν: Y = f(x) = 0.0 Δηλαδή τα σημεία όπου τέμνεται ο άξονας των Χ Εισαγωγή στο Matlab 74
Μέθοδος διχοτόμησης 1. Εντοπίστε ένα διάστημα που συμπεριλαμβάνει την αναζητούμενη ρίζα. 2. Μοιράστε το διάστημα αυτό στο μισό και κρατήστε το μισό που συμπεριλαμβάνει την ρίζα 3. Επαναλάβετε το βήμα 2 μέχρι να προσεγγιστεί ικανοποιητικά η αναζητούμενη ρίζα (δηλαδή να επιτευχθεί ικανοποιητική σύγκλιση) Εισαγωγή στο Matlab 75
Αριθμητική ολοκλήρωση Έχοντας μια συνάρτηση Y=f(X) να υπολογιστεί το ολοκλήρωμα της συνάρτησης από κάποια τεταγμένη x1 ως κάποια άλλη τεταγμένη x2. Δηλαδή το εμβαδό μεταξύ της καμπύλης και του άξονα των x από x1 ως x2: x 1 x 2 Εισαγωγή στο Matlab 76
Oλοκλήρωση με την μέθοδο τραπεζίου Προσέγγιση εμβαδού με το άθροισμα αριθμού τραπεζίων Εμβαδό λωρίδας πλάτους ΔΧ βάση τύπου τραπεζίου f(x α ) f(x β ) x α x β Πέτρος Κωμοδρόμος, 2007 Εισαγωγή στο Matlab 77, 2007 x 1 x 2
Αλγόριθμοι Ορισμός και πλήρης κατανόηση του προβλήματος προς επίλυση Καθορισμός ενός αλγόριθμου, δηλαδή μιας συγκεκριμένης διαδικασίας βημάτων τα οποία οδηγούν σε συγκεκριμένα αποτελέσματα με ικανοποιητικά ελάχιστο δυνατό κόστος (μνήμης και χρόνου) Υλοποίηση του αλγορίθμου σε υπορουτίνα/προγράμμα προγράμμα με χρήση κάποιας κατάλληλης γλώσσας προγραμματισμού Έλεγχος της υπορουτίνας/προγράμματος προγράμματος για διάφορες περιπτώσεις δεδομένων, ειδικά όλων των ακραίων περιπτώσεων. Χρήση υπορουτίνας/προγράμματος προγράμματος για επίλυση σχετικών προβλημάτων. Εισαγωγή στο Matlab 78
Aλγόριθμοι ταξινόμησης (Sorting methods) Η ταξινόμηση είναι χρήσιμη σε πολλά προβλήματα, π.χ. για την διευκόλυνση της αναζήτησης ενός στοιχείου από πλήθος στοιχείων 5-22 6 4 23 7 45 3 9 0-33 4 7-33 5 6-44 11-4 -3-3 -22 0 3 4 4 5 5 6 6 7 7 9 11 23 45 Μεθόδοι ταξινόμησης (Ν) στοιχείων: απλές μέθοδοι: συνήθως απαιτούν βήματα τάξης Ο(Ν^2) ^2)) μέθοδος ταξινόμησης με εισαγωγή (insertion sort) μέθοδος ταξινόμησης με επιλογή (selection sort) μέθοδος ταξινόμησης τύπου κελύφους (shellsort), κλπ. προχωρημένες μέθοδοι: συνήθως απαιτούν βήματα τάξης Ο(Ν.logN)) γρήγορη μέθοδος ταξινόμησης (quicksort) μέθοδος ταξινόμησης με συγχώνευση (mergesort) Εισαγωγή στο Matlab 79
Παράδειγμα: αλγόριθμος ταξινόμησης τύπου εισαγωγής Θεωρώντας ότι τα στοιχεία είναι αποθηκευμένα σε ένα διάνυσμα Α Σε κάθε βήμα το στοιχείο A(i) πρέπει να εισαχθεί στην σωστή θέση αναμέσα στα ήδη ταξινομημένα από τα προηγούμενα βήματα στοιχεία A(0), A(1),.,A(i-1) Υλοποίηση αλγορίθμου χρησιμοποιώντας το Matlab: Εξωτερικός βρόγχος function asorted = insertionsort(a) asorted=a; for stoixeio = 2 : length(a) value = asorted(stoixeio); thesh = stoixeio; while thesh>1 && asorted(thesh-1) > value asorted(thesh) = asorted(thesh-1); thesh = thesh-1; end asorted(thesh)=value; disp(asorted); end return Εσωτερικός βρόγχος Εισαγωγή στο Matlab 80
Παράδειγμα εφαρμογής αλγόριθμου ταξινόμησης τύπου εισαγωγής 3-4 2-66 7 0 3-11 2-4 3 2-66 7 0 3-11 2-4 2 3-6 7 0 3-11 2-6 -44 2 3 7 0 3-11 2-6 -44 2 3 7 0 3-11 2-6 -4 0 2 3 7 3-11 2-6 -44 0 2 3 3 7-1 2-6 -4-1 0 2 3 3 7 2-6 -4-11 0 2 2 3 3 7 Εισαγωγή στο Matlab 81
Aλγόριθμοι αναζήτησης στοιχείων (Searching methods) Ας υποθέσομε να βρούμε ένα στοιχείο με κλειδί τον αριθμό 9 5-22 6 4 23 7 45 3 9 0-33 4 7-33 5 6-44 11 Γραμμική αναζήτηση (Linear search) Η αναζήτηση στοιχείων διευκολύνεται από την ταξινόμηση των στοιχείων -4-3 -3-22 0 3 4 4 5 5 6 6 7 7 9 11 23 45 Δυαδική αναζήτηση (Βinary search) Μεθόδοι αναζήτησης (Ν) στοιχείων: γραμμική αναζήτηση (Linear search): απαιτούνται βήματα τάξεως O(N) δυαδική αναζήτηση (Binary search): απαιτούνται βήματα τάξεως O(logN) Εισαγωγή στο Matlab 82
Παράδειγμα: αλγόριθμος δυαδικής αναζήτησης στοιχείων Θεωρώντας ότι τα στοιχεία είναι ταξινομημένα σε ένα διάνυσμα Α διαστάσεως Ν χρησιμοποιούμε το διαίρει και βασίλευε Μοιράζοντας το διάνυσμα στην μέση, κρατάμε το μισό όπου μπορεί να βρίσκεται το αναζητούμενο στοιχείο και επαναλαμβάνομε αυτό το βήμα, μοιράζοντας διαδοχικά το διάνυσμα στα δύο, μέχρι να βρούμε, αν υπάρχει, το στοιχείο που ψάχνουμε με. Υλοποίηση αλγορίθμου δυαδικής αναζήτησης με χρήση Matlab: function binarysearch(a,x) arxh = 1; telos = length(a); while arxh <= telos meso = floor((arxh+telos)/2); if x < a(meso) telos = meso-1; elseif x > a(meso) arxh = meso+1; else fprintf('to stoixeio %d bre8hke sthn 8esh: %d.', x, meso) return end end fprintf('to stoixeio %d den bre8hke.', x) return Εισαγωγή στο Matlab 83
Παράδειγμα εφαρμογής αλγόριθμου δυαδικής αναζήτησης -6-4 -11 0 2 2 3 3 7 >> binarysearch(b,0) To stoixeio 0 bre8hke sthn 8esh: 4. >> binarysearch(b,5) To stoixeio 5 den bre8hke. >> binarysearch(b,7) To stoixeio 7 bre8hke sthn 8esh: 9. >> binarysearch(b,17) To stoixeio 17 den bre8hke. >> binarysearch(b,-6) To stoixeio -66 bre8hke sthn 8esh: 1. >> binarysearch(b,-1) To stoixeio -11 bre8hke sthn 8esh: 3. 3 Εισαγωγή στο Matlab 84
Περισσότερες πληροφορίες για το Matlab Εισαγωγή στη Matlab, Γ. Γεωργίου & Χ. Ξενοφώντος, Βιβλ. Καντζηλάρης. http://www.mathworks.com/access/helpdesk/help/techdoc/matlab.shtml ml http://www.math.ufl.edu/help/matlab www.math.ufl.edu/help/matlab-tutorial/ tutorial/ http://www.cs.ubc.ca/spider/cavers/matlabguide/guide.html http://www.owlnet.rice.edu/~elec241/matlab.html http://www.cyclismo.org/tutorial/matlab www.cyclismo.org/tutorial/matlab/ http://www.glue.umd.edu/~nsw/ench250/matlab.htm http://www.math.utah.edu/lab/ms/matlab/matlab.html http://www.math.mtu.edu/~msgocken/intro/intro.html http://users.ece.gatech.edu/~bonnie/book/tutorial/tutorial.html http://amath.colorado.edu/computing/matlab/tutorial amath.colorado.edu/computing/matlab/tutorial/ Εισαγωγή στο Matlab 85
Τηλ. : 22-892276 892276, 99-453167 http://www.eng.ucy.ac.cy/petros komodromos@ucy.ac.cy Εισαγωγή στο Matlab 86