ΠΠΜ 221: Ανάλυση Κατασκευών με Μητρώα 3. Matlab Εαρινό εξάμηνο 2015 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros Πέτρος Κωμοδρόμος, 2015 ΠΠΜ 221: Ανάλυση Κατασκευών με Μητρώα 1
Περιεχόμενα Εισαγωγή στο πρόγραμμα Matlab Βασικές λειτουργίες Διανύσματα και μητρώα Γραφικές απεικονίσεις και παραστάσεις γραφικές απεικονίσεις σημείων και ευθύγραμμων τμημάτων γραφικές παραστάσεις συναρτήσεων γραφικές παραστάσεις πολλαπλών συναρτήσεων πολλαπλές γραφικές παραστάσεις πολλαπλά γραφικά σχήματα Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 2
Αρχεία Μatlab Αρχεία Εντολών Αρχεία Δεδομένων Προγραμματισμός με το Matlab Αρχεία συναρτήσεων Λογικά τεστ Βρόγχοι Αριθμητικές μέθοδοι Επίλυσης μη γραμμικών εξισώσεων (μέθοδος διχοτόμησης) Αριθμητικής ολοκλήρωσης (κανόνας του τραπεζίου) Αλγόριθμοι Ταξινόμηση στοιχείων (ταξινόμηση με εισαγωγή) Αναζήτηση στοιχείων (δυαδική αναζήτηση) Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 3
Πρόγραμμα αριθμητικών υπολογισμών: Matlab Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 4
Περιβάλλον και παράθυρα Matlab Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 5
Φάκελος εργασίας Matlab Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 6
Πληροφορίες/βοήθεια για το Matlab Εκκίνηση προγράμματος >> help ( >> more on) >> help matlab\general >> help beep >> demos Ιστοσελίδα κατασκευαστών: http://www.mathworks.com >> doc >> lookfor <XYZ> Χρήση σαν απλή υπολογιστική Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 7
Βασικές λειτουργίες 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 Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 8
Αριθμητικοί τελεστές 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)) Left array divide.\ (element-by-element division) Right array divide./ (element-by-element division) Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 9
Προτεραιότητα τελεστών 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 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 ( ) Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 10
Τριγονομετρικές συναρτήσεις sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh - Sine. - 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. Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 11
tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech - Tangent. - Tangent of argument in degrees. - Hyperbolic tangent. - Inverse tangent. - Inverse tangent, result in degrees. - Four quadrant inverse tangent. - Inverse hyperbolic tangent. - Secant. - Secant of argument in degrees. - Hyperbolic secant. - Inverse secant. - Inverse secant, result in degrees. - Inverse hyperbolic secant. Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 12
csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth - Cosecant. - Cosecant of argument in degrees. - Hyperbolic cosecant. - Inverse cosecant. - Inverse cosecant, result in degrees. - Inverse hyperbolic cosecant. - Cotangent. - Cotangent of argument in degrees. - Hyperbolic cotangent. - Inverse cotangent. - Inverse cotangent, result in degrees. - Inverse hyperbolic cotangent. Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 13
Εκθετικές/Λογαριθμικές συναρτήσεις exp log log10 log2 pow2 - Exponential. - Natural logarithm. - Common (base 10) logarithm. - Base 2 logarithm and dissect floating point number. - Base 2 power and scale floating point number. realsqrt - Square root of number greater than or equal to zero. sqrt - Square root. Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 14
Συναρτήσεις στρογγυλοποιήσεων fix floor ceil round mod rem sign - Round towards zero. - Round towards minus infinity. - Round towards plus infinity. - Round towards nearest integer. - Modulus (signed remainder after division). - Remainder after division. - Signum. Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 15
>> 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 >> Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 16
Διανύσματα και μητρώα >> 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 Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 17
>> 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 Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 18
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 ] Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 19
>> a = [ 1 2 3 4 5 6] a = 1 2 3 4 5 6 >> b = [ 0 1 ; 2 0 ; 3 4] b = 0 1 2 0 3 4 >> a*b ans = 13 13 28 28 >> c = a * b c = 13 13 28 28 >> z = a.* b' z = 0 4 9 4 0 24 Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 20
>> 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\a ans = 0.0474 0.0757 0.1745 0.0484 0.1354 0.0946 0.1706 0.0377 0.2150 Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 21
Πληροφορίες πινάκων size - Size of array. length - Length of vector. numel - Number of elements. disp - Display matrix or text. Βασικοί πίνακες zeros ones eye rand - Zeros array. - Ones array. - Identity matrix. - Uniformly distributed random numbers. Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 22
Συναρτήσεις πινάκων rank det trace - Matrix rank. - Determinant. - Sum of diagonal elements. \ and / - Linear equation solution. inv - Matrix inverse. eig - Eigenvalues and eigenvectors. Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 23
Ανάλυση δεδομένων 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 - Histogram. cumsum - Cumulative sum of elements. cumprod - Cumulative product of elements. Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 24
Γραφικές απεικονίσεις σημείων >> x1 = 5; >> y1 = 7; >> plot(x1,y1,'*') % Σχεδιασμός σημείων (x1,y1) >> grid on % Προσθήκη κύριων γραμμών στο διάγραμμα >> title('sxediash Shmeioy') % Προσθήκη τίτλου >> xlabel('x') >> ylabel('y') % Προσθήκη τίτλων στους άξονες σχεδίασης Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 25
Γραφικές απεικονίσεις σημείων >> 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') Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 26
Γραφικές απεικονίσεις σημείων και ευθειών >> 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') Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 27
Γραφικές παραστάσεις >> x = 0:0.25:15; (αρχή:βήμα:τέλος) % Αυτόματος καθορισμός διανύσματος με τιμές γωνιών >> y = sin(x); % Αυτόματος υπολογισμός διανύσματος με τιμές ημιτόνων >> plot(x,y) % Σχεδιασμός σημείων (x,y) >> grid on % Προσθήκη κύριων γραμμών στο διάγραμμα >> title('sxediash Hmitonoy') % Προσθήκη τίτλου >> xlabel('x') >> ylabel('y') % Προσθήκη τίτλων στους άξονες σχεδίασης Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 28
Παράδειγμα Σχεδιάστε την γραφική παράσταση της εξίσωσης: όπου: 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') Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 29
Παράδειγμα 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]) Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 30
>> 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') Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 31
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: *') Πολλαπλά γραφικά σχήματα Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 32
Γραφικές παραστάσεις και απεικονίσεις: Σχεδιάστε τα σημεία (-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,'--') Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 33
Βασικές συναρτήσεις δισδιάστατων γραφικών plot loglog - Linear plot. - 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. Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 34
axis zoom grid box hold subplot - Control axis scaling and appearance. - Zoom in and out on a 2-D plot. - Grid lines. - Axis box. - Hold current graph. - Create axes in tiled positions. plotedit - Tools for editing and annotating plots. title - Graph title. xlabel - X-axis label. ylabel - Y-axis label. text gtext - Text annotation. - Place text with mouse. Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 35
Τρισδιάστατα γραφικά >> x=0:0.02:10; >> y=sin(x) >> z=cos(x) >> plot3(x,y,z) >> grid on >> xlabel('x') >> ylabel('y') >> zlabel('z') >> title('using plot3') Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 36
Βασικές συναρτήσεις τρισδιάστατων γραφικών plot3 mesh surf fill3 - Plot lines and points in 3-D space. - 3-D mesh surface. - 3-D colored surface. - Filled 3-D polygons. Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 37
axis grid box hold axes subplot - Control axis scaling and appearance. - Grid lines. - Axis box. - Hold current graph. - Create axes in arbitrary positions. - Create axes in tiled positions. daspect - Data aspect ratio. pbaspect - Plot box aspect ratio. xlim ylim zlim - X limits. - Y limits. - Z limits. Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 38
Εξειδικευμένες συναρτήσεις δισδιάστατων γραφικών area bar barh comet compass feather - Filled area plot. - Bar graph. - Horizontal bar graph. - Comet-like trajectory. - Compass plot. - Feather plot. fill hist pie - Filled 2-D polygons. - Histogram. - Pie chart. Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 39
Γενικές συναρτήσεις γραφικών figure clf close refresh - Create figure window. - Clear current figure. - Close figure. - Refresh figure. subplot axis box hold ishold - Create axes in tiled positions. - Control axis scaling and appearance. - Axis box. - Hold current graph. - Return hold state. Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 40
Αρχεία Matlab: αρχεία Μ (M-files) mymfile.m >> mymfile File Set Path Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 41
Αρχεία δεδομένων Matlab >> load w.dat >> w >> w(2,1) 4 5 6 7 8 9 7 Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 42
Αρχεία Matlab: load/save >> x = 1:2:11; >> y = [4 7-3 2]; >> save C:\mySaved1 x % Save workspace variables to disk >> save C:\mySaved2 >> clear all >> load C:\mySaved1 % Load workspace variables from disk >> x 1 3 5 7 9 11 >> y??? Undefined function or variable y'. >> load C:\mySaved2 >> y 4 7-3 2 Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 43
temps.dat Σχεδίαση με βάση αρχεία Matlab >> temperatures temperatures.m Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 44
Απλές εντολές σε 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 Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 45
Ορισμός συναρτήσεως: Συναρτήσεις function apotelesma = synarthsh1(parametroi) myfun1.m function y=myfun1(x) y = x*x*x; return >> clear all >> z=myfun1(8) >> y??? Undefined function or variable 'y'. >> z z = 512 Σώμα συνάρτησης Ορισμός συνάρτησης myfun2.m function myfun2(x,y) x + y return >> myfun2(8,7) ans = 15 Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 46
Επιστροφή πολλαπλών τιμών και τοπικές μεταβλητές 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); k m a2 b3 x y >> testmyfun1 k = 4 m = 125 a2 = 75 b3 = -45 x = 3 y = -12 Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 47
Σχετικοί τελεστές (Relational operators) > < > = < = = = ~ = Equal == Not equal ~= Less than < Greater than > Less than or equal <= Greater than or equal >= Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 48
Λογικοί τελεστές (Logical operators) && ~ Short-circuit logical AND && Short-circuit logical OR Logical NOT ~ Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 49
Λογικά τεστς >> 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 Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 50
if έκφραση1 Διακλαδώσεις if έκφραση1 if έκφραση1 εκτελείται μόνο αν η έκφραση1 είναι αληθής end εκτελείται μόνο αν η έκφραση1 είναι αληθής else end εκτελείται μόνο αν η έκφραση1 είναι αληθής εκτελείται μόνο αν η έκφραση1 δεν είναι αληθής elseif έκφραση2 else end εκτελείται μόνο αν η έκφραση1 δεν είναι αληθής και η έκφραση2 είναι αληθής εκτελείται αν καμία έκφραση δεν είναι αληθής Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 51
Παράδειγμα διακλαδώσεων rand1.m Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 52
Δομή ελέγχου switch x=3 switch x case 1 y1 = x case 3 y3 = x+3 case 7 y7 = x+777 otherwise zz = x^2 end >> x = 3 y3 = 6 Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 53
Δομή ελέγχου switch x = -4 switch x case 1 y1 = x case 3 y3 = x+3 case 7 y7 = x+777 otherwise zz = x^2 end >> x = -4 zz = 16 Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 54
Βρόγχοι for μεταβλητή = αρχική τιμή : (προαιρετικό) βήμα : τελική τιμή end εντολές for i=1:5 end disp(i^2) 1 4 9 16 25 for i=5:-1:1 if i == 3 continue end disp(i^2) end 25 16 4 1 Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 55
Βρόγχοι (συνεχ.) 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 Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 56
Δομές ελέγχου if else elseif end for while break - Conditionally execute statements. - Execute statement if previous IF condition failed. - Execute if previous IF failed and condition is true. - Terminate scope of control statements. - Repeat statements a specific number of times. - Repeat statements an indefinite number of times. - Terminate execution of WHILE or FOR loop. continue switch case otherwise - Pass control to the next iteration of a loop. - Switch among several cases based on expression. - SWITCH statement case. - Default SWITCH statement case. Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 57
Σύγκριση Matlab και άλλων γλωσσών προγραμματισμού Matlab σε σύγκριση με: Fortran C/C++ Java Visual Basic/VB.net C# Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 58
Είσοδος δεδομένων/έξοδος αποτελεσμάτων 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 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 Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 59
Μορφοποίηση αποτελεσμάτων >> 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 + Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 60
disp(x): παρουσιάζει τον πίνακα x >> disp(pi) >> t= 'Testing 3.1416 >> x = 4.5 >> disp(t) Testing >> disp x x >> disp(x) 4.5 Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 61
Εκτέλεση εντολών υπό μορφή χαρακτήρων >> 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 Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 62
Μέγιστες και ελάχιστες τιμές >> realmax ans =1.7977e+308 >> realmin ans =2.2251e-308 INF : Infinity NaN : Not-a-Number Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 63
Εντολές Λειτουργικού Συστήματος cd copyfile movefile delete pwd dir ls mkdir rmdir - Change current working directory. - Copy file or directory. - Move file or directory. - Delete file or graphics object. - Show (print) current working directory. - List directory. - List directory. - Make new directory. - Remove directory.! - Execute operating system command. Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 64
Εντολές Χώρου Εργασίας (workspace) who whos clear load save quit exit - List current variables. - List current variables, long form. - Clear variables and functions from memory. - Load workspace variables from disk. - Save workspace variables to disk. - Quit MATLAB session. - Exit from MATLAB. Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 65
Εντολές ελέγχου what type open which - List MATLAB-specific files in directory. - List M-file. - Open files by extension. - Locate functions and files. Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 66
Χρονικές συναρτήσεις now date clock - Current date and time as date number. - Current date as date string. - Current date and time as date vector. datestr - String representation of date. calendar - Calendar. cputime - CPU time in seconds. tic toc pause - Start stopwatch timer. - Stop stopwatch timer. - Wait in seconds. Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 67
Αριθμητικές μέθοδοι Επίλυση προβλημάτων των οποίων δεν υπάρχουν ή δεν έχουν βρεθεί ακόμη αναλυτικές λύσεις. Σειρά συγκεκριμένων βημάτων υπολογισμών με στόχο την εύρεση μιας έστω προσεγγιστικής λύσης με ικανοποιητική ακρίβεια. Χαρακτηριστικά μιας καλής αριθμητικής μεθόδου: Ακρίβεια λύσης (μικρή διαφορά από πραγματική λύση) Κόστος λύσης (απαιτούμενος χρόνος επίλυσης) Σύγκλιση και ευστάθεια μεθόδου Σφάλματα: απόλυτο σφάλμα (π.x. Υ προσεγ. - Υ ακριβές ) σχετικό σφάλμα (π.χ. Υ προσεγ. - Υ ακριβές / Υ ακριβές ) Πέτρος Κωμοδρόμος, 2015 ΠΠΜ 221: Ανάλυση Κατασκευών με Μητρώα 68
Αριθμητική επίλυση μη-γραμμικών εξισώσεων Έχοντας μια συνάρτηση να βρεθεί (ή να βρεθούν) η ρίζα (ρίζες) για τις οποίες η συνάρτηση ισούται με μηδέν: Y = f(x) = 0.0 Δηλαδή τα σημεία όπου τέμνεται ο άξονας των Χ Πέτρος Κωμοδρόμος, 2015 ΠΠΜ 221: Ανάλυση Κατασκευών με Μητρώα 69
Μέθοδος διχοτόμησης 1. Εντοπίστε ένα διάστημα που συμπεριλαμβάνει την αναζητούμενη ρίζα. 2. Μοιράστε το διάστημα αυτό στο μισό και κρατήστε το μισό που συμπεριλαμβάνει την ρίζα 3. Επαναλάβετε το βήμα 2 μέχρι να προσεγγιστεί ικανοποιητικά η αναζητούμενη ρίζα (δηλαδή να επιτευχθεί ικανοποιητική σύγκλιση) Πέτρος Κωμοδρόμος, 2015 ΠΠΜ 221: Ανάλυση Κατασκευών με Μητρώα 70
Αριθμητική ολοκλήρωση Έχοντας μια συνάρτηση Y=f(X) να υπολογιστεί το ολοκλήρωμα της συνάρτησης από κάποια τεταγμένη x1 ως κάποια άλλη τεταγμένη x2. Δηλαδή το εμβαδό μεταξύ της καμπύλης και του άξονα των x από x1 ως x2: x 1 x 2 Πέτρος Κωμοδρόμος, 2015 ΠΠΜ 221: Ανάλυση Κατασκευών με Μητρώα 71
Oλοκλήρωση με την μέθοδο τραπεζίου Προσέγγιση εμβαδού με το άθροισμα αριθμού τραπεζίων Εμβαδό λωρίδας πλάτους ΔΧ βάση τύπου τραπεζίου f(x α ) f(x β ) x α x β Πέτρος Κωμοδρόμος, 2015 ΠΠΜ 221: Ανάλυση Κατασκευών με Μητρώα x 1 x 2 72
Αλγόριθμοι Ορισμός και πλήρης κατανόηση του προβλήματος προς επίλυση Καθορισμός ενός αλγόριθμου, δηλαδή μιας συγκεκριμένης διαδικασίας βημάτων τα οποία οδηγούν σε συγκεκριμένα αποτελέσματα με ικανοποιητικά ελάχιστο δυνατό κόστος (μνήμης και χρόνου) Υλοποίηση του αλγορίθμου σε υπορουτίνα/προγράμμα με χρήση κάποιας κατάλληλης γλώσσας προγραμματισμού Έλεγχος της υπορουτίνας/προγράμματος για διάφορες περιπτώσεις δεδομένων, ειδικά όλων των ακραίων περιπτώσεων. Χρήση υπορουτίνας/προγράμματος για επίλυση σχετικών προβλημάτων. Πέτρος Κωμοδρόμος, 2015 ΠΠΜ 221: Ανάλυση Κατασκευών με Μητρώα 73
Aλγόριθμοι ταξινόμησης (Sorting methods) Η ταξινόμηση είναι χρήσιμη σε πολλά προβλήματα, π.χ. για την διευκόλυνση της αναζήτησης ενός στοιχείου από πλήθος στοιχείων 5-2 6 4 23 7 45 3 9 0-3 4 7-3 5 6-4 11-4 -3-3 -2 0 3 4 4 5 5 6 6 7 7 9 11 23 45 Μεθόδοι ταξινόμησης (Ν) στοιχείων: απλές μέθοδοι: συνήθως απαιτούν βήματα τάξης Ο(Ν^2)) μέθοδος ταξινόμησης με εισαγωγή (insertion sort) μέθοδος ταξινόμησης με επιλογή (selection sort) μέθοδος ταξινόμησης τύπου κελύφους (shellsort), κλπ. προχωρημένες μέθοδοι: συνήθως απαιτούν βήματα τάξης Ο(Ν.logN)) γρήγορη μέθοδος ταξινόμησης (quicksort) μέθοδος ταξινόμησης με συγχώνευση (mergesort) Πέτρος Κωμοδρόμος, 2015 ΠΠΜ 221: Ανάλυση Κατασκευών με Μητρώα 74
Παράδειγμα: αλγόριθμος ταξινόμησης τύπου εισαγωγής Θεωρώντας ότι τα στοιχεία είναι αποθηκευμένα σε ένα διάνυσμα Α Σε κάθε βήμα το στοιχείο 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 Εσωτερικός βρόγχος Πέτρος Κωμοδρόμος, 2015 ΠΠΜ 221: Ανάλυση Κατασκευών με Μητρώα 75
Παράδειγμα εφαρμογής αλγόριθμου ταξινόμησης τύπου εισαγωγής 3-4 2-6 7 0 3-1 2-4 3 2-6 7 0 3-1 2-4 2 3-6 7 0 3-1 2-6 -4 2 3 7 0 3-1 2-6 -4 2 3 7 0 3-1 2-6 -4 0 2 3 7 3-1 2-6 -4 0 2 3 3 7-1 2-6 -4-1 0 2 3 3 7 2-6 -4-1 0 2 2 3 3 7 Πέτρος Κωμοδρόμος, 2015 ΠΠΜ 221: Ανάλυση Κατασκευών με Μητρώα 76
Aλγόριθμοι αναζήτησης στοιχείων (Searching methods) Ας υποθέσομε να βρούμε ένα στοιχείο με κλειδί τον αριθμό 9 5-2 6 4 23 7 45 3 9 0-3 4 7-3 5 6-4 11 Γραμμική αναζήτηση (Linear search) Η αναζήτηση στοιχείων διευκολύνεται από την ταξινόμηση των στοιχείων -4-3 -3-2 0 3 4 4 5 5 6 6 7 7 9 11 23 45 Δυαδική αναζήτηση (Βinary search) Μεθόδοι αναζήτησης (Ν) στοιχείων: γραμμική αναζήτηση (Linear search): απαιτούνται βήματα τάξεως O(N) δυαδική αναζήτηση (Binary search): απαιτούνται βήματα τάξεως O(logN) Πέτρος Κωμοδρόμος, 2015 ΠΠΜ 221: Ανάλυση Κατασκευών με Μητρώα 77
Παράδειγμα: αλγόριθμος δυαδικής αναζήτησης στοιχείων Θεωρώντας ότι τα στοιχεία είναι ταξινομημένα σε ένα διάνυσμα Α διαστάσεως Ν χρησιμοποιούμε το διαίρει και βασίλευε Μοιράζοντας το διάνυσμα στην μέση, κρατάμε το μισό όπου μπορεί να βρίσκεται το αναζητούμενο στοιχείο και επαναλαμβάνομε αυτό το βήμα, μοιράζοντας διαδοχικά το διάνυσμα στα δύο, μέχρι να βρούμε, αν υπάρχει, το στοιχείο που ψάχνουμε. Υλοποίηση αλγορίθμου δυαδικής αναζήτησης με χρήση 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 Πέτρος Κωμοδρόμος, 2015 ΠΠΜ 221: Ανάλυση Κατασκευών με Μητρώα 78
Παράδειγμα εφαρμογής αλγόριθμου δυαδικής αναζήτησης -6-4 -1 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 -6 bre8hke sthn 8esh: 1. >> binarysearch(b,-1) To stoixeio -1 bre8hke sthn 8esh: 3. Πέτρος Κωμοδρόμος, 2015 ΠΠΜ 221: Ανάλυση Κατασκευών με Μητρώα 79
Περισσότερες πληροφορίες για το Matlab Εισαγωγή στη Matlab, Γ. Γεωργίου & Χ. Ξενοφώντος, Βιβλ. Καντζηλάρης. http://www.mathworks.com/help/techdoc/index.html http://www.math.ufl.edu/help/matlab-tutorial/ http://www.cs.ubc.ca/spider/cavers/matlabguide/guide.html http://www.cyclismo.org/tutorial/matlab/ 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/ Πέτρος Κωμοδρόμος, 2015 Εισαγωγή στο Matlab 80