Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές Εισαγωγή στον επιστημονικό προγραμματισμό 2ο Μάθημα Λεωνίδας Αλεξόπουλος Λέκτορας ΕΜΠ E-mail: leo@mail.ntua.gr URL: http://users.ntua.gr/leo Μελάς Ιωάννης Υποψήφιος Διδάκτορας ΕΜΠ E-mail: melas@central.ntua.gr
Πίνακες vector >> x = [1 2 3 4.5] Matrix
Indexing >> x = [1:4 ; 5:8; 9:12] >> x(1,2) = ?
+ Πρόσθεση - Αφαίρεση * Πολ/σμός / Διαίρεση ^ Υψωση σε δύναμη Η αριθμητική στο Matlab Βασικοί τελεστές Μαθηματικές συναρτήσεις + Πρόσθεση sin(x) cos(x) tan(x) log(x) exp(x) Ημίτονο Συνημίτονο Εφαπτομένη Φυσικός λογάριθμος = e^(x) - Αφαίρεση * Πολ/σμός / Διαίρεση ^ Υψωση σε δύναμη
Η αριθμητική στο Matlab Μαθηματικές συναρτήσεις
Η αριθμητική στο Matlab Αριθμητική σε πίνακες Τα πάντα στο Matlab Είναι πίνακες
+ Πρόσθεση - Αφαίρεση * Πολ/σμός / Διαίρεση ^ Υψωση σε δύναμη Η αριθμητική στο Matlab Βασικοί τελεστές Μαθηματικές συναρτήσεις + Πρόσθεση sin(x) cos(x) tan(x) log(x) exp(x) Ημίτονο Συνημίτονο Εφαπτομένη Φυσικός λογάριθμος = e^(x) - Αφαίρεση * Πολ/σμός / Διαίρεση ^ Υψωση σε δύναμη
a+b a-b a*b Η αριθμητική στο Matlab a=[ 1 3 5] b=[ 0 2 4]
a+b a-b a*b Η αριθμητική στο Matlab a=[ 1 3 5] b=[ 0 2 4]
a*b Η αριθμητική στο Matlab b=[ 0 2 4] a=[ 1 3 5] 2 4] a=[ 1 3 5] a*b a*b= [ 1*0 + 3*2 + 5*4] Δείτε : index->mtimes
a*b Η αριθμητική στο Matlab a=[ 1 3 5 4 2 1 1 0 3] b=[ 0 2 4 2 1 3 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
a/b = a*inv(b), inv(b)=inverse του b Η αριθμητική στο 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
Η αριθμητική στο Matlab
+ Πρόσθεση - Αφαίρεση * Πολ/σμός / Διαίρεση ^ Υψωση σε δύναμη Η αριθμητική στο Matlab Βασικοί τελεστές + Πρόσθεση - Αφαίρεση .* element-by-element multiplication ./ element-by-element division .^ element-by-element power * Πολ/σμός / Διαίρεση ^ Υψωση σε δύναμη
a.*b Η αριθμητική στο Matlab a=[ 1 3 5 4 2 1 1 0 3] b=[ 0 2 4 2 1 3 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]
Η αριθμητική στο Matlab Λοιπές χρήσιμες συναρτήσεις Στρογγυλοποίηση round(x) floor(x)=int32(x) ceil(x)=int32(x)+1 Γεννήτρια τυχαίων αριθμών rand(n) Άθροιση στοιχείων πίνακα sum(x) Μέτρηση πλήθους στοιχείων πίνακα numel(x) size(x,n) length(x) Αρχικοποίηση πίνακα x=zeros(n,m) x=ones(n,m) x=eye(n) x=[];
VS == Equal to ~= Not equal to < Strictly smaller Λογικοί τελεστές VS Αριθμητικοί τελεστές λογικοί τελεστές == Equal to ~= Not equal to < Strictly smaller > Strictly greater <= Smaller than or equal to >= Greater than equal to + addition - subtraction * multiplication / division ^ power & And operator | Or operator
m-files
σαν να εισάγονταν στο command window. m-files Τα m-files είναι text files που περιέχουν λίστες εντολών οι οποίες εκτελούνται διαδοχικά, σαν να εισάγονταν στο command window.
if (Condition_1) Matlab Commands elseif (Condition_2) Ελεγχος ροής προγράμματος Η εντολή if if (Condition_1) Matlab Commands elseif (Condition_2) elseif (Condition_3) else end
Ελεγχος ροής προγράμματος Η εντολή for for i=a:b Matlab Commands end
while (condition) Matlab Commands end Ελεγχος ροής προγράμματος
while (condition) Matlab Commands break end Ελεγχος ροής προγράμματος
Υπολογισμός αθροίσματος Παραδείγματα Υπολογισμός αθροίσματος Στοιχείων πίνακα a=rand(5); suma=0; for i=1:5 for j=1:5 suma=suma+a(i,j); end
Υπολογισμός αθροίσματος Παραδείγματα Υπολογισμός αθροίσματος Στοιχείων πίνακα a=rand(5); suma=0; for i=1:5 for j=1:5 suma=suma+a(i,j); end Ο εύκολος τρόπος: sum(sum(a))
Παραδείγματα Εύρεση min πίνακα Εύρεση max πίνακα 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; end 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; end
Παραδείγματα Εύρεση min πίνακα Εύρεση max πίνακα 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; end 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; end Ο εύκολος τρόπος: min(min(a)) max(max(a))
Ελεγχος ροής προγράμματος 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
Υπολογισμος ακολουθίας 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); plot(2:15,r(2:15),'r');
Υπολογισμος ακολουθίας 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); plot(2:15,r(2:15),'r');
Η συνάρτηση mod(x,y) επιστρέφει το ακεραιο υπολοιπο Προαιρετικό θέμα Διαίρεση ακεραίων mod(x,y) Η συνάρτηση mod(x,y) επιστρέφει το ακεραιο υπολοιπο της διαίρεσης του x με το y Πχ. mod(4,2)=0
Να υπολογισθούν οι πρώτοι αριθμοί μικρότεροι του 5000 Προαιρετικό θέμα Να υπολογισθούν οι πρώτοι αριθμοί μικρότεροι του 5000 GROUP II 20/1/2014 (11.59μμ) GROUP I 24/1/2014 (11.59μμ) Oι απαντήσεις (τα m files) να στέλνονται σε κείμενο e-mail και ΟΧΙ σαν συνημμένο αρχείο Oι απαντήσεις να έχουν τίτλο με latinikous charaktires: ASΚ01-GP1-ΤΟΕΠΟΝΥΜΟΜΟΥ-ΟΝ-02100000-06.01.2014