Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές Εισαγωγή στον επιστημονικό προγραμματισμό 3ο Μάθημα Λεωνίδας Αλεξόπουλος Λέκτορας ΕΜΠ E-mail: leo@mail.ntua.gr URL: http://users.ntua.gr/leo Μελάς Ιωάννης Υποψήφιος Διδάκτορας ΕΜΠ E-mail: melas@central.ntua.gr
Τι είναι Αλγόριθμος ? Απλή Διατύπωση: ακριβής περιγραφή βημάτων που απαιτούνται για να επιτευχθεί μία εργασία (π.χ. είναι η συνταγή μαγειρικής αλγόριθμος;) Πιο Αυστηρή Διατύπωση: Διατεταγμένο σύνολο σαφών (≠ νόηση) και εκτελέσιμων βημάτων που ορίζουν μία διαδικασία με τέλος
Λογικά Διαγράμματα W = W+1 Διεργασία / Εντολή W =5; disp W Είσοδος input W print (*,*) W Είσοδος Έξοδος ΝΑΙ Απόφαση If w=5 then …. ΟΧΙ start Program function end Αρχή / Τέλος
Λογικά Διαγράμματα σύνδεση If i<3 then GOTO line 3 Ροή Goto line 3
Παράδειγμα: Βρείτε τη θέση του πίνακα Α που εμφανίζεται η τιμή x Αρχή Διάβασε Α,x i=1 Ναι A(i)=x Εκτύπωσε i Όχι i=i+1 Τέλος Ναι i>numel(A) Εκτύπωσε 0 Όχι
Ορισμός Συνάρτησης
Υλοποίηση function k = vres(A,x) N = numel(A); k=0; for i=1:N; if A(i)==x k=i; return end
Recursion - Αναδρομή Fibonnaci function y=fib1(n) x(1)=0; x(2)=1; for i=3:n x(i)=x(i-1)+x(i-2); end y=x(n) function y=fib2(n) if n==0 |n==1 y=n else y=fib2(n-1)+fib2(n-2) end
T(n) ≈ 2n
Έβρεση Στοιχείου x σε Ταξινομημένο Πίνακα Α Αν είναι μεγαλύτερο επανέλαβε την διαδικασία για το κάτω μισό του πίνακα Αν είναι μικρότερο επανέλαβε την διαδικασία για το πάνω μισό του πίνακα.
Υλοποίηση function k = vres2(A,x) k=0; i_max = numel(A); i_min = 1; while i_max>=i_min i_mid = floor((i_min+i_max)/2); if A(i_mid)==x k=i_mid; return elseif A(i_mid)<x i_min = i_mid+1; else i_max = i_mid-1; end
Ταξινόμηση Διανύσματος Βρες το μικρότερο στοιχείο του πίνακα και φερτο βαλ’ το στη 1η θέση Βρες το μικρότερο από τα υπόλοιπα στοιχειά του πίνακα και βαλ’ το στη 2η θέση κοκ (Selection Sort)
Υλοποίηση function A = Selection_sort(A) N = numel(A); for i=1:N-1 i_min=i; for j=i:N; if a(j)<a(i_min) i_min=j; end A = swap(A,i,i_min); function A = swap(A,i,j) k = A(i); A(i)=A(j); A(j)=k;
Επίλυση αλγεβρικών εξισώσεων στο MATLAB Να επιλυθεί η εξίσωση exp(x)-cos(x)-1=0 Στο x=[0,1]
Plotting plot(0:0.001:1,exp(0:0.001:1)-cos(0:0.001:1)-1,'b+')
f=@(x) exp(x)-cos(x)-1; Ορισμός inline συναρτήσεων f=@(x) exp(x)-cos(x)-1;
Μέθοδος της διχοτόμησης (bisection method)
Μέθοδος της διχοτόμησης (bisection method) a=lower bound c=upper bound b=(a+c)/2 f(a)*f(b)<0 ? NO YES a=b c=b |a-c|<e ? NO YES print b
Μέθοδος της διχοτόμησης (bisection method) a=lower bound c=upper bound b=(a+c)/2 f(a)*f(b)<0 ? c=b a=b |a-c|<e ? print b YES NO
Μέθοδος της διχοτόμησης (bisection method) a=lower bound c=upper bound b=(a+c)/2 f(a)*f(b)<0 ? c=b a=b |a-c|<e ? print b YES NO
Μέθοδος της διχοτόμησης (bisection method) a=lower bound c=upper bound b=(a+c)/2 f(a)*f(b)<0 ? c=b a=b |a-c|<e ? print b YES NO
Η συνάρτηση fsolve
F(x) = exp(x) – x^2 - (τα 2 τελευταία ψηφια του ΑΜ σας) Προαιρετικό θέμα F(x) = exp(x) – x^2 - (τα 2 τελευταία ψηφια του ΑΜ σας) Να βρείτε την λύση της ανωτέρω εξίσωσης GROUP I 30/01/2014 (11.59μμ) GROUP II 27/01/2014 (11.59μμ) Oι απαντήσεις (τα m files) να στέλνονται σε κείμενο e-mail και ΟΧΙ σαν συνημμένο αρχείο Oι απαντήσεις να έχουν τίτλο με latinikous charaktires: ASKHSH03-GROUP1-ΤΟΕΠΟΝΥΜΟΜΟΥ-021?????-30.01.2014 ASKHSH03-GROUP2-ΤΟΕΠΟΝΥΜΟΜΟΥ-021?????-27.01.2014