Μαρία Λουκά Εργαστήριο Matlab Άμεσες Μέθοδοι. Τμήμα Πληροφορικής και Τηλεπικοινωνιών
Βασικές συναρτήσεις του Matlab b = trace(a) : Είναι το άθροισμα των διαγωνίων στοιχείων του πίνακα Α. d = det(a) : επιστρέφει την ορίζουσα του τετραγωνικού πίνακα Α. Παράδειγμα: Δημιουργία ενός 3x3 τετραγωνικού πίνακα, A. A = [1-2 4; -5 2 0; 1 0 3] Υπολογισμός της ορίζουσας του A. d = det(a) d = -32
Βασικές συναρτήσεις του Matlab c = cond(a) : Βρίσκει τον αριθμό συνθήκης του A. Παράδειγμα: Δημιουργία ενός 3x3 τετραγωνικού πίνακα, A. A = [1-2 4; -5 2 0; 1 0 3] Υπολογισμός του αριθμού συνθήκης του A. c=5.4003
Βασικές συναρτήσεις του Matlab e = eig(a) : επιστρέφει το διάνυσμα στήλη που περιέχει τις ιδιοτιμές του τετραγωνικού πίνακα Α. Παράδειγμα: Δημιουργία ενός 3x3 τετραγωνικού πίνακα, A. A = [1-2 4; -5 2 0; 1 0 3] Υπολογισμός των ιδιοτιμών του A. -2.1710 5.4826 2.6884
Βασικές συναρτήσεις του Matlab Η συνάρτηση rank μας δίνει τον βαθμό του πίνακα δηλαδή το πλήθος των γραμμικά ανεξάρτητα γραμμών ή στηλών ενός πλήρους πίνακα. k = rank(a) : επιστρέφει το πλήθος των ιδιάζουσων τιμών του Α οι οποίες είναι μεγαλύτερες από την προκαθορισμένη ανεκτικότητα, max(size(a))*eps(norm(a)). k = rank(a,tol) : επιστρέφει το πλήθος των ιδιάζουσων τιμών του Α οι οποίες είναι μεγαλύτερες από την ανεκτικότητα tol (την οποία δηλώνουμε εμείς). Ιδιάζουσες τιμές είναι οι σ = λ, i 1,2,..., n, λi ιδιοτιμές του Α^Τ*Α. Παράδειγμα: = i i Δημιουργία ενός 3x3 τετραγωνικού πίνακα, A. A = [1-2 4; -5 2 0; 1 0 3] Υπολογισμός βαθμού (rank) του πίνακα A. rank(a)=3
Βασικές συναρτήσεις του Matlab Y = inv(a) : Υπολογίζει τον αντίστροφο ενός τετραγωνικού πίνακα A A^(-1) : είναι ισοδύναμος με τον inv(a). x = A\b : Διαφορετικός υπολογισμός του x = inv(a)*b. Ενδείκνυται για τη λύση συστημάτων γραμμικών εξισώσεων. Παράδειγμα: Δημιουργία ενός 3x3 τετραγωνικού πίνακα, A. A = [1-2 4; -5 2 0; 1 0 3] Υπολογισμός αντίστροφου του πίνακα A. -0.1875-0.1875 0.2500-0.4688 0.0313 0.6250 0.0625 0.0625 0.2500
Βασικές συναρτήσεις του Matlab B = transpose(a) ή B = A. : Υπολογίζει τον ανάστροφο του Α. Παράδειγμα: Δημιουργία ενός 3x3 τετραγωνικού πίνακα, A. A = [1-2 4; -5 2 0; 1 0 3] Υπολογισμός ανάστροφου του πίνακα A. 1-5 1-2 2 0 4 0 3 Παρατήρηση: Αν B = ctranspose(a) ή B = A τότε υπολογίζουμε τον συζυγή ανάστροφο του Α.
Μέθοδος απαλοιφής του Gauss Έστω ότι θέλουμε να λύσουμε το ακόλουθο γραμμικό σύστημα με τη μέθοδο απαλοιφής του Gauss: A = [-1 2-1; 2-1 0; 1 7-3]; b = [0 1 5]'; Υπολογίζουμε τον επαυξημένο πίνακα a = [A b]; disp(a);
Μέθοδος απαλοιφής του Gauss O επαυξημένος πίνακας Α b είναι ο 1 2 1 0 2 1 0 1 1 7 3 5 Δηλώνουμε την τάξη του πίνακα Α n=3; [n,n]=size(α); d=det(a); % Υπολογισμός της ορίζουσας του Α disp('det(a)'); disp(d);
Μέθοδος απαλοιφής του Gauss if d==0 disp(αφού η ορίζουσα είναι 0 το σύστημα δεν έχει μοναδική λύση'); return; else disp(αφού η ορίζουσα είναι διάφορη από το 0 το σύστημα έχει μια και μοναδική λύση'); end; Το αποτέλεσμα. det(a)=-6 Αφού η ορίζουσα είναι διάφορη από το 0 το σύστημα έχει μια και μοναδική λύση
Μέθοδος απαλοιφής του Gauss for r=1:n-1 for q=r+1:n % Βήμα 3.2 Εκτέλεση οδήγησης if a(r,r)==0 disp( Αφού το οδηγό στοιχείο είναι 0 γίνεται ανταλλαγή γραμμών '); bq=a(r,:); a(r,:)=a(q,:); a(q,:)=bq; end end % Βήμα 3.3 for i=r+1:n disp( Το οδηγό στοιχείο είναι:');disp(a(r,r)); m=-(a(i,r)/a(r,r)); % ο πολλαπλασιαστής που υπολογίζεται εκ νέου σε κάθε επανάληψη disp( Ο πολλαπλασιαστής m είναι:'); disp(m); a(i,:)=a(i,:)+m*a(r,:); % Εξαγωγή ολόκληρης γραμμής. disp( Ενημέρωση της γραμμής:');disp(i); disp('a'); disp(a); end end % disp('a');disp(a);
Μέθοδος απαλοιφής του Gauss O πολλαπλασιαστής m είναι: 2 Ενημέρωση της γραμμής: i=2 Οπότε ο πίνακας a γίνεται -1 2-1 0 0 3-2 1 1 7-3 5
Μέθοδος απαλοιφής του Gauss O πολλαπλασιαστής m είναι: 1 Ενημέρωση της γραμμής : i=3 Οπότε ο πίνακας a γίνεται -1 2-1 0 0 3-2 1 0 9-4 5
Μέθοδος απαλοιφής του Gauss O πολλαπλασιαστής m είναι: -3 Ενημέρωση της γραμμής : i= 3 Οπότε ο πίνακας a γίνεται -1 2-1 0 0 3-2 1 0 0 2 2
Μέθοδος απαλοιφής του Gauss x=zeros(1,n); % αρχικοποίηση του διανύσματος x με μηδενικά % Βήμα 5: Προς τα πίσω αντικατάσταση x(n)=a(n,n+1)/a(n,n); for i=n-1:-1:1 s=0; for j=i+1:n s=s+a(i,j)*x(j); end x(i)=(a(i,n+1)-s)/a(i,i); end
Μέθοδος απαλοιφής του Gauss Η τελική μορφή του επαυξημένου πίνακα a είναι -1 2-1 0 0 3-2 1 0 0 2 2 Η λύση μετά την εφαρμογή της προς τα πίσω αντικατάστασης 1 1 1
Μέθοδος Gauss - Jordan Έστω ότι θέλουμε να λύσουμε το ακόλουθο γραμμικό σύστημα με τη μέθοδο Gauss- Jordan: A = [0 2-1; 1-1 0; 3 0-3]; b = [0 1 5]'; Υπολογίζουμε τον επαυξημένο πίνακα a = [A b]; disp(a);
Μέθοδος Gauss - Jordan O επαυξημένος πίνακας Α b είναι ο 0 2 1 0 1 1 0 1 3 0 3 5 Δηλώνουμε την τάξη του πίνακα Α n=3; [n,n]=size(α); d=det(a); % Υπολογισμός της ορίζουσας του Α disp('det(a)'); disp(d);
Μέθοδος Gauss - Jordan if d==0 disp(αφού η ορίζουσα είναι 0 το σύστημα δεν έχει μοναδική λύση'); return; else disp(αφού η ορίζουσα είναι διάφορη από το 0 το σύστημα έχει μια και μοναδική λύση'); end; Το αποτέλεσμα. det(a)=-6 Αφού η ορίζουσα είναι διάφορη από το 0 το σύστημα έχει μια και μοναδική λύση
Μέθοδος Gauss - Jordan for r=1:n for q=r+1:n % Εκτέλεση οδήγησης if a(r,r)==0 disp( Αφού το οδηγό στοιχείο είναι 0 γίνεται ανταλλαγή γραμμών '); bq=a(1,:); a(1,:)=a(q,:); a(q,:)=bq; end end for i=1:n if i~=r disp( Το οδηγό στοιχείο είναι:');disp(a(r,r)); m=-(a(i,r)/a(r,r)); disp( Ο πολλαπλασιαστής m είναι:'); disp(m); a(i,:)=a(i,:)+a(r,:)*m; disp( Ενημέρωση της γραμμής:');disp(i);disp('a'); disp(a); end end end
Μέθοδος Gauss - Jordan Παράδειγμα: Αφού το οδηγό στοιχείο είναι 0 γίνεται ανταλλαγή γραμμών. Οι γραμμές που ανταλλάσσονται είναι η 1 η με τη 2 η. a 1-1 0 1 0 2-1 0 3 0-3 5
Μέθοδος Gauss - Jordan Το οδηγό στοιχείο είναι 1 O πολλαπλασιαστής m είναι: 0 Ενημέρωση της γραμμής : 2 a 1-1 0 1 0 2-1 0 3 0-3 5
Μέθοδος Gauss - Jordan Το οδηγό στοιχείο είναι 1 O πολλαπλασιαστής m είναι: -3 Ενημέρωση της γραμμής : 3 a 1-1 0 1 0 2-1 0 0 3-3 2
Μέθοδος Gauss - Jordan Το οδηγό στοιχείο είναι 2 O πολλαπλασιαστής m είναι: 0.5000 Ενημέρωση της γραμμής : 1 a 1.0000 0-0.5000 1.0000 0 2.0000-1.0000 0 0 3.0000-3.0000 2.0000
Μέθοδος Gauss - Jordan Το οδηγό στοιχείο είναι 2 O πολλαπλασιαστής m είναι: -1.5000 Ενημέρωση της γραμμής : 3 a 1.0000 0-0.5000 1.0000 0 2.0000-1.0000 0 0 0-1.5000 2.0000
Μέθοδος Gauss - Jordan Το οδηγό στοιχείο είναι: -1.5000 O πολλαπλασιαστής m είναι: -0.3333 Ενημέρωση της γραμμής : 1 a 1.0000 0 0 0.3333 0 2.0000-1.0000 0 0 0-1.5000 2.0000
Μέθοδος Gauss - Jordan Το οδηγό στοιχείο είναι: -1.5000 O πολλαπλασιαστής m είναι: -0.6667 Ενημέρωση της γραμμής : 2 a 1.0000 0 0 0.3333 0 2.0000 0-1.3333 0 0-1.5000 2.0000
Μέθοδος Gauss - Jordan % υπολογισμός λύσης for i=1:n x(i)=a(i,n+1)/a(i,i); end
Μέθοδος Gauss - Jordan Η τελική μορφή του επαυξημένου πίνακα a είναι 1.0000 0 0 0.3333 0 2.0000 0-1.3333 0 0-1.5000 2.0000 Η λύση είναι: 0.3333-0.6667-1.3333
Η συνάρτηση rref R = rref(a) : παράγει τον ανηγμένο κλιμακωτό πίνακα Α χρησιμοποιώντας τη μέθοδο Gauss Jordan με μερική οδήγηση. Παράδειγμα: A = [-1 2-1; 2-1 0; 1 7-3]; b = [0 1 5]'; a = [A b]; disp(a); -1 2-1 0 2-1 0 1 1 7-3 5
Η συνάρτηση rref R=rref(a) ή R=rref([A b]) R = 1 0 0 1 0 1 0 1 0 0 1 1 Συνεπώς και o βαθμός του πίνακα Α είναι : rank(a)=3
Η συνάρτηση rref Υπολογισμός αντίστροφου με Gauss Jordan rref([a eye(size(a))]) 1.0000 0 0-0.5000 0.1667 0.1667 0 1.0000 0-1.0000-0.6667 0.3333 0 0 1.0000-2.5000-1.5000 0.5000 Επαλήθευση: inv(a) ans = -0.5000 0.1667 0.1667-1.0000-0.6667 0.3333-2.5000-1.5000 0.5000