Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές Εισαγωγή στον επιστημονικό προγραμματισμό 2 o Μάθημα Λεωνίδας Αλεξόπουλος Λέκτορας ΕΜΠ email: leo@mail.ntua.gr url: http://users.ntua.gr/leo Μελάς Ιωάννης Υποψήφιος Διδάκτορας ΕΜΠ email: melas@central.ntua.gr
Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια χρήσης άλλου τύπου, αυτή πρέπει να αναφέρεται ρητώς.
Πίνακες vector >> x = [1 2 3 4.5] Matrix >> x = [1 2 3 4; 5 6 7 8; 9 10 11 12] >> x(1) =? >> x(2) =? >> x = [1:4 ; 5:8; 9:12] Σε τι διαφέρει από x = [1:4, 5:8, 9:12]? >> x = [1:0.1:2] >> x = [2:-0.1:1] 3
Indexing >> x = [1:4 ; 5:8; 9:12] >> x(1,2) =? >> x(1,5) =? >> x(1,1:2) =? >> x(1,:) =? 4
Η αριθμητική στο Matlab Βασικοί τελεστές Μαθηματικές συναρτήσεις + Πρόσθεση - Αφαίρεση * Πολ/σμός / Διαίρεση ^ Υψωση σε δύναμη sin(x) cos(x) tan(x) log(x) exp(x) Ημίτονο Συνημίτονο Εφαπτομένη Φυσικός λογάριθμος = e^(x) 5
Η αριθμητική στο Matlab Μαθηματικές συναρτήσεις 6
Η αριθμητική στο Matlab Αριθμητική σε πίνακες Τα πάντα στο Matlab Είναι πίνακες 7
Η αριθμητική στο Matlab Βασικοί τελεστές Μαθηματικές συναρτήσεις + Πρόσθεση - Αφαίρεση * Πολ/σμός / Διαίρεση ^ Υψωση σε δύναμη sin(x) cos(x) tan(x) log(x) exp(x) Ημίτονο Συνημίτονο Εφαπτομένη Φυσικός λογάριθμος = e^(x) 8
Η αριθμητική στο Matlab a=[ 1 3 5] a+b b=[ 0 2 4] a+b= [1+0 3+2 5+4] a-b a+b= [1-0 3-2 5-4] a*b 9
Η αριθμητική στο Matlab a=[ 1 3 5] a+b b=[ 0 2 4] a+b= [1+0 3+2 5+4] a-b a+b= [1-0 3-2 5-4] a*b 10
Η αριθμητική στο Matlab a=[ 1 3 5] b=[ 0 2 4] a*b a*b= [1*0 + 3*2 + 5*4] Δείτε : index->mtimes 11
Η αριθμητική στο Matlab a=[ 1 3 5 4 2 1 1 0 3] b=[ 0 2 4 2 1 3 1 0 5] a*b a*b= [a(1,1)*b(1,1)+a(1,2)*b(2,1)+a(1,3)*b(3,1) ] Δείτε : index->mtimes 12
Η αριθμητική στο Matlab a=[ 1 3 5 4 2 1 1 0 3] b=[ 0 2 4 2 1 3 1 0 5] a/b a/b= a*inv(b), inv(b)=inverse του b Inverse (αντιστροφος) ενος πίνακα b, ορίζεται πίνακας τέτοιος ώστε b*inv(b)=i => inv(i)=i Δείτε : Function Browser->Mathematics->Linear algebra->linear equations ->inv 13
Η αριθμητική στο Matlab 14
Η αριθμητική στο Matlab Βασικοί τελεστές + Πρόσθεση - Αφαίρεση * Πολ/σμός.* element-by-element multiplication./ element-by-element division.^ element-by-element power / Διαίρεση ^ Υψωση σε δύναμη 15
Η αριθμητική στο Matlab a=[ 1 3 5 4 2 1 1 0 3] b=[ 0 2 4 2 1 3 1 0 5] a.*b a*b= [1*0 3*2 5*4 3*5] 16
Η αριθμητική στο Matlab Λοιπές χρήσιμες συναρτήσεις Στρογγυλοποίηση round(x) floor(x)=int32(x) ceil(x)=int32(x)+1 Γεννήτρια τυχαίων αριθμών rand(n) Άθροιση στοιχείων πίνακα sum(x) Αρχικοποίηση πίνακα x=zeros(n,m) x=ones(n,m) x=eye(n) x=[]; Μέτρηση πλήθους στοιχείων πίνακα numel(x) size(x,n) length(x) 17
Λογικοί τελεστές Αριθμητικοί τελεστές VS λογικοί τελεστές + addition - subtraction * multiplication / division ^ power == Equal to ~= Not equal to < Strictly smaller > Strictly greater <= Smaller than or equal to >= Greater than equal to & And operator Or operator 18
m-files 19
m-files Τα m-files είναι text files που περιέχουν λίστες εντολών οι οποίες εκτελούνται διαδοχικά, σαν να εισάγονταν στο command window. 20
Ελεγχος ροής προγράμματος Η εντολή if if (Condition_1) Matlab Commands elseif (Condition_2) Matlab Commands elseif (Condition_3) Matlab Commands else Matlab Commands 21
Ελεγχος ροής προγράμματος Η εντολή for for i=a:b Matlab Commands 22
Ελεγχος ροής προγράμματος Η εντολή while while (condition) Matlab Commands 23
Ελεγχος ροής προγράμματος Η εντολή break while (condition) Matlab Commands break 24
Παραδείγματα Υπολογισμός αθροίσματος Στοιχείων πίνακα a=rand(5); suma=0; for i=1:5 for j=1:5 suma=suma+a(i,j); 25
Παραδείγματα Υπολογισμός αθροίσματος Στοιχείων πίνακα a=rand(5); suma=0; for i=1:5 for j=1:5 suma=suma+a(i,j); Ο εύκολος τρόπος: sum(sum(a)) 26
Παραδείγματα Εύρεση min πίνακα a=rand(5); minn=1.0; for i=1:5 for j=1:5 if (a(i,j)<=minn) minn=a(i,j); iminn=i; jminn=j; Εύρεση max πίνακα a=rand(5); maxn=0.0; for i=1:5 for j=1:5 if (a(i,j)>=maxn) maxn=a(i,j); imaxn=i; jmaxn=j; 27
Παραδείγματα Εύρεση min πίνακα a=rand(5); minn=1.0; for i=1:5 for j=1:5 if (a(i,j)<=minn) minn=a(i,j); iminn=i; jminn=j; Εύρεση max πίνακα a=rand(5); maxn=0.0; for i=1:5 for j=1:5 if (a(i,j)>=maxn) maxn=a(i,j); imaxn=i; jmaxn=j; Ο εύκολος τρόπος: min(min(a)) max(max(a)) 28
Ελεγχος ροής προγράμματος Logic indexing >> a=rand(1,10) a = 0.1576 0.9706 0.9572 0.4854 0.8003 0.1419 0.4218 0.9157 0.7922 0.9595 >> a(a<0.5) ans = 0.1576 0.4854 0.1419 0.4218 29
Υπολογισμος ακολουθίας Fibonacci In the Fibonacci sequence of numbers, each number is the sum of the previous two numbers, starting with 0 and 1 (source: wikipedia) clear all close all Clc x(1)=0; x(2)=1; for i=3:15 x(i)=x(i-1)+x(i-2); End plot(1:15,x(1:15)); for i=2:15 r(i)=x(i)/x(i-1); End plot(2:15,r(2:15),'r'); 30
Υπολογισμος ακολουθίας Fibonacci In the Fibonacci sequence of numbers, each number is the sum of the previous two numbers, starting with 0 and 1 (source: wikipedia) clear all close all Clc x(1)=0; x(2)=1; for i=3:15 x(i)=x(i-1)+x(i-2); End plot(1:15,x(1:15)); for i=2:15 r(i)=x(i)/x(i-1); End plot(2:15,r(2:15),'r'); 31
Προαιρετικό θέμα Διαίρεση ακεραίων mod(x,y) Η συνάρτηση mod(x,y) επιστρέφει το ακεραιο υπολοιπο της διαίρεσης του x με το y Πχ. mod(4,2)=0 32
Προαιρετικό θέμα Να υπολογισθούν οι πρώτοι αριθμοί μικρότεροι του 5000 GROUP II 24/01/2014 (11.59μμ) GROUP I 24/01/2014 (11.59μμ) Oι απαντήσεις (τα m files) να στέλνονται σε κείμενο e-mail και ΟΧΙ σαν συνημμένο αρχείο Oι απαντήσεις να έχουν τίτλο με latinikous charaktires: ASΚ02-GP1-ΤΟΕΠΟΝΥΜΟΜΟΥ-ΟΝ-02100000-24.01.2014 ASΚ02-GP2-ΤΟΕΠΟΝΥΜΟΜΟΥ-ΟΝ-02100000-24.01.2014 33
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα» του ΕΜΠ έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.