ΣΗΜΕΙΩΣΕΙΣ MATLAB
Οι βασικοί λόγοι που έχουν καταστήσει το MATLAB ένα από τα πιο δημοφιλή επιστημονικά πακέτα λογισμικού είναι οι εξής:
α) το
περιβάλλον του είναι φιλικό προς τον χρήστη
β) παρέχει άμεσες δυνατότητες γραφικής απεικόνισης
γ) έχει πληθώρα ενσωματωμένων συναρτήσεων
δ) παρέχει τη δυνατότητα προσθήκης συναρτήσεων γραμμένων από τον χρήστη
ε) ο προγραμματισμός στο MATLAB είναι απλός
στ) περιλαμβάνει πληθώρα εργαλείων από διάφορες επιστημονικές περιοχές
1. ΒΑΣΙΚΕΣ ΛΕΙΤΟΥΡΓΙΕΣ ΤΟΥ MATLAB
Για να μπούμε στο MATLAB κάνουμε διπλό κλικ στο εικονίδιο του MATLAB και για να βγούμε πληκτρολογούμε quit. Το προτρεπτικό σήμα (prompt) του MATLAB είναι το >>.
1.1. Απλές αριθμητικές πράξεις
Το MATLAB χρησιμοποιεί τους τελεστές +, -, * και / για τις τέσσερις αριθμητικές πράξεις. Παραδείγματος χάριν:
>> 3 + 5
ans =
8
>> 3 - 5
ans =
-2
>> 3 * 5
ans =
15
>> 3/5
ans =
0.6
Οι πράξεις μπορούν να συνδεθούν και αλυσιδωτά όπως:
>> 3 + 5 + 2
ans =
10
>> 3 * 3 * 3
ans =
27
όπου ειδικά για την τελευταία υπάρχει και ο τελεστής της ύψωσης σε δύναμη ^:
>> 3^3
ans =
27
Το MATLAB, εκτός από τον τελεστή της διαίρεσης από τα αριστερά /, διαθέτει και τελεστή διαίρεσης από τα δεξιά:
>> 2/4
ans =
0.5
>> 2\4
ans =
2
Για πιό πολύπλοκες εκφράσεις χρησιμοποιούνται παρενθέσεις κατά τον συνήθη τρόπο:
>> 2^5 + 4*(33 2*(6+2/7))
ans =
113.7143
Χρήση βελών στο MATLAB: το βέλος προς τα επάνω (ญ) χρησιμοποιείται για να ανακληθούν οι προηγούμενες γραμμές που πληκτρολογήσαμε και τα βέλη προς τα αριστερά (ฌ) και προς τα δεξιά (ฎ) για να μεταφέρουμε τον δρομέα σε κάποιο σημείο της γραμμής. Με το βέλος προς τα κάτω (ฏ) μπορούμε να ξανακινηθούμε προς τα κάτω στις γραμμές αφού προηγουμένως έχουμε κινηθεί προς τα επάνω. Τέλος, μπορούμε να πληκτρολογήσουμε νέα στοιχεία αμέσως μετά τον δρομέα ή να διαγράψουμε στοιχεία πριν τον δρομέα με τα πλήκτρα DELETE και BACKSPACE αντίστοιχα.
1.2. Ενσωματωμένες συναρτήσεις
Το MATLAB μας παρέχει ένα πλήθος ενσωματωμένων συναρτήσεων όπως τετραγωνική ρίζα, εκθετικές και λογαριθμικές συναρτήσεις, τριγωνομετρικές και αντίστροφες τριγωνομετρικές συναρτήσεις κ.ά.:
>> sqrt(2) % τετραγωνική ρίζα
ans =
1.4142
>> exp(1) % εκθετική συνάρτηση
ans =
2.7183
>> log(exp(1)) % φυσικός λογάριθμος
ans =
1
>> log10(10^2) % δεκαδικός λογάριθμος
ans =
2
% Τριγωνομετρικές συναρτήσεις
>> pi % η σταθερά π
ans =
3.1416
>> sin(pi/4) % ημίτονο
ans =
0.7071
>> cos(pi/2) % συνημίτονο
ans =
6.1230e-017 ฌ πρακτικά το αποτέλεσμα είναι 0
>> tan(pi/4) % εφαπτομένη
ans =
1.0000
>> asin(0.5) % τόξο ημιτόνου
ans =
0.5236
>> atan(1) % τόξο εφαπτομένης
ans =
0.7854
όπου το σύμβολο % χρησιμοποιείται για την εισαγωγή σχολίων. Αν η γωνία δίνεται σε μοίρες, τότε την μετατρέπουμε σε ακτίνια πολλαπλασιάζοντας με το π/180. Παράδειγμα υπολογισμού του cos(60o):
>> cos(60*pi/180)
ans =
0.5000
Αν και μερικές φορές το αποτέλεσμα παρουσιάζει σφάλμα λόγω των αριθμητικών προσεγγίσεων των ψηφιακών Η/Υ, όπως στο παραπάνω παράδειγμα υπολογισμού του cos(pi/2) που έπρεπε να δώσει μηδέν, δεν πρέπει να γενικεύουμε και να εκλαμβάνουμε όλους του μικρούς αριθμούς ως μηδέν!
1.3. Σταθερές και μεταβλητές
Το MATLAB μας επιτρέπει να δίνουμε στις σταθερές και μεταβλητές ονόματα της επιλογής μας. Για παράδειγμα, έστω ότι θέλουμε να υπολογίσουμε το ακόλουθο:
sin(60*pi/180)^2 + cos(60*pi/180)^2
Με χρήση σταθερών και μεταβλητών, ο υπολογισμός μπορεί να γίνει ως εξής:
>> theta = 60*pi/180;
>> a = sin(theta);
>> b = cos(theta);
>> a^2 + b^2
ans =
1
Τα σύμβολα theta, a και b αντιπροσωπεύουν σταθερές ή μεταβλητές ανάλογα με το αν επιτρέπεται να αλλάζουν στη συνέχεια ή όχι. Το σύμβολο ans είναι μεταβλητή και μπορεί επίσης να χρησιμοποιηθεί σε περαιτέρω υπολογισμούς όπως στο παράδειγμα:
>> 60*pi/180
ans =
1.0472
>> sin(ans)
ans =
0.8660
1.4. Μορφή (format)
Το MATLAB παρέχει τη δυνατότητα εμφάνισης των αριθμών με διαφορετικό πλήθος ψηφίων ανάλογα με την ακρίβεια που επιθυμούμε. Φυσικά, η εσωτερική αναπαράσταση των αριθμών είναι ανεξάρτητη από τη μορφή εμφάνισης. Η προεπιλογή (default) της μορφής στο MATLAB όσον αφορά τα σημαντικά δεκαδικά ψηφία δίνεται από την εντολή format ή format short που εμφανίζει μέχρι τέσσερα δεκαδικά ψηφία ενώ η προεπιλογή ως προς την απόσταση των γραμμών δίνεται με την εντολή format loose. Για μεγαλύτερη ακρίβεια μπορούμε να χρησιμοποιήσουμε τις εντολές format long και format long e ενώ για την απαλοιφή των κενών γραμμών, που συνιστάται, χρησιμοποιούμε την εντολή format compact.
Παραδείγματα:
>> format compact
>> pi
ans =
3.1416
>> format long
>> pi
ans =
3.14159265358979
>> format long e
>> pi
ans =
3.141592653589793e+000
>> x = 2;
>> y = 3;
>> z = x^2 + y^2 + x*y + x + y
z =
24
όπου στο τελευταίο παράδειγμα βλέπουμε ότι το ελληνικό ερωτηματικό στο τέλος μιας γραμμής αποτρέπει την εμφάνιση του αποτελέσματος (οι τιμές των μεταβλητών x και y). Η τιμή της μεταβλητής z εμφανίζεται επειδή δεν υπάρχει το σύμβολο ; στο τέλος της γραμμής. Περισσότερες πληροφορίες για την μορφή μπορείτε να βρείτε πληκτρολογώντας help format.
ป help format
FORMAT Set output format.
All computations in MATLAB are done in double precision.
FORMAT may be used to switch between different output
display formats as follows:
FORMAT Default. Same as SHORT.
FORMAT SHORT Scaled fixed point format with 5 digits.
FORMAT LONG Scaled fixed point format with 15 digits.
FORMAT SHORT E Floating point format with 5 digits.
FORMAT LONG E Floating point format with 15 digits.
FORMAT SHORT G Best of fixed or floating point format
with 5 digits.
FORMAT LONG G Best of fixed or floating point format
with 15 digits.
FORMAT HEX Hexadecimal format.
FORMAT + The symbols +, - and blank are printed
for positive, negative and zero elements.
Imaginary parts are ignored.
FORMAT BANK Fixed format for dollars and cents.
FORMAT RAT Approximation by ratio of small integers.
Spacing:
FORMAT COMPACT Suppress extra line-feeds.
FORMAT LOOSE Puts the extra line-feeds back in.
1.5. Αποθήκευση σειράς υπολογισμών στο MATLAB σε ένα αρχείο
Για να αποθηκεύσουμε μια σειρά εντολών, κατά την εργασία μας στο MATLAB, σε ένα αρχείο, χρησιμοποιούμε την εντολή diary (ημερολόγιο) ακολουθούμενη από το όνομα του αρχείου. Αν δεν δοθεί όνομα, το αρχείο που θα δημιουργηθεί θα ονομάζεται diary.
Παράδειγμα:
>> format compact
>> diary arxeio.dia
>> x = 2;
>> y = 3;
>> z = x^2 + y^2 + x*y + x + y
z =
24
>> diary off
Η εντολή diary off σηματοδοτεί το κλείσιμο του αρχείου ημερολογίου arxeio.dia. Το αρχείο αυτό θα δημιουργηθεί στο directory από το οποίο καλέσαμε το MATLAB.
2. ΣΕΙΡΕΣ - ΔΙΑΝΥΣΜΑΤΑ
Στο MATLAB η σειρά ορίζεται ως μία διατεταγμένη συλλογή αριθμών που περικλείεται από αγκύλες [ ... ] με τα στοιχεία να διαχωρίζονται είτε από κενά είτε από κόμματα.
>> odd = [1 3 5 7 9 11 13 15 17 19]
odd =
1 3 5 7 9 11 13 15 17 19
>> even = [2,4,6,8,10,12,14,16,18,20]
even =
2 4 6 8 10 12 14 16 18 20
>> dekadikoi = [1.0 1.2 1.4 1.6 1.8 2.0]
dekadikoi =
1.0000 1.2000 1.4000 1.6000 1.8000 2.0000
Τα στοιχεία της σειράς προσδιορίζονται με δείκτες θέσης (φυσικοί αριθμοί) αρχίζοντας από το 1:
>> odd(5)
ans =
9
>> even(1)
ans =
2
Το πλήθος των στοιχείων μιας σειράς υπολογίζεται από την συνάρτηση length του MATLAB:
>> length(even)
ans =
10
Η εντολή clear μηδενίζει (σβήνει από τη μνήμη) τη σειρά:
>> clear even
>> even
??? Undefined function or variable 'even'
Ενας εναλλακτικός τρόπος εισαγωγής της παραπάνω σειράς, αν και πιό επίπονος, είναι ο εξής:
>> even(1) = 2
even =
2
>> even(2) = 4
even =
2 4
>> even(3) = 6
even =
2 4 6
. . . . . .
>> even(10) = 20
even =
2 4 6 8 10 12 14 16 18 20
2.1. Πράξεις με σειρές
Έστω οι σειρές A = [a1 a2 an] και B = [b1 b2 bn]. Η πρόσθεση και η αφαίρεση των δύο σειρών ορίζονται ως εξής:
A + B = [a1 + b1, a2 + b2, , an + bn]
A - B = [a1 - b1, a2 - b2, , an - bn]
Για παράδειγμα:
>> odd + even
ans =
3 7 11 15 19 23 27 31 35 39
>> even odd
ans =
1 1 1 1 1 1 1 1 1 1
Στην περίπτωση που τα στοιχεία της σειράς βρίσκονται σε ίσες αποστάσεις, τότε δεν χρειάζεται η αναλυτική εισαγωγή της σειράς αλλά μόνο το πρώτο στοιχείο, το βήμα και το τελευταίο στοιχείο με διαχωριστικό σύμβολο το :. Για παράδειγμα, οι παραπάνω σειρές odd και even μπορούν να ορισθούν και ως εξής:
>> odd = 1:2:19
odd =
1 3 5 7 9 11 13 15 17 19
>> even = 2:2:20
even =
2 4 6 8 10 12 14 16 18 20
Όταν το βήμα είναι 1 τότε μπορεί να παραληφθεί ενώ επιτρέπονται επίσης αρνητικά και κλασματικά βήματα:
>> natural = 1:10
natural =
1 2 3 4 5 6 7 8 9 10
>> inv_odd = 19:-2:1
inv_odd =
19 17 15 13 11 9 7 5 3 1
>>dekadika = 0:0.1:1
dekadika =
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
Ορισμός πράξης πολλαπλασιαμού σειρών:
A .* B = [a1b1, a2b2, , anbn]
όπου το σύμβολο .* σημαίνει πολλαπλασιασμός στοιχείου προς στοιχείο. Για παράδειγμα:
>> odd.*even
ans =
2 12 30 56 90 132 182 240 306 380
Ορισμός διαίρεσης (από αριστερά και από δεξιά) σειρών:
A ./ B = [a1/b1, a2/b2, , an/bn]
A .\ B = [a1\b1, a2\b2, , an\bn] ๓ B ./ A
Παραδείγματα:
>> odd./even
ans =
Columns 1 through 7
0.5000 0.7500 0.8333 0.8750 0.9000 0.9167 0.9286
Columns 8 through 10
0.9375 0.9444 0.9500
>> odd.\even
ans =
Columns 1 through 7
2.0000 1.3333 1.2000 1.1429 1.1111 1.0909 1.0769
Columns 8 through 10
1.0667 1.0588 1.0526
Ορισμός ύψωσης σε δύναμη:
A .^ m = [a1m, a2m, , anm]
Παράδειγμα:
>> natural.^2
ans =
1 4 9 16 25 36 49 64 81 100
ΣΗΜΕΙΩΣΗ:
Πολλές από τις ενσωματωμένες συναρτήσεις του MATLAB μπορούν να εφαρμοσθούν σε σειρές αν απλώς, στη θέση του ορίσματος, χρησιμοποιηθεί το όνομα της σειράς:
>> angle = 0:10:90;
>> angle = pi*angle/180;
>> sin(angle)
ans =
Columns 1 through 7
0 0.1736 0.3420 0.5000 0.6428 0.7660 0.8660
Columns 8 through 10
0.9397 0.9848 1.0000
Στο παραπάνω παράδειγμα, ο απλός πολλαπλασιασμός ή διαίρεση σειράς με αριθμό οδηγεί στην αντίστοιχη πράξη του αριθμού με κάθε στοιχείο της σειράς.
2.2. Διανύσματα γραμμής στήλης
Οι σειρές της προηγούμενης ενότητας μπορούν να θεωρηθούν και ως διανύσματα γραμμής (οριζόντια) με στοιχεία τα αντίστοιχα στοιχεία της σειράς. Αν και η δήλωση διανυσμάτων γραμμής μπορεί να είναι η ίδια με τη δήλωση των σειρών, είναι καλό να περιλαμβάνουμε τα στοιχεία του διανύσματος μέσα σε αγκύλες [ ] όπως:
>> odd = [1:2:19]
odd =
1 3 5 7 9 11 13 15 17 19
>> even = [2,4,6,8,10,12,14,16,18,20]
even =
2 4 6 8 10 12 14 16 18 20
>> N = [1:5]
N =
1 2 3 4 5
Η δήλωση ενός διανύσματος στήλης είναι ίδια ως προς τη μορφή με αυτήν ενός διανύσματος γραμμής εκτός από το διαχωριστικό σύμβολο που τώρα είναι είτε το ; είτε η αλλαγή γραμμής:
>> Α = [1;2;3;4;5]
A =
1
2
3
4
5
>> B = [2
3
5
7
11]
B =
2
3
5
7
11
Η μετατροπή ενός διανύσματος στήλης σε γραμμής και το αντίστροφο μπορεί να γίνει με την χρήση του αναστρόφου διανύσματος που συμβολίζεται με την απόστροφο:
>> Αt = A
At =
1 2 3 4 5
>> Att = At
Att =
1
2
3
4
5
2.3. Εσωτερικό γινόμενο διανυσμάτων
Έστω ένα διάνυσμα γραμμής A = [a1 a2 an] και ένα διάνυσμα στήλης B = [b1; b2; ; bn] με τον ίδιο αριθμό στοιχείων n. Το εσωτερικό γινόμενο A * B των δύο διανυσμάτων είναι καθαρός αριθμός και δίνεται από την ακόλουθη εξίσωση:
A * B = a1b1 + a2b2 + + anbn
Για τα διανύσματα της προηγούμενης ενότητας έχουμε (αφού αναστρέψουμε το διάνυσμα στήλης Α):
>> A*B
ans =
106
ενώ το άθροισμα των τετραγώνων των πρώτων 5 φυσικών αριθμών θα είναι:
>> Ν*Ν
ans =
55
2.4. Γραφική παράσταση
Έστω ότι θέλουμε να κάνουμε τη γραφική παράσταση της ημιτονοειδούς συνάρτησης στο διάστημα [0, 2π]. Η βασική συνάρτηση του MATLAB για δυσδιάστατες απεικονίσεις είναι η plot (για λεπτομέρειες πληκτρολογήστε help plot). Άλλες χρήσιμες συναρτήσεις είναι η grid που σχεδιάζει τον κάνναβο και οι xlabel, ylabel για την εισαγωγή κειμένου στις γραφικές παραστάσεις.
>> x = 0: pi/90: 2*pi;
>> y = sin(x);
>> plot(x,y)
>> grid
>> xlabel(x, ακτίνια)
>> ylabel(sin(x))
3. ΠΙΝΑΚΕΣ
Οι πίνακες στο MATLAB περικλείονται σε αγκύλες [ ] και εισάγονται με απλό τρόπο. Με χρήση των διαχωριστικών κενό ή κόμμα για τα στοιχεία γραμμής και του ; για την αλλαγή γραμμής μπορούμε να ορίσουμε έναν πίνακα ως εξής:
>> Α = [1 2 3; 4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
Μπορούμε επίσης να γράψουμε κάθε γραμμή ξεχωριστά όπως:
>> Α = [1 2 3
4 5 6
7 8 9]
A =
1 2 3
4 5 6
7 8 9
Η πρόσβαση στα στοιχεία του πίνακα γίνεται με χρήση δύο δεικτών μέσα σε παρένθεση με τον πρώτο να προσδιορίζει τη γραμμή και τον δεύτερο τη στήλη:
>> Α(1,3)
ans =
3
>> A(3,2)
ans =
8
Οι διαστάσεις ενός πίνακα δίνονται με τη συνάρτηση size:
>> size(A)
ans =
3 3
Δύο πίνακες A και Β με τον ίδιο αριθμό γραμμών μπορούν να παρατεθούν ο ένας δίπλα στον άλλο και να δημιουργήσουν έναν νέο πίνακα με τον ίδιο αριθμό γραμμών και πλήθος στηλών όσο και το άθροισμά τους στους αρχικούς πίνακες. Η λειτουργία αυτή ονομάζεται παράθεση πινάκων και συμβολίζεται με [Α Β]:
>> Α = [1 2 3; 4 5 6; 7 8 9];
>> B = [1 1 1 1; 2 2 2 2; 3 3 3 3];
>> C = [A B]
C =
1 2 3 1 1 1 1
4 5 6 2 2 2 2
7 8 9 3 3 3 3
>> size(C)
ans =
3 7
Η δημιουργία ενός νέου πίνακα από δύο πίνακες Α και Β που έχουν ίδιο πλήθος στηλών είναι επίσης δυνατή με χρήση της λειτουργίας [Α; Β] όπως στο παράδειγμα:
>> Α = [1 2 3; 4 5 6; 7 8 9];
>> B = [10 11 12; 13 14 15];
>> C = [A; B]
C =
1 2 3
4 5 6
7 8 9
10 11 12
13 14 15
Για να εξαγάγουμε έναν υποπίνακα από την γραμμή x1 έως τη γραμμή x2 και από τη στήλη y1 έως τη στήλη y2 μέσα από κάποιον πίνακα Α, χρησιμοποιούμε την μορφή Α(x1:x2; y1:y2). Για παράδειγμα, αν θέλουμε να εξαγάγουμε τον υποπίνακα που αποτελείται από τις δύο πρώτες γραμμές και στήλες του C θα έχουμε:
>> C(1:2,1:2)
ans =
1 2
4 5
Αν θέλουμε να εξαγάγουμε όλες τις γραμμές ή όλες τις στήλες, τότε δεν χρειάζεται να το δηλώσουμε αναλυτικά αλλά χρησιμοποιούμε μόνο το σύμβολο :
>> C(:,1:2)
ans =
1 2
4 5
7 8
10 11
13 14
>> C(1,:)
ans =
1 2 3
>> C(:,1)
ans =
1
4
7
10
13
>> C(1:3,:)
ans =
1 2 3
4 5 6
7 8 9
3.1. Στοιχειώδεις πράξεις με πίνακες
Το άθροισμα δύο πινάκων A και Β με τις ίδιες διαστάσεις mxn και με στοιχεία aij και bij αντίστοιχα, είναι ένας νέος πίνακας S με διαστάσεις mxn και στοιχεία sij που δίνονται από την εξίσωση sij = aij + bij . Αντίστοιχα, η διαφορά των πινάκων οδηγεί σε νέο πίνακα με στοιχεία sij = aij - bij .
>> S1 = C(1:3,:)
S1 =
1 2 3
4 5 6
7 8 9
>> S2 = C(3:5,:)
S2 =
7 8 9
10 11 12
13 14 15
>> S = S1 + S2
S =
8 10 12
14 16 18
20 22 24
>> D = S1 S2
D =
-6 -6 -6
-6 -6 -6
-6 -6 -6
Για να πολλαπλασιάσουμε δύο πίνακες A και B πρέπει το πλήθος των στηλών του πρώτου να είναι ίδιο με το πλήθος των γραμμών του δεύτερου. Έστω, για παράδειγμα, ότι οι διαστάσεις των A και B είναι mxp και pxn αντίστοιχα. Τότε, οι διαστάσεις του νέου πίνακα P που αντιστοιχεί στο γινόμενο των δύο πινάκων θα είναι mxn και τα στοιχεία του θα δίνονται από την εξίσωση:
pij = EQ \I\su(k=1;m; ) aik bkj
Συνεχίζοντας το προηγούμενο παράδειγμα, το γινόμενο των S1 και S2 θα είναι:
>> P = S1 * S2
P =
66 72 78
156 171 186
246 270 294
Ένας τετραγωνικός πίνακας (όπως οι S1 και S2) μπορεί να πολλαπλασιαστή με τον εαυτό του:
>> S1 * S1
ans =
30 36 42
66 81 96
102 126 150
Ισοδύναμα, για τετραγωνικούς πίνακες, μπορούμε να χρησιμοποιήσουμε το σύμβολο ύψωσης σε δύναμη (Α^2 = Α*Α, Α^3 = Α*Α*Α, κ.λπ.):
>> S1^2
ans =
30 36 42
66 81 96
102 126 150
>> S1^3
ans =
468 576 684
1062 1305 1548
1656 2034 2412
Όπως και στην περίπτωση των μονοδιάστατων σειρών, έτσι και στην περίπτωση των δισδιάστατων σειρών (δηλαδή, των πινάκων), μία ενσωματωμένη συνάρτηση επιδρά σε κάθε στοιχείο του πίνακα ξεχωριστά:
>> angle = [0:10:20;30:10:50;60:10:80]
angle =
0 10 20
30 40 50
60 70 80
>> angle = pi*angle/180
angle =
0 0.1745 0.3491
0.5236 0.6981 0.8727
1.0472 1.2217 1.3963
>> sin(angle)
ans =
0 0.1736 0.3420
0.5000 0.6428 0.7660
0.8660 0.9397 0.9848
Επίσης, ένας σύντομος τρόπος ορισμού ενός πίνακα με όλο μηδενικά ή μονάδες είναι με χρήση των λειτουργιών ones(m,n) και zeros(m,n):
>> ones(2,3)
ans =
1 1 1
1 1 1
>> zeros(2,2)
ans =
0 0
0 0
Τέλος, αν θέλουμε να δημιουργήσουμε έναν πίνακα από μονάδες που να έχει τις ίδιες διαστάσεις με κάποιον πίνακα A, τότε μπορούμε να χρησιμοποιήσουμε τις διαστάσεις που επιστρέφονται από την συνάρτηση size:
>> A = [1 2 3 4; 5 6 7 8; 9 10 11 12]
A =
1 2 3 4
5 6 7 8
9 10 11 12
>> [m, n] = size(A)
m =
3
n =
4
>> ones(m, n)
ans =
1 1 1 1
1 1 1 1
1 1 1 1
ή πιό απλά ακόμη:
>> ones(size(A))
ans =
1 1 1 1
1 1 1 1
1 1 1 1
3.2. Εκτύπωση πίνακα
Έστω ότι θέλουμε να δημιουργήσουμε έναν πίνακα με τα ημίτονα των γωνιών 0, 10, 20, ..., 90 μοιρών. Αυτό μπορεί να γίνει με χρήση των λειτουργιών της αναστροφής και της παράθεσης:
>> angle = 0:10:180;
>> sine = sin(pi*angle/180);
>> [angle sine]
ans =
0 0
10.0000 0.1736
20.0000 0.3420
30.0000 0.5000
40.0000 0.6428
50.0000 0.7660
60.0000 0.8660
70.0000 0.9397
80.0000 0.9848
90.0000 1.0000
100.0000 0.9848
110.0000 0.9397
120.0000 0.8660
130.0000 0.7660
140.0000 0.6428
150.0000 0.5000
160.0000 0.3420
170.0000 0.1736
180.0000 0.0000
4. ΣΥΣΤΗΜΑΤΑ ΓΡΑΜΜΙΚΩΝ ΕΞΙΣΩΣΕΩΝ
Επίλυση του συστήματος Ax = b όπου Α είναι mxn πίνακας, x είναι διάνυσμα nx1 και b είναι διάνυσμα mx1. Για παράδειγμα, έστω ότι τα A, x και b έχουν ορισθεί στο MATLAB ως εξής:
>> Α = [1 2 3; 2 3 4; 4 2 5]
A =
1 2 3
2 3 4
4 2 5
>> b = [4; 5; 1]
b =
4
5
1
Επιζητούμε να λύσουμε το σύστημα ως προς το διάνυσμα x.
4.1. Λύση με τη μέθοδο Cramer
Η μέθοδος Cramer εφαρμόζεται σε τετραγωνικούς πίνακες A με ορίζουσα συντελεστών διάφορης του μηδενός.
>> det(A) %έλεγχος αν η ορίζουσα είναι น 0.
ans =
-5
>> D1 = A; D1(:, 1) = b
D1 =
4 2 3
5 3 4
1 2 5
>> D2 = A; D2(:, 2) = b
D2 =
1 4 3
2 5 4
4 1 5
>> D3 = A; D3(:, 3) = b
D3 =
1 2 4
2 3 5
4 2 1
>> x = [det(D1); det(D2); det(D3)]/det(A)
x =
-1.4000
1.8000
0.6000
4.2. Λύση με τη μέθοδο αντιστρόφου πίνακα
Η μέθοδος αντιστρόφου πίνακα εφαρμόζεται σε τετραγωνικούς πίνακες A με ορίζουσα συντελεστών διάφορης του μηδενός. Τότε: x = A-1 b.
>> det(A) %έλεγχος αν η ορίζουσα είναι น 0.
>> A_inv = inv(A)
A_inv =
-1.4000 0.8000 0.2000
-1.2000 1.4000 -0.4000
1.6000 -1.2000 0.2000
>> x = A_inv*b
x =
-1.4000
1.8000
0.6000
4.3. Γενική λύση με τη μέθοδο απαλοιφής κατά Gauss
Με τη μέθοδο Gauss to ΜΑΤLAB παράγει πάντοτε λύση ακόμη και αν ο A δεν είναι τετραγωνικός ή η ορίζουσα του είναι μηδέν. Σε αυτήν την περίπτωση, η λύση είναι προσεγγιστική (όχι ακριβής) με την έννοια ότι ελαχιστοποιεί κάποιο τετραγωνικό σφάλμα (γι αυτό και ονομάζεται μέθοδος ελάχιστων τετραγώνων).
>> x = A\b %Απαλοιφή κατά Gauss
x =
-1.4000
1.8000
0.6000
>> A*x % Έλεγχος αν η λύση είναι ακριβής
ans =
4.0000
5.0000
1.0000
% επειδή το αποτέλεσμα είναι ίσο με b η λύση
% είναι ακριβής
>> Α = [1 2 3 4; 2 3 4 5; 1 3 5 7];
>> b = [1; 2; 3];
>> x = A\b
Warning: Rank deficient, rank=2 tol=8.4260e-015.
x =
-0.1515
0
0
0.4242
όπου στο τελευταίο παράδειγμα η τάξη του πίνακα (δηλαδή ο μέγιστος υποπίνακας με ορίζουσα μη-μηδενική) είναι 2.