ΣΗΜΕΙΩΣΕΙΣ 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 =

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.