Τι είναι το 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
Βοήθεια στο 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
Τα πάντα είναι πίνακες
Βασικό αντικεί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
Εισαγωγή πινάκων
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
Πράξεις πινάκων
+ Πρόσθεση 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
Πράξεις πινάκων (συνεχ)
Παρατηρήσεις Ισχύουν και για ϐαθ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
Εντολές Εκφράσεις Μεταβλητές Το 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
Κατασκευή πινάκων
Μερικές συναρτήσεις (για σύνταξη 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
Παρατηρήσεις παραδείγ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
Υποπίνακες Οι εκφράσεις 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
Η εντολή 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
Η εντολή 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
Η εντολή 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
Λογικές σχέσεις και τελεστές
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
Βαθ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
∆ιανυσ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
Συναρτήσεις πινάκων
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
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
Γραφικά - οι συνάρτησεις 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
Παραδείγ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
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
Χρήσι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
Παράδειγ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
Κόστος Αλγορίθ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
Παράδειγ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
Αποτελεσ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
Αποτελεσ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
Αποτελεσ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
Αποτελεσ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
Αποτελεσ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
Χρόνοι εκτέλεσης σε 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
Οδηγίες για γρηγορότερα προγρά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
Επίλυση γρα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
Αντιστροφή πίνακα
Αντίστροφος του τετραγωνικού πίνακα 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
Νόρ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
Πίνακες 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