36
Τι είναι το Matlab? Το Matlab (MATrix LABoratory) είναι ένα interactive σύστημα για : αριθμητικούς υπολογισμούς, δίχως προγραμματισμό σε συμβατικές γλώσσες (Fortran, Cγρήγορη ανάπτυξη και έλεγχο αλγορίθμων, (πλήθος έτοιμων συναρτήσεων και απλουστευμένη αλγοριθμική γλώσσα)· ανάλυση δεδομένων και γραφική παρουσίαση τους· εφαρμογές από διάφορες ϑεματικές περιοχές μέσω κατάλληλων toolboxes (στατιστική ανάλυση, ϑεωρία ελέγχου, επεξεργασία σήματος, ϐελτιστοποίηση, νευρωνικά δίκτυα, «συμβολικά» μαθηματικά, κ.π.α.) Δημιουργήθηκε απο τον C. Moler, αρχικά σαν εργαλείο διαχείρισης των ϐιβλιοθηκών Fortran: LINPACK (γρ. άλγεβρα) και EISPACK (ιδιοτιμές και ιδιοδιανύσματα). Εξελίχθηκε σε σύνθετο πακέτο (γραμμένο σε C, C++) που αναπτύσσεται συνεχώς. 1

Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Τι είναι το Matlab

Το Matlab (MATrix LABoratory) είναι ένα interactive σύστηmicroα για αριθmicroητικούς υπολογισmicroούς δίχως προγραmicromicroατισmicroό σε συmicroβατικές

γλώσσες (Fortran C) γρήγορη ανάπτυξη και έλεγχο αλγορίθmicroων (πλήθος έτοιmicroων

συναρτήσεων και απλουστευmicroένη αλγοριθmicroική γλώσσα) ανάλυση δεδοmicroένων και γραφική παρουσίαση τους εφαρmicroογές από διάφορες ϑεmicroατικές περιοχές microέσω κατάλληλων

toolboxes (στατιστική ανάλυση ϑεωρία ελέγχου επεξεργασία σήmicroατος

ϐελτιστοποίηση νευρωνικά δίκτυα laquoσυmicroβολικάraquo microαθηmicroατικά κπα)

∆ηmicroιουργήθηκε απο τον C Moler αρχικά σαν εργαλείο διαχείρισης των

ϐιβλιοθηκών Fortran LINPACK (γρ άλγεβρα) και EISPACK (ιδιοτιmicroές και

ιδιοδιανύσmicroατα) Εξελίχθηκε σε σύνθετο πακέτο (γραmicromicroένο σε C C++)

που αναπτύσσεται συνεχώς

1

Βοήθεια στο Matlab

help λίστα microε κατηγορίες ϐοήθειας

help ϑέmicroα ϐοήθεια σε ένα συγκεκριmicroένο ϑέmicroα ή συνάρτηση

lookfor λέξη-κλειδί ψάχνει σε όλες τις συναρτήσεις για τη

λέξη-κλειδί

helpdesk laquoϕορτώνειraquo στον Web browser αναλυτική τεκmicroηρίωση για

το Matlab και τα toolboxes του

demo επίδειξη δυνατοτήτων του Matlab

2

Τα πάντα είναι πίνακες

Βασικό αντικείmicroενο του Matlab είναι οι πίνακες (πραγmicroατικοί ή microιγαδικοί)

Σε microερικές περιπτώσεις το Matlab ερmicroηνεύει

- πίνακες 11 σαν ϐαθmicroωτά microεγέθη και

- πίνακες microε 1 γραmicromicroή ή 1 στήλη σαν διανύσmicroατα

Η γλώσσα του Matlab είναι α-τυπη (δεν χρειάζεται δήλωση microεταβλητών)

Στο Matlab οι πράξεις κινητής υποδιαστολής γίνονται σύmicroφωνα microε το

standard της IEEE συνήθως σε διπλή ακρίβεια

3

Εισαγωγή πινάκων

1 Αmicroεσα από το χρήστη

A = [1 2 3 4 5 6 7 8 9]

ή ισοδύναmicroα

A = [ 1 2 3

4 5 6

7 8 9 ]

2 Από συναρτήσεις του Matlab

b = rand(15)

δηmicroιουργεί τυχαίο πίνακα 15 (διάνυσmicroα) microε στοιχεία 2 [0 1ΠΡΟΣΠΕΛΑΣΗ ΣΤΟΙΧΕΙΩΝ A(12) για πίνακες ή b(A(22)) για

διανύσmicroατα Οι δείκτες είναι ϑετικές ακέραιες σταθερές ή microεταβλητές

4

Πράξεις πινάκων

+ Πρόσθεση help arith

- Αφαίρεση help arith

Πολσmicroός help arith

ˆ Υψωση σε δύναmicroη help arith

rsquo Ανάστροφος πίνακας help punct

Αριστερή διαίρεση help slash

∆εξιά διαίρεση help slash

5

Πράξεις πινάκων (συνεχ)

Παρατηρήσεις Ισχύουν και για ϐαθmicroωτά microεγέθη (= πίνακες 11) Ασυmicroβατότητα διαστάσεων =) ΛΑΘΟΣ

ΕΞΑΙΡΕΣΗ πράξεις microεταξύ πινάκων και αριθmicroών οπότε η πράξη

εκτελείται microεταξύ του αριθmicroού και κάθε στοιχείου του πίνακα Για τις διαιρέσεις Αν ο πίνακας A είναι αντιστρέψιmicroος τότε

ndash x = Ab είναι η λύση του συστήmicroατος Ax = b

ndash x = bA είναι η λύση του συστήmicroατος xA = b Οι πράξεις ˆ εκτελούνται microεταξύ των στοιχείων των

πινάκων Πχ [1 2 3 4]ˆ2 δίνει [1 4 9 16]

6

Εντολές Εκφράσεις Μεταβλητές Το Matlab ερmicroηνεύει κάθε γραmicromicroή στην είσοδο Οι εντολές του έχουν

τη microορφή

microεταβλητή=έκφραση

ή απλά

έκφραση Οι εκφράσεις είναι σύνθεση τελεστών microεταβλητών και συναρτήσεων

Ο υπολογισmicroός τους παράγει ένα πίνακα που microπορεί να εmicroφανισθεί

στην έξοδο ή να αποθηκευτεί σε microεταβλητή Οι εντολές τερmicroατίζονται microε το τέλος της γραmicromicroής Συνέχεια σε

περισσότερες από microία γραmicromicroες αν η προηγούmicroενη γραmicromicroή τελειώνει

σε Πολλές εντολές microεταξύ ή γράφονται σε microία γραmicromicroή Εντολή που τελειώνει σε δεν παράγει output στην οθόνη

7

Κατασκευή πινάκων

Μερικές συναρτήσεις (για σύνταξη help όνοmicroα)

eye Μοναδιαίος πίνακας

zeros Μηδενικός πίνακας

ones Πίνακας microε στοιχεία microονάδες

diag ∆ιαγώνιος πίνακας

triu tril ΄Ανω κάτω τριγωνικός πίνακας

rand Πίνακας microε lsquoτυχαίαrsquo στοιχεία

magic Μαγικά τετράγωνα

8

Παρατηρήσεις παραδείγmicroατα zeros(mn) mn microηδενικός πίνακας αλλά zeros(n)

τετραγωνικός microηδενικός πίνακας Για x διάνυσmicroα diag(x) πίνακας microε x στη διαγώνιο Για πίνακα A

diag(A) διάνυσmicroα microε τα διαγώνια στοιχεία του A

ΕΡΩΤΗΣΗ Τι υπολογίζει η diag(diag(A)) Παραγωγή πινάκων από πίνακες αν A είναι 33 τότε

B = [A zeros(32) ones(23) eye(22)]

δίνει πίνακα 55

9

Υποπίνακες Οι εκφράσεις 15 και 020212 είναι στην ουσία τα

διανύσmicroατα [1 2 3 4 5] και

[02 04 06 08 10 12] A(143) διάνυσmicroα microε τα 4 πρώτα στοιχεία της 3ης στήλης του A A(3) είναι ή 3η στήλη του A A([24]) Οι στήλες 2 και 4 του A A([2 4 5]) = B(13) Αντικαθιστά τις στήλες 2 4 και 5 του

A microε τις στήλες 1 2 3 του B

10

Η εντολή for

x = [] for i = 1n x=[xiˆ2] end

ή

x = []

for i = 1n

x=[xiˆ2]

end

Στην πιο γενική της microορφή

s = 0 Gia 2D pinaka A

for c = A Diatrexei tic sthles tou A

s = s + sum(c)

end

11

Η εντολή while

while λογική σχέση

εντολές

end

Παράδειγmicroα υπολογισmicroός του blog2 a13a = 256

n = 0

while 2ˆn lt a

n = n + 1

end

n

και microε χρήση συναρτήσεων n = floor(log2(a))

12

Η εντολή if

if λογική σχέση

εντολές

end

Παράδειγmicroα

if n lt 0

parity = 0

elseif rem(n2) == 0

parity = 2

else

parity = 1

end

13

Λογικές σχέσεις και τελεστές

help relop

Σχέσεις lt gt lt= gt= == =

Τελεστές amp (σύζευξη) | (διάζευξη) ~ (άρνηση)

ΠΑΡΑΤΗΡΗΣΕΙΣ Τιmicroές Αληθής 1 Ψευδής 0 Οι λογικές σχέσεις microεταξύ πινάκων εκτελούνται microεταξύ των στοιχείων

τους και δίνουν πίνακα microε 1 ή 0 στις αντίστοιχες ϑέσεις Πχ

L = [1 2 3 4] gt [1 0 10 0] δίνει την τιmicroή

[0 1 0 1] στον L Οι while και if ερmicroηνεύουν microια σχέση microεταξύ πινάκων σαν αληθή

όταν ο παραγόmicroενος πίνακας έχει όλα τα στοιχεία του = 1 Πχ για το

προηγούmicroενο L η if L disp(rsquoMATLABrsquo) end ∆ΕΝ

ΕΚΤΕΛΕΙΤΑΙ

14

Βαθmicroωτές Συναρτήσεις

Ενεργούν σε ϐαθmicroωτά microεγέθη (δηλ για πίνακα σε κάθε στοιχείο του και

παράγουν πίνακα microε τα αποτελέσmicroατα ίδιας διαστασης microε τον αρχικό)

sin asin exp abs round

cos acos log sqrt floor

tan atan rem sign ceil

ΠΑΡΑ∆ΕΙΓΜΑ

sin([pi pi2 0 pi4]) [00 10 00 0707]

15

∆ιανυσmicroατικές συναρτήσεις

Ενεργούν σε διανύσmicroατα (δηλ για πίνακα σε κάθε στήλη του και

παράγουν πίνακα γραmicromicroή microε τα αποτελέσmicroατα κάθε στήλης)

max sum median any

min prod mean all

sort std

ΠΑΡΑ∆ΕΙΓΜΑΤΑ

max([1 2 3]) 3

max([1 2 3]) 3

max([1 2 3 3 2 1]) [3 2 3]

16

Συναρτήσεις πινάκων

eig Ιδιοδιανύσmicroατα ιδιοτιmicroές

chol Παραγοντοποίηση Choleski

lu Παραγοντοποίηση Gauss

expm eA (συγκρ exp )

sqrtm Τετραγωνική ϱίζα πίνακα (συγκρ sqrt )

det Ορίζουσα

size ∆ιαστάσεις

norm Νόρmicroες

rank Βαθmicroός

17

m-αρχεία

΄Εχουν κατάληξη m

1 Scripts Αρχεία που περιέχουν αλληλουχία εντολών του Matlab Πχ

εντολές στο αρχείο mycommandmεκτελείται microε mycommand

2 Συναρτήσεις ∆υνατότητα δηmicroιουργίας νέων συναρτήσεων Πχ η

νέα εντολή randint ορίζεται στο αρχείο randintm

function a = randint(m n)

RANDINT Randomly generated integral matrix

RANDINT(MN) M-by-N matrix

Elements between 0 and 9

a = floor(10rand(mn))

Τι εmicroφανίζει η help randint

18

Γραφικά - οι συνάρτησεις plot και semilogy

Η συνάρτηση plot(xy) σχεδιάζει 2-διάστατες γραφικές παραστάσεις

του διανύσmicroατος y ως προς x

Παραδειγmicroα

x = -4014

y = sin(x)

plot(xy)

title(rsquoMATLAB plotrsquo)

xlabel(rsquoxrsquo) ylabel(rsquoyrsquo)

Για λογαριθmicroική κλίmicroακα στον άξονα των y semilogy

Παράδειγmicroα

semilogy(xy)

19

Παραδείγmicroατα

Για A=rand(35) B οποιοσδήποτε 35 πίνακας x=rand(51) y

ένα διάνυσmicroα 51 και C=[1 2 3 4 5 6 7 8 9]

1 Πραξεις

A+B A+2 Cˆ2 Cˆ2 CˆC

2 ∆ηmicroιουργία πινάκων

diag(C) diag(y) diag(diag(C)) triu(C)

eye(3)-2 -eye(3)

3 Σύνθετοι πίνακες

D = [A zeros(23) ones(2)]

4 For

s = 0 for i = 15 s = s + x(i) end s sum(x)

20

5 Λογικές σχέσεις

D = triu(C) C == D

6 Συναρτήσεις

sin(B) max(y) rank(B) det(C) size(x)

help eig

eig(C)

[VL]=eig(C)

7 Υποπίνακες

B(123) B(2) B(2) B( [1 5])

M = B M(13)=eye(3)

8 Γραφικά

x=-4014 y = sin(x) plot(xy)

title(rsquoMATLAB plotrsquo) xlabel(rsquoxrsquo) ylabel(rsquosinrsquo)

21

Χρήσιmicroες συναρτήσεις

rand(mn) Τυχαίος πίνακας mn

rand(n) Τυχαίος πίνακας nn

ones(mn) Πίνακας mn microε στοιχεία 1

zeros(mn) Πίνακας mn microε στοιχεία 0

diag(v) ∆ιαγώνιος πίνακας microε το διάνυσmicroα v στην κύρια διαγώνιο

diag(vk) Πίνακας microε το διάνυσmicroα v στην k διαγώνιο (k= 0 κύρια

διαγώνιος kgt 0klt 0 πάνωκάτω από κύρια διαγώνιο

22

Παράδειγmicroα δηmicroιουργία τριδιαγώνιου πίνακα

Η εντολή

10eye(3) + diag(ones(21)1) + diag(ones(21)-1)

δίνει τον τριδιαγώνιο πίνακα0BB 10 1 01 10 10 1 101CCA = 0BB 10 0 00 10 00 0 101CCA+0BB 0 1 00 0 10 0 01CCA+0BB 0 0 01 0 00 1 01CCA

23

Κόστος Αλγορίθmicroων

Για οποιαδήποτε συνάρτηση fun()

1 Αριθmicroός πράξεων flops (δεν υποστηρίζεται σε νεώτερες εκδόσεις του

Matlab)

flops(0) fun() flops

Προσθαφαιρέσεις 1 flop για πραγmicroατικούς 2 flops για microιγαδικούς

Πολσmicroοί διαιρέσεις 1 flop για πραγmicroατικούς 6 flops για

microιγαδικούς

Βασικές συναρτήσεις 1 flop για πραγmicroατικούς περισσότερα για

microιγαδικούς

2 Χρονική διάρκεια

tic fun() toc

24

Παράδειγmicroα Linpack benchmark

Μέτρηση υπολογιστικής ταχύτητας σε MFlopS (= MegaFlopsec) microε ϐάση το

χρόνο που απαιτείται για την επίλυση microε απαλοιφή Gauss γραmicromicroικού

συστήmicroατος 100100

n = 100

A = rand(n)

b = rand(n1)

flops(0)

tic

x = Ab

t = toc

megaflops = flopst1e6

25

Αποτελεσmicroατικότητα συναρτήσεων

Πίνακας A n n microε στοιχεία aij = 1(i + j)ς1ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 14653s

function A = slower(n)

SLOWER(N) pinakas A NxN me A(IJ) = 1(I+J)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

26

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 2: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Βοήθεια στο Matlab

help λίστα microε κατηγορίες ϐοήθειας

help ϑέmicroα ϐοήθεια σε ένα συγκεκριmicroένο ϑέmicroα ή συνάρτηση

lookfor λέξη-κλειδί ψάχνει σε όλες τις συναρτήσεις για τη

λέξη-κλειδί

helpdesk laquoϕορτώνειraquo στον Web browser αναλυτική τεκmicroηρίωση για

το Matlab και τα toolboxes του

demo επίδειξη δυνατοτήτων του Matlab

2

Τα πάντα είναι πίνακες

Βασικό αντικείmicroενο του Matlab είναι οι πίνακες (πραγmicroατικοί ή microιγαδικοί)

Σε microερικές περιπτώσεις το Matlab ερmicroηνεύει

- πίνακες 11 σαν ϐαθmicroωτά microεγέθη και

- πίνακες microε 1 γραmicromicroή ή 1 στήλη σαν διανύσmicroατα

Η γλώσσα του Matlab είναι α-τυπη (δεν χρειάζεται δήλωση microεταβλητών)

Στο Matlab οι πράξεις κινητής υποδιαστολής γίνονται σύmicroφωνα microε το

standard της IEEE συνήθως σε διπλή ακρίβεια

3

Εισαγωγή πινάκων

1 Αmicroεσα από το χρήστη

A = [1 2 3 4 5 6 7 8 9]

ή ισοδύναmicroα

A = [ 1 2 3

4 5 6

7 8 9 ]

2 Από συναρτήσεις του Matlab

b = rand(15)

δηmicroιουργεί τυχαίο πίνακα 15 (διάνυσmicroα) microε στοιχεία 2 [0 1ΠΡΟΣΠΕΛΑΣΗ ΣΤΟΙΧΕΙΩΝ A(12) για πίνακες ή b(A(22)) για

διανύσmicroατα Οι δείκτες είναι ϑετικές ακέραιες σταθερές ή microεταβλητές

4

Πράξεις πινάκων

+ Πρόσθεση help arith

- Αφαίρεση help arith

Πολσmicroός help arith

ˆ Υψωση σε δύναmicroη help arith

rsquo Ανάστροφος πίνακας help punct

Αριστερή διαίρεση help slash

∆εξιά διαίρεση help slash

5

Πράξεις πινάκων (συνεχ)

Παρατηρήσεις Ισχύουν και για ϐαθmicroωτά microεγέθη (= πίνακες 11) Ασυmicroβατότητα διαστάσεων =) ΛΑΘΟΣ

ΕΞΑΙΡΕΣΗ πράξεις microεταξύ πινάκων και αριθmicroών οπότε η πράξη

εκτελείται microεταξύ του αριθmicroού και κάθε στοιχείου του πίνακα Για τις διαιρέσεις Αν ο πίνακας A είναι αντιστρέψιmicroος τότε

ndash x = Ab είναι η λύση του συστήmicroατος Ax = b

ndash x = bA είναι η λύση του συστήmicroατος xA = b Οι πράξεις ˆ εκτελούνται microεταξύ των στοιχείων των

πινάκων Πχ [1 2 3 4]ˆ2 δίνει [1 4 9 16]

6

Εντολές Εκφράσεις Μεταβλητές Το Matlab ερmicroηνεύει κάθε γραmicromicroή στην είσοδο Οι εντολές του έχουν

τη microορφή

microεταβλητή=έκφραση

ή απλά

έκφραση Οι εκφράσεις είναι σύνθεση τελεστών microεταβλητών και συναρτήσεων

Ο υπολογισmicroός τους παράγει ένα πίνακα που microπορεί να εmicroφανισθεί

στην έξοδο ή να αποθηκευτεί σε microεταβλητή Οι εντολές τερmicroατίζονται microε το τέλος της γραmicromicroής Συνέχεια σε

περισσότερες από microία γραmicromicroες αν η προηγούmicroενη γραmicromicroή τελειώνει

σε Πολλές εντολές microεταξύ ή γράφονται σε microία γραmicromicroή Εντολή που τελειώνει σε δεν παράγει output στην οθόνη

7

Κατασκευή πινάκων

Μερικές συναρτήσεις (για σύνταξη help όνοmicroα)

eye Μοναδιαίος πίνακας

zeros Μηδενικός πίνακας

ones Πίνακας microε στοιχεία microονάδες

diag ∆ιαγώνιος πίνακας

triu tril ΄Ανω κάτω τριγωνικός πίνακας

rand Πίνακας microε lsquoτυχαίαrsquo στοιχεία

magic Μαγικά τετράγωνα

8

Παρατηρήσεις παραδείγmicroατα zeros(mn) mn microηδενικός πίνακας αλλά zeros(n)

τετραγωνικός microηδενικός πίνακας Για x διάνυσmicroα diag(x) πίνακας microε x στη διαγώνιο Για πίνακα A

diag(A) διάνυσmicroα microε τα διαγώνια στοιχεία του A

ΕΡΩΤΗΣΗ Τι υπολογίζει η diag(diag(A)) Παραγωγή πινάκων από πίνακες αν A είναι 33 τότε

B = [A zeros(32) ones(23) eye(22)]

δίνει πίνακα 55

9

Υποπίνακες Οι εκφράσεις 15 και 020212 είναι στην ουσία τα

διανύσmicroατα [1 2 3 4 5] και

[02 04 06 08 10 12] A(143) διάνυσmicroα microε τα 4 πρώτα στοιχεία της 3ης στήλης του A A(3) είναι ή 3η στήλη του A A([24]) Οι στήλες 2 και 4 του A A([2 4 5]) = B(13) Αντικαθιστά τις στήλες 2 4 και 5 του

A microε τις στήλες 1 2 3 του B

10

Η εντολή for

x = [] for i = 1n x=[xiˆ2] end

ή

x = []

for i = 1n

x=[xiˆ2]

end

Στην πιο γενική της microορφή

s = 0 Gia 2D pinaka A

for c = A Diatrexei tic sthles tou A

s = s + sum(c)

end

11

Η εντολή while

while λογική σχέση

εντολές

end

Παράδειγmicroα υπολογισmicroός του blog2 a13a = 256

n = 0

while 2ˆn lt a

n = n + 1

end

n

και microε χρήση συναρτήσεων n = floor(log2(a))

12

Η εντολή if

if λογική σχέση

εντολές

end

Παράδειγmicroα

if n lt 0

parity = 0

elseif rem(n2) == 0

parity = 2

else

parity = 1

end

13

Λογικές σχέσεις και τελεστές

help relop

Σχέσεις lt gt lt= gt= == =

Τελεστές amp (σύζευξη) | (διάζευξη) ~ (άρνηση)

ΠΑΡΑΤΗΡΗΣΕΙΣ Τιmicroές Αληθής 1 Ψευδής 0 Οι λογικές σχέσεις microεταξύ πινάκων εκτελούνται microεταξύ των στοιχείων

τους και δίνουν πίνακα microε 1 ή 0 στις αντίστοιχες ϑέσεις Πχ

L = [1 2 3 4] gt [1 0 10 0] δίνει την τιmicroή

[0 1 0 1] στον L Οι while και if ερmicroηνεύουν microια σχέση microεταξύ πινάκων σαν αληθή

όταν ο παραγόmicroενος πίνακας έχει όλα τα στοιχεία του = 1 Πχ για το

προηγούmicroενο L η if L disp(rsquoMATLABrsquo) end ∆ΕΝ

ΕΚΤΕΛΕΙΤΑΙ

14

Βαθmicroωτές Συναρτήσεις

Ενεργούν σε ϐαθmicroωτά microεγέθη (δηλ για πίνακα σε κάθε στοιχείο του και

παράγουν πίνακα microε τα αποτελέσmicroατα ίδιας διαστασης microε τον αρχικό)

sin asin exp abs round

cos acos log sqrt floor

tan atan rem sign ceil

ΠΑΡΑ∆ΕΙΓΜΑ

sin([pi pi2 0 pi4]) [00 10 00 0707]

15

∆ιανυσmicroατικές συναρτήσεις

Ενεργούν σε διανύσmicroατα (δηλ για πίνακα σε κάθε στήλη του και

παράγουν πίνακα γραmicromicroή microε τα αποτελέσmicroατα κάθε στήλης)

max sum median any

min prod mean all

sort std

ΠΑΡΑ∆ΕΙΓΜΑΤΑ

max([1 2 3]) 3

max([1 2 3]) 3

max([1 2 3 3 2 1]) [3 2 3]

16

Συναρτήσεις πινάκων

eig Ιδιοδιανύσmicroατα ιδιοτιmicroές

chol Παραγοντοποίηση Choleski

lu Παραγοντοποίηση Gauss

expm eA (συγκρ exp )

sqrtm Τετραγωνική ϱίζα πίνακα (συγκρ sqrt )

det Ορίζουσα

size ∆ιαστάσεις

norm Νόρmicroες

rank Βαθmicroός

17

m-αρχεία

΄Εχουν κατάληξη m

1 Scripts Αρχεία που περιέχουν αλληλουχία εντολών του Matlab Πχ

εντολές στο αρχείο mycommandmεκτελείται microε mycommand

2 Συναρτήσεις ∆υνατότητα δηmicroιουργίας νέων συναρτήσεων Πχ η

νέα εντολή randint ορίζεται στο αρχείο randintm

function a = randint(m n)

RANDINT Randomly generated integral matrix

RANDINT(MN) M-by-N matrix

Elements between 0 and 9

a = floor(10rand(mn))

Τι εmicroφανίζει η help randint

18

Γραφικά - οι συνάρτησεις plot και semilogy

Η συνάρτηση plot(xy) σχεδιάζει 2-διάστατες γραφικές παραστάσεις

του διανύσmicroατος y ως προς x

Παραδειγmicroα

x = -4014

y = sin(x)

plot(xy)

title(rsquoMATLAB plotrsquo)

xlabel(rsquoxrsquo) ylabel(rsquoyrsquo)

Για λογαριθmicroική κλίmicroακα στον άξονα των y semilogy

Παράδειγmicroα

semilogy(xy)

19

Παραδείγmicroατα

Για A=rand(35) B οποιοσδήποτε 35 πίνακας x=rand(51) y

ένα διάνυσmicroα 51 και C=[1 2 3 4 5 6 7 8 9]

1 Πραξεις

A+B A+2 Cˆ2 Cˆ2 CˆC

2 ∆ηmicroιουργία πινάκων

diag(C) diag(y) diag(diag(C)) triu(C)

eye(3)-2 -eye(3)

3 Σύνθετοι πίνακες

D = [A zeros(23) ones(2)]

4 For

s = 0 for i = 15 s = s + x(i) end s sum(x)

20

5 Λογικές σχέσεις

D = triu(C) C == D

6 Συναρτήσεις

sin(B) max(y) rank(B) det(C) size(x)

help eig

eig(C)

[VL]=eig(C)

7 Υποπίνακες

B(123) B(2) B(2) B( [1 5])

M = B M(13)=eye(3)

8 Γραφικά

x=-4014 y = sin(x) plot(xy)

title(rsquoMATLAB plotrsquo) xlabel(rsquoxrsquo) ylabel(rsquosinrsquo)

21

Χρήσιmicroες συναρτήσεις

rand(mn) Τυχαίος πίνακας mn

rand(n) Τυχαίος πίνακας nn

ones(mn) Πίνακας mn microε στοιχεία 1

zeros(mn) Πίνακας mn microε στοιχεία 0

diag(v) ∆ιαγώνιος πίνακας microε το διάνυσmicroα v στην κύρια διαγώνιο

diag(vk) Πίνακας microε το διάνυσmicroα v στην k διαγώνιο (k= 0 κύρια

διαγώνιος kgt 0klt 0 πάνωκάτω από κύρια διαγώνιο

22

Παράδειγmicroα δηmicroιουργία τριδιαγώνιου πίνακα

Η εντολή

10eye(3) + diag(ones(21)1) + diag(ones(21)-1)

δίνει τον τριδιαγώνιο πίνακα0BB 10 1 01 10 10 1 101CCA = 0BB 10 0 00 10 00 0 101CCA+0BB 0 1 00 0 10 0 01CCA+0BB 0 0 01 0 00 1 01CCA

23

Κόστος Αλγορίθmicroων

Για οποιαδήποτε συνάρτηση fun()

1 Αριθmicroός πράξεων flops (δεν υποστηρίζεται σε νεώτερες εκδόσεις του

Matlab)

flops(0) fun() flops

Προσθαφαιρέσεις 1 flop για πραγmicroατικούς 2 flops για microιγαδικούς

Πολσmicroοί διαιρέσεις 1 flop για πραγmicroατικούς 6 flops για

microιγαδικούς

Βασικές συναρτήσεις 1 flop για πραγmicroατικούς περισσότερα για

microιγαδικούς

2 Χρονική διάρκεια

tic fun() toc

24

Παράδειγmicroα Linpack benchmark

Μέτρηση υπολογιστικής ταχύτητας σε MFlopS (= MegaFlopsec) microε ϐάση το

χρόνο που απαιτείται για την επίλυση microε απαλοιφή Gauss γραmicromicroικού

συστήmicroατος 100100

n = 100

A = rand(n)

b = rand(n1)

flops(0)

tic

x = Ab

t = toc

megaflops = flopst1e6

25

Αποτελεσmicroατικότητα συναρτήσεων

Πίνακας A n n microε στοιχεία aij = 1(i + j)ς1ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 14653s

function A = slower(n)

SLOWER(N) pinakas A NxN me A(IJ) = 1(I+J)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

26

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 3: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Τα πάντα είναι πίνακες

Βασικό αντικείmicroενο του Matlab είναι οι πίνακες (πραγmicroατικοί ή microιγαδικοί)

Σε microερικές περιπτώσεις το Matlab ερmicroηνεύει

- πίνακες 11 σαν ϐαθmicroωτά microεγέθη και

- πίνακες microε 1 γραmicromicroή ή 1 στήλη σαν διανύσmicroατα

Η γλώσσα του Matlab είναι α-τυπη (δεν χρειάζεται δήλωση microεταβλητών)

Στο Matlab οι πράξεις κινητής υποδιαστολής γίνονται σύmicroφωνα microε το

standard της IEEE συνήθως σε διπλή ακρίβεια

3

Εισαγωγή πινάκων

1 Αmicroεσα από το χρήστη

A = [1 2 3 4 5 6 7 8 9]

ή ισοδύναmicroα

A = [ 1 2 3

4 5 6

7 8 9 ]

2 Από συναρτήσεις του Matlab

b = rand(15)

δηmicroιουργεί τυχαίο πίνακα 15 (διάνυσmicroα) microε στοιχεία 2 [0 1ΠΡΟΣΠΕΛΑΣΗ ΣΤΟΙΧΕΙΩΝ A(12) για πίνακες ή b(A(22)) για

διανύσmicroατα Οι δείκτες είναι ϑετικές ακέραιες σταθερές ή microεταβλητές

4

Πράξεις πινάκων

+ Πρόσθεση help arith

- Αφαίρεση help arith

Πολσmicroός help arith

ˆ Υψωση σε δύναmicroη help arith

rsquo Ανάστροφος πίνακας help punct

Αριστερή διαίρεση help slash

∆εξιά διαίρεση help slash

5

Πράξεις πινάκων (συνεχ)

Παρατηρήσεις Ισχύουν και για ϐαθmicroωτά microεγέθη (= πίνακες 11) Ασυmicroβατότητα διαστάσεων =) ΛΑΘΟΣ

ΕΞΑΙΡΕΣΗ πράξεις microεταξύ πινάκων και αριθmicroών οπότε η πράξη

εκτελείται microεταξύ του αριθmicroού και κάθε στοιχείου του πίνακα Για τις διαιρέσεις Αν ο πίνακας A είναι αντιστρέψιmicroος τότε

ndash x = Ab είναι η λύση του συστήmicroατος Ax = b

ndash x = bA είναι η λύση του συστήmicroατος xA = b Οι πράξεις ˆ εκτελούνται microεταξύ των στοιχείων των

πινάκων Πχ [1 2 3 4]ˆ2 δίνει [1 4 9 16]

6

Εντολές Εκφράσεις Μεταβλητές Το Matlab ερmicroηνεύει κάθε γραmicromicroή στην είσοδο Οι εντολές του έχουν

τη microορφή

microεταβλητή=έκφραση

ή απλά

έκφραση Οι εκφράσεις είναι σύνθεση τελεστών microεταβλητών και συναρτήσεων

Ο υπολογισmicroός τους παράγει ένα πίνακα που microπορεί να εmicroφανισθεί

στην έξοδο ή να αποθηκευτεί σε microεταβλητή Οι εντολές τερmicroατίζονται microε το τέλος της γραmicromicroής Συνέχεια σε

περισσότερες από microία γραmicromicroες αν η προηγούmicroενη γραmicromicroή τελειώνει

σε Πολλές εντολές microεταξύ ή γράφονται σε microία γραmicromicroή Εντολή που τελειώνει σε δεν παράγει output στην οθόνη

7

Κατασκευή πινάκων

Μερικές συναρτήσεις (για σύνταξη help όνοmicroα)

eye Μοναδιαίος πίνακας

zeros Μηδενικός πίνακας

ones Πίνακας microε στοιχεία microονάδες

diag ∆ιαγώνιος πίνακας

triu tril ΄Ανω κάτω τριγωνικός πίνακας

rand Πίνακας microε lsquoτυχαίαrsquo στοιχεία

magic Μαγικά τετράγωνα

8

Παρατηρήσεις παραδείγmicroατα zeros(mn) mn microηδενικός πίνακας αλλά zeros(n)

τετραγωνικός microηδενικός πίνακας Για x διάνυσmicroα diag(x) πίνακας microε x στη διαγώνιο Για πίνακα A

diag(A) διάνυσmicroα microε τα διαγώνια στοιχεία του A

ΕΡΩΤΗΣΗ Τι υπολογίζει η diag(diag(A)) Παραγωγή πινάκων από πίνακες αν A είναι 33 τότε

B = [A zeros(32) ones(23) eye(22)]

δίνει πίνακα 55

9

Υποπίνακες Οι εκφράσεις 15 και 020212 είναι στην ουσία τα

διανύσmicroατα [1 2 3 4 5] και

[02 04 06 08 10 12] A(143) διάνυσmicroα microε τα 4 πρώτα στοιχεία της 3ης στήλης του A A(3) είναι ή 3η στήλη του A A([24]) Οι στήλες 2 και 4 του A A([2 4 5]) = B(13) Αντικαθιστά τις στήλες 2 4 και 5 του

A microε τις στήλες 1 2 3 του B

10

Η εντολή for

x = [] for i = 1n x=[xiˆ2] end

ή

x = []

for i = 1n

x=[xiˆ2]

end

Στην πιο γενική της microορφή

s = 0 Gia 2D pinaka A

for c = A Diatrexei tic sthles tou A

s = s + sum(c)

end

11

Η εντολή while

while λογική σχέση

εντολές

end

Παράδειγmicroα υπολογισmicroός του blog2 a13a = 256

n = 0

while 2ˆn lt a

n = n + 1

end

n

και microε χρήση συναρτήσεων n = floor(log2(a))

12

Η εντολή if

if λογική σχέση

εντολές

end

Παράδειγmicroα

if n lt 0

parity = 0

elseif rem(n2) == 0

parity = 2

else

parity = 1

end

13

Λογικές σχέσεις και τελεστές

help relop

Σχέσεις lt gt lt= gt= == =

Τελεστές amp (σύζευξη) | (διάζευξη) ~ (άρνηση)

ΠΑΡΑΤΗΡΗΣΕΙΣ Τιmicroές Αληθής 1 Ψευδής 0 Οι λογικές σχέσεις microεταξύ πινάκων εκτελούνται microεταξύ των στοιχείων

τους και δίνουν πίνακα microε 1 ή 0 στις αντίστοιχες ϑέσεις Πχ

L = [1 2 3 4] gt [1 0 10 0] δίνει την τιmicroή

[0 1 0 1] στον L Οι while και if ερmicroηνεύουν microια σχέση microεταξύ πινάκων σαν αληθή

όταν ο παραγόmicroενος πίνακας έχει όλα τα στοιχεία του = 1 Πχ για το

προηγούmicroενο L η if L disp(rsquoMATLABrsquo) end ∆ΕΝ

ΕΚΤΕΛΕΙΤΑΙ

14

Βαθmicroωτές Συναρτήσεις

Ενεργούν σε ϐαθmicroωτά microεγέθη (δηλ για πίνακα σε κάθε στοιχείο του και

παράγουν πίνακα microε τα αποτελέσmicroατα ίδιας διαστασης microε τον αρχικό)

sin asin exp abs round

cos acos log sqrt floor

tan atan rem sign ceil

ΠΑΡΑ∆ΕΙΓΜΑ

sin([pi pi2 0 pi4]) [00 10 00 0707]

15

∆ιανυσmicroατικές συναρτήσεις

Ενεργούν σε διανύσmicroατα (δηλ για πίνακα σε κάθε στήλη του και

παράγουν πίνακα γραmicromicroή microε τα αποτελέσmicroατα κάθε στήλης)

max sum median any

min prod mean all

sort std

ΠΑΡΑ∆ΕΙΓΜΑΤΑ

max([1 2 3]) 3

max([1 2 3]) 3

max([1 2 3 3 2 1]) [3 2 3]

16

Συναρτήσεις πινάκων

eig Ιδιοδιανύσmicroατα ιδιοτιmicroές

chol Παραγοντοποίηση Choleski

lu Παραγοντοποίηση Gauss

expm eA (συγκρ exp )

sqrtm Τετραγωνική ϱίζα πίνακα (συγκρ sqrt )

det Ορίζουσα

size ∆ιαστάσεις

norm Νόρmicroες

rank Βαθmicroός

17

m-αρχεία

΄Εχουν κατάληξη m

1 Scripts Αρχεία που περιέχουν αλληλουχία εντολών του Matlab Πχ

εντολές στο αρχείο mycommandmεκτελείται microε mycommand

2 Συναρτήσεις ∆υνατότητα δηmicroιουργίας νέων συναρτήσεων Πχ η

νέα εντολή randint ορίζεται στο αρχείο randintm

function a = randint(m n)

RANDINT Randomly generated integral matrix

RANDINT(MN) M-by-N matrix

Elements between 0 and 9

a = floor(10rand(mn))

Τι εmicroφανίζει η help randint

18

Γραφικά - οι συνάρτησεις plot και semilogy

Η συνάρτηση plot(xy) σχεδιάζει 2-διάστατες γραφικές παραστάσεις

του διανύσmicroατος y ως προς x

Παραδειγmicroα

x = -4014

y = sin(x)

plot(xy)

title(rsquoMATLAB plotrsquo)

xlabel(rsquoxrsquo) ylabel(rsquoyrsquo)

Για λογαριθmicroική κλίmicroακα στον άξονα των y semilogy

Παράδειγmicroα

semilogy(xy)

19

Παραδείγmicroατα

Για A=rand(35) B οποιοσδήποτε 35 πίνακας x=rand(51) y

ένα διάνυσmicroα 51 και C=[1 2 3 4 5 6 7 8 9]

1 Πραξεις

A+B A+2 Cˆ2 Cˆ2 CˆC

2 ∆ηmicroιουργία πινάκων

diag(C) diag(y) diag(diag(C)) triu(C)

eye(3)-2 -eye(3)

3 Σύνθετοι πίνακες

D = [A zeros(23) ones(2)]

4 For

s = 0 for i = 15 s = s + x(i) end s sum(x)

20

5 Λογικές σχέσεις

D = triu(C) C == D

6 Συναρτήσεις

sin(B) max(y) rank(B) det(C) size(x)

help eig

eig(C)

[VL]=eig(C)

7 Υποπίνακες

B(123) B(2) B(2) B( [1 5])

M = B M(13)=eye(3)

8 Γραφικά

x=-4014 y = sin(x) plot(xy)

title(rsquoMATLAB plotrsquo) xlabel(rsquoxrsquo) ylabel(rsquosinrsquo)

21

Χρήσιmicroες συναρτήσεις

rand(mn) Τυχαίος πίνακας mn

rand(n) Τυχαίος πίνακας nn

ones(mn) Πίνακας mn microε στοιχεία 1

zeros(mn) Πίνακας mn microε στοιχεία 0

diag(v) ∆ιαγώνιος πίνακας microε το διάνυσmicroα v στην κύρια διαγώνιο

diag(vk) Πίνακας microε το διάνυσmicroα v στην k διαγώνιο (k= 0 κύρια

διαγώνιος kgt 0klt 0 πάνωκάτω από κύρια διαγώνιο

22

Παράδειγmicroα δηmicroιουργία τριδιαγώνιου πίνακα

Η εντολή

10eye(3) + diag(ones(21)1) + diag(ones(21)-1)

δίνει τον τριδιαγώνιο πίνακα0BB 10 1 01 10 10 1 101CCA = 0BB 10 0 00 10 00 0 101CCA+0BB 0 1 00 0 10 0 01CCA+0BB 0 0 01 0 00 1 01CCA

23

Κόστος Αλγορίθmicroων

Για οποιαδήποτε συνάρτηση fun()

1 Αριθmicroός πράξεων flops (δεν υποστηρίζεται σε νεώτερες εκδόσεις του

Matlab)

flops(0) fun() flops

Προσθαφαιρέσεις 1 flop για πραγmicroατικούς 2 flops για microιγαδικούς

Πολσmicroοί διαιρέσεις 1 flop για πραγmicroατικούς 6 flops για

microιγαδικούς

Βασικές συναρτήσεις 1 flop για πραγmicroατικούς περισσότερα για

microιγαδικούς

2 Χρονική διάρκεια

tic fun() toc

24

Παράδειγmicroα Linpack benchmark

Μέτρηση υπολογιστικής ταχύτητας σε MFlopS (= MegaFlopsec) microε ϐάση το

χρόνο που απαιτείται για την επίλυση microε απαλοιφή Gauss γραmicromicroικού

συστήmicroατος 100100

n = 100

A = rand(n)

b = rand(n1)

flops(0)

tic

x = Ab

t = toc

megaflops = flopst1e6

25

Αποτελεσmicroατικότητα συναρτήσεων

Πίνακας A n n microε στοιχεία aij = 1(i + j)ς1ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 14653s

function A = slower(n)

SLOWER(N) pinakas A NxN me A(IJ) = 1(I+J)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

26

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 4: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Εισαγωγή πινάκων

1 Αmicroεσα από το χρήστη

A = [1 2 3 4 5 6 7 8 9]

ή ισοδύναmicroα

A = [ 1 2 3

4 5 6

7 8 9 ]

2 Από συναρτήσεις του Matlab

b = rand(15)

δηmicroιουργεί τυχαίο πίνακα 15 (διάνυσmicroα) microε στοιχεία 2 [0 1ΠΡΟΣΠΕΛΑΣΗ ΣΤΟΙΧΕΙΩΝ A(12) για πίνακες ή b(A(22)) για

διανύσmicroατα Οι δείκτες είναι ϑετικές ακέραιες σταθερές ή microεταβλητές

4

Πράξεις πινάκων

+ Πρόσθεση help arith

- Αφαίρεση help arith

Πολσmicroός help arith

ˆ Υψωση σε δύναmicroη help arith

rsquo Ανάστροφος πίνακας help punct

Αριστερή διαίρεση help slash

∆εξιά διαίρεση help slash

5

Πράξεις πινάκων (συνεχ)

Παρατηρήσεις Ισχύουν και για ϐαθmicroωτά microεγέθη (= πίνακες 11) Ασυmicroβατότητα διαστάσεων =) ΛΑΘΟΣ

ΕΞΑΙΡΕΣΗ πράξεις microεταξύ πινάκων και αριθmicroών οπότε η πράξη

εκτελείται microεταξύ του αριθmicroού και κάθε στοιχείου του πίνακα Για τις διαιρέσεις Αν ο πίνακας A είναι αντιστρέψιmicroος τότε

ndash x = Ab είναι η λύση του συστήmicroατος Ax = b

ndash x = bA είναι η λύση του συστήmicroατος xA = b Οι πράξεις ˆ εκτελούνται microεταξύ των στοιχείων των

πινάκων Πχ [1 2 3 4]ˆ2 δίνει [1 4 9 16]

6

Εντολές Εκφράσεις Μεταβλητές Το Matlab ερmicroηνεύει κάθε γραmicromicroή στην είσοδο Οι εντολές του έχουν

τη microορφή

microεταβλητή=έκφραση

ή απλά

έκφραση Οι εκφράσεις είναι σύνθεση τελεστών microεταβλητών και συναρτήσεων

Ο υπολογισmicroός τους παράγει ένα πίνακα που microπορεί να εmicroφανισθεί

στην έξοδο ή να αποθηκευτεί σε microεταβλητή Οι εντολές τερmicroατίζονται microε το τέλος της γραmicromicroής Συνέχεια σε

περισσότερες από microία γραmicromicroες αν η προηγούmicroενη γραmicromicroή τελειώνει

σε Πολλές εντολές microεταξύ ή γράφονται σε microία γραmicromicroή Εντολή που τελειώνει σε δεν παράγει output στην οθόνη

7

Κατασκευή πινάκων

Μερικές συναρτήσεις (για σύνταξη help όνοmicroα)

eye Μοναδιαίος πίνακας

zeros Μηδενικός πίνακας

ones Πίνακας microε στοιχεία microονάδες

diag ∆ιαγώνιος πίνακας

triu tril ΄Ανω κάτω τριγωνικός πίνακας

rand Πίνακας microε lsquoτυχαίαrsquo στοιχεία

magic Μαγικά τετράγωνα

8

Παρατηρήσεις παραδείγmicroατα zeros(mn) mn microηδενικός πίνακας αλλά zeros(n)

τετραγωνικός microηδενικός πίνακας Για x διάνυσmicroα diag(x) πίνακας microε x στη διαγώνιο Για πίνακα A

diag(A) διάνυσmicroα microε τα διαγώνια στοιχεία του A

ΕΡΩΤΗΣΗ Τι υπολογίζει η diag(diag(A)) Παραγωγή πινάκων από πίνακες αν A είναι 33 τότε

B = [A zeros(32) ones(23) eye(22)]

δίνει πίνακα 55

9

Υποπίνακες Οι εκφράσεις 15 και 020212 είναι στην ουσία τα

διανύσmicroατα [1 2 3 4 5] και

[02 04 06 08 10 12] A(143) διάνυσmicroα microε τα 4 πρώτα στοιχεία της 3ης στήλης του A A(3) είναι ή 3η στήλη του A A([24]) Οι στήλες 2 και 4 του A A([2 4 5]) = B(13) Αντικαθιστά τις στήλες 2 4 και 5 του

A microε τις στήλες 1 2 3 του B

10

Η εντολή for

x = [] for i = 1n x=[xiˆ2] end

ή

x = []

for i = 1n

x=[xiˆ2]

end

Στην πιο γενική της microορφή

s = 0 Gia 2D pinaka A

for c = A Diatrexei tic sthles tou A

s = s + sum(c)

end

11

Η εντολή while

while λογική σχέση

εντολές

end

Παράδειγmicroα υπολογισmicroός του blog2 a13a = 256

n = 0

while 2ˆn lt a

n = n + 1

end

n

και microε χρήση συναρτήσεων n = floor(log2(a))

12

Η εντολή if

if λογική σχέση

εντολές

end

Παράδειγmicroα

if n lt 0

parity = 0

elseif rem(n2) == 0

parity = 2

else

parity = 1

end

13

Λογικές σχέσεις και τελεστές

help relop

Σχέσεις lt gt lt= gt= == =

Τελεστές amp (σύζευξη) | (διάζευξη) ~ (άρνηση)

ΠΑΡΑΤΗΡΗΣΕΙΣ Τιmicroές Αληθής 1 Ψευδής 0 Οι λογικές σχέσεις microεταξύ πινάκων εκτελούνται microεταξύ των στοιχείων

τους και δίνουν πίνακα microε 1 ή 0 στις αντίστοιχες ϑέσεις Πχ

L = [1 2 3 4] gt [1 0 10 0] δίνει την τιmicroή

[0 1 0 1] στον L Οι while και if ερmicroηνεύουν microια σχέση microεταξύ πινάκων σαν αληθή

όταν ο παραγόmicroενος πίνακας έχει όλα τα στοιχεία του = 1 Πχ για το

προηγούmicroενο L η if L disp(rsquoMATLABrsquo) end ∆ΕΝ

ΕΚΤΕΛΕΙΤΑΙ

14

Βαθmicroωτές Συναρτήσεις

Ενεργούν σε ϐαθmicroωτά microεγέθη (δηλ για πίνακα σε κάθε στοιχείο του και

παράγουν πίνακα microε τα αποτελέσmicroατα ίδιας διαστασης microε τον αρχικό)

sin asin exp abs round

cos acos log sqrt floor

tan atan rem sign ceil

ΠΑΡΑ∆ΕΙΓΜΑ

sin([pi pi2 0 pi4]) [00 10 00 0707]

15

∆ιανυσmicroατικές συναρτήσεις

Ενεργούν σε διανύσmicroατα (δηλ για πίνακα σε κάθε στήλη του και

παράγουν πίνακα γραmicromicroή microε τα αποτελέσmicroατα κάθε στήλης)

max sum median any

min prod mean all

sort std

ΠΑΡΑ∆ΕΙΓΜΑΤΑ

max([1 2 3]) 3

max([1 2 3]) 3

max([1 2 3 3 2 1]) [3 2 3]

16

Συναρτήσεις πινάκων

eig Ιδιοδιανύσmicroατα ιδιοτιmicroές

chol Παραγοντοποίηση Choleski

lu Παραγοντοποίηση Gauss

expm eA (συγκρ exp )

sqrtm Τετραγωνική ϱίζα πίνακα (συγκρ sqrt )

det Ορίζουσα

size ∆ιαστάσεις

norm Νόρmicroες

rank Βαθmicroός

17

m-αρχεία

΄Εχουν κατάληξη m

1 Scripts Αρχεία που περιέχουν αλληλουχία εντολών του Matlab Πχ

εντολές στο αρχείο mycommandmεκτελείται microε mycommand

2 Συναρτήσεις ∆υνατότητα δηmicroιουργίας νέων συναρτήσεων Πχ η

νέα εντολή randint ορίζεται στο αρχείο randintm

function a = randint(m n)

RANDINT Randomly generated integral matrix

RANDINT(MN) M-by-N matrix

Elements between 0 and 9

a = floor(10rand(mn))

Τι εmicroφανίζει η help randint

18

Γραφικά - οι συνάρτησεις plot και semilogy

Η συνάρτηση plot(xy) σχεδιάζει 2-διάστατες γραφικές παραστάσεις

του διανύσmicroατος y ως προς x

Παραδειγmicroα

x = -4014

y = sin(x)

plot(xy)

title(rsquoMATLAB plotrsquo)

xlabel(rsquoxrsquo) ylabel(rsquoyrsquo)

Για λογαριθmicroική κλίmicroακα στον άξονα των y semilogy

Παράδειγmicroα

semilogy(xy)

19

Παραδείγmicroατα

Για A=rand(35) B οποιοσδήποτε 35 πίνακας x=rand(51) y

ένα διάνυσmicroα 51 και C=[1 2 3 4 5 6 7 8 9]

1 Πραξεις

A+B A+2 Cˆ2 Cˆ2 CˆC

2 ∆ηmicroιουργία πινάκων

diag(C) diag(y) diag(diag(C)) triu(C)

eye(3)-2 -eye(3)

3 Σύνθετοι πίνακες

D = [A zeros(23) ones(2)]

4 For

s = 0 for i = 15 s = s + x(i) end s sum(x)

20

5 Λογικές σχέσεις

D = triu(C) C == D

6 Συναρτήσεις

sin(B) max(y) rank(B) det(C) size(x)

help eig

eig(C)

[VL]=eig(C)

7 Υποπίνακες

B(123) B(2) B(2) B( [1 5])

M = B M(13)=eye(3)

8 Γραφικά

x=-4014 y = sin(x) plot(xy)

title(rsquoMATLAB plotrsquo) xlabel(rsquoxrsquo) ylabel(rsquosinrsquo)

21

Χρήσιmicroες συναρτήσεις

rand(mn) Τυχαίος πίνακας mn

rand(n) Τυχαίος πίνακας nn

ones(mn) Πίνακας mn microε στοιχεία 1

zeros(mn) Πίνακας mn microε στοιχεία 0

diag(v) ∆ιαγώνιος πίνακας microε το διάνυσmicroα v στην κύρια διαγώνιο

diag(vk) Πίνακας microε το διάνυσmicroα v στην k διαγώνιο (k= 0 κύρια

διαγώνιος kgt 0klt 0 πάνωκάτω από κύρια διαγώνιο

22

Παράδειγmicroα δηmicroιουργία τριδιαγώνιου πίνακα

Η εντολή

10eye(3) + diag(ones(21)1) + diag(ones(21)-1)

δίνει τον τριδιαγώνιο πίνακα0BB 10 1 01 10 10 1 101CCA = 0BB 10 0 00 10 00 0 101CCA+0BB 0 1 00 0 10 0 01CCA+0BB 0 0 01 0 00 1 01CCA

23

Κόστος Αλγορίθmicroων

Για οποιαδήποτε συνάρτηση fun()

1 Αριθmicroός πράξεων flops (δεν υποστηρίζεται σε νεώτερες εκδόσεις του

Matlab)

flops(0) fun() flops

Προσθαφαιρέσεις 1 flop για πραγmicroατικούς 2 flops για microιγαδικούς

Πολσmicroοί διαιρέσεις 1 flop για πραγmicroατικούς 6 flops για

microιγαδικούς

Βασικές συναρτήσεις 1 flop για πραγmicroατικούς περισσότερα για

microιγαδικούς

2 Χρονική διάρκεια

tic fun() toc

24

Παράδειγmicroα Linpack benchmark

Μέτρηση υπολογιστικής ταχύτητας σε MFlopS (= MegaFlopsec) microε ϐάση το

χρόνο που απαιτείται για την επίλυση microε απαλοιφή Gauss γραmicromicroικού

συστήmicroατος 100100

n = 100

A = rand(n)

b = rand(n1)

flops(0)

tic

x = Ab

t = toc

megaflops = flopst1e6

25

Αποτελεσmicroατικότητα συναρτήσεων

Πίνακας A n n microε στοιχεία aij = 1(i + j)ς1ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 14653s

function A = slower(n)

SLOWER(N) pinakas A NxN me A(IJ) = 1(I+J)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

26

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 5: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Πράξεις πινάκων

+ Πρόσθεση help arith

- Αφαίρεση help arith

Πολσmicroός help arith

ˆ Υψωση σε δύναmicroη help arith

rsquo Ανάστροφος πίνακας help punct

Αριστερή διαίρεση help slash

∆εξιά διαίρεση help slash

5

Πράξεις πινάκων (συνεχ)

Παρατηρήσεις Ισχύουν και για ϐαθmicroωτά microεγέθη (= πίνακες 11) Ασυmicroβατότητα διαστάσεων =) ΛΑΘΟΣ

ΕΞΑΙΡΕΣΗ πράξεις microεταξύ πινάκων και αριθmicroών οπότε η πράξη

εκτελείται microεταξύ του αριθmicroού και κάθε στοιχείου του πίνακα Για τις διαιρέσεις Αν ο πίνακας A είναι αντιστρέψιmicroος τότε

ndash x = Ab είναι η λύση του συστήmicroατος Ax = b

ndash x = bA είναι η λύση του συστήmicroατος xA = b Οι πράξεις ˆ εκτελούνται microεταξύ των στοιχείων των

πινάκων Πχ [1 2 3 4]ˆ2 δίνει [1 4 9 16]

6

Εντολές Εκφράσεις Μεταβλητές Το Matlab ερmicroηνεύει κάθε γραmicromicroή στην είσοδο Οι εντολές του έχουν

τη microορφή

microεταβλητή=έκφραση

ή απλά

έκφραση Οι εκφράσεις είναι σύνθεση τελεστών microεταβλητών και συναρτήσεων

Ο υπολογισmicroός τους παράγει ένα πίνακα που microπορεί να εmicroφανισθεί

στην έξοδο ή να αποθηκευτεί σε microεταβλητή Οι εντολές τερmicroατίζονται microε το τέλος της γραmicromicroής Συνέχεια σε

περισσότερες από microία γραmicromicroες αν η προηγούmicroενη γραmicromicroή τελειώνει

σε Πολλές εντολές microεταξύ ή γράφονται σε microία γραmicromicroή Εντολή που τελειώνει σε δεν παράγει output στην οθόνη

7

Κατασκευή πινάκων

Μερικές συναρτήσεις (για σύνταξη help όνοmicroα)

eye Μοναδιαίος πίνακας

zeros Μηδενικός πίνακας

ones Πίνακας microε στοιχεία microονάδες

diag ∆ιαγώνιος πίνακας

triu tril ΄Ανω κάτω τριγωνικός πίνακας

rand Πίνακας microε lsquoτυχαίαrsquo στοιχεία

magic Μαγικά τετράγωνα

8

Παρατηρήσεις παραδείγmicroατα zeros(mn) mn microηδενικός πίνακας αλλά zeros(n)

τετραγωνικός microηδενικός πίνακας Για x διάνυσmicroα diag(x) πίνακας microε x στη διαγώνιο Για πίνακα A

diag(A) διάνυσmicroα microε τα διαγώνια στοιχεία του A

ΕΡΩΤΗΣΗ Τι υπολογίζει η diag(diag(A)) Παραγωγή πινάκων από πίνακες αν A είναι 33 τότε

B = [A zeros(32) ones(23) eye(22)]

δίνει πίνακα 55

9

Υποπίνακες Οι εκφράσεις 15 και 020212 είναι στην ουσία τα

διανύσmicroατα [1 2 3 4 5] και

[02 04 06 08 10 12] A(143) διάνυσmicroα microε τα 4 πρώτα στοιχεία της 3ης στήλης του A A(3) είναι ή 3η στήλη του A A([24]) Οι στήλες 2 και 4 του A A([2 4 5]) = B(13) Αντικαθιστά τις στήλες 2 4 και 5 του

A microε τις στήλες 1 2 3 του B

10

Η εντολή for

x = [] for i = 1n x=[xiˆ2] end

ή

x = []

for i = 1n

x=[xiˆ2]

end

Στην πιο γενική της microορφή

s = 0 Gia 2D pinaka A

for c = A Diatrexei tic sthles tou A

s = s + sum(c)

end

11

Η εντολή while

while λογική σχέση

εντολές

end

Παράδειγmicroα υπολογισmicroός του blog2 a13a = 256

n = 0

while 2ˆn lt a

n = n + 1

end

n

και microε χρήση συναρτήσεων n = floor(log2(a))

12

Η εντολή if

if λογική σχέση

εντολές

end

Παράδειγmicroα

if n lt 0

parity = 0

elseif rem(n2) == 0

parity = 2

else

parity = 1

end

13

Λογικές σχέσεις και τελεστές

help relop

Σχέσεις lt gt lt= gt= == =

Τελεστές amp (σύζευξη) | (διάζευξη) ~ (άρνηση)

ΠΑΡΑΤΗΡΗΣΕΙΣ Τιmicroές Αληθής 1 Ψευδής 0 Οι λογικές σχέσεις microεταξύ πινάκων εκτελούνται microεταξύ των στοιχείων

τους και δίνουν πίνακα microε 1 ή 0 στις αντίστοιχες ϑέσεις Πχ

L = [1 2 3 4] gt [1 0 10 0] δίνει την τιmicroή

[0 1 0 1] στον L Οι while και if ερmicroηνεύουν microια σχέση microεταξύ πινάκων σαν αληθή

όταν ο παραγόmicroενος πίνακας έχει όλα τα στοιχεία του = 1 Πχ για το

προηγούmicroενο L η if L disp(rsquoMATLABrsquo) end ∆ΕΝ

ΕΚΤΕΛΕΙΤΑΙ

14

Βαθmicroωτές Συναρτήσεις

Ενεργούν σε ϐαθmicroωτά microεγέθη (δηλ για πίνακα σε κάθε στοιχείο του και

παράγουν πίνακα microε τα αποτελέσmicroατα ίδιας διαστασης microε τον αρχικό)

sin asin exp abs round

cos acos log sqrt floor

tan atan rem sign ceil

ΠΑΡΑ∆ΕΙΓΜΑ

sin([pi pi2 0 pi4]) [00 10 00 0707]

15

∆ιανυσmicroατικές συναρτήσεις

Ενεργούν σε διανύσmicroατα (δηλ για πίνακα σε κάθε στήλη του και

παράγουν πίνακα γραmicromicroή microε τα αποτελέσmicroατα κάθε στήλης)

max sum median any

min prod mean all

sort std

ΠΑΡΑ∆ΕΙΓΜΑΤΑ

max([1 2 3]) 3

max([1 2 3]) 3

max([1 2 3 3 2 1]) [3 2 3]

16

Συναρτήσεις πινάκων

eig Ιδιοδιανύσmicroατα ιδιοτιmicroές

chol Παραγοντοποίηση Choleski

lu Παραγοντοποίηση Gauss

expm eA (συγκρ exp )

sqrtm Τετραγωνική ϱίζα πίνακα (συγκρ sqrt )

det Ορίζουσα

size ∆ιαστάσεις

norm Νόρmicroες

rank Βαθmicroός

17

m-αρχεία

΄Εχουν κατάληξη m

1 Scripts Αρχεία που περιέχουν αλληλουχία εντολών του Matlab Πχ

εντολές στο αρχείο mycommandmεκτελείται microε mycommand

2 Συναρτήσεις ∆υνατότητα δηmicroιουργίας νέων συναρτήσεων Πχ η

νέα εντολή randint ορίζεται στο αρχείο randintm

function a = randint(m n)

RANDINT Randomly generated integral matrix

RANDINT(MN) M-by-N matrix

Elements between 0 and 9

a = floor(10rand(mn))

Τι εmicroφανίζει η help randint

18

Γραφικά - οι συνάρτησεις plot και semilogy

Η συνάρτηση plot(xy) σχεδιάζει 2-διάστατες γραφικές παραστάσεις

του διανύσmicroατος y ως προς x

Παραδειγmicroα

x = -4014

y = sin(x)

plot(xy)

title(rsquoMATLAB plotrsquo)

xlabel(rsquoxrsquo) ylabel(rsquoyrsquo)

Για λογαριθmicroική κλίmicroακα στον άξονα των y semilogy

Παράδειγmicroα

semilogy(xy)

19

Παραδείγmicroατα

Για A=rand(35) B οποιοσδήποτε 35 πίνακας x=rand(51) y

ένα διάνυσmicroα 51 και C=[1 2 3 4 5 6 7 8 9]

1 Πραξεις

A+B A+2 Cˆ2 Cˆ2 CˆC

2 ∆ηmicroιουργία πινάκων

diag(C) diag(y) diag(diag(C)) triu(C)

eye(3)-2 -eye(3)

3 Σύνθετοι πίνακες

D = [A zeros(23) ones(2)]

4 For

s = 0 for i = 15 s = s + x(i) end s sum(x)

20

5 Λογικές σχέσεις

D = triu(C) C == D

6 Συναρτήσεις

sin(B) max(y) rank(B) det(C) size(x)

help eig

eig(C)

[VL]=eig(C)

7 Υποπίνακες

B(123) B(2) B(2) B( [1 5])

M = B M(13)=eye(3)

8 Γραφικά

x=-4014 y = sin(x) plot(xy)

title(rsquoMATLAB plotrsquo) xlabel(rsquoxrsquo) ylabel(rsquosinrsquo)

21

Χρήσιmicroες συναρτήσεις

rand(mn) Τυχαίος πίνακας mn

rand(n) Τυχαίος πίνακας nn

ones(mn) Πίνακας mn microε στοιχεία 1

zeros(mn) Πίνακας mn microε στοιχεία 0

diag(v) ∆ιαγώνιος πίνακας microε το διάνυσmicroα v στην κύρια διαγώνιο

diag(vk) Πίνακας microε το διάνυσmicroα v στην k διαγώνιο (k= 0 κύρια

διαγώνιος kgt 0klt 0 πάνωκάτω από κύρια διαγώνιο

22

Παράδειγmicroα δηmicroιουργία τριδιαγώνιου πίνακα

Η εντολή

10eye(3) + diag(ones(21)1) + diag(ones(21)-1)

δίνει τον τριδιαγώνιο πίνακα0BB 10 1 01 10 10 1 101CCA = 0BB 10 0 00 10 00 0 101CCA+0BB 0 1 00 0 10 0 01CCA+0BB 0 0 01 0 00 1 01CCA

23

Κόστος Αλγορίθmicroων

Για οποιαδήποτε συνάρτηση fun()

1 Αριθmicroός πράξεων flops (δεν υποστηρίζεται σε νεώτερες εκδόσεις του

Matlab)

flops(0) fun() flops

Προσθαφαιρέσεις 1 flop για πραγmicroατικούς 2 flops για microιγαδικούς

Πολσmicroοί διαιρέσεις 1 flop για πραγmicroατικούς 6 flops για

microιγαδικούς

Βασικές συναρτήσεις 1 flop για πραγmicroατικούς περισσότερα για

microιγαδικούς

2 Χρονική διάρκεια

tic fun() toc

24

Παράδειγmicroα Linpack benchmark

Μέτρηση υπολογιστικής ταχύτητας σε MFlopS (= MegaFlopsec) microε ϐάση το

χρόνο που απαιτείται για την επίλυση microε απαλοιφή Gauss γραmicromicroικού

συστήmicroατος 100100

n = 100

A = rand(n)

b = rand(n1)

flops(0)

tic

x = Ab

t = toc

megaflops = flopst1e6

25

Αποτελεσmicroατικότητα συναρτήσεων

Πίνακας A n n microε στοιχεία aij = 1(i + j)ς1ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 14653s

function A = slower(n)

SLOWER(N) pinakas A NxN me A(IJ) = 1(I+J)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

26

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 6: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Πράξεις πινάκων (συνεχ)

Παρατηρήσεις Ισχύουν και για ϐαθmicroωτά microεγέθη (= πίνακες 11) Ασυmicroβατότητα διαστάσεων =) ΛΑΘΟΣ

ΕΞΑΙΡΕΣΗ πράξεις microεταξύ πινάκων και αριθmicroών οπότε η πράξη

εκτελείται microεταξύ του αριθmicroού και κάθε στοιχείου του πίνακα Για τις διαιρέσεις Αν ο πίνακας A είναι αντιστρέψιmicroος τότε

ndash x = Ab είναι η λύση του συστήmicroατος Ax = b

ndash x = bA είναι η λύση του συστήmicroατος xA = b Οι πράξεις ˆ εκτελούνται microεταξύ των στοιχείων των

πινάκων Πχ [1 2 3 4]ˆ2 δίνει [1 4 9 16]

6

Εντολές Εκφράσεις Μεταβλητές Το Matlab ερmicroηνεύει κάθε γραmicromicroή στην είσοδο Οι εντολές του έχουν

τη microορφή

microεταβλητή=έκφραση

ή απλά

έκφραση Οι εκφράσεις είναι σύνθεση τελεστών microεταβλητών και συναρτήσεων

Ο υπολογισmicroός τους παράγει ένα πίνακα που microπορεί να εmicroφανισθεί

στην έξοδο ή να αποθηκευτεί σε microεταβλητή Οι εντολές τερmicroατίζονται microε το τέλος της γραmicromicroής Συνέχεια σε

περισσότερες από microία γραmicromicroες αν η προηγούmicroενη γραmicromicroή τελειώνει

σε Πολλές εντολές microεταξύ ή γράφονται σε microία γραmicromicroή Εντολή που τελειώνει σε δεν παράγει output στην οθόνη

7

Κατασκευή πινάκων

Μερικές συναρτήσεις (για σύνταξη help όνοmicroα)

eye Μοναδιαίος πίνακας

zeros Μηδενικός πίνακας

ones Πίνακας microε στοιχεία microονάδες

diag ∆ιαγώνιος πίνακας

triu tril ΄Ανω κάτω τριγωνικός πίνακας

rand Πίνακας microε lsquoτυχαίαrsquo στοιχεία

magic Μαγικά τετράγωνα

8

Παρατηρήσεις παραδείγmicroατα zeros(mn) mn microηδενικός πίνακας αλλά zeros(n)

τετραγωνικός microηδενικός πίνακας Για x διάνυσmicroα diag(x) πίνακας microε x στη διαγώνιο Για πίνακα A

diag(A) διάνυσmicroα microε τα διαγώνια στοιχεία του A

ΕΡΩΤΗΣΗ Τι υπολογίζει η diag(diag(A)) Παραγωγή πινάκων από πίνακες αν A είναι 33 τότε

B = [A zeros(32) ones(23) eye(22)]

δίνει πίνακα 55

9

Υποπίνακες Οι εκφράσεις 15 και 020212 είναι στην ουσία τα

διανύσmicroατα [1 2 3 4 5] και

[02 04 06 08 10 12] A(143) διάνυσmicroα microε τα 4 πρώτα στοιχεία της 3ης στήλης του A A(3) είναι ή 3η στήλη του A A([24]) Οι στήλες 2 και 4 του A A([2 4 5]) = B(13) Αντικαθιστά τις στήλες 2 4 και 5 του

A microε τις στήλες 1 2 3 του B

10

Η εντολή for

x = [] for i = 1n x=[xiˆ2] end

ή

x = []

for i = 1n

x=[xiˆ2]

end

Στην πιο γενική της microορφή

s = 0 Gia 2D pinaka A

for c = A Diatrexei tic sthles tou A

s = s + sum(c)

end

11

Η εντολή while

while λογική σχέση

εντολές

end

Παράδειγmicroα υπολογισmicroός του blog2 a13a = 256

n = 0

while 2ˆn lt a

n = n + 1

end

n

και microε χρήση συναρτήσεων n = floor(log2(a))

12

Η εντολή if

if λογική σχέση

εντολές

end

Παράδειγmicroα

if n lt 0

parity = 0

elseif rem(n2) == 0

parity = 2

else

parity = 1

end

13

Λογικές σχέσεις και τελεστές

help relop

Σχέσεις lt gt lt= gt= == =

Τελεστές amp (σύζευξη) | (διάζευξη) ~ (άρνηση)

ΠΑΡΑΤΗΡΗΣΕΙΣ Τιmicroές Αληθής 1 Ψευδής 0 Οι λογικές σχέσεις microεταξύ πινάκων εκτελούνται microεταξύ των στοιχείων

τους και δίνουν πίνακα microε 1 ή 0 στις αντίστοιχες ϑέσεις Πχ

L = [1 2 3 4] gt [1 0 10 0] δίνει την τιmicroή

[0 1 0 1] στον L Οι while και if ερmicroηνεύουν microια σχέση microεταξύ πινάκων σαν αληθή

όταν ο παραγόmicroενος πίνακας έχει όλα τα στοιχεία του = 1 Πχ για το

προηγούmicroενο L η if L disp(rsquoMATLABrsquo) end ∆ΕΝ

ΕΚΤΕΛΕΙΤΑΙ

14

Βαθmicroωτές Συναρτήσεις

Ενεργούν σε ϐαθmicroωτά microεγέθη (δηλ για πίνακα σε κάθε στοιχείο του και

παράγουν πίνακα microε τα αποτελέσmicroατα ίδιας διαστασης microε τον αρχικό)

sin asin exp abs round

cos acos log sqrt floor

tan atan rem sign ceil

ΠΑΡΑ∆ΕΙΓΜΑ

sin([pi pi2 0 pi4]) [00 10 00 0707]

15

∆ιανυσmicroατικές συναρτήσεις

Ενεργούν σε διανύσmicroατα (δηλ για πίνακα σε κάθε στήλη του και

παράγουν πίνακα γραmicromicroή microε τα αποτελέσmicroατα κάθε στήλης)

max sum median any

min prod mean all

sort std

ΠΑΡΑ∆ΕΙΓΜΑΤΑ

max([1 2 3]) 3

max([1 2 3]) 3

max([1 2 3 3 2 1]) [3 2 3]

16

Συναρτήσεις πινάκων

eig Ιδιοδιανύσmicroατα ιδιοτιmicroές

chol Παραγοντοποίηση Choleski

lu Παραγοντοποίηση Gauss

expm eA (συγκρ exp )

sqrtm Τετραγωνική ϱίζα πίνακα (συγκρ sqrt )

det Ορίζουσα

size ∆ιαστάσεις

norm Νόρmicroες

rank Βαθmicroός

17

m-αρχεία

΄Εχουν κατάληξη m

1 Scripts Αρχεία που περιέχουν αλληλουχία εντολών του Matlab Πχ

εντολές στο αρχείο mycommandmεκτελείται microε mycommand

2 Συναρτήσεις ∆υνατότητα δηmicroιουργίας νέων συναρτήσεων Πχ η

νέα εντολή randint ορίζεται στο αρχείο randintm

function a = randint(m n)

RANDINT Randomly generated integral matrix

RANDINT(MN) M-by-N matrix

Elements between 0 and 9

a = floor(10rand(mn))

Τι εmicroφανίζει η help randint

18

Γραφικά - οι συνάρτησεις plot και semilogy

Η συνάρτηση plot(xy) σχεδιάζει 2-διάστατες γραφικές παραστάσεις

του διανύσmicroατος y ως προς x

Παραδειγmicroα

x = -4014

y = sin(x)

plot(xy)

title(rsquoMATLAB plotrsquo)

xlabel(rsquoxrsquo) ylabel(rsquoyrsquo)

Για λογαριθmicroική κλίmicroακα στον άξονα των y semilogy

Παράδειγmicroα

semilogy(xy)

19

Παραδείγmicroατα

Για A=rand(35) B οποιοσδήποτε 35 πίνακας x=rand(51) y

ένα διάνυσmicroα 51 και C=[1 2 3 4 5 6 7 8 9]

1 Πραξεις

A+B A+2 Cˆ2 Cˆ2 CˆC

2 ∆ηmicroιουργία πινάκων

diag(C) diag(y) diag(diag(C)) triu(C)

eye(3)-2 -eye(3)

3 Σύνθετοι πίνακες

D = [A zeros(23) ones(2)]

4 For

s = 0 for i = 15 s = s + x(i) end s sum(x)

20

5 Λογικές σχέσεις

D = triu(C) C == D

6 Συναρτήσεις

sin(B) max(y) rank(B) det(C) size(x)

help eig

eig(C)

[VL]=eig(C)

7 Υποπίνακες

B(123) B(2) B(2) B( [1 5])

M = B M(13)=eye(3)

8 Γραφικά

x=-4014 y = sin(x) plot(xy)

title(rsquoMATLAB plotrsquo) xlabel(rsquoxrsquo) ylabel(rsquosinrsquo)

21

Χρήσιmicroες συναρτήσεις

rand(mn) Τυχαίος πίνακας mn

rand(n) Τυχαίος πίνακας nn

ones(mn) Πίνακας mn microε στοιχεία 1

zeros(mn) Πίνακας mn microε στοιχεία 0

diag(v) ∆ιαγώνιος πίνακας microε το διάνυσmicroα v στην κύρια διαγώνιο

diag(vk) Πίνακας microε το διάνυσmicroα v στην k διαγώνιο (k= 0 κύρια

διαγώνιος kgt 0klt 0 πάνωκάτω από κύρια διαγώνιο

22

Παράδειγmicroα δηmicroιουργία τριδιαγώνιου πίνακα

Η εντολή

10eye(3) + diag(ones(21)1) + diag(ones(21)-1)

δίνει τον τριδιαγώνιο πίνακα0BB 10 1 01 10 10 1 101CCA = 0BB 10 0 00 10 00 0 101CCA+0BB 0 1 00 0 10 0 01CCA+0BB 0 0 01 0 00 1 01CCA

23

Κόστος Αλγορίθmicroων

Για οποιαδήποτε συνάρτηση fun()

1 Αριθmicroός πράξεων flops (δεν υποστηρίζεται σε νεώτερες εκδόσεις του

Matlab)

flops(0) fun() flops

Προσθαφαιρέσεις 1 flop για πραγmicroατικούς 2 flops για microιγαδικούς

Πολσmicroοί διαιρέσεις 1 flop για πραγmicroατικούς 6 flops για

microιγαδικούς

Βασικές συναρτήσεις 1 flop για πραγmicroατικούς περισσότερα για

microιγαδικούς

2 Χρονική διάρκεια

tic fun() toc

24

Παράδειγmicroα Linpack benchmark

Μέτρηση υπολογιστικής ταχύτητας σε MFlopS (= MegaFlopsec) microε ϐάση το

χρόνο που απαιτείται για την επίλυση microε απαλοιφή Gauss γραmicromicroικού

συστήmicroατος 100100

n = 100

A = rand(n)

b = rand(n1)

flops(0)

tic

x = Ab

t = toc

megaflops = flopst1e6

25

Αποτελεσmicroατικότητα συναρτήσεων

Πίνακας A n n microε στοιχεία aij = 1(i + j)ς1ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 14653s

function A = slower(n)

SLOWER(N) pinakas A NxN me A(IJ) = 1(I+J)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

26

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 7: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Εντολές Εκφράσεις Μεταβλητές Το Matlab ερmicroηνεύει κάθε γραmicromicroή στην είσοδο Οι εντολές του έχουν

τη microορφή

microεταβλητή=έκφραση

ή απλά

έκφραση Οι εκφράσεις είναι σύνθεση τελεστών microεταβλητών και συναρτήσεων

Ο υπολογισmicroός τους παράγει ένα πίνακα που microπορεί να εmicroφανισθεί

στην έξοδο ή να αποθηκευτεί σε microεταβλητή Οι εντολές τερmicroατίζονται microε το τέλος της γραmicromicroής Συνέχεια σε

περισσότερες από microία γραmicromicroες αν η προηγούmicroενη γραmicromicroή τελειώνει

σε Πολλές εντολές microεταξύ ή γράφονται σε microία γραmicromicroή Εντολή που τελειώνει σε δεν παράγει output στην οθόνη

7

Κατασκευή πινάκων

Μερικές συναρτήσεις (για σύνταξη help όνοmicroα)

eye Μοναδιαίος πίνακας

zeros Μηδενικός πίνακας

ones Πίνακας microε στοιχεία microονάδες

diag ∆ιαγώνιος πίνακας

triu tril ΄Ανω κάτω τριγωνικός πίνακας

rand Πίνακας microε lsquoτυχαίαrsquo στοιχεία

magic Μαγικά τετράγωνα

8

Παρατηρήσεις παραδείγmicroατα zeros(mn) mn microηδενικός πίνακας αλλά zeros(n)

τετραγωνικός microηδενικός πίνακας Για x διάνυσmicroα diag(x) πίνακας microε x στη διαγώνιο Για πίνακα A

diag(A) διάνυσmicroα microε τα διαγώνια στοιχεία του A

ΕΡΩΤΗΣΗ Τι υπολογίζει η diag(diag(A)) Παραγωγή πινάκων από πίνακες αν A είναι 33 τότε

B = [A zeros(32) ones(23) eye(22)]

δίνει πίνακα 55

9

Υποπίνακες Οι εκφράσεις 15 και 020212 είναι στην ουσία τα

διανύσmicroατα [1 2 3 4 5] και

[02 04 06 08 10 12] A(143) διάνυσmicroα microε τα 4 πρώτα στοιχεία της 3ης στήλης του A A(3) είναι ή 3η στήλη του A A([24]) Οι στήλες 2 και 4 του A A([2 4 5]) = B(13) Αντικαθιστά τις στήλες 2 4 και 5 του

A microε τις στήλες 1 2 3 του B

10

Η εντολή for

x = [] for i = 1n x=[xiˆ2] end

ή

x = []

for i = 1n

x=[xiˆ2]

end

Στην πιο γενική της microορφή

s = 0 Gia 2D pinaka A

for c = A Diatrexei tic sthles tou A

s = s + sum(c)

end

11

Η εντολή while

while λογική σχέση

εντολές

end

Παράδειγmicroα υπολογισmicroός του blog2 a13a = 256

n = 0

while 2ˆn lt a

n = n + 1

end

n

και microε χρήση συναρτήσεων n = floor(log2(a))

12

Η εντολή if

if λογική σχέση

εντολές

end

Παράδειγmicroα

if n lt 0

parity = 0

elseif rem(n2) == 0

parity = 2

else

parity = 1

end

13

Λογικές σχέσεις και τελεστές

help relop

Σχέσεις lt gt lt= gt= == =

Τελεστές amp (σύζευξη) | (διάζευξη) ~ (άρνηση)

ΠΑΡΑΤΗΡΗΣΕΙΣ Τιmicroές Αληθής 1 Ψευδής 0 Οι λογικές σχέσεις microεταξύ πινάκων εκτελούνται microεταξύ των στοιχείων

τους και δίνουν πίνακα microε 1 ή 0 στις αντίστοιχες ϑέσεις Πχ

L = [1 2 3 4] gt [1 0 10 0] δίνει την τιmicroή

[0 1 0 1] στον L Οι while και if ερmicroηνεύουν microια σχέση microεταξύ πινάκων σαν αληθή

όταν ο παραγόmicroενος πίνακας έχει όλα τα στοιχεία του = 1 Πχ για το

προηγούmicroενο L η if L disp(rsquoMATLABrsquo) end ∆ΕΝ

ΕΚΤΕΛΕΙΤΑΙ

14

Βαθmicroωτές Συναρτήσεις

Ενεργούν σε ϐαθmicroωτά microεγέθη (δηλ για πίνακα σε κάθε στοιχείο του και

παράγουν πίνακα microε τα αποτελέσmicroατα ίδιας διαστασης microε τον αρχικό)

sin asin exp abs round

cos acos log sqrt floor

tan atan rem sign ceil

ΠΑΡΑ∆ΕΙΓΜΑ

sin([pi pi2 0 pi4]) [00 10 00 0707]

15

∆ιανυσmicroατικές συναρτήσεις

Ενεργούν σε διανύσmicroατα (δηλ για πίνακα σε κάθε στήλη του και

παράγουν πίνακα γραmicromicroή microε τα αποτελέσmicroατα κάθε στήλης)

max sum median any

min prod mean all

sort std

ΠΑΡΑ∆ΕΙΓΜΑΤΑ

max([1 2 3]) 3

max([1 2 3]) 3

max([1 2 3 3 2 1]) [3 2 3]

16

Συναρτήσεις πινάκων

eig Ιδιοδιανύσmicroατα ιδιοτιmicroές

chol Παραγοντοποίηση Choleski

lu Παραγοντοποίηση Gauss

expm eA (συγκρ exp )

sqrtm Τετραγωνική ϱίζα πίνακα (συγκρ sqrt )

det Ορίζουσα

size ∆ιαστάσεις

norm Νόρmicroες

rank Βαθmicroός

17

m-αρχεία

΄Εχουν κατάληξη m

1 Scripts Αρχεία που περιέχουν αλληλουχία εντολών του Matlab Πχ

εντολές στο αρχείο mycommandmεκτελείται microε mycommand

2 Συναρτήσεις ∆υνατότητα δηmicroιουργίας νέων συναρτήσεων Πχ η

νέα εντολή randint ορίζεται στο αρχείο randintm

function a = randint(m n)

RANDINT Randomly generated integral matrix

RANDINT(MN) M-by-N matrix

Elements between 0 and 9

a = floor(10rand(mn))

Τι εmicroφανίζει η help randint

18

Γραφικά - οι συνάρτησεις plot και semilogy

Η συνάρτηση plot(xy) σχεδιάζει 2-διάστατες γραφικές παραστάσεις

του διανύσmicroατος y ως προς x

Παραδειγmicroα

x = -4014

y = sin(x)

plot(xy)

title(rsquoMATLAB plotrsquo)

xlabel(rsquoxrsquo) ylabel(rsquoyrsquo)

Για λογαριθmicroική κλίmicroακα στον άξονα των y semilogy

Παράδειγmicroα

semilogy(xy)

19

Παραδείγmicroατα

Για A=rand(35) B οποιοσδήποτε 35 πίνακας x=rand(51) y

ένα διάνυσmicroα 51 και C=[1 2 3 4 5 6 7 8 9]

1 Πραξεις

A+B A+2 Cˆ2 Cˆ2 CˆC

2 ∆ηmicroιουργία πινάκων

diag(C) diag(y) diag(diag(C)) triu(C)

eye(3)-2 -eye(3)

3 Σύνθετοι πίνακες

D = [A zeros(23) ones(2)]

4 For

s = 0 for i = 15 s = s + x(i) end s sum(x)

20

5 Λογικές σχέσεις

D = triu(C) C == D

6 Συναρτήσεις

sin(B) max(y) rank(B) det(C) size(x)

help eig

eig(C)

[VL]=eig(C)

7 Υποπίνακες

B(123) B(2) B(2) B( [1 5])

M = B M(13)=eye(3)

8 Γραφικά

x=-4014 y = sin(x) plot(xy)

title(rsquoMATLAB plotrsquo) xlabel(rsquoxrsquo) ylabel(rsquosinrsquo)

21

Χρήσιmicroες συναρτήσεις

rand(mn) Τυχαίος πίνακας mn

rand(n) Τυχαίος πίνακας nn

ones(mn) Πίνακας mn microε στοιχεία 1

zeros(mn) Πίνακας mn microε στοιχεία 0

diag(v) ∆ιαγώνιος πίνακας microε το διάνυσmicroα v στην κύρια διαγώνιο

diag(vk) Πίνακας microε το διάνυσmicroα v στην k διαγώνιο (k= 0 κύρια

διαγώνιος kgt 0klt 0 πάνωκάτω από κύρια διαγώνιο

22

Παράδειγmicroα δηmicroιουργία τριδιαγώνιου πίνακα

Η εντολή

10eye(3) + diag(ones(21)1) + diag(ones(21)-1)

δίνει τον τριδιαγώνιο πίνακα0BB 10 1 01 10 10 1 101CCA = 0BB 10 0 00 10 00 0 101CCA+0BB 0 1 00 0 10 0 01CCA+0BB 0 0 01 0 00 1 01CCA

23

Κόστος Αλγορίθmicroων

Για οποιαδήποτε συνάρτηση fun()

1 Αριθmicroός πράξεων flops (δεν υποστηρίζεται σε νεώτερες εκδόσεις του

Matlab)

flops(0) fun() flops

Προσθαφαιρέσεις 1 flop για πραγmicroατικούς 2 flops για microιγαδικούς

Πολσmicroοί διαιρέσεις 1 flop για πραγmicroατικούς 6 flops για

microιγαδικούς

Βασικές συναρτήσεις 1 flop για πραγmicroατικούς περισσότερα για

microιγαδικούς

2 Χρονική διάρκεια

tic fun() toc

24

Παράδειγmicroα Linpack benchmark

Μέτρηση υπολογιστικής ταχύτητας σε MFlopS (= MegaFlopsec) microε ϐάση το

χρόνο που απαιτείται για την επίλυση microε απαλοιφή Gauss γραmicromicroικού

συστήmicroατος 100100

n = 100

A = rand(n)

b = rand(n1)

flops(0)

tic

x = Ab

t = toc

megaflops = flopst1e6

25

Αποτελεσmicroατικότητα συναρτήσεων

Πίνακας A n n microε στοιχεία aij = 1(i + j)ς1ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 14653s

function A = slower(n)

SLOWER(N) pinakas A NxN me A(IJ) = 1(I+J)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

26

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 8: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Κατασκευή πινάκων

Μερικές συναρτήσεις (για σύνταξη help όνοmicroα)

eye Μοναδιαίος πίνακας

zeros Μηδενικός πίνακας

ones Πίνακας microε στοιχεία microονάδες

diag ∆ιαγώνιος πίνακας

triu tril ΄Ανω κάτω τριγωνικός πίνακας

rand Πίνακας microε lsquoτυχαίαrsquo στοιχεία

magic Μαγικά τετράγωνα

8

Παρατηρήσεις παραδείγmicroατα zeros(mn) mn microηδενικός πίνακας αλλά zeros(n)

τετραγωνικός microηδενικός πίνακας Για x διάνυσmicroα diag(x) πίνακας microε x στη διαγώνιο Για πίνακα A

diag(A) διάνυσmicroα microε τα διαγώνια στοιχεία του A

ΕΡΩΤΗΣΗ Τι υπολογίζει η diag(diag(A)) Παραγωγή πινάκων από πίνακες αν A είναι 33 τότε

B = [A zeros(32) ones(23) eye(22)]

δίνει πίνακα 55

9

Υποπίνακες Οι εκφράσεις 15 και 020212 είναι στην ουσία τα

διανύσmicroατα [1 2 3 4 5] και

[02 04 06 08 10 12] A(143) διάνυσmicroα microε τα 4 πρώτα στοιχεία της 3ης στήλης του A A(3) είναι ή 3η στήλη του A A([24]) Οι στήλες 2 και 4 του A A([2 4 5]) = B(13) Αντικαθιστά τις στήλες 2 4 και 5 του

A microε τις στήλες 1 2 3 του B

10

Η εντολή for

x = [] for i = 1n x=[xiˆ2] end

ή

x = []

for i = 1n

x=[xiˆ2]

end

Στην πιο γενική της microορφή

s = 0 Gia 2D pinaka A

for c = A Diatrexei tic sthles tou A

s = s + sum(c)

end

11

Η εντολή while

while λογική σχέση

εντολές

end

Παράδειγmicroα υπολογισmicroός του blog2 a13a = 256

n = 0

while 2ˆn lt a

n = n + 1

end

n

και microε χρήση συναρτήσεων n = floor(log2(a))

12

Η εντολή if

if λογική σχέση

εντολές

end

Παράδειγmicroα

if n lt 0

parity = 0

elseif rem(n2) == 0

parity = 2

else

parity = 1

end

13

Λογικές σχέσεις και τελεστές

help relop

Σχέσεις lt gt lt= gt= == =

Τελεστές amp (σύζευξη) | (διάζευξη) ~ (άρνηση)

ΠΑΡΑΤΗΡΗΣΕΙΣ Τιmicroές Αληθής 1 Ψευδής 0 Οι λογικές σχέσεις microεταξύ πινάκων εκτελούνται microεταξύ των στοιχείων

τους και δίνουν πίνακα microε 1 ή 0 στις αντίστοιχες ϑέσεις Πχ

L = [1 2 3 4] gt [1 0 10 0] δίνει την τιmicroή

[0 1 0 1] στον L Οι while και if ερmicroηνεύουν microια σχέση microεταξύ πινάκων σαν αληθή

όταν ο παραγόmicroενος πίνακας έχει όλα τα στοιχεία του = 1 Πχ για το

προηγούmicroενο L η if L disp(rsquoMATLABrsquo) end ∆ΕΝ

ΕΚΤΕΛΕΙΤΑΙ

14

Βαθmicroωτές Συναρτήσεις

Ενεργούν σε ϐαθmicroωτά microεγέθη (δηλ για πίνακα σε κάθε στοιχείο του και

παράγουν πίνακα microε τα αποτελέσmicroατα ίδιας διαστασης microε τον αρχικό)

sin asin exp abs round

cos acos log sqrt floor

tan atan rem sign ceil

ΠΑΡΑ∆ΕΙΓΜΑ

sin([pi pi2 0 pi4]) [00 10 00 0707]

15

∆ιανυσmicroατικές συναρτήσεις

Ενεργούν σε διανύσmicroατα (δηλ για πίνακα σε κάθε στήλη του και

παράγουν πίνακα γραmicromicroή microε τα αποτελέσmicroατα κάθε στήλης)

max sum median any

min prod mean all

sort std

ΠΑΡΑ∆ΕΙΓΜΑΤΑ

max([1 2 3]) 3

max([1 2 3]) 3

max([1 2 3 3 2 1]) [3 2 3]

16

Συναρτήσεις πινάκων

eig Ιδιοδιανύσmicroατα ιδιοτιmicroές

chol Παραγοντοποίηση Choleski

lu Παραγοντοποίηση Gauss

expm eA (συγκρ exp )

sqrtm Τετραγωνική ϱίζα πίνακα (συγκρ sqrt )

det Ορίζουσα

size ∆ιαστάσεις

norm Νόρmicroες

rank Βαθmicroός

17

m-αρχεία

΄Εχουν κατάληξη m

1 Scripts Αρχεία που περιέχουν αλληλουχία εντολών του Matlab Πχ

εντολές στο αρχείο mycommandmεκτελείται microε mycommand

2 Συναρτήσεις ∆υνατότητα δηmicroιουργίας νέων συναρτήσεων Πχ η

νέα εντολή randint ορίζεται στο αρχείο randintm

function a = randint(m n)

RANDINT Randomly generated integral matrix

RANDINT(MN) M-by-N matrix

Elements between 0 and 9

a = floor(10rand(mn))

Τι εmicroφανίζει η help randint

18

Γραφικά - οι συνάρτησεις plot και semilogy

Η συνάρτηση plot(xy) σχεδιάζει 2-διάστατες γραφικές παραστάσεις

του διανύσmicroατος y ως προς x

Παραδειγmicroα

x = -4014

y = sin(x)

plot(xy)

title(rsquoMATLAB plotrsquo)

xlabel(rsquoxrsquo) ylabel(rsquoyrsquo)

Για λογαριθmicroική κλίmicroακα στον άξονα των y semilogy

Παράδειγmicroα

semilogy(xy)

19

Παραδείγmicroατα

Για A=rand(35) B οποιοσδήποτε 35 πίνακας x=rand(51) y

ένα διάνυσmicroα 51 και C=[1 2 3 4 5 6 7 8 9]

1 Πραξεις

A+B A+2 Cˆ2 Cˆ2 CˆC

2 ∆ηmicroιουργία πινάκων

diag(C) diag(y) diag(diag(C)) triu(C)

eye(3)-2 -eye(3)

3 Σύνθετοι πίνακες

D = [A zeros(23) ones(2)]

4 For

s = 0 for i = 15 s = s + x(i) end s sum(x)

20

5 Λογικές σχέσεις

D = triu(C) C == D

6 Συναρτήσεις

sin(B) max(y) rank(B) det(C) size(x)

help eig

eig(C)

[VL]=eig(C)

7 Υποπίνακες

B(123) B(2) B(2) B( [1 5])

M = B M(13)=eye(3)

8 Γραφικά

x=-4014 y = sin(x) plot(xy)

title(rsquoMATLAB plotrsquo) xlabel(rsquoxrsquo) ylabel(rsquosinrsquo)

21

Χρήσιmicroες συναρτήσεις

rand(mn) Τυχαίος πίνακας mn

rand(n) Τυχαίος πίνακας nn

ones(mn) Πίνακας mn microε στοιχεία 1

zeros(mn) Πίνακας mn microε στοιχεία 0

diag(v) ∆ιαγώνιος πίνακας microε το διάνυσmicroα v στην κύρια διαγώνιο

diag(vk) Πίνακας microε το διάνυσmicroα v στην k διαγώνιο (k= 0 κύρια

διαγώνιος kgt 0klt 0 πάνωκάτω από κύρια διαγώνιο

22

Παράδειγmicroα δηmicroιουργία τριδιαγώνιου πίνακα

Η εντολή

10eye(3) + diag(ones(21)1) + diag(ones(21)-1)

δίνει τον τριδιαγώνιο πίνακα0BB 10 1 01 10 10 1 101CCA = 0BB 10 0 00 10 00 0 101CCA+0BB 0 1 00 0 10 0 01CCA+0BB 0 0 01 0 00 1 01CCA

23

Κόστος Αλγορίθmicroων

Για οποιαδήποτε συνάρτηση fun()

1 Αριθmicroός πράξεων flops (δεν υποστηρίζεται σε νεώτερες εκδόσεις του

Matlab)

flops(0) fun() flops

Προσθαφαιρέσεις 1 flop για πραγmicroατικούς 2 flops για microιγαδικούς

Πολσmicroοί διαιρέσεις 1 flop για πραγmicroατικούς 6 flops για

microιγαδικούς

Βασικές συναρτήσεις 1 flop για πραγmicroατικούς περισσότερα για

microιγαδικούς

2 Χρονική διάρκεια

tic fun() toc

24

Παράδειγmicroα Linpack benchmark

Μέτρηση υπολογιστικής ταχύτητας σε MFlopS (= MegaFlopsec) microε ϐάση το

χρόνο που απαιτείται για την επίλυση microε απαλοιφή Gauss γραmicromicroικού

συστήmicroατος 100100

n = 100

A = rand(n)

b = rand(n1)

flops(0)

tic

x = Ab

t = toc

megaflops = flopst1e6

25

Αποτελεσmicroατικότητα συναρτήσεων

Πίνακας A n n microε στοιχεία aij = 1(i + j)ς1ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 14653s

function A = slower(n)

SLOWER(N) pinakas A NxN me A(IJ) = 1(I+J)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

26

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 9: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Παρατηρήσεις παραδείγmicroατα zeros(mn) mn microηδενικός πίνακας αλλά zeros(n)

τετραγωνικός microηδενικός πίνακας Για x διάνυσmicroα diag(x) πίνακας microε x στη διαγώνιο Για πίνακα A

diag(A) διάνυσmicroα microε τα διαγώνια στοιχεία του A

ΕΡΩΤΗΣΗ Τι υπολογίζει η diag(diag(A)) Παραγωγή πινάκων από πίνακες αν A είναι 33 τότε

B = [A zeros(32) ones(23) eye(22)]

δίνει πίνακα 55

9

Υποπίνακες Οι εκφράσεις 15 και 020212 είναι στην ουσία τα

διανύσmicroατα [1 2 3 4 5] και

[02 04 06 08 10 12] A(143) διάνυσmicroα microε τα 4 πρώτα στοιχεία της 3ης στήλης του A A(3) είναι ή 3η στήλη του A A([24]) Οι στήλες 2 και 4 του A A([2 4 5]) = B(13) Αντικαθιστά τις στήλες 2 4 και 5 του

A microε τις στήλες 1 2 3 του B

10

Η εντολή for

x = [] for i = 1n x=[xiˆ2] end

ή

x = []

for i = 1n

x=[xiˆ2]

end

Στην πιο γενική της microορφή

s = 0 Gia 2D pinaka A

for c = A Diatrexei tic sthles tou A

s = s + sum(c)

end

11

Η εντολή while

while λογική σχέση

εντολές

end

Παράδειγmicroα υπολογισmicroός του blog2 a13a = 256

n = 0

while 2ˆn lt a

n = n + 1

end

n

και microε χρήση συναρτήσεων n = floor(log2(a))

12

Η εντολή if

if λογική σχέση

εντολές

end

Παράδειγmicroα

if n lt 0

parity = 0

elseif rem(n2) == 0

parity = 2

else

parity = 1

end

13

Λογικές σχέσεις και τελεστές

help relop

Σχέσεις lt gt lt= gt= == =

Τελεστές amp (σύζευξη) | (διάζευξη) ~ (άρνηση)

ΠΑΡΑΤΗΡΗΣΕΙΣ Τιmicroές Αληθής 1 Ψευδής 0 Οι λογικές σχέσεις microεταξύ πινάκων εκτελούνται microεταξύ των στοιχείων

τους και δίνουν πίνακα microε 1 ή 0 στις αντίστοιχες ϑέσεις Πχ

L = [1 2 3 4] gt [1 0 10 0] δίνει την τιmicroή

[0 1 0 1] στον L Οι while και if ερmicroηνεύουν microια σχέση microεταξύ πινάκων σαν αληθή

όταν ο παραγόmicroενος πίνακας έχει όλα τα στοιχεία του = 1 Πχ για το

προηγούmicroενο L η if L disp(rsquoMATLABrsquo) end ∆ΕΝ

ΕΚΤΕΛΕΙΤΑΙ

14

Βαθmicroωτές Συναρτήσεις

Ενεργούν σε ϐαθmicroωτά microεγέθη (δηλ για πίνακα σε κάθε στοιχείο του και

παράγουν πίνακα microε τα αποτελέσmicroατα ίδιας διαστασης microε τον αρχικό)

sin asin exp abs round

cos acos log sqrt floor

tan atan rem sign ceil

ΠΑΡΑ∆ΕΙΓΜΑ

sin([pi pi2 0 pi4]) [00 10 00 0707]

15

∆ιανυσmicroατικές συναρτήσεις

Ενεργούν σε διανύσmicroατα (δηλ για πίνακα σε κάθε στήλη του και

παράγουν πίνακα γραmicromicroή microε τα αποτελέσmicroατα κάθε στήλης)

max sum median any

min prod mean all

sort std

ΠΑΡΑ∆ΕΙΓΜΑΤΑ

max([1 2 3]) 3

max([1 2 3]) 3

max([1 2 3 3 2 1]) [3 2 3]

16

Συναρτήσεις πινάκων

eig Ιδιοδιανύσmicroατα ιδιοτιmicroές

chol Παραγοντοποίηση Choleski

lu Παραγοντοποίηση Gauss

expm eA (συγκρ exp )

sqrtm Τετραγωνική ϱίζα πίνακα (συγκρ sqrt )

det Ορίζουσα

size ∆ιαστάσεις

norm Νόρmicroες

rank Βαθmicroός

17

m-αρχεία

΄Εχουν κατάληξη m

1 Scripts Αρχεία που περιέχουν αλληλουχία εντολών του Matlab Πχ

εντολές στο αρχείο mycommandmεκτελείται microε mycommand

2 Συναρτήσεις ∆υνατότητα δηmicroιουργίας νέων συναρτήσεων Πχ η

νέα εντολή randint ορίζεται στο αρχείο randintm

function a = randint(m n)

RANDINT Randomly generated integral matrix

RANDINT(MN) M-by-N matrix

Elements between 0 and 9

a = floor(10rand(mn))

Τι εmicroφανίζει η help randint

18

Γραφικά - οι συνάρτησεις plot και semilogy

Η συνάρτηση plot(xy) σχεδιάζει 2-διάστατες γραφικές παραστάσεις

του διανύσmicroατος y ως προς x

Παραδειγmicroα

x = -4014

y = sin(x)

plot(xy)

title(rsquoMATLAB plotrsquo)

xlabel(rsquoxrsquo) ylabel(rsquoyrsquo)

Για λογαριθmicroική κλίmicroακα στον άξονα των y semilogy

Παράδειγmicroα

semilogy(xy)

19

Παραδείγmicroατα

Για A=rand(35) B οποιοσδήποτε 35 πίνακας x=rand(51) y

ένα διάνυσmicroα 51 και C=[1 2 3 4 5 6 7 8 9]

1 Πραξεις

A+B A+2 Cˆ2 Cˆ2 CˆC

2 ∆ηmicroιουργία πινάκων

diag(C) diag(y) diag(diag(C)) triu(C)

eye(3)-2 -eye(3)

3 Σύνθετοι πίνακες

D = [A zeros(23) ones(2)]

4 For

s = 0 for i = 15 s = s + x(i) end s sum(x)

20

5 Λογικές σχέσεις

D = triu(C) C == D

6 Συναρτήσεις

sin(B) max(y) rank(B) det(C) size(x)

help eig

eig(C)

[VL]=eig(C)

7 Υποπίνακες

B(123) B(2) B(2) B( [1 5])

M = B M(13)=eye(3)

8 Γραφικά

x=-4014 y = sin(x) plot(xy)

title(rsquoMATLAB plotrsquo) xlabel(rsquoxrsquo) ylabel(rsquosinrsquo)

21

Χρήσιmicroες συναρτήσεις

rand(mn) Τυχαίος πίνακας mn

rand(n) Τυχαίος πίνακας nn

ones(mn) Πίνακας mn microε στοιχεία 1

zeros(mn) Πίνακας mn microε στοιχεία 0

diag(v) ∆ιαγώνιος πίνακας microε το διάνυσmicroα v στην κύρια διαγώνιο

diag(vk) Πίνακας microε το διάνυσmicroα v στην k διαγώνιο (k= 0 κύρια

διαγώνιος kgt 0klt 0 πάνωκάτω από κύρια διαγώνιο

22

Παράδειγmicroα δηmicroιουργία τριδιαγώνιου πίνακα

Η εντολή

10eye(3) + diag(ones(21)1) + diag(ones(21)-1)

δίνει τον τριδιαγώνιο πίνακα0BB 10 1 01 10 10 1 101CCA = 0BB 10 0 00 10 00 0 101CCA+0BB 0 1 00 0 10 0 01CCA+0BB 0 0 01 0 00 1 01CCA

23

Κόστος Αλγορίθmicroων

Για οποιαδήποτε συνάρτηση fun()

1 Αριθmicroός πράξεων flops (δεν υποστηρίζεται σε νεώτερες εκδόσεις του

Matlab)

flops(0) fun() flops

Προσθαφαιρέσεις 1 flop για πραγmicroατικούς 2 flops για microιγαδικούς

Πολσmicroοί διαιρέσεις 1 flop για πραγmicroατικούς 6 flops για

microιγαδικούς

Βασικές συναρτήσεις 1 flop για πραγmicroατικούς περισσότερα για

microιγαδικούς

2 Χρονική διάρκεια

tic fun() toc

24

Παράδειγmicroα Linpack benchmark

Μέτρηση υπολογιστικής ταχύτητας σε MFlopS (= MegaFlopsec) microε ϐάση το

χρόνο που απαιτείται για την επίλυση microε απαλοιφή Gauss γραmicromicroικού

συστήmicroατος 100100

n = 100

A = rand(n)

b = rand(n1)

flops(0)

tic

x = Ab

t = toc

megaflops = flopst1e6

25

Αποτελεσmicroατικότητα συναρτήσεων

Πίνακας A n n microε στοιχεία aij = 1(i + j)ς1ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 14653s

function A = slower(n)

SLOWER(N) pinakas A NxN me A(IJ) = 1(I+J)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

26

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 10: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Υποπίνακες Οι εκφράσεις 15 και 020212 είναι στην ουσία τα

διανύσmicroατα [1 2 3 4 5] και

[02 04 06 08 10 12] A(143) διάνυσmicroα microε τα 4 πρώτα στοιχεία της 3ης στήλης του A A(3) είναι ή 3η στήλη του A A([24]) Οι στήλες 2 και 4 του A A([2 4 5]) = B(13) Αντικαθιστά τις στήλες 2 4 και 5 του

A microε τις στήλες 1 2 3 του B

10

Η εντολή for

x = [] for i = 1n x=[xiˆ2] end

ή

x = []

for i = 1n

x=[xiˆ2]

end

Στην πιο γενική της microορφή

s = 0 Gia 2D pinaka A

for c = A Diatrexei tic sthles tou A

s = s + sum(c)

end

11

Η εντολή while

while λογική σχέση

εντολές

end

Παράδειγmicroα υπολογισmicroός του blog2 a13a = 256

n = 0

while 2ˆn lt a

n = n + 1

end

n

και microε χρήση συναρτήσεων n = floor(log2(a))

12

Η εντολή if

if λογική σχέση

εντολές

end

Παράδειγmicroα

if n lt 0

parity = 0

elseif rem(n2) == 0

parity = 2

else

parity = 1

end

13

Λογικές σχέσεις και τελεστές

help relop

Σχέσεις lt gt lt= gt= == =

Τελεστές amp (σύζευξη) | (διάζευξη) ~ (άρνηση)

ΠΑΡΑΤΗΡΗΣΕΙΣ Τιmicroές Αληθής 1 Ψευδής 0 Οι λογικές σχέσεις microεταξύ πινάκων εκτελούνται microεταξύ των στοιχείων

τους και δίνουν πίνακα microε 1 ή 0 στις αντίστοιχες ϑέσεις Πχ

L = [1 2 3 4] gt [1 0 10 0] δίνει την τιmicroή

[0 1 0 1] στον L Οι while και if ερmicroηνεύουν microια σχέση microεταξύ πινάκων σαν αληθή

όταν ο παραγόmicroενος πίνακας έχει όλα τα στοιχεία του = 1 Πχ για το

προηγούmicroενο L η if L disp(rsquoMATLABrsquo) end ∆ΕΝ

ΕΚΤΕΛΕΙΤΑΙ

14

Βαθmicroωτές Συναρτήσεις

Ενεργούν σε ϐαθmicroωτά microεγέθη (δηλ για πίνακα σε κάθε στοιχείο του και

παράγουν πίνακα microε τα αποτελέσmicroατα ίδιας διαστασης microε τον αρχικό)

sin asin exp abs round

cos acos log sqrt floor

tan atan rem sign ceil

ΠΑΡΑ∆ΕΙΓΜΑ

sin([pi pi2 0 pi4]) [00 10 00 0707]

15

∆ιανυσmicroατικές συναρτήσεις

Ενεργούν σε διανύσmicroατα (δηλ για πίνακα σε κάθε στήλη του και

παράγουν πίνακα γραmicromicroή microε τα αποτελέσmicroατα κάθε στήλης)

max sum median any

min prod mean all

sort std

ΠΑΡΑ∆ΕΙΓΜΑΤΑ

max([1 2 3]) 3

max([1 2 3]) 3

max([1 2 3 3 2 1]) [3 2 3]

16

Συναρτήσεις πινάκων

eig Ιδιοδιανύσmicroατα ιδιοτιmicroές

chol Παραγοντοποίηση Choleski

lu Παραγοντοποίηση Gauss

expm eA (συγκρ exp )

sqrtm Τετραγωνική ϱίζα πίνακα (συγκρ sqrt )

det Ορίζουσα

size ∆ιαστάσεις

norm Νόρmicroες

rank Βαθmicroός

17

m-αρχεία

΄Εχουν κατάληξη m

1 Scripts Αρχεία που περιέχουν αλληλουχία εντολών του Matlab Πχ

εντολές στο αρχείο mycommandmεκτελείται microε mycommand

2 Συναρτήσεις ∆υνατότητα δηmicroιουργίας νέων συναρτήσεων Πχ η

νέα εντολή randint ορίζεται στο αρχείο randintm

function a = randint(m n)

RANDINT Randomly generated integral matrix

RANDINT(MN) M-by-N matrix

Elements between 0 and 9

a = floor(10rand(mn))

Τι εmicroφανίζει η help randint

18

Γραφικά - οι συνάρτησεις plot και semilogy

Η συνάρτηση plot(xy) σχεδιάζει 2-διάστατες γραφικές παραστάσεις

του διανύσmicroατος y ως προς x

Παραδειγmicroα

x = -4014

y = sin(x)

plot(xy)

title(rsquoMATLAB plotrsquo)

xlabel(rsquoxrsquo) ylabel(rsquoyrsquo)

Για λογαριθmicroική κλίmicroακα στον άξονα των y semilogy

Παράδειγmicroα

semilogy(xy)

19

Παραδείγmicroατα

Για A=rand(35) B οποιοσδήποτε 35 πίνακας x=rand(51) y

ένα διάνυσmicroα 51 και C=[1 2 3 4 5 6 7 8 9]

1 Πραξεις

A+B A+2 Cˆ2 Cˆ2 CˆC

2 ∆ηmicroιουργία πινάκων

diag(C) diag(y) diag(diag(C)) triu(C)

eye(3)-2 -eye(3)

3 Σύνθετοι πίνακες

D = [A zeros(23) ones(2)]

4 For

s = 0 for i = 15 s = s + x(i) end s sum(x)

20

5 Λογικές σχέσεις

D = triu(C) C == D

6 Συναρτήσεις

sin(B) max(y) rank(B) det(C) size(x)

help eig

eig(C)

[VL]=eig(C)

7 Υποπίνακες

B(123) B(2) B(2) B( [1 5])

M = B M(13)=eye(3)

8 Γραφικά

x=-4014 y = sin(x) plot(xy)

title(rsquoMATLAB plotrsquo) xlabel(rsquoxrsquo) ylabel(rsquosinrsquo)

21

Χρήσιmicroες συναρτήσεις

rand(mn) Τυχαίος πίνακας mn

rand(n) Τυχαίος πίνακας nn

ones(mn) Πίνακας mn microε στοιχεία 1

zeros(mn) Πίνακας mn microε στοιχεία 0

diag(v) ∆ιαγώνιος πίνακας microε το διάνυσmicroα v στην κύρια διαγώνιο

diag(vk) Πίνακας microε το διάνυσmicroα v στην k διαγώνιο (k= 0 κύρια

διαγώνιος kgt 0klt 0 πάνωκάτω από κύρια διαγώνιο

22

Παράδειγmicroα δηmicroιουργία τριδιαγώνιου πίνακα

Η εντολή

10eye(3) + diag(ones(21)1) + diag(ones(21)-1)

δίνει τον τριδιαγώνιο πίνακα0BB 10 1 01 10 10 1 101CCA = 0BB 10 0 00 10 00 0 101CCA+0BB 0 1 00 0 10 0 01CCA+0BB 0 0 01 0 00 1 01CCA

23

Κόστος Αλγορίθmicroων

Για οποιαδήποτε συνάρτηση fun()

1 Αριθmicroός πράξεων flops (δεν υποστηρίζεται σε νεώτερες εκδόσεις του

Matlab)

flops(0) fun() flops

Προσθαφαιρέσεις 1 flop για πραγmicroατικούς 2 flops για microιγαδικούς

Πολσmicroοί διαιρέσεις 1 flop για πραγmicroατικούς 6 flops για

microιγαδικούς

Βασικές συναρτήσεις 1 flop για πραγmicroατικούς περισσότερα για

microιγαδικούς

2 Χρονική διάρκεια

tic fun() toc

24

Παράδειγmicroα Linpack benchmark

Μέτρηση υπολογιστικής ταχύτητας σε MFlopS (= MegaFlopsec) microε ϐάση το

χρόνο που απαιτείται για την επίλυση microε απαλοιφή Gauss γραmicromicroικού

συστήmicroατος 100100

n = 100

A = rand(n)

b = rand(n1)

flops(0)

tic

x = Ab

t = toc

megaflops = flopst1e6

25

Αποτελεσmicroατικότητα συναρτήσεων

Πίνακας A n n microε στοιχεία aij = 1(i + j)ς1ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 14653s

function A = slower(n)

SLOWER(N) pinakas A NxN me A(IJ) = 1(I+J)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

26

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 11: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Η εντολή for

x = [] for i = 1n x=[xiˆ2] end

ή

x = []

for i = 1n

x=[xiˆ2]

end

Στην πιο γενική της microορφή

s = 0 Gia 2D pinaka A

for c = A Diatrexei tic sthles tou A

s = s + sum(c)

end

11

Η εντολή while

while λογική σχέση

εντολές

end

Παράδειγmicroα υπολογισmicroός του blog2 a13a = 256

n = 0

while 2ˆn lt a

n = n + 1

end

n

και microε χρήση συναρτήσεων n = floor(log2(a))

12

Η εντολή if

if λογική σχέση

εντολές

end

Παράδειγmicroα

if n lt 0

parity = 0

elseif rem(n2) == 0

parity = 2

else

parity = 1

end

13

Λογικές σχέσεις και τελεστές

help relop

Σχέσεις lt gt lt= gt= == =

Τελεστές amp (σύζευξη) | (διάζευξη) ~ (άρνηση)

ΠΑΡΑΤΗΡΗΣΕΙΣ Τιmicroές Αληθής 1 Ψευδής 0 Οι λογικές σχέσεις microεταξύ πινάκων εκτελούνται microεταξύ των στοιχείων

τους και δίνουν πίνακα microε 1 ή 0 στις αντίστοιχες ϑέσεις Πχ

L = [1 2 3 4] gt [1 0 10 0] δίνει την τιmicroή

[0 1 0 1] στον L Οι while και if ερmicroηνεύουν microια σχέση microεταξύ πινάκων σαν αληθή

όταν ο παραγόmicroενος πίνακας έχει όλα τα στοιχεία του = 1 Πχ για το

προηγούmicroενο L η if L disp(rsquoMATLABrsquo) end ∆ΕΝ

ΕΚΤΕΛΕΙΤΑΙ

14

Βαθmicroωτές Συναρτήσεις

Ενεργούν σε ϐαθmicroωτά microεγέθη (δηλ για πίνακα σε κάθε στοιχείο του και

παράγουν πίνακα microε τα αποτελέσmicroατα ίδιας διαστασης microε τον αρχικό)

sin asin exp abs round

cos acos log sqrt floor

tan atan rem sign ceil

ΠΑΡΑ∆ΕΙΓΜΑ

sin([pi pi2 0 pi4]) [00 10 00 0707]

15

∆ιανυσmicroατικές συναρτήσεις

Ενεργούν σε διανύσmicroατα (δηλ για πίνακα σε κάθε στήλη του και

παράγουν πίνακα γραmicromicroή microε τα αποτελέσmicroατα κάθε στήλης)

max sum median any

min prod mean all

sort std

ΠΑΡΑ∆ΕΙΓΜΑΤΑ

max([1 2 3]) 3

max([1 2 3]) 3

max([1 2 3 3 2 1]) [3 2 3]

16

Συναρτήσεις πινάκων

eig Ιδιοδιανύσmicroατα ιδιοτιmicroές

chol Παραγοντοποίηση Choleski

lu Παραγοντοποίηση Gauss

expm eA (συγκρ exp )

sqrtm Τετραγωνική ϱίζα πίνακα (συγκρ sqrt )

det Ορίζουσα

size ∆ιαστάσεις

norm Νόρmicroες

rank Βαθmicroός

17

m-αρχεία

΄Εχουν κατάληξη m

1 Scripts Αρχεία που περιέχουν αλληλουχία εντολών του Matlab Πχ

εντολές στο αρχείο mycommandmεκτελείται microε mycommand

2 Συναρτήσεις ∆υνατότητα δηmicroιουργίας νέων συναρτήσεων Πχ η

νέα εντολή randint ορίζεται στο αρχείο randintm

function a = randint(m n)

RANDINT Randomly generated integral matrix

RANDINT(MN) M-by-N matrix

Elements between 0 and 9

a = floor(10rand(mn))

Τι εmicroφανίζει η help randint

18

Γραφικά - οι συνάρτησεις plot και semilogy

Η συνάρτηση plot(xy) σχεδιάζει 2-διάστατες γραφικές παραστάσεις

του διανύσmicroατος y ως προς x

Παραδειγmicroα

x = -4014

y = sin(x)

plot(xy)

title(rsquoMATLAB plotrsquo)

xlabel(rsquoxrsquo) ylabel(rsquoyrsquo)

Για λογαριθmicroική κλίmicroακα στον άξονα των y semilogy

Παράδειγmicroα

semilogy(xy)

19

Παραδείγmicroατα

Για A=rand(35) B οποιοσδήποτε 35 πίνακας x=rand(51) y

ένα διάνυσmicroα 51 και C=[1 2 3 4 5 6 7 8 9]

1 Πραξεις

A+B A+2 Cˆ2 Cˆ2 CˆC

2 ∆ηmicroιουργία πινάκων

diag(C) diag(y) diag(diag(C)) triu(C)

eye(3)-2 -eye(3)

3 Σύνθετοι πίνακες

D = [A zeros(23) ones(2)]

4 For

s = 0 for i = 15 s = s + x(i) end s sum(x)

20

5 Λογικές σχέσεις

D = triu(C) C == D

6 Συναρτήσεις

sin(B) max(y) rank(B) det(C) size(x)

help eig

eig(C)

[VL]=eig(C)

7 Υποπίνακες

B(123) B(2) B(2) B( [1 5])

M = B M(13)=eye(3)

8 Γραφικά

x=-4014 y = sin(x) plot(xy)

title(rsquoMATLAB plotrsquo) xlabel(rsquoxrsquo) ylabel(rsquosinrsquo)

21

Χρήσιmicroες συναρτήσεις

rand(mn) Τυχαίος πίνακας mn

rand(n) Τυχαίος πίνακας nn

ones(mn) Πίνακας mn microε στοιχεία 1

zeros(mn) Πίνακας mn microε στοιχεία 0

diag(v) ∆ιαγώνιος πίνακας microε το διάνυσmicroα v στην κύρια διαγώνιο

diag(vk) Πίνακας microε το διάνυσmicroα v στην k διαγώνιο (k= 0 κύρια

διαγώνιος kgt 0klt 0 πάνωκάτω από κύρια διαγώνιο

22

Παράδειγmicroα δηmicroιουργία τριδιαγώνιου πίνακα

Η εντολή

10eye(3) + diag(ones(21)1) + diag(ones(21)-1)

δίνει τον τριδιαγώνιο πίνακα0BB 10 1 01 10 10 1 101CCA = 0BB 10 0 00 10 00 0 101CCA+0BB 0 1 00 0 10 0 01CCA+0BB 0 0 01 0 00 1 01CCA

23

Κόστος Αλγορίθmicroων

Για οποιαδήποτε συνάρτηση fun()

1 Αριθmicroός πράξεων flops (δεν υποστηρίζεται σε νεώτερες εκδόσεις του

Matlab)

flops(0) fun() flops

Προσθαφαιρέσεις 1 flop για πραγmicroατικούς 2 flops για microιγαδικούς

Πολσmicroοί διαιρέσεις 1 flop για πραγmicroατικούς 6 flops για

microιγαδικούς

Βασικές συναρτήσεις 1 flop για πραγmicroατικούς περισσότερα για

microιγαδικούς

2 Χρονική διάρκεια

tic fun() toc

24

Παράδειγmicroα Linpack benchmark

Μέτρηση υπολογιστικής ταχύτητας σε MFlopS (= MegaFlopsec) microε ϐάση το

χρόνο που απαιτείται για την επίλυση microε απαλοιφή Gauss γραmicromicroικού

συστήmicroατος 100100

n = 100

A = rand(n)

b = rand(n1)

flops(0)

tic

x = Ab

t = toc

megaflops = flopst1e6

25

Αποτελεσmicroατικότητα συναρτήσεων

Πίνακας A n n microε στοιχεία aij = 1(i + j)ς1ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 14653s

function A = slower(n)

SLOWER(N) pinakas A NxN me A(IJ) = 1(I+J)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

26

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 12: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Η εντολή while

while λογική σχέση

εντολές

end

Παράδειγmicroα υπολογισmicroός του blog2 a13a = 256

n = 0

while 2ˆn lt a

n = n + 1

end

n

και microε χρήση συναρτήσεων n = floor(log2(a))

12

Η εντολή if

if λογική σχέση

εντολές

end

Παράδειγmicroα

if n lt 0

parity = 0

elseif rem(n2) == 0

parity = 2

else

parity = 1

end

13

Λογικές σχέσεις και τελεστές

help relop

Σχέσεις lt gt lt= gt= == =

Τελεστές amp (σύζευξη) | (διάζευξη) ~ (άρνηση)

ΠΑΡΑΤΗΡΗΣΕΙΣ Τιmicroές Αληθής 1 Ψευδής 0 Οι λογικές σχέσεις microεταξύ πινάκων εκτελούνται microεταξύ των στοιχείων

τους και δίνουν πίνακα microε 1 ή 0 στις αντίστοιχες ϑέσεις Πχ

L = [1 2 3 4] gt [1 0 10 0] δίνει την τιmicroή

[0 1 0 1] στον L Οι while και if ερmicroηνεύουν microια σχέση microεταξύ πινάκων σαν αληθή

όταν ο παραγόmicroενος πίνακας έχει όλα τα στοιχεία του = 1 Πχ για το

προηγούmicroενο L η if L disp(rsquoMATLABrsquo) end ∆ΕΝ

ΕΚΤΕΛΕΙΤΑΙ

14

Βαθmicroωτές Συναρτήσεις

Ενεργούν σε ϐαθmicroωτά microεγέθη (δηλ για πίνακα σε κάθε στοιχείο του και

παράγουν πίνακα microε τα αποτελέσmicroατα ίδιας διαστασης microε τον αρχικό)

sin asin exp abs round

cos acos log sqrt floor

tan atan rem sign ceil

ΠΑΡΑ∆ΕΙΓΜΑ

sin([pi pi2 0 pi4]) [00 10 00 0707]

15

∆ιανυσmicroατικές συναρτήσεις

Ενεργούν σε διανύσmicroατα (δηλ για πίνακα σε κάθε στήλη του και

παράγουν πίνακα γραmicromicroή microε τα αποτελέσmicroατα κάθε στήλης)

max sum median any

min prod mean all

sort std

ΠΑΡΑ∆ΕΙΓΜΑΤΑ

max([1 2 3]) 3

max([1 2 3]) 3

max([1 2 3 3 2 1]) [3 2 3]

16

Συναρτήσεις πινάκων

eig Ιδιοδιανύσmicroατα ιδιοτιmicroές

chol Παραγοντοποίηση Choleski

lu Παραγοντοποίηση Gauss

expm eA (συγκρ exp )

sqrtm Τετραγωνική ϱίζα πίνακα (συγκρ sqrt )

det Ορίζουσα

size ∆ιαστάσεις

norm Νόρmicroες

rank Βαθmicroός

17

m-αρχεία

΄Εχουν κατάληξη m

1 Scripts Αρχεία που περιέχουν αλληλουχία εντολών του Matlab Πχ

εντολές στο αρχείο mycommandmεκτελείται microε mycommand

2 Συναρτήσεις ∆υνατότητα δηmicroιουργίας νέων συναρτήσεων Πχ η

νέα εντολή randint ορίζεται στο αρχείο randintm

function a = randint(m n)

RANDINT Randomly generated integral matrix

RANDINT(MN) M-by-N matrix

Elements between 0 and 9

a = floor(10rand(mn))

Τι εmicroφανίζει η help randint

18

Γραφικά - οι συνάρτησεις plot και semilogy

Η συνάρτηση plot(xy) σχεδιάζει 2-διάστατες γραφικές παραστάσεις

του διανύσmicroατος y ως προς x

Παραδειγmicroα

x = -4014

y = sin(x)

plot(xy)

title(rsquoMATLAB plotrsquo)

xlabel(rsquoxrsquo) ylabel(rsquoyrsquo)

Για λογαριθmicroική κλίmicroακα στον άξονα των y semilogy

Παράδειγmicroα

semilogy(xy)

19

Παραδείγmicroατα

Για A=rand(35) B οποιοσδήποτε 35 πίνακας x=rand(51) y

ένα διάνυσmicroα 51 και C=[1 2 3 4 5 6 7 8 9]

1 Πραξεις

A+B A+2 Cˆ2 Cˆ2 CˆC

2 ∆ηmicroιουργία πινάκων

diag(C) diag(y) diag(diag(C)) triu(C)

eye(3)-2 -eye(3)

3 Σύνθετοι πίνακες

D = [A zeros(23) ones(2)]

4 For

s = 0 for i = 15 s = s + x(i) end s sum(x)

20

5 Λογικές σχέσεις

D = triu(C) C == D

6 Συναρτήσεις

sin(B) max(y) rank(B) det(C) size(x)

help eig

eig(C)

[VL]=eig(C)

7 Υποπίνακες

B(123) B(2) B(2) B( [1 5])

M = B M(13)=eye(3)

8 Γραφικά

x=-4014 y = sin(x) plot(xy)

title(rsquoMATLAB plotrsquo) xlabel(rsquoxrsquo) ylabel(rsquosinrsquo)

21

Χρήσιmicroες συναρτήσεις

rand(mn) Τυχαίος πίνακας mn

rand(n) Τυχαίος πίνακας nn

ones(mn) Πίνακας mn microε στοιχεία 1

zeros(mn) Πίνακας mn microε στοιχεία 0

diag(v) ∆ιαγώνιος πίνακας microε το διάνυσmicroα v στην κύρια διαγώνιο

diag(vk) Πίνακας microε το διάνυσmicroα v στην k διαγώνιο (k= 0 κύρια

διαγώνιος kgt 0klt 0 πάνωκάτω από κύρια διαγώνιο

22

Παράδειγmicroα δηmicroιουργία τριδιαγώνιου πίνακα

Η εντολή

10eye(3) + diag(ones(21)1) + diag(ones(21)-1)

δίνει τον τριδιαγώνιο πίνακα0BB 10 1 01 10 10 1 101CCA = 0BB 10 0 00 10 00 0 101CCA+0BB 0 1 00 0 10 0 01CCA+0BB 0 0 01 0 00 1 01CCA

23

Κόστος Αλγορίθmicroων

Για οποιαδήποτε συνάρτηση fun()

1 Αριθmicroός πράξεων flops (δεν υποστηρίζεται σε νεώτερες εκδόσεις του

Matlab)

flops(0) fun() flops

Προσθαφαιρέσεις 1 flop για πραγmicroατικούς 2 flops για microιγαδικούς

Πολσmicroοί διαιρέσεις 1 flop για πραγmicroατικούς 6 flops για

microιγαδικούς

Βασικές συναρτήσεις 1 flop για πραγmicroατικούς περισσότερα για

microιγαδικούς

2 Χρονική διάρκεια

tic fun() toc

24

Παράδειγmicroα Linpack benchmark

Μέτρηση υπολογιστικής ταχύτητας σε MFlopS (= MegaFlopsec) microε ϐάση το

χρόνο που απαιτείται για την επίλυση microε απαλοιφή Gauss γραmicromicroικού

συστήmicroατος 100100

n = 100

A = rand(n)

b = rand(n1)

flops(0)

tic

x = Ab

t = toc

megaflops = flopst1e6

25

Αποτελεσmicroατικότητα συναρτήσεων

Πίνακας A n n microε στοιχεία aij = 1(i + j)ς1ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 14653s

function A = slower(n)

SLOWER(N) pinakas A NxN me A(IJ) = 1(I+J)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

26

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 13: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Η εντολή if

if λογική σχέση

εντολές

end

Παράδειγmicroα

if n lt 0

parity = 0

elseif rem(n2) == 0

parity = 2

else

parity = 1

end

13

Λογικές σχέσεις και τελεστές

help relop

Σχέσεις lt gt lt= gt= == =

Τελεστές amp (σύζευξη) | (διάζευξη) ~ (άρνηση)

ΠΑΡΑΤΗΡΗΣΕΙΣ Τιmicroές Αληθής 1 Ψευδής 0 Οι λογικές σχέσεις microεταξύ πινάκων εκτελούνται microεταξύ των στοιχείων

τους και δίνουν πίνακα microε 1 ή 0 στις αντίστοιχες ϑέσεις Πχ

L = [1 2 3 4] gt [1 0 10 0] δίνει την τιmicroή

[0 1 0 1] στον L Οι while και if ερmicroηνεύουν microια σχέση microεταξύ πινάκων σαν αληθή

όταν ο παραγόmicroενος πίνακας έχει όλα τα στοιχεία του = 1 Πχ για το

προηγούmicroενο L η if L disp(rsquoMATLABrsquo) end ∆ΕΝ

ΕΚΤΕΛΕΙΤΑΙ

14

Βαθmicroωτές Συναρτήσεις

Ενεργούν σε ϐαθmicroωτά microεγέθη (δηλ για πίνακα σε κάθε στοιχείο του και

παράγουν πίνακα microε τα αποτελέσmicroατα ίδιας διαστασης microε τον αρχικό)

sin asin exp abs round

cos acos log sqrt floor

tan atan rem sign ceil

ΠΑΡΑ∆ΕΙΓΜΑ

sin([pi pi2 0 pi4]) [00 10 00 0707]

15

∆ιανυσmicroατικές συναρτήσεις

Ενεργούν σε διανύσmicroατα (δηλ για πίνακα σε κάθε στήλη του και

παράγουν πίνακα γραmicromicroή microε τα αποτελέσmicroατα κάθε στήλης)

max sum median any

min prod mean all

sort std

ΠΑΡΑ∆ΕΙΓΜΑΤΑ

max([1 2 3]) 3

max([1 2 3]) 3

max([1 2 3 3 2 1]) [3 2 3]

16

Συναρτήσεις πινάκων

eig Ιδιοδιανύσmicroατα ιδιοτιmicroές

chol Παραγοντοποίηση Choleski

lu Παραγοντοποίηση Gauss

expm eA (συγκρ exp )

sqrtm Τετραγωνική ϱίζα πίνακα (συγκρ sqrt )

det Ορίζουσα

size ∆ιαστάσεις

norm Νόρmicroες

rank Βαθmicroός

17

m-αρχεία

΄Εχουν κατάληξη m

1 Scripts Αρχεία που περιέχουν αλληλουχία εντολών του Matlab Πχ

εντολές στο αρχείο mycommandmεκτελείται microε mycommand

2 Συναρτήσεις ∆υνατότητα δηmicroιουργίας νέων συναρτήσεων Πχ η

νέα εντολή randint ορίζεται στο αρχείο randintm

function a = randint(m n)

RANDINT Randomly generated integral matrix

RANDINT(MN) M-by-N matrix

Elements between 0 and 9

a = floor(10rand(mn))

Τι εmicroφανίζει η help randint

18

Γραφικά - οι συνάρτησεις plot και semilogy

Η συνάρτηση plot(xy) σχεδιάζει 2-διάστατες γραφικές παραστάσεις

του διανύσmicroατος y ως προς x

Παραδειγmicroα

x = -4014

y = sin(x)

plot(xy)

title(rsquoMATLAB plotrsquo)

xlabel(rsquoxrsquo) ylabel(rsquoyrsquo)

Για λογαριθmicroική κλίmicroακα στον άξονα των y semilogy

Παράδειγmicroα

semilogy(xy)

19

Παραδείγmicroατα

Για A=rand(35) B οποιοσδήποτε 35 πίνακας x=rand(51) y

ένα διάνυσmicroα 51 και C=[1 2 3 4 5 6 7 8 9]

1 Πραξεις

A+B A+2 Cˆ2 Cˆ2 CˆC

2 ∆ηmicroιουργία πινάκων

diag(C) diag(y) diag(diag(C)) triu(C)

eye(3)-2 -eye(3)

3 Σύνθετοι πίνακες

D = [A zeros(23) ones(2)]

4 For

s = 0 for i = 15 s = s + x(i) end s sum(x)

20

5 Λογικές σχέσεις

D = triu(C) C == D

6 Συναρτήσεις

sin(B) max(y) rank(B) det(C) size(x)

help eig

eig(C)

[VL]=eig(C)

7 Υποπίνακες

B(123) B(2) B(2) B( [1 5])

M = B M(13)=eye(3)

8 Γραφικά

x=-4014 y = sin(x) plot(xy)

title(rsquoMATLAB plotrsquo) xlabel(rsquoxrsquo) ylabel(rsquosinrsquo)

21

Χρήσιmicroες συναρτήσεις

rand(mn) Τυχαίος πίνακας mn

rand(n) Τυχαίος πίνακας nn

ones(mn) Πίνακας mn microε στοιχεία 1

zeros(mn) Πίνακας mn microε στοιχεία 0

diag(v) ∆ιαγώνιος πίνακας microε το διάνυσmicroα v στην κύρια διαγώνιο

diag(vk) Πίνακας microε το διάνυσmicroα v στην k διαγώνιο (k= 0 κύρια

διαγώνιος kgt 0klt 0 πάνωκάτω από κύρια διαγώνιο

22

Παράδειγmicroα δηmicroιουργία τριδιαγώνιου πίνακα

Η εντολή

10eye(3) + diag(ones(21)1) + diag(ones(21)-1)

δίνει τον τριδιαγώνιο πίνακα0BB 10 1 01 10 10 1 101CCA = 0BB 10 0 00 10 00 0 101CCA+0BB 0 1 00 0 10 0 01CCA+0BB 0 0 01 0 00 1 01CCA

23

Κόστος Αλγορίθmicroων

Για οποιαδήποτε συνάρτηση fun()

1 Αριθmicroός πράξεων flops (δεν υποστηρίζεται σε νεώτερες εκδόσεις του

Matlab)

flops(0) fun() flops

Προσθαφαιρέσεις 1 flop για πραγmicroατικούς 2 flops για microιγαδικούς

Πολσmicroοί διαιρέσεις 1 flop για πραγmicroατικούς 6 flops για

microιγαδικούς

Βασικές συναρτήσεις 1 flop για πραγmicroατικούς περισσότερα για

microιγαδικούς

2 Χρονική διάρκεια

tic fun() toc

24

Παράδειγmicroα Linpack benchmark

Μέτρηση υπολογιστικής ταχύτητας σε MFlopS (= MegaFlopsec) microε ϐάση το

χρόνο που απαιτείται για την επίλυση microε απαλοιφή Gauss γραmicromicroικού

συστήmicroατος 100100

n = 100

A = rand(n)

b = rand(n1)

flops(0)

tic

x = Ab

t = toc

megaflops = flopst1e6

25

Αποτελεσmicroατικότητα συναρτήσεων

Πίνακας A n n microε στοιχεία aij = 1(i + j)ς1ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 14653s

function A = slower(n)

SLOWER(N) pinakas A NxN me A(IJ) = 1(I+J)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

26

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 14: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Λογικές σχέσεις και τελεστές

help relop

Σχέσεις lt gt lt= gt= == =

Τελεστές amp (σύζευξη) | (διάζευξη) ~ (άρνηση)

ΠΑΡΑΤΗΡΗΣΕΙΣ Τιmicroές Αληθής 1 Ψευδής 0 Οι λογικές σχέσεις microεταξύ πινάκων εκτελούνται microεταξύ των στοιχείων

τους και δίνουν πίνακα microε 1 ή 0 στις αντίστοιχες ϑέσεις Πχ

L = [1 2 3 4] gt [1 0 10 0] δίνει την τιmicroή

[0 1 0 1] στον L Οι while και if ερmicroηνεύουν microια σχέση microεταξύ πινάκων σαν αληθή

όταν ο παραγόmicroενος πίνακας έχει όλα τα στοιχεία του = 1 Πχ για το

προηγούmicroενο L η if L disp(rsquoMATLABrsquo) end ∆ΕΝ

ΕΚΤΕΛΕΙΤΑΙ

14

Βαθmicroωτές Συναρτήσεις

Ενεργούν σε ϐαθmicroωτά microεγέθη (δηλ για πίνακα σε κάθε στοιχείο του και

παράγουν πίνακα microε τα αποτελέσmicroατα ίδιας διαστασης microε τον αρχικό)

sin asin exp abs round

cos acos log sqrt floor

tan atan rem sign ceil

ΠΑΡΑ∆ΕΙΓΜΑ

sin([pi pi2 0 pi4]) [00 10 00 0707]

15

∆ιανυσmicroατικές συναρτήσεις

Ενεργούν σε διανύσmicroατα (δηλ για πίνακα σε κάθε στήλη του και

παράγουν πίνακα γραmicromicroή microε τα αποτελέσmicroατα κάθε στήλης)

max sum median any

min prod mean all

sort std

ΠΑΡΑ∆ΕΙΓΜΑΤΑ

max([1 2 3]) 3

max([1 2 3]) 3

max([1 2 3 3 2 1]) [3 2 3]

16

Συναρτήσεις πινάκων

eig Ιδιοδιανύσmicroατα ιδιοτιmicroές

chol Παραγοντοποίηση Choleski

lu Παραγοντοποίηση Gauss

expm eA (συγκρ exp )

sqrtm Τετραγωνική ϱίζα πίνακα (συγκρ sqrt )

det Ορίζουσα

size ∆ιαστάσεις

norm Νόρmicroες

rank Βαθmicroός

17

m-αρχεία

΄Εχουν κατάληξη m

1 Scripts Αρχεία που περιέχουν αλληλουχία εντολών του Matlab Πχ

εντολές στο αρχείο mycommandmεκτελείται microε mycommand

2 Συναρτήσεις ∆υνατότητα δηmicroιουργίας νέων συναρτήσεων Πχ η

νέα εντολή randint ορίζεται στο αρχείο randintm

function a = randint(m n)

RANDINT Randomly generated integral matrix

RANDINT(MN) M-by-N matrix

Elements between 0 and 9

a = floor(10rand(mn))

Τι εmicroφανίζει η help randint

18

Γραφικά - οι συνάρτησεις plot και semilogy

Η συνάρτηση plot(xy) σχεδιάζει 2-διάστατες γραφικές παραστάσεις

του διανύσmicroατος y ως προς x

Παραδειγmicroα

x = -4014

y = sin(x)

plot(xy)

title(rsquoMATLAB plotrsquo)

xlabel(rsquoxrsquo) ylabel(rsquoyrsquo)

Για λογαριθmicroική κλίmicroακα στον άξονα των y semilogy

Παράδειγmicroα

semilogy(xy)

19

Παραδείγmicroατα

Για A=rand(35) B οποιοσδήποτε 35 πίνακας x=rand(51) y

ένα διάνυσmicroα 51 και C=[1 2 3 4 5 6 7 8 9]

1 Πραξεις

A+B A+2 Cˆ2 Cˆ2 CˆC

2 ∆ηmicroιουργία πινάκων

diag(C) diag(y) diag(diag(C)) triu(C)

eye(3)-2 -eye(3)

3 Σύνθετοι πίνακες

D = [A zeros(23) ones(2)]

4 For

s = 0 for i = 15 s = s + x(i) end s sum(x)

20

5 Λογικές σχέσεις

D = triu(C) C == D

6 Συναρτήσεις

sin(B) max(y) rank(B) det(C) size(x)

help eig

eig(C)

[VL]=eig(C)

7 Υποπίνακες

B(123) B(2) B(2) B( [1 5])

M = B M(13)=eye(3)

8 Γραφικά

x=-4014 y = sin(x) plot(xy)

title(rsquoMATLAB plotrsquo) xlabel(rsquoxrsquo) ylabel(rsquosinrsquo)

21

Χρήσιmicroες συναρτήσεις

rand(mn) Τυχαίος πίνακας mn

rand(n) Τυχαίος πίνακας nn

ones(mn) Πίνακας mn microε στοιχεία 1

zeros(mn) Πίνακας mn microε στοιχεία 0

diag(v) ∆ιαγώνιος πίνακας microε το διάνυσmicroα v στην κύρια διαγώνιο

diag(vk) Πίνακας microε το διάνυσmicroα v στην k διαγώνιο (k= 0 κύρια

διαγώνιος kgt 0klt 0 πάνωκάτω από κύρια διαγώνιο

22

Παράδειγmicroα δηmicroιουργία τριδιαγώνιου πίνακα

Η εντολή

10eye(3) + diag(ones(21)1) + diag(ones(21)-1)

δίνει τον τριδιαγώνιο πίνακα0BB 10 1 01 10 10 1 101CCA = 0BB 10 0 00 10 00 0 101CCA+0BB 0 1 00 0 10 0 01CCA+0BB 0 0 01 0 00 1 01CCA

23

Κόστος Αλγορίθmicroων

Για οποιαδήποτε συνάρτηση fun()

1 Αριθmicroός πράξεων flops (δεν υποστηρίζεται σε νεώτερες εκδόσεις του

Matlab)

flops(0) fun() flops

Προσθαφαιρέσεις 1 flop για πραγmicroατικούς 2 flops για microιγαδικούς

Πολσmicroοί διαιρέσεις 1 flop για πραγmicroατικούς 6 flops για

microιγαδικούς

Βασικές συναρτήσεις 1 flop για πραγmicroατικούς περισσότερα για

microιγαδικούς

2 Χρονική διάρκεια

tic fun() toc

24

Παράδειγmicroα Linpack benchmark

Μέτρηση υπολογιστικής ταχύτητας σε MFlopS (= MegaFlopsec) microε ϐάση το

χρόνο που απαιτείται για την επίλυση microε απαλοιφή Gauss γραmicromicroικού

συστήmicroατος 100100

n = 100

A = rand(n)

b = rand(n1)

flops(0)

tic

x = Ab

t = toc

megaflops = flopst1e6

25

Αποτελεσmicroατικότητα συναρτήσεων

Πίνακας A n n microε στοιχεία aij = 1(i + j)ς1ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 14653s

function A = slower(n)

SLOWER(N) pinakas A NxN me A(IJ) = 1(I+J)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

26

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 15: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Βαθmicroωτές Συναρτήσεις

Ενεργούν σε ϐαθmicroωτά microεγέθη (δηλ για πίνακα σε κάθε στοιχείο του και

παράγουν πίνακα microε τα αποτελέσmicroατα ίδιας διαστασης microε τον αρχικό)

sin asin exp abs round

cos acos log sqrt floor

tan atan rem sign ceil

ΠΑΡΑ∆ΕΙΓΜΑ

sin([pi pi2 0 pi4]) [00 10 00 0707]

15

∆ιανυσmicroατικές συναρτήσεις

Ενεργούν σε διανύσmicroατα (δηλ για πίνακα σε κάθε στήλη του και

παράγουν πίνακα γραmicromicroή microε τα αποτελέσmicroατα κάθε στήλης)

max sum median any

min prod mean all

sort std

ΠΑΡΑ∆ΕΙΓΜΑΤΑ

max([1 2 3]) 3

max([1 2 3]) 3

max([1 2 3 3 2 1]) [3 2 3]

16

Συναρτήσεις πινάκων

eig Ιδιοδιανύσmicroατα ιδιοτιmicroές

chol Παραγοντοποίηση Choleski

lu Παραγοντοποίηση Gauss

expm eA (συγκρ exp )

sqrtm Τετραγωνική ϱίζα πίνακα (συγκρ sqrt )

det Ορίζουσα

size ∆ιαστάσεις

norm Νόρmicroες

rank Βαθmicroός

17

m-αρχεία

΄Εχουν κατάληξη m

1 Scripts Αρχεία που περιέχουν αλληλουχία εντολών του Matlab Πχ

εντολές στο αρχείο mycommandmεκτελείται microε mycommand

2 Συναρτήσεις ∆υνατότητα δηmicroιουργίας νέων συναρτήσεων Πχ η

νέα εντολή randint ορίζεται στο αρχείο randintm

function a = randint(m n)

RANDINT Randomly generated integral matrix

RANDINT(MN) M-by-N matrix

Elements between 0 and 9

a = floor(10rand(mn))

Τι εmicroφανίζει η help randint

18

Γραφικά - οι συνάρτησεις plot και semilogy

Η συνάρτηση plot(xy) σχεδιάζει 2-διάστατες γραφικές παραστάσεις

του διανύσmicroατος y ως προς x

Παραδειγmicroα

x = -4014

y = sin(x)

plot(xy)

title(rsquoMATLAB plotrsquo)

xlabel(rsquoxrsquo) ylabel(rsquoyrsquo)

Για λογαριθmicroική κλίmicroακα στον άξονα των y semilogy

Παράδειγmicroα

semilogy(xy)

19

Παραδείγmicroατα

Για A=rand(35) B οποιοσδήποτε 35 πίνακας x=rand(51) y

ένα διάνυσmicroα 51 και C=[1 2 3 4 5 6 7 8 9]

1 Πραξεις

A+B A+2 Cˆ2 Cˆ2 CˆC

2 ∆ηmicroιουργία πινάκων

diag(C) diag(y) diag(diag(C)) triu(C)

eye(3)-2 -eye(3)

3 Σύνθετοι πίνακες

D = [A zeros(23) ones(2)]

4 For

s = 0 for i = 15 s = s + x(i) end s sum(x)

20

5 Λογικές σχέσεις

D = triu(C) C == D

6 Συναρτήσεις

sin(B) max(y) rank(B) det(C) size(x)

help eig

eig(C)

[VL]=eig(C)

7 Υποπίνακες

B(123) B(2) B(2) B( [1 5])

M = B M(13)=eye(3)

8 Γραφικά

x=-4014 y = sin(x) plot(xy)

title(rsquoMATLAB plotrsquo) xlabel(rsquoxrsquo) ylabel(rsquosinrsquo)

21

Χρήσιmicroες συναρτήσεις

rand(mn) Τυχαίος πίνακας mn

rand(n) Τυχαίος πίνακας nn

ones(mn) Πίνακας mn microε στοιχεία 1

zeros(mn) Πίνακας mn microε στοιχεία 0

diag(v) ∆ιαγώνιος πίνακας microε το διάνυσmicroα v στην κύρια διαγώνιο

diag(vk) Πίνακας microε το διάνυσmicroα v στην k διαγώνιο (k= 0 κύρια

διαγώνιος kgt 0klt 0 πάνωκάτω από κύρια διαγώνιο

22

Παράδειγmicroα δηmicroιουργία τριδιαγώνιου πίνακα

Η εντολή

10eye(3) + diag(ones(21)1) + diag(ones(21)-1)

δίνει τον τριδιαγώνιο πίνακα0BB 10 1 01 10 10 1 101CCA = 0BB 10 0 00 10 00 0 101CCA+0BB 0 1 00 0 10 0 01CCA+0BB 0 0 01 0 00 1 01CCA

23

Κόστος Αλγορίθmicroων

Για οποιαδήποτε συνάρτηση fun()

1 Αριθmicroός πράξεων flops (δεν υποστηρίζεται σε νεώτερες εκδόσεις του

Matlab)

flops(0) fun() flops

Προσθαφαιρέσεις 1 flop για πραγmicroατικούς 2 flops για microιγαδικούς

Πολσmicroοί διαιρέσεις 1 flop για πραγmicroατικούς 6 flops για

microιγαδικούς

Βασικές συναρτήσεις 1 flop για πραγmicroατικούς περισσότερα για

microιγαδικούς

2 Χρονική διάρκεια

tic fun() toc

24

Παράδειγmicroα Linpack benchmark

Μέτρηση υπολογιστικής ταχύτητας σε MFlopS (= MegaFlopsec) microε ϐάση το

χρόνο που απαιτείται για την επίλυση microε απαλοιφή Gauss γραmicromicroικού

συστήmicroατος 100100

n = 100

A = rand(n)

b = rand(n1)

flops(0)

tic

x = Ab

t = toc

megaflops = flopst1e6

25

Αποτελεσmicroατικότητα συναρτήσεων

Πίνακας A n n microε στοιχεία aij = 1(i + j)ς1ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 14653s

function A = slower(n)

SLOWER(N) pinakas A NxN me A(IJ) = 1(I+J)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

26

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 16: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

∆ιανυσmicroατικές συναρτήσεις

Ενεργούν σε διανύσmicroατα (δηλ για πίνακα σε κάθε στήλη του και

παράγουν πίνακα γραmicromicroή microε τα αποτελέσmicroατα κάθε στήλης)

max sum median any

min prod mean all

sort std

ΠΑΡΑ∆ΕΙΓΜΑΤΑ

max([1 2 3]) 3

max([1 2 3]) 3

max([1 2 3 3 2 1]) [3 2 3]

16

Συναρτήσεις πινάκων

eig Ιδιοδιανύσmicroατα ιδιοτιmicroές

chol Παραγοντοποίηση Choleski

lu Παραγοντοποίηση Gauss

expm eA (συγκρ exp )

sqrtm Τετραγωνική ϱίζα πίνακα (συγκρ sqrt )

det Ορίζουσα

size ∆ιαστάσεις

norm Νόρmicroες

rank Βαθmicroός

17

m-αρχεία

΄Εχουν κατάληξη m

1 Scripts Αρχεία που περιέχουν αλληλουχία εντολών του Matlab Πχ

εντολές στο αρχείο mycommandmεκτελείται microε mycommand

2 Συναρτήσεις ∆υνατότητα δηmicroιουργίας νέων συναρτήσεων Πχ η

νέα εντολή randint ορίζεται στο αρχείο randintm

function a = randint(m n)

RANDINT Randomly generated integral matrix

RANDINT(MN) M-by-N matrix

Elements between 0 and 9

a = floor(10rand(mn))

Τι εmicroφανίζει η help randint

18

Γραφικά - οι συνάρτησεις plot και semilogy

Η συνάρτηση plot(xy) σχεδιάζει 2-διάστατες γραφικές παραστάσεις

του διανύσmicroατος y ως προς x

Παραδειγmicroα

x = -4014

y = sin(x)

plot(xy)

title(rsquoMATLAB plotrsquo)

xlabel(rsquoxrsquo) ylabel(rsquoyrsquo)

Για λογαριθmicroική κλίmicroακα στον άξονα των y semilogy

Παράδειγmicroα

semilogy(xy)

19

Παραδείγmicroατα

Για A=rand(35) B οποιοσδήποτε 35 πίνακας x=rand(51) y

ένα διάνυσmicroα 51 και C=[1 2 3 4 5 6 7 8 9]

1 Πραξεις

A+B A+2 Cˆ2 Cˆ2 CˆC

2 ∆ηmicroιουργία πινάκων

diag(C) diag(y) diag(diag(C)) triu(C)

eye(3)-2 -eye(3)

3 Σύνθετοι πίνακες

D = [A zeros(23) ones(2)]

4 For

s = 0 for i = 15 s = s + x(i) end s sum(x)

20

5 Λογικές σχέσεις

D = triu(C) C == D

6 Συναρτήσεις

sin(B) max(y) rank(B) det(C) size(x)

help eig

eig(C)

[VL]=eig(C)

7 Υποπίνακες

B(123) B(2) B(2) B( [1 5])

M = B M(13)=eye(3)

8 Γραφικά

x=-4014 y = sin(x) plot(xy)

title(rsquoMATLAB plotrsquo) xlabel(rsquoxrsquo) ylabel(rsquosinrsquo)

21

Χρήσιmicroες συναρτήσεις

rand(mn) Τυχαίος πίνακας mn

rand(n) Τυχαίος πίνακας nn

ones(mn) Πίνακας mn microε στοιχεία 1

zeros(mn) Πίνακας mn microε στοιχεία 0

diag(v) ∆ιαγώνιος πίνακας microε το διάνυσmicroα v στην κύρια διαγώνιο

diag(vk) Πίνακας microε το διάνυσmicroα v στην k διαγώνιο (k= 0 κύρια

διαγώνιος kgt 0klt 0 πάνωκάτω από κύρια διαγώνιο

22

Παράδειγmicroα δηmicroιουργία τριδιαγώνιου πίνακα

Η εντολή

10eye(3) + diag(ones(21)1) + diag(ones(21)-1)

δίνει τον τριδιαγώνιο πίνακα0BB 10 1 01 10 10 1 101CCA = 0BB 10 0 00 10 00 0 101CCA+0BB 0 1 00 0 10 0 01CCA+0BB 0 0 01 0 00 1 01CCA

23

Κόστος Αλγορίθmicroων

Για οποιαδήποτε συνάρτηση fun()

1 Αριθmicroός πράξεων flops (δεν υποστηρίζεται σε νεώτερες εκδόσεις του

Matlab)

flops(0) fun() flops

Προσθαφαιρέσεις 1 flop για πραγmicroατικούς 2 flops για microιγαδικούς

Πολσmicroοί διαιρέσεις 1 flop για πραγmicroατικούς 6 flops για

microιγαδικούς

Βασικές συναρτήσεις 1 flop για πραγmicroατικούς περισσότερα για

microιγαδικούς

2 Χρονική διάρκεια

tic fun() toc

24

Παράδειγmicroα Linpack benchmark

Μέτρηση υπολογιστικής ταχύτητας σε MFlopS (= MegaFlopsec) microε ϐάση το

χρόνο που απαιτείται για την επίλυση microε απαλοιφή Gauss γραmicromicroικού

συστήmicroατος 100100

n = 100

A = rand(n)

b = rand(n1)

flops(0)

tic

x = Ab

t = toc

megaflops = flopst1e6

25

Αποτελεσmicroατικότητα συναρτήσεων

Πίνακας A n n microε στοιχεία aij = 1(i + j)ς1ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 14653s

function A = slower(n)

SLOWER(N) pinakas A NxN me A(IJ) = 1(I+J)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

26

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 17: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Συναρτήσεις πινάκων

eig Ιδιοδιανύσmicroατα ιδιοτιmicroές

chol Παραγοντοποίηση Choleski

lu Παραγοντοποίηση Gauss

expm eA (συγκρ exp )

sqrtm Τετραγωνική ϱίζα πίνακα (συγκρ sqrt )

det Ορίζουσα

size ∆ιαστάσεις

norm Νόρmicroες

rank Βαθmicroός

17

m-αρχεία

΄Εχουν κατάληξη m

1 Scripts Αρχεία που περιέχουν αλληλουχία εντολών του Matlab Πχ

εντολές στο αρχείο mycommandmεκτελείται microε mycommand

2 Συναρτήσεις ∆υνατότητα δηmicroιουργίας νέων συναρτήσεων Πχ η

νέα εντολή randint ορίζεται στο αρχείο randintm

function a = randint(m n)

RANDINT Randomly generated integral matrix

RANDINT(MN) M-by-N matrix

Elements between 0 and 9

a = floor(10rand(mn))

Τι εmicroφανίζει η help randint

18

Γραφικά - οι συνάρτησεις plot και semilogy

Η συνάρτηση plot(xy) σχεδιάζει 2-διάστατες γραφικές παραστάσεις

του διανύσmicroατος y ως προς x

Παραδειγmicroα

x = -4014

y = sin(x)

plot(xy)

title(rsquoMATLAB plotrsquo)

xlabel(rsquoxrsquo) ylabel(rsquoyrsquo)

Για λογαριθmicroική κλίmicroακα στον άξονα των y semilogy

Παράδειγmicroα

semilogy(xy)

19

Παραδείγmicroατα

Για A=rand(35) B οποιοσδήποτε 35 πίνακας x=rand(51) y

ένα διάνυσmicroα 51 και C=[1 2 3 4 5 6 7 8 9]

1 Πραξεις

A+B A+2 Cˆ2 Cˆ2 CˆC

2 ∆ηmicroιουργία πινάκων

diag(C) diag(y) diag(diag(C)) triu(C)

eye(3)-2 -eye(3)

3 Σύνθετοι πίνακες

D = [A zeros(23) ones(2)]

4 For

s = 0 for i = 15 s = s + x(i) end s sum(x)

20

5 Λογικές σχέσεις

D = triu(C) C == D

6 Συναρτήσεις

sin(B) max(y) rank(B) det(C) size(x)

help eig

eig(C)

[VL]=eig(C)

7 Υποπίνακες

B(123) B(2) B(2) B( [1 5])

M = B M(13)=eye(3)

8 Γραφικά

x=-4014 y = sin(x) plot(xy)

title(rsquoMATLAB plotrsquo) xlabel(rsquoxrsquo) ylabel(rsquosinrsquo)

21

Χρήσιmicroες συναρτήσεις

rand(mn) Τυχαίος πίνακας mn

rand(n) Τυχαίος πίνακας nn

ones(mn) Πίνακας mn microε στοιχεία 1

zeros(mn) Πίνακας mn microε στοιχεία 0

diag(v) ∆ιαγώνιος πίνακας microε το διάνυσmicroα v στην κύρια διαγώνιο

diag(vk) Πίνακας microε το διάνυσmicroα v στην k διαγώνιο (k= 0 κύρια

διαγώνιος kgt 0klt 0 πάνωκάτω από κύρια διαγώνιο

22

Παράδειγmicroα δηmicroιουργία τριδιαγώνιου πίνακα

Η εντολή

10eye(3) + diag(ones(21)1) + diag(ones(21)-1)

δίνει τον τριδιαγώνιο πίνακα0BB 10 1 01 10 10 1 101CCA = 0BB 10 0 00 10 00 0 101CCA+0BB 0 1 00 0 10 0 01CCA+0BB 0 0 01 0 00 1 01CCA

23

Κόστος Αλγορίθmicroων

Για οποιαδήποτε συνάρτηση fun()

1 Αριθmicroός πράξεων flops (δεν υποστηρίζεται σε νεώτερες εκδόσεις του

Matlab)

flops(0) fun() flops

Προσθαφαιρέσεις 1 flop για πραγmicroατικούς 2 flops για microιγαδικούς

Πολσmicroοί διαιρέσεις 1 flop για πραγmicroατικούς 6 flops για

microιγαδικούς

Βασικές συναρτήσεις 1 flop για πραγmicroατικούς περισσότερα για

microιγαδικούς

2 Χρονική διάρκεια

tic fun() toc

24

Παράδειγmicroα Linpack benchmark

Μέτρηση υπολογιστικής ταχύτητας σε MFlopS (= MegaFlopsec) microε ϐάση το

χρόνο που απαιτείται για την επίλυση microε απαλοιφή Gauss γραmicromicroικού

συστήmicroατος 100100

n = 100

A = rand(n)

b = rand(n1)

flops(0)

tic

x = Ab

t = toc

megaflops = flopst1e6

25

Αποτελεσmicroατικότητα συναρτήσεων

Πίνακας A n n microε στοιχεία aij = 1(i + j)ς1ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 14653s

function A = slower(n)

SLOWER(N) pinakas A NxN me A(IJ) = 1(I+J)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

26

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 18: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

m-αρχεία

΄Εχουν κατάληξη m

1 Scripts Αρχεία που περιέχουν αλληλουχία εντολών του Matlab Πχ

εντολές στο αρχείο mycommandmεκτελείται microε mycommand

2 Συναρτήσεις ∆υνατότητα δηmicroιουργίας νέων συναρτήσεων Πχ η

νέα εντολή randint ορίζεται στο αρχείο randintm

function a = randint(m n)

RANDINT Randomly generated integral matrix

RANDINT(MN) M-by-N matrix

Elements between 0 and 9

a = floor(10rand(mn))

Τι εmicroφανίζει η help randint

18

Γραφικά - οι συνάρτησεις plot και semilogy

Η συνάρτηση plot(xy) σχεδιάζει 2-διάστατες γραφικές παραστάσεις

του διανύσmicroατος y ως προς x

Παραδειγmicroα

x = -4014

y = sin(x)

plot(xy)

title(rsquoMATLAB plotrsquo)

xlabel(rsquoxrsquo) ylabel(rsquoyrsquo)

Για λογαριθmicroική κλίmicroακα στον άξονα των y semilogy

Παράδειγmicroα

semilogy(xy)

19

Παραδείγmicroατα

Για A=rand(35) B οποιοσδήποτε 35 πίνακας x=rand(51) y

ένα διάνυσmicroα 51 και C=[1 2 3 4 5 6 7 8 9]

1 Πραξεις

A+B A+2 Cˆ2 Cˆ2 CˆC

2 ∆ηmicroιουργία πινάκων

diag(C) diag(y) diag(diag(C)) triu(C)

eye(3)-2 -eye(3)

3 Σύνθετοι πίνακες

D = [A zeros(23) ones(2)]

4 For

s = 0 for i = 15 s = s + x(i) end s sum(x)

20

5 Λογικές σχέσεις

D = triu(C) C == D

6 Συναρτήσεις

sin(B) max(y) rank(B) det(C) size(x)

help eig

eig(C)

[VL]=eig(C)

7 Υποπίνακες

B(123) B(2) B(2) B( [1 5])

M = B M(13)=eye(3)

8 Γραφικά

x=-4014 y = sin(x) plot(xy)

title(rsquoMATLAB plotrsquo) xlabel(rsquoxrsquo) ylabel(rsquosinrsquo)

21

Χρήσιmicroες συναρτήσεις

rand(mn) Τυχαίος πίνακας mn

rand(n) Τυχαίος πίνακας nn

ones(mn) Πίνακας mn microε στοιχεία 1

zeros(mn) Πίνακας mn microε στοιχεία 0

diag(v) ∆ιαγώνιος πίνακας microε το διάνυσmicroα v στην κύρια διαγώνιο

diag(vk) Πίνακας microε το διάνυσmicroα v στην k διαγώνιο (k= 0 κύρια

διαγώνιος kgt 0klt 0 πάνωκάτω από κύρια διαγώνιο

22

Παράδειγmicroα δηmicroιουργία τριδιαγώνιου πίνακα

Η εντολή

10eye(3) + diag(ones(21)1) + diag(ones(21)-1)

δίνει τον τριδιαγώνιο πίνακα0BB 10 1 01 10 10 1 101CCA = 0BB 10 0 00 10 00 0 101CCA+0BB 0 1 00 0 10 0 01CCA+0BB 0 0 01 0 00 1 01CCA

23

Κόστος Αλγορίθmicroων

Για οποιαδήποτε συνάρτηση fun()

1 Αριθmicroός πράξεων flops (δεν υποστηρίζεται σε νεώτερες εκδόσεις του

Matlab)

flops(0) fun() flops

Προσθαφαιρέσεις 1 flop για πραγmicroατικούς 2 flops για microιγαδικούς

Πολσmicroοί διαιρέσεις 1 flop για πραγmicroατικούς 6 flops για

microιγαδικούς

Βασικές συναρτήσεις 1 flop για πραγmicroατικούς περισσότερα για

microιγαδικούς

2 Χρονική διάρκεια

tic fun() toc

24

Παράδειγmicroα Linpack benchmark

Μέτρηση υπολογιστικής ταχύτητας σε MFlopS (= MegaFlopsec) microε ϐάση το

χρόνο που απαιτείται για την επίλυση microε απαλοιφή Gauss γραmicromicroικού

συστήmicroατος 100100

n = 100

A = rand(n)

b = rand(n1)

flops(0)

tic

x = Ab

t = toc

megaflops = flopst1e6

25

Αποτελεσmicroατικότητα συναρτήσεων

Πίνακας A n n microε στοιχεία aij = 1(i + j)ς1ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 14653s

function A = slower(n)

SLOWER(N) pinakas A NxN me A(IJ) = 1(I+J)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

26

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 19: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Γραφικά - οι συνάρτησεις plot και semilogy

Η συνάρτηση plot(xy) σχεδιάζει 2-διάστατες γραφικές παραστάσεις

του διανύσmicroατος y ως προς x

Παραδειγmicroα

x = -4014

y = sin(x)

plot(xy)

title(rsquoMATLAB plotrsquo)

xlabel(rsquoxrsquo) ylabel(rsquoyrsquo)

Για λογαριθmicroική κλίmicroακα στον άξονα των y semilogy

Παράδειγmicroα

semilogy(xy)

19

Παραδείγmicroατα

Για A=rand(35) B οποιοσδήποτε 35 πίνακας x=rand(51) y

ένα διάνυσmicroα 51 και C=[1 2 3 4 5 6 7 8 9]

1 Πραξεις

A+B A+2 Cˆ2 Cˆ2 CˆC

2 ∆ηmicroιουργία πινάκων

diag(C) diag(y) diag(diag(C)) triu(C)

eye(3)-2 -eye(3)

3 Σύνθετοι πίνακες

D = [A zeros(23) ones(2)]

4 For

s = 0 for i = 15 s = s + x(i) end s sum(x)

20

5 Λογικές σχέσεις

D = triu(C) C == D

6 Συναρτήσεις

sin(B) max(y) rank(B) det(C) size(x)

help eig

eig(C)

[VL]=eig(C)

7 Υποπίνακες

B(123) B(2) B(2) B( [1 5])

M = B M(13)=eye(3)

8 Γραφικά

x=-4014 y = sin(x) plot(xy)

title(rsquoMATLAB plotrsquo) xlabel(rsquoxrsquo) ylabel(rsquosinrsquo)

21

Χρήσιmicroες συναρτήσεις

rand(mn) Τυχαίος πίνακας mn

rand(n) Τυχαίος πίνακας nn

ones(mn) Πίνακας mn microε στοιχεία 1

zeros(mn) Πίνακας mn microε στοιχεία 0

diag(v) ∆ιαγώνιος πίνακας microε το διάνυσmicroα v στην κύρια διαγώνιο

diag(vk) Πίνακας microε το διάνυσmicroα v στην k διαγώνιο (k= 0 κύρια

διαγώνιος kgt 0klt 0 πάνωκάτω από κύρια διαγώνιο

22

Παράδειγmicroα δηmicroιουργία τριδιαγώνιου πίνακα

Η εντολή

10eye(3) + diag(ones(21)1) + diag(ones(21)-1)

δίνει τον τριδιαγώνιο πίνακα0BB 10 1 01 10 10 1 101CCA = 0BB 10 0 00 10 00 0 101CCA+0BB 0 1 00 0 10 0 01CCA+0BB 0 0 01 0 00 1 01CCA

23

Κόστος Αλγορίθmicroων

Για οποιαδήποτε συνάρτηση fun()

1 Αριθmicroός πράξεων flops (δεν υποστηρίζεται σε νεώτερες εκδόσεις του

Matlab)

flops(0) fun() flops

Προσθαφαιρέσεις 1 flop για πραγmicroατικούς 2 flops για microιγαδικούς

Πολσmicroοί διαιρέσεις 1 flop για πραγmicroατικούς 6 flops για

microιγαδικούς

Βασικές συναρτήσεις 1 flop για πραγmicroατικούς περισσότερα για

microιγαδικούς

2 Χρονική διάρκεια

tic fun() toc

24

Παράδειγmicroα Linpack benchmark

Μέτρηση υπολογιστικής ταχύτητας σε MFlopS (= MegaFlopsec) microε ϐάση το

χρόνο που απαιτείται για την επίλυση microε απαλοιφή Gauss γραmicromicroικού

συστήmicroατος 100100

n = 100

A = rand(n)

b = rand(n1)

flops(0)

tic

x = Ab

t = toc

megaflops = flopst1e6

25

Αποτελεσmicroατικότητα συναρτήσεων

Πίνακας A n n microε στοιχεία aij = 1(i + j)ς1ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 14653s

function A = slower(n)

SLOWER(N) pinakas A NxN me A(IJ) = 1(I+J)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

26

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 20: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Παραδείγmicroατα

Για A=rand(35) B οποιοσδήποτε 35 πίνακας x=rand(51) y

ένα διάνυσmicroα 51 και C=[1 2 3 4 5 6 7 8 9]

1 Πραξεις

A+B A+2 Cˆ2 Cˆ2 CˆC

2 ∆ηmicroιουργία πινάκων

diag(C) diag(y) diag(diag(C)) triu(C)

eye(3)-2 -eye(3)

3 Σύνθετοι πίνακες

D = [A zeros(23) ones(2)]

4 For

s = 0 for i = 15 s = s + x(i) end s sum(x)

20

5 Λογικές σχέσεις

D = triu(C) C == D

6 Συναρτήσεις

sin(B) max(y) rank(B) det(C) size(x)

help eig

eig(C)

[VL]=eig(C)

7 Υποπίνακες

B(123) B(2) B(2) B( [1 5])

M = B M(13)=eye(3)

8 Γραφικά

x=-4014 y = sin(x) plot(xy)

title(rsquoMATLAB plotrsquo) xlabel(rsquoxrsquo) ylabel(rsquosinrsquo)

21

Χρήσιmicroες συναρτήσεις

rand(mn) Τυχαίος πίνακας mn

rand(n) Τυχαίος πίνακας nn

ones(mn) Πίνακας mn microε στοιχεία 1

zeros(mn) Πίνακας mn microε στοιχεία 0

diag(v) ∆ιαγώνιος πίνακας microε το διάνυσmicroα v στην κύρια διαγώνιο

diag(vk) Πίνακας microε το διάνυσmicroα v στην k διαγώνιο (k= 0 κύρια

διαγώνιος kgt 0klt 0 πάνωκάτω από κύρια διαγώνιο

22

Παράδειγmicroα δηmicroιουργία τριδιαγώνιου πίνακα

Η εντολή

10eye(3) + diag(ones(21)1) + diag(ones(21)-1)

δίνει τον τριδιαγώνιο πίνακα0BB 10 1 01 10 10 1 101CCA = 0BB 10 0 00 10 00 0 101CCA+0BB 0 1 00 0 10 0 01CCA+0BB 0 0 01 0 00 1 01CCA

23

Κόστος Αλγορίθmicroων

Για οποιαδήποτε συνάρτηση fun()

1 Αριθmicroός πράξεων flops (δεν υποστηρίζεται σε νεώτερες εκδόσεις του

Matlab)

flops(0) fun() flops

Προσθαφαιρέσεις 1 flop για πραγmicroατικούς 2 flops για microιγαδικούς

Πολσmicroοί διαιρέσεις 1 flop για πραγmicroατικούς 6 flops για

microιγαδικούς

Βασικές συναρτήσεις 1 flop για πραγmicroατικούς περισσότερα για

microιγαδικούς

2 Χρονική διάρκεια

tic fun() toc

24

Παράδειγmicroα Linpack benchmark

Μέτρηση υπολογιστικής ταχύτητας σε MFlopS (= MegaFlopsec) microε ϐάση το

χρόνο που απαιτείται για την επίλυση microε απαλοιφή Gauss γραmicromicroικού

συστήmicroατος 100100

n = 100

A = rand(n)

b = rand(n1)

flops(0)

tic

x = Ab

t = toc

megaflops = flopst1e6

25

Αποτελεσmicroατικότητα συναρτήσεων

Πίνακας A n n microε στοιχεία aij = 1(i + j)ς1ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 14653s

function A = slower(n)

SLOWER(N) pinakas A NxN me A(IJ) = 1(I+J)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

26

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 21: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

5 Λογικές σχέσεις

D = triu(C) C == D

6 Συναρτήσεις

sin(B) max(y) rank(B) det(C) size(x)

help eig

eig(C)

[VL]=eig(C)

7 Υποπίνακες

B(123) B(2) B(2) B( [1 5])

M = B M(13)=eye(3)

8 Γραφικά

x=-4014 y = sin(x) plot(xy)

title(rsquoMATLAB plotrsquo) xlabel(rsquoxrsquo) ylabel(rsquosinrsquo)

21

Χρήσιmicroες συναρτήσεις

rand(mn) Τυχαίος πίνακας mn

rand(n) Τυχαίος πίνακας nn

ones(mn) Πίνακας mn microε στοιχεία 1

zeros(mn) Πίνακας mn microε στοιχεία 0

diag(v) ∆ιαγώνιος πίνακας microε το διάνυσmicroα v στην κύρια διαγώνιο

diag(vk) Πίνακας microε το διάνυσmicroα v στην k διαγώνιο (k= 0 κύρια

διαγώνιος kgt 0klt 0 πάνωκάτω από κύρια διαγώνιο

22

Παράδειγmicroα δηmicroιουργία τριδιαγώνιου πίνακα

Η εντολή

10eye(3) + diag(ones(21)1) + diag(ones(21)-1)

δίνει τον τριδιαγώνιο πίνακα0BB 10 1 01 10 10 1 101CCA = 0BB 10 0 00 10 00 0 101CCA+0BB 0 1 00 0 10 0 01CCA+0BB 0 0 01 0 00 1 01CCA

23

Κόστος Αλγορίθmicroων

Για οποιαδήποτε συνάρτηση fun()

1 Αριθmicroός πράξεων flops (δεν υποστηρίζεται σε νεώτερες εκδόσεις του

Matlab)

flops(0) fun() flops

Προσθαφαιρέσεις 1 flop για πραγmicroατικούς 2 flops για microιγαδικούς

Πολσmicroοί διαιρέσεις 1 flop για πραγmicroατικούς 6 flops για

microιγαδικούς

Βασικές συναρτήσεις 1 flop για πραγmicroατικούς περισσότερα για

microιγαδικούς

2 Χρονική διάρκεια

tic fun() toc

24

Παράδειγmicroα Linpack benchmark

Μέτρηση υπολογιστικής ταχύτητας σε MFlopS (= MegaFlopsec) microε ϐάση το

χρόνο που απαιτείται για την επίλυση microε απαλοιφή Gauss γραmicromicroικού

συστήmicroατος 100100

n = 100

A = rand(n)

b = rand(n1)

flops(0)

tic

x = Ab

t = toc

megaflops = flopst1e6

25

Αποτελεσmicroατικότητα συναρτήσεων

Πίνακας A n n microε στοιχεία aij = 1(i + j)ς1ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 14653s

function A = slower(n)

SLOWER(N) pinakas A NxN me A(IJ) = 1(I+J)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

26

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 22: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Χρήσιmicroες συναρτήσεις

rand(mn) Τυχαίος πίνακας mn

rand(n) Τυχαίος πίνακας nn

ones(mn) Πίνακας mn microε στοιχεία 1

zeros(mn) Πίνακας mn microε στοιχεία 0

diag(v) ∆ιαγώνιος πίνακας microε το διάνυσmicroα v στην κύρια διαγώνιο

diag(vk) Πίνακας microε το διάνυσmicroα v στην k διαγώνιο (k= 0 κύρια

διαγώνιος kgt 0klt 0 πάνωκάτω από κύρια διαγώνιο

22

Παράδειγmicroα δηmicroιουργία τριδιαγώνιου πίνακα

Η εντολή

10eye(3) + diag(ones(21)1) + diag(ones(21)-1)

δίνει τον τριδιαγώνιο πίνακα0BB 10 1 01 10 10 1 101CCA = 0BB 10 0 00 10 00 0 101CCA+0BB 0 1 00 0 10 0 01CCA+0BB 0 0 01 0 00 1 01CCA

23

Κόστος Αλγορίθmicroων

Για οποιαδήποτε συνάρτηση fun()

1 Αριθmicroός πράξεων flops (δεν υποστηρίζεται σε νεώτερες εκδόσεις του

Matlab)

flops(0) fun() flops

Προσθαφαιρέσεις 1 flop για πραγmicroατικούς 2 flops για microιγαδικούς

Πολσmicroοί διαιρέσεις 1 flop για πραγmicroατικούς 6 flops για

microιγαδικούς

Βασικές συναρτήσεις 1 flop για πραγmicroατικούς περισσότερα για

microιγαδικούς

2 Χρονική διάρκεια

tic fun() toc

24

Παράδειγmicroα Linpack benchmark

Μέτρηση υπολογιστικής ταχύτητας σε MFlopS (= MegaFlopsec) microε ϐάση το

χρόνο που απαιτείται για την επίλυση microε απαλοιφή Gauss γραmicromicroικού

συστήmicroατος 100100

n = 100

A = rand(n)

b = rand(n1)

flops(0)

tic

x = Ab

t = toc

megaflops = flopst1e6

25

Αποτελεσmicroατικότητα συναρτήσεων

Πίνακας A n n microε στοιχεία aij = 1(i + j)ς1ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 14653s

function A = slower(n)

SLOWER(N) pinakas A NxN me A(IJ) = 1(I+J)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

26

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 23: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Παράδειγmicroα δηmicroιουργία τριδιαγώνιου πίνακα

Η εντολή

10eye(3) + diag(ones(21)1) + diag(ones(21)-1)

δίνει τον τριδιαγώνιο πίνακα0BB 10 1 01 10 10 1 101CCA = 0BB 10 0 00 10 00 0 101CCA+0BB 0 1 00 0 10 0 01CCA+0BB 0 0 01 0 00 1 01CCA

23

Κόστος Αλγορίθmicroων

Για οποιαδήποτε συνάρτηση fun()

1 Αριθmicroός πράξεων flops (δεν υποστηρίζεται σε νεώτερες εκδόσεις του

Matlab)

flops(0) fun() flops

Προσθαφαιρέσεις 1 flop για πραγmicroατικούς 2 flops για microιγαδικούς

Πολσmicroοί διαιρέσεις 1 flop για πραγmicroατικούς 6 flops για

microιγαδικούς

Βασικές συναρτήσεις 1 flop για πραγmicroατικούς περισσότερα για

microιγαδικούς

2 Χρονική διάρκεια

tic fun() toc

24

Παράδειγmicroα Linpack benchmark

Μέτρηση υπολογιστικής ταχύτητας σε MFlopS (= MegaFlopsec) microε ϐάση το

χρόνο που απαιτείται για την επίλυση microε απαλοιφή Gauss γραmicromicroικού

συστήmicroατος 100100

n = 100

A = rand(n)

b = rand(n1)

flops(0)

tic

x = Ab

t = toc

megaflops = flopst1e6

25

Αποτελεσmicroατικότητα συναρτήσεων

Πίνακας A n n microε στοιχεία aij = 1(i + j)ς1ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 14653s

function A = slower(n)

SLOWER(N) pinakas A NxN me A(IJ) = 1(I+J)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

26

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 24: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Κόστος Αλγορίθmicroων

Για οποιαδήποτε συνάρτηση fun()

1 Αριθmicroός πράξεων flops (δεν υποστηρίζεται σε νεώτερες εκδόσεις του

Matlab)

flops(0) fun() flops

Προσθαφαιρέσεις 1 flop για πραγmicroατικούς 2 flops για microιγαδικούς

Πολσmicroοί διαιρέσεις 1 flop για πραγmicroατικούς 6 flops για

microιγαδικούς

Βασικές συναρτήσεις 1 flop για πραγmicroατικούς περισσότερα για

microιγαδικούς

2 Χρονική διάρκεια

tic fun() toc

24

Παράδειγmicroα Linpack benchmark

Μέτρηση υπολογιστικής ταχύτητας σε MFlopS (= MegaFlopsec) microε ϐάση το

χρόνο που απαιτείται για την επίλυση microε απαλοιφή Gauss γραmicromicroικού

συστήmicroατος 100100

n = 100

A = rand(n)

b = rand(n1)

flops(0)

tic

x = Ab

t = toc

megaflops = flopst1e6

25

Αποτελεσmicroατικότητα συναρτήσεων

Πίνακας A n n microε στοιχεία aij = 1(i + j)ς1ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 14653s

function A = slower(n)

SLOWER(N) pinakas A NxN me A(IJ) = 1(I+J)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

26

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 25: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Παράδειγmicroα Linpack benchmark

Μέτρηση υπολογιστικής ταχύτητας σε MFlopS (= MegaFlopsec) microε ϐάση το

χρόνο που απαιτείται για την επίλυση microε απαλοιφή Gauss γραmicromicroικού

συστήmicroατος 100100

n = 100

A = rand(n)

b = rand(n1)

flops(0)

tic

x = Ab

t = toc

megaflops = flopst1e6

25

Αποτελεσmicroατικότητα συναρτήσεων

Πίνακας A n n microε στοιχεία aij = 1(i + j)ς1ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 14653s

function A = slower(n)

SLOWER(N) pinakas A NxN me A(IJ) = 1(I+J)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

26

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 26: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Αποτελεσmicroατικότητα συναρτήσεων

Πίνακας A n n microε στοιχεία aij = 1(i + j)ς1ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 14653s

function A = slower(n)

SLOWER(N) pinakas A NxN me A(IJ) = 1(I+J)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

26

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 27: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

2ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 12001s

function A = slow(n)

SLOW(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

for i=1n

for j=1n

A(ij) = 1 (i+j)

end

end

27

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 28: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

3ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 138s

function A = fast(n)

FAST(N) pinakas A NxN me A(IJ) = 1(I+J)

Y = zeros(n)

for i=1n

Y(i) = 1n

end

A = 1(Y + Yrsquo)

28

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 29: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

4ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 094s

function A = faster(n)

FASTER(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = 1n

for i=1n

A(i) = 1(tmp + i)

end

29

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 30: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Αποτελεσmicroατικότητα συναρτήσεων (συνεχ)

Πίνακας A n n microε στοιχεία aij = 1(i + j)

5ος τρόπος χρόνος εκτέλεσης για n = 500 σε Pentium 1 069s

function A = fastest(n)

FASTEST(N) pinakas A NxN me A(IJ) = 1(I+J)

A = zeros(n)

tmp = (1n)rsquo

for i=1n

A(i) = 1(tmp + i)

end

30

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 31: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Χρόνοι εκτέλεσης σε Pentium 4

n slower slow fast faster fastest

500 445 107 006 003 002

1000 3026 414 029 011 007

1 15 2 25 3 35 4 45 510

minus2

10minus1

100

101

102

slower

slow

fast

faster

fastest

time

n=500 n=1000

31

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 32: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Οδηγίες για γρηγορότερα προγράmicromicroατα Matlab ∆έσmicroευσε εκ των προτέρων χώρο για πίνακες (πχ microε την

zeros(mn) ) Χρησιmicroοποίησε πράξεις σε ολόκληρα διανύσmicroατα ή πίνακες αντί για

ϐρόγχους επανάληψης microε ϐαθmicroωτά microεγέθη Χρησιmicroοποίησε εσωτερικές συναρτήσεις του Matlab όπου είναι

δυνατόν

32

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 33: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Επίλυση γραmicromicroικών συστηmicroάτων

Αν A πίνακας nn και b x διανύσmicroατα στήλες τότε

x = Ab

υπολογίζει τη λύση του συστήmicroατος Ax = b microε κάποια microορφή απαλοιφής

Gauss

Αλγόριθmicroοι

1 A συmicromicroετρικός παραγοντοποίηση Choleski

2 A microη συmicromicroετρικός απαλοιφή Gauss microε microερική οδήγηση

Στη γενικευmicroένη microορφή του ο τελεστής επιλύει συστήmicroατα πινάκων

AX = B microε A διαστάσεωνmn (Οταν m6=n γίνεται επίλυση ελαχίστων

τετραγώνων)

33

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 34: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Αντιστροφή πίνακα

Αντίστροφος του τετραγωνικού πίνακα X

Y = inv(X) Στην πράξη η αντιστροφή χρησιmicroοποιείται πολύ σπάνια Η συνηθέστερη κατάχρηση της για επίλυση γραmicromicroικών συστηmicroάτων Η

απαλοιφή Gauss (τελεστής ) υπερέχει σε ακρίβεια και υπολογιστικό

χρόνο

34

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 35: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Νόρmicroες και δείκτης κατάστασης

norm(X) norm(X2) υπολογίζει k k2norm(X1) υπολογίζει k k1norm(Xinf) norm(XInf) υπολογίζει k k1

Για το δείκτη κατάστασης του πίνακα X στην Ευκλείδεια νόρmicroα

kappa = cond(X)

35

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36

Page 36: Matlab? Τι είναι το · 2011-03-26 · Τα πάντα είναι πίνακες! Βασικό αντικείµενο του Matlab είναι οι πίνακες (πραγµατικοί

Πίνακες Hilbert

Πίνακας Hilbert τάξης n

H = hilb(n)

Κλασσικό παράδειγmicroα πινάκων microε υψηλό δείκτη κατάστασης

Ο αντίστροφος πίνακα Hilbert υπολογίζεται microε

H = invhilb(n)

ακριβώς (χωρίς σφάλmicroατα περικοπής) για n 13 και προσεγγιστικά για

microεγαλύτερα n

Η invhilb(n) σε σχέση microε inv(hilb(n)) αντιmicroετωπίζει καλύτερα

τα σφάλmicroατα περικοπής στην παράσταση των hilb(n) και invhilb(n) στη διαδικασία αντιστροφής

36