ΕΙΣΑΓΩΓΗ ΣΤΟ MATHLAB Α ΜΕΡΟΣ
ΕΙΣΑΓΩΓΗ ΠΙΝΑΚΩΝ ΣΤΟ MATHLAB Αν θέλουμε να εισάγουμε έναν πίνακα στο mathlab και να προβληθεί στην οθόνη βάζουμε τις τιμές του σε άγκιστρα χωρίζοντάς τις με κόμματα ή κενό και στα σημεία που θέλουμε να αλλάξουμε γραμμή βάζουμε ελληνικό ερωτηματικό (;). Π.χ. για τον πίνακα a = 5 8 4 9 a=[5,8;4,9] ή a=[5 8;4 9]
ΣΥΝΕΧΕΙΑ... Αν πάλι θέλουμε να εισάγουμε πίνακα, αλλά να μην προβληθεί στην οθόνη πληκτρολογούμε στο τέλος του πίνακα ;. π.χ. για τον πίνακα b=[9,3;4,9]; Αν δεν εκχωρήσουμε μια τιμή σε μια μεταβλητή, το mathlab την αποθηκεύει αυτόματα σε μεταβλητή με όνομα ans. Για βοήθεια στο mathlab: help (εντολή) π.χ. help clear
ΔΙΑΦΟΡΕΣ ΕΝΤΟΛΕΣ ΣΤΟ MATHLAB who: Ταξινομεί τις τρέχουσες μεταβλητές κατά αλφαβητική σειρά whos: Ταξινομεί τις τρέχουσες μεταβλητές κατά αλφαβητική σειρά και δίνει τα μεγέθη και τους τύπους τους, καθώς επίσης αναφέρει το συνολικό μεγεθός τους. Αν θέλουμε να ταξινομήσουμε συγκεκριμένες μεταβλητές πληκτρολογούμε who ( variable_1, variable_2,., variable_n ) και whos ( variable_1, variable_2,., variable_n )
ΣΥΝΕΧΕΙΑ... clc: Kαθαρίζει την οθόνη από όλες τις εισόδους και εξόδους που είχαμε εισάγει προηγουμένως, χωρίς να χάνονται τα δεδομένα από την μνήμη. clear: Kαθαρίζει την μνήμη του υπολογιστή από τα δεδομένα που έχουμε εισάγει στο mathlab. a(κ,:) :Εμφάνιση όλων των στοιχείων της κ γραμμής του πίνακα a. a(:,n) :Εμφάνιση όλων των στοιχείων της n στήλης του πίνακα a. a=-2:0.2:10 :Eμφάνιση των τιμών από -2 έως 10 με βήμα 0,2 του πίνακα a, στην πρώτη γραμμή.
ΣΥΝΕΧΕΙΑ... c=(-2:0.2:10). :Εμφάνιση των τιμών από -2 έως 10 με βήμα 0,2 του πίνακα c, στην πρώτη στήλη. c(3) :Εμφάνιση του τρίτου στοιχείου του πίνακα c. a==b :Δημιουργία μιας αυτόματης μεταβλητής ans και μηδενισμός της, ανάλογα με τις στήλες και τις γραμμές των πινάκων a και b. a(1,1:2:5) :Εμφάνιση των στοιχείων της πρώτης γραμμής με αριθμό στηλών από 1 έως 5 με βήμα 2. a([2 4],:) :Εμφανίζει όλα τα στοιχεία της 2 και 4 γραμμής. a(:,5:-1:1) :Απ την κάθε γραμμή εμφανίζει τα στοιχεία του πίνακα a ξεκινώντας απ την 5 στήλη μέχρι την 1 με βήμα -1
Aλλαγή στοιχείου ενός πίνακα π.χ a(2,1)=-5. Aλλαγή της τιμής της δεύτερης γραμμής και πρώτης στήλης του a, σε -5. a[2,5;3,8;9,3]; a(2,1)=-5; a
ΔΙΑΦΟΡΕΣ ΣΥΝΑΡΤΗΣΕΙΣ ΣΤΟ MATHLAB 1)Ρίζα και ύψωση σε δύναμη Ρίζα των στοιχείων :sqrt( ) Ύψωση σε δύναμη :^ Π.χ. a=[sqrt(3),2;1,2^5]
ΣΥΝΕΧΕΙΑ... 2)Λογάριθμοι στοιχείων πίνακα Λογάριθμος :log10( ) Π.χ. log10(a) Φυσικός λογάριθμος :log( ) Π.χ. log(a) Λογάριθμος με βάση το e: exp( ) Π.χ. exp(a)
ΣΥΝΕΧΕΙΑ... rand(4) :Πίνακας 4Χ4, ο οποίος περιέχει τυχαίους αριθμούς 3)Άλλες συναρτήσεις ones(2,3) :Πίνακας 2Χ3, του οποίου όλα τα στοιχεία είναι 1 eye(3,4) :Πίνακας 3Χ4, του οποίου τα στοιχεία της πρώτης διαγωνίου είναι 1 norm(a) :Μέτρο διανύσματος a
ΠΡΑΞΕΙΣ ΠΙΝΑΚΩΝ 1)Πρόσθεση / Αφαίρεση πινάκων a+b, a-b a= 1 2 3 4 5 6 7 8 9 b= 10 11 12 Π.χ. 8 10 12 Tότε, a+b= 14 16 18
2)Πολλαπλασιασμός /Διαίρεση πινάκων Πολλαπλασιασμός /Διαίρεση δύο πινάκων a και b με ίδιες διαστάσεις a*b και a/b. 1 2 3 Π.χ. a= 4 5 6 7 8 9 33 36 39 Τότε: a*b= 72 81 90 141 111 126 1 2 3 b= 4 5 6 8 8 8
ΣΥΝΕΧΕΙΑ... Αν πάλι θέλουμε να πολ/σουμε τα στοιχεία των πινάκων ξεχωριστά μεταξύ τους τότε: 1 4 9 a.*b= 16 25 36 56 64 72
3)Ύψωση σε δύναμη Ύψωση ενός πίνακα a σε μια δύναμη n, a^n 1 2 3 30 36 42 Π.χ. a= 4 5 6 Τότε, a^2= 66 81 96 102 126 150 7 8 9
ΟΡΙΖΟΥΣΑ To mathlab βρίσκει αυτόματα την ορίζουσα ενός πίνακα a, απλά με την εντολή det(a) Π.χ. Για τον προηγούμενο πίνακα det(a)=0
AΝΤΙΣΤΡΟΦΟΣ ΠΙΝΑΚΑΣ Έτοιμη ενσωματωμένη (built-in) συνάρτηση του mathlab που αποδίδει τον αντίστροφο ενός αντιστρέψιμου πίνακα a, inv(a). 1 2-1 -1/3 1/3 1 Π.χ. a= 1-1 1 inv(a)= 1/3-1/3 0 1 1 0, 2/3 1/3-1
ΥΠΟΛΟΓΙΣΜΟΣ ΑΘΡΟΙΣΜΑΤΩΝ ΜΕ ΛΟΥΠΑ FOR Έστω ότι έχουμε το άθροισμα : Σ 10 1/κ(κ+1) κ=1 s=0 for k=1:10 s=s+1/(k*(k+1)); end s α τρόπος
ΥΠΟΛΟΓΙΣΜΟΣ ΑΘΡΟΙΣΜΑΤΩΝ ΜΕ ΛΟΥΠΑ WHILE Για το ίδιο άθροισμα: β τρόπος n=10; s=0; k=1; while k<=n s=s+1/(k*(k+1)); end s
MATLAB Β ΜΕΡΟΣ
γραμμικός συνδυασμός Οι συντελεστές και οι πίνακες αποθηκεύονται σε κελιά (cells). Στο Matlab ένα κελί εισάγεται χρησιμοποιώντας αγκύλες { }. >> a={1,-4, 6 0} >>whos κώδικας : function L=lincombin(r,A) %linear combination of matrices of the same size %input -r={r1,r2,,rk} the coefficients %of linear combination %-A={A1,A2,,Ak} the matrices of lin. comb. %-L the matrix corresponding to the lin. comb. k=length(r); [m,n]=size(a{1}); l=zeros(m,n); for i=1:k L=L+r{i}*A{i}; end >> r={-2,3,1,4}; >> A1=[1 2;-2 3]; A2[0-2;3 4]; A3[9 4;-3 1]; A4[-2 1;8 3]; >> A={A1,A2,A3,A4}; >> L=lincombin(r,A)
συναρτήσεις length Μήκος διανύσματος Σύνταξη n= length(x) Examples x = ones(1,8); n = length(x) n = 10 norm Μέτρα διανυσμάτων και πινάκων Σύνταξη n = norm(a) n = norm(a,p) ones Δημιουργεί διάταξη η οποία αποτελείται από μονάδες Σύνταξη Y = ones(n) Y = ones(m,n) Y = ones([m n]) Y = ones(m,n,p,...) Y = ones([m n p...]) Y = ones(size(a)) ones(m, n,...,classname) ones([m,n,...],classname) Example x = ones(2,3,'int8');
συναρτήσεις size Διάσταση διανύσματος Σύνταξη d= size(x) [m,n] = size(x) m = size(x,dim) [d1,d2,d3,...,dn] = size(x) Examples Example 1. 1 Το μέγεθος της δεύτερης διάστασης rand(2,3,4) είναι 3. m = size(rand(2,3,4),2) m = 3 Εδώ είναι η έξοδος του μεγέθους ως μονοδιάστατο διάνυσμα d = size(rand(2,3,4)) d = 2 3 4 Εδώ το μέγεθος κάθε διάστασης τοποθετείται σε μια ξεχωριστή μεταβλητή. [m,n,p] = size(rand(2,3,4)) m = 2 n = 3 p = 4 Example 2 Example 2. Αν X = ones(3,4,5), τότε [d1,d2,d3] = size(x) d1 = d2 = d3 = 3 4 5 Αλλά όταν ο αριθμός των τιμών εξόδου είναι μικρότερος από ndims(x): [d1,d2] = size(x) d1 = d2 = 3 20 Οι επιπλέον διαστάσεις καταστρέφονται μέσα σε ένα μονοδιάστατο προϊόν. Αν n> ndims(x), όλες οι επιπλέον μεταβλητές παρουσιάζονται ως ξεχωριστές διαστάσεις: [d1,d2,d3,d4,d5,d6] = size(x) d1 = d2 = d3 = 3 4 5 d4 = d5 = d6 = 1 1 1
To πλήθος των διανυσμάτων μιας οποιασδήποτε βάσης του διανυσματικού χώρου V λέγεται διάσταση του V,συμβολικά dim(v). rref(a) ανοιγμένη κλιμακωτή μορφή του Α, οπότε συμπεραίνουμε αν τα διανύσματα είναι γραμμικώς εξαρτημένα ή ανεξάρτητα. ΠΑΡΑΔΕΙΓΜΑ >>Α=[1 3 1;21-11 5;-35 3 2 8;4 1-7]; >>Ar Ar= rref(a) No = null(a) μας αποδίδει πίνακα του οποίου οι στήλες αποτελούν μια ορθοκανονική βάση του null(a), πρόκειται για μια βάση της οποίας τα διανύσματα είναι ορθογώνια μεταξύ τους και έχουν μέτρο 1. ΠΑΡΑΔΕΙΓΜΑ >>No =null(ones(4)) >>for i=1:3 N(i) =norm(no(:,1)); end >>n >>No(:,1) *No(:,2)
Ν = null(a, r ) ) μας επιστρέφει τον πίνακα Ν του οποίου οι στήλες είναι τα διανύσματα μιας βάσης του null(a) και η εντολή x1 =A\b μας απόδίδει μια λύση του Αx = b. Αυτές οι εντολές αρκούν για να εκφράσουμε τη γενική λύση Νλ + Αx του συστήματος. Ωστόσο το MATLAB μας παρέχει μια λύση A\bακόμα και στη περίπτωση που το σύστημα είναι αδύνατο (υπολογίζοντας τη λύση των ελαχίστων τετραγώνων). ΠΑΡΑΔΕΙΓΜΑ >>Α=[1 2 0-1 -2;1 2 1 0-1;0 0 1 1 1;1 2 2 1 0]; >>b=[-1 0 1 1] ; N = null(a, r ) >> x1 =A\b
ορθοκανονικότητα ΠΑΡΑΔΕΙΓΜΑΤΑ >>v1=[1 1 1 1] ; v2=[-1-1 1 1] ; v3=[-1 1-1 1] ; >>v4=[-1 1 1-1] ; >>V=[v1 v2 v3 v4] >>for i=1:4 for j=1:4 A(i,j)=V(:,i) *V(:,j); end end >>A >>u1=v1/norm(v1); u2=v2/norm(v2); u3=v3/norm(v3); u4=v4/norm(v4); >>U=[u1 u2 u3 u4] >>for i=1:4 for j=1:4 B(i,j)=U(:,i) *U(:,j); end end >>B
συνέχεια Το Matlab διαθέτει ενσωματωμένη συνάρτηση που μετατρέπει έναν τυχαίο πίνακα σε πίνακα με ορθοκανονικές στήλες. Η εντολή αυτή είναι Α = orth(a) παράδειγμα >> A=rand(4,3); >> A=orth(A); >> A *A >>A*A >> A=orth(rand(4,3)) >> P=A*A >> b=ones(4,1) >>w=p* b Στο MATLAB εξ ορισμού οι αριθμοί εμφανίζονται σε Format Short στρογγυλοποιημένοι σε 4 ψηφία μετά το δεκαδικό μέρος. Για να τους στρογγυλοποιήσουμε σε 15 ψηφία πληκτρολογούμε: >>format long >>όνομαπίνακα