Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1...

42
Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθμοί 1.2.1 Παράδειγμα Οι μιγαδικού αριθμοί στο MATLAB. Στο MATLAB τα στοιχεία των διανυσμάτων μπορούν να είναι είτε πραγματικοί είτε μιγαδικοί αριθμοί. Όπως έχουμε αναφέρει, το περιβάλλον χειρίζεται τις βαθμωτές ποσότητες (αριθμούς) ως διανύσματα με ένα στοιχείο. Στο MATLAB οι ποσότητες i και j είναι ίσες με τη φανταστική μονάδα, εκτός και αν τους αλλάξουμε τιμή. >> i^2 ans = -1 >> j^2 ans = -1 Μπορούμε να ορίσουμε μιγαδικούς αριθμούς και να κάνουμε τις βασικές πράξεις με αυτούς. Η φανταστική μονάδα θα πρέπει είτε να πολλαπλασιάζεται με τον τελεστή * είτε να πληκτρολογείται κολλητά στο φανταστικό μέρος. >> clear all >> z=sqrt(2)-5i z = 1.4142 - 5.0000i >> w=1+3*i w = 1.0000 + 3.0000i >> z+w ans = 2.4142 - 2.0000i >> z*w ans = 16.4142 - 0.7574i >> (2-3i)/(1+i) ans = -0.5000 - 2.5000i Με τις συναρτήσεις abs( ), angle( ), conj( ), real( ), image( ) υπολογίζουμε το μέτρο, το πρωτεύον όρισμα (σε ακτίνια), το συζυγή, το πραγματικό και το μιγαδικό μέρος μιγαδικού αριθμού. Η atan( ) επιστρέφει το τόξο εφαπτομένης γωνίας σε ακτίνια. >> abs(z)^2 ans = 27 >> z*conj(z) ans =

Transcript of Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1...

Page 1: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 1 από 42

Κεφάλαιο 1

Εισαγωγή

1. 2 Μιγαδικοί Αριθµοί

1.2.1 Παράδειγµα Οι µιγαδικού αριθµοί στο MATLAB. Στο MATLAB τα στοιχεία των διανυσµάτων µπορούν να είναι είτε πραγµατικοί είτε µιγαδικοί αριθµοί. Όπως έχουµε αναφέρει, το περιβάλλον χειρίζεται τις βαθµωτές ποσότητες (αριθµούς) ως διανύσµατα µε ένα στοιχείο. Στο MATLAB οι ποσότητες i και j είναι ίσες µε τη φανταστική µονάδα, εκτός και αν τους αλλάξουµε τιµή. >> i^2 ans = -1 >> j^2 ans = -1 Μπορούµε να ορίσουµε µιγαδικούς αριθµούς και να κάνουµε τις βασικές πράξεις µε αυτούς. Η φανταστική µονάδα θα πρέπει είτε να πολλαπλασιάζεται µε τον τελεστή * είτε να πληκτρολογείται κολλητά στο φανταστικό µέρος. >> clear all >> z=sqrt(2)-5i z = 1.4142 - 5.0000i >> w=1+3*i w = 1.0000 + 3.0000i >> z+w ans = 2.4142 - 2.0000i >> z*w ans = 16.4142 - 0.7574i >> (2-3i)/(1+i) ans = -0.5000 - 2.5000i Με τις συναρτήσεις abs( ), angle( ), conj( ), real( ), image( ) υπολογίζουµε το µέτρο, το πρωτεύον όρισµα (σε ακτίνια), το συζυγή, το πραγµατικό και το µιγαδικό µέρος µιγαδικού αριθµού. Η atan( ) επιστρέφει το τόξο εφαπτοµένης γωνίας σε ακτίνια. >> abs(z)^2 ans = 27 >> z*conj(z) ans =

Page 2: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 2 από 42

27 >> angle(z) ans = -1.2952 >> atan(imag(z)/real(z)) ans = -1.2952 >> angle(z*w)-angle(z)-angle(w) ans = 0 >> abs(z*w)-abs(z)*abs(w) ans = -3.5527e-015 Παρατηρείστε ότι οι πράξεις µε ακρίβεια δεκαέξι ψηφίων, µε τις οποίες εργάζεται το MATLAB, δεν επιστρέφουν το αναµενόµενο µηδενικό αποτέλεσµα αλλά µία πολύ µικρή ποσότητα της τάξης του 10-15. Όταν ζητήσουµε το γράφηµα µιγαδικών ποσοτήτων η plot( ) στον άξονα των x εµφανίζει το πραγµατικό µέρος του µιγαδικού και στον άξονα των ψ το µιγαδικό. >> x=0.2+0.8i; >> n=0:0.01:20; >>plot(x.^n),xlabel('Real(x)'),ylabel('Imaginary(x)')

-0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Real(x)

Imag

inar

y(x)

1.4 Πολυώνυµα και Πολυωνυµικές εξισώσεις

1.4.1 Παράδειγµα Τα πολυώνυµα στο MATLAB. Τα πολυώνυµα στο MATLAB τα χειριζόµαστε µε διανύσµατα (γραµµές ή στήλες) που περιέχουν τους συντελεστές τους. Η polyval(p,x), όπου p είναι διάνυσµα µεγέθους n+1 του οποίου τα στοιχεία είναι οι συντελεστές ενός πολυωνύµου p(1)

Page 3: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 3 από 42

*x^(n)+ p(2)*x^(n-1) + ... + p(n)*x + p(n+1), και x µία τιµή υπολογίζει την τιµή το πολυωνύµου στην τιµή x. Αν το x είναι πίνακας ή διάνυσµα το πολυώνυµο υπολογίζεται σε όλα τα στοιχεία του x. >> clear all >> p=[1,-3,4,-2]; >> polyval(p,0) ans = -2 >> polyval(p,[1,1+i,1-i]) ans = 0 0 0 >> x=-10:0.1:10; plot(x,polyval(p,x))

-10 -8 -6 -4 -2 0 2 4 6 8 10-1500

-1000

-500

0

500

1000

Η roots(p) υπολογίζει τις ρίζες του πολυωνύµου p του οποίου συντελεστές είναι τα στοιχεία του πολυωνύµου p . Επίσης η poly(v), όταν το v είναι διάνυσµα, επιστρέφει ένα διάνυσµα που αντιστοιχεί σε πολυώνυµο του οποίου οι ρίζες είναι τα στοιχεία του v. >> roots(p) ans = 1.0000 + 1.0000i 1.0000 - 1.0000i 1.0000 >> poly([1,1+i,1-i]) ans = 1 -3 4 -2 Το πηλίκο και το υπόλοιπο της διαίρεσης δύο πολυωνύµων p1,p2 µπορεί να επιστραφεί από την deconv(p1,p2) και το γινόµενό τους µε την conv(p1,p2). >> [phliko,ypoloipo]=deconv([1,-1,0,2,-3],[1,0,-1]) phliko =

Page 4: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 4 από 42

1 -1 1 ypoloipo = 0 0 0 1 -2 >> conv(phliko,[1,0,-1])+ypoloipo ans = 1 -1 0 2 -3

1.4.2 Παράδειγµα

α) Να υπολογισθεί το ανάπτυγµα του ( )51x + ,

β) Να παραγοντοποιηθεί το πολυώνυµο ( ) , ( ) (3 3a b b c c a− + − + − )3

2γ) Να βρεθεί η λύση της πολυωνυµικής εξίσωσης , ( ) ( ) ( )2 23 3 5 5 8 8x x x+ + + = + Χρησιµοποιώντας τις δυνατότητες συµβολικών υπολογισµών στο MATLAB (δείτε εισαγωγικό κεφάλαιοMATLAB) µπορούµε να χειριστούµε πολυωνυµικές εκφράσεις παρόµοια µε το MATHEMATICA. α) Το ανάπτυγµα µιας παράστασης δίνεται από την συνάρτηση expand( ). >> syms x a b c >> expand((x+1)^5) ans = x^5+5*x^4+10*x^3+10*x^2+5*x+1 >> pretty(ans) 5 4 3 2 x + 5 x + 10 x + 10 x + 5 x + 1 >> sym2poly(ans) ans = 1 5 10 10 5 1 Η sym2poly( ) µετατρέπει το συµβολικό πολυώνυµο σε πολυώνυµο διανυσµατικής αναπαράστασης. β) Η παραγοντοποίηση µιας παράστασης γίνεται από την συνάρτηση factor( ). >> factor((a-b)^3+(b-c)^3+(c-a)^3) ans = -3*(b-c)*(-c+a)*(a-b) γ) Η επίλυση µιας πολυωνυµικής εξίσωσης γίνεται από την solve( ). >> solve(3*(x+3)^2+5*(x+5)^2-8*(x+8)^2,x) ans = -6

Page 5: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 5 από 42

Κεφάλαιο 2

Γραµµικά Συστήµατα

2.1 Πολυώνυµα και Πολυωνυµικές εξισώσεις 2.1.1 Παράδειγµα Λύση γραµµικών συστηµάτων στο MATLAB Να λυθεί το παρακάτω σύστηµα στο ΜATLAB

2 32 2 3

5

x y zx y z

x y5

+ + =+ + =

− =

Απάντηση. Το παραπάνω σύστηµα γράφεται σε µορφή πινάκων ως : 1 1 2 32 2 3 51 1 0 5

X BA

xyz

⎛ ⎞⎛ ⎞⎜ ⎟⎜ ⎟ =⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟−⎝ ⎠⎝ ⎠

⎛ ⎞⎜ ⎟⎜ ⎟⎜ ⎟⎝ ⎠

∆ίνουµε στο MATLAB, τον πίνακα Α και τον πίνακα Β, >> clear all >> a=[1 1 2; 2 2 3; 1 -1 0]; >> b=[3 5,5]'; To ΜATLAB λύνει συστήµατα µε τη χρήση του τελεστή \. Ο τελεστής αυτός εφαρµόζει τη µέθοδο παραγοντοποίησης LU µε µερική οδήγηση, στην οποία θα αναφερθούµε παρακάτω, για να λύσει το σύστηµα. Για το πώς το MATLAB λύνει ένα σύστηµα εάν το είναι ισοδύναµο µε ένα σύστηµα µε περισσότερους αγνώστους ή περισσότερες εξισώσεις από ότι αγνώστους θα αναφερθούµε παρακάτω. Τώρα για το σύστηµα του παραδείγµατος η λύση δίνεται µε την εντολή >> x=a\b x = 3 -2 1 2.1.2 Παράδειγµα Συµβολική λύση γραµµικών συστηµάτων στο MATLAB Να λυθεί το παρακάτω σύστηµα :

2

1ax y zx ay z ax y az a

+ + =+ + =

+ + =

Να γίνει πλήρης διερεύνηση για τις τιµές του α. Απάντηση.

Page 6: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 6 από 42

Όπως έχουµε αναφέρει δηλώνουµε τις συµβολικές µεταβλητές και λύνουµε µε τη solve( ) το σύστηµα. Οι εξισώσεις στη solve γράφονται στη µορφή ε(x,y,x) όπου έχουµε µεταφέρει όλες τις ποσότητες στο αριστερό µέρος της ισότητας και στη συνέχεια παραθέτονται οι άγνωστοι. >> clear all >> syms a x y z >> s=solve(a*x+y+z-1,x+a*y+z-a,x+y+a*z-a^2,x,y,z) s = x: [1x1 sym] y: [1x1 sym] z: [1x1 sym] Για να δούµε τις συµβολικές εκφράσεις των λύσεων πληκτρολογούµε: >> s.x ans = -(a+1)/(a+2) >> s.y ans = 1/(a+2) >> s.z ans = (a^2+2*a+1)/(a+2) >> factor(s.z) ans = (a+1)^2/(a+2) Η διερεύνηση είναι τώρα εύκολη. Αν ( )( )1 2 0 1a a a a 2+ + ≠ ⇔ ≠ − ∧ ≠ − έχουµε την παραπάνω λύση. Εάν έχουµε απειρία λύσεων ενώ εάν δεν υπάρχει λύση.

1a = − 2a = −

Ένας εναλλακτικός τρόπος να κάνουµε διερεύνηση είναι, αφού δηλώσουµε τη συµβολική µεταβλητή a ως πραγµατική, να ορίσουµε τους πίνακες και να ζητήσουµε, µε τη χρήση της rref( ), να γίνουν οι κατάλληλες γραµµοπράξεις στον επαυξηµένο πίνακα ώστε να µας επιστραφεί η ισοδύναµη διαγώνια µορφή του (reduced row echelon form) εφαρµόζοντας τη µέθοδο Gauss Jordan. H rref( ) µπορεί, όπως είδαµε, να χρησιµοποιηθεί και για πίνακες µε καθαρά αριθµητικά στοιχεία. >> clear all >> syms a real >> am=[a 1 1; 1 a 1;1 1 a];b=[1 a a^2]'; >> rref([am b]) ans = [ 1, 0, 0, -(1+a)/(a+2)] [ 0, 1, 0, 1/(a+2)] [ 0, 0, 1, (a^2+2*a+1)/(a+2)]

Page 7: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 7 από 42

2.2 Μέθοδος απαλοιφής του Gauss 2.2.1 Παράδειγµα Μέθοδος απαλοιφής του Gauss στο MATLAB. Να λυθεί το παρακάτω σύστηµα µε την µέθοδο απαλοιφής του Gauss.

2 32 2 3

5

x y zx y z

x y5

+ + =+ + =

− =

Απάντηση. Το παραπάνω σύστηµα γράφεται σε µορφή πινάκων ως : 1 1 2 32 2 3 51 1 0 5

X BA

xyz

⎛ ⎞⎛ ⎞⎜ ⎟⎜ ⎟ =⎜ ⎟⎜ ⎟⎜ ⎟⎜ ⎟−⎝ ⎠⎝ ⎠

⎛ ⎞⎜ ⎟⎜ ⎟⎜ ⎟⎝ ⎠

∆ίνουµε στο MATLAB, τον πίνακα Α και τον πίνακα Β, >> clear all >> a=[1 1 2; 2 2 3; 1 -1 0]; >> b=[3 5,5]'; Θα χρησιµοποιήσουµε τις δύο ακόλουθες function. Η gausselim( ) εµφανίζει τα βήµατα που ακολουθούνται στη διαδικασία της απαλοιφής Gauss µε µερική οδήγηση. Στη µερική οδήγηση για να µηδενίσουµε τα στοιχεία που βρίσκονται κάτω από το διαγώνιο στοιχείο, σε κάθε βήµα, εναλλάσσουµε τις γραµµές έτσι ώστε στη διαγώνια θέση να βρίσκεται το µεγαλύτερο από τα στοιχεία που βρίσκονται στην ίδια στήλη µε το διαγώνιο στοιχείο και κάτω από αυτό. Η gauss( ) επιστρέφει τη λύση του συστήµατος µε τη µέθοδο Gauss. function elimat=gausselim(a,b); % GAUSS ELIMINATION RETURNS THE ELLIMINATED MATRIX [A|b] n=length(b); for i=1:n-1, [amax,imax]=max(abs(a(i:n,i))); if amax<eps disp(' Singular Matrix'); elimat=[a,b]; break; end imax=imax+i-1; if imax~=i, sa=a(imax,i:n);sb=b(imax); a(imax,i:n)=a(i,i:n); b(imax)=b(i);a(i,i:n)=sa;b(i)=sb; end b(i+1:n)=b(i+1:n)-b(i)*a(i+1:n,i)/a(i,i); a(i+1:n,1:n)=a(i+1:n,1:n)-a(i+1:n,i)*a(i,1:n)/a(i,i); elimat=[a,b] end; if abs(a(n,n))<eps, disp(' Singular Matrix'); end

Page 8: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 8 από 42

function x=gauss(a,b); % solving ax=b, where a in R^nxn, x,b in R^n n=length(b); for i=1:n-1, [amax,imax]=max(abs(a(i:n,i))); if amax<eps error(' Singular Matrix'); end imax=imax+i-1; if imax~=i, sa=a(imax,i:n);sb=b(imax); a(imax,i:n)=a(i,i:n); b(imax)=b(i);a(i,i:n)=sa;b(i)=sb; end b(i+1:n)=b(i+1:n)-b(i)*a(i+1:n,i)/a(i,i); a(i+1:n,1:n)=a(i+1:n,1:n)-a(i+1:n,i)*a(i,1:n)/a(i,i); end; if abs(a(n,n))<eps, error(' Singular Matrix');end % back up substitution x(n,1)=b(n)/a(n,n); for i=n-1:-1:1, x(i,1)=(b(i)-a(i,i+1:n)*x(i+1:n,1))/a(i,i); end; >> gausselim(a,b) elimat = 2.0000 2.0000 3.0000 5.0000 0 0 0.5000 0.5000 0 -2.0000 -1.5000 2.5000 elimat = 2.0000 2.0000 3.0000 5.0000 0 -2.0000 -1.5000 2.5000 0 0 0.5000 0.5000 ans = 2.0000 2.0000 3.0000 5.0000 0 -2.0000 -1.5000 2.5000 0 0 0.5000 0.5000 Η λύση του συστήµατος. >> x=gauss(a,b) x =

Page 9: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 9 από 42

3 -2 1 Αν τώρα θέλουµε να λύσουµε το σύστηµα:

2 32 2 4

5

x y zx y z

x y5

+ + =+ + =

− =

Ορίζουµε τους πίνακες >> a=[1 1 2; 2 2 4; 1 -1 0]; >> b=[3 5,5]'; Η συνάρτηση rrev( ) µπορεί να µας δείξει ότι το σύστηµα δεν έχει λύση. >> rref([a b]) ans = 1 0 1 0 0 1 1 0 0 0 0 1 >> gausselim(a,b) elimat = 2.0000 2.0000 4.0000 5.0000 0 0 0 0.5000 0 -2.0000 -2.0000 2.5000 elimat = 2.0000 2.0000 4.0000 5.0000 0 -2.0000 -2.0000 2.5000 0 0 0 0.5000 Singular Matrix >> x=gauss(a,b) ??? Error using ==> gauss Singular Matrix

2.2 Γεωµετρική Σηµασία Γραµµικών Συστηµάτων 2.2.1 Παράδειγµα Συστήµατα 2x2.

Page 10: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 10 από 42

α) Να σχεδιαστούν οι ευθείες:

1

2 4x yx y− =+ =

β) Να σχεδιαστούν οι ευθείες:

11

x yx y− = −− =

γ) Να σχεδιαστούν οι ευθείες:

6 32 2

x yx y

6− + = −− =

Εδώ µπορούµε να χρησιµοποιήσουµε την συνάρτηση ezplot( ). Ο τύπος της συνάρτησης µπορεί να εισαχθεί είτε ως κείµενο µέσα σε εισαγωγικά είτε αφού έχει δηλωθεί µε την inline (περισσότερα στο κεφάλαιο συναρτήσεων). Μετά τη συνάρτηση ακολουθεί το πεδίο στο οποίο θα γίνει το γράφηµα. α) Το σηµείο τοµής είναι και η λύση του συστήµατος. >> clear all >> clf >> ezplot('x-y-1',[-5 5]) >> grid on >> hold Current plot held >> ezplot('2*x+y-4',[-5 5])

-5 -4 -3 -2 -1 0 1 2 3 4 5-5

-4

-3

-2

-1

0

1

2

3

4

5

x

y

2 x+y-4 = 0

β) Σε αυτήν την περίπτωση οι ευθείες είναι παράλληλες οπότε δεν έχει λύση το σύστηµα. >> clear all

Page 11: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 11 από 42

>> clf >> ezplot('x-y-1',[-5 5]) >> grid on >> hold Current plot held >> ezplot('x-y+1',[-5 5])

-5 -4 -3 -2 -1 0 1 2 3 4 5-5

-4

-3

-2

-1

0

1

2

3

4

5

x

y

x-y+1 = 0

γ) Οι ευθείες ταυτίζονται οπότε έχουµε άπειρες λύσεις για το σύστηµα. >> clear all >> clf >> ezplot('-6*x+3*y+6',[-5 5]) >> grid on >> hold Current plot held >> ezplot('2*x-y-2',[-5 5])

-5 -4 -3 -2 -1 0 1 2 3 4 5-5

-4

-3

-2

-1

0

1

2

3

4

5

x

y

2 x-y-2 = 0

Page 12: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 12 από 42

2.2.1 Παράδειγµα Συστήµατα 3x3. α) Να σχεδιαστούν τα επίπεδα:

1

11

x y zx yx y z

+ + =+ =+ − =

Για τη γραφική παράσταση επιπέδων ή επιφανειών στο χώρο, χρησιµοποιείται η ezsurf( ), η οποία µπορεί να εµφανίζει επιφάνειες όταν γνωρίζουµε την παραµετρική τους παράσταση των σηµείων τους ( ( ), ( ), ( )x t y t z t ). Ο τύπος της κάθε συνιστώσας της επιφάνειας ,µπορεί να εισαχθεί ως κείµενο µέσα σε εισαγωγικά. >> clear all >> clf >> ezsurf('x','y','1-x-y')

-50

5-5

0

5

-15

-10

-5

0

5

10

15

x

x = x, y = y, z = 1-x-y

y

z

>> hold Current plot released >> ezsurf('x','1-x','z')

-5 0 5-50

5

-8

-6

-4

-2

0

2

4

6

8

x

x = x, y = 1-x, z = z

y

z

Page 13: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 13 από 42

>> ezsurf('x','y','-1+x+y')

-50

5 -50

5-15

-10

-5

0

5

10

15

y

x = x, y = y, z = -1+x+y

x

z

Page 14: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 14 από 42

Κεφάλαιο 3

Πίνακες 3.1.1 Παράδειγµα Πράξεις µε τους πίνακες στο MATLAB ∆ίνονται οι πίνακες

1 2 3 2 1 02 3 4 ; 0 2 03 4 5 0 0

A Bx

⎛ ⎞ ⎛⎜ ⎟ ⎜= =⎜ ⎟ ⎜⎜ ⎟ ⎜⎝ ⎠ ⎝

⎞⎟⎟⎟⎠

Να υπολογιστούν οι πίνακες : α) A B+β) 3* Aγ) * , *A B B Aδ) 1 1,A B− −

Απάντηση. Όπως αναφέρεται στο εισαγωγικό κεφάλαιο, το MATLAB είναι ένα περιβάλλον το οποίο είναι φτιαγµένο για να εργάζεται µε πίνακες. Οι βασικοί τελεστές +,-,*,/,^ πινάκων (και διανυσµάτων) εφαρµόζονται και δίνουν αποτελέσµατα εφόσον οι διαστάσεις των πινάκων το επιτρέπει. Οι τελεστές .* , ./, .^ εφαρµόζουν την πράξη στοιχείο προς στοιχείο. Όλοι αυτοί οι τελεστές εφαρµόζονται είτε όταν οι πίνακες περιέχουν αµιγώς αριθµητικές ποσότητες είτε όταν ορίζονται ως συµβολικές ποσότητες. >> clear all >> syms x >> a=[1 2 3;2 3 4;3 4 5];b=[2 1 0; 0 2 0; 0 0 x]; >> a+b ans = [ 3, 3, 3] [ 2, 5, 4] [ 3, 4, 5+x] >> 3*a ans = 3 6 9 6 9 12 9 12 15 >> a*b ans = [ 2, 5, 3*x]

Page 15: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 15 από 42

[ 4, 8, 4*x] [ 6, 11, 5*x] >> b*a ans = [ 4, 7, 10] [ 4, 6, 8] [ 3*x, 4*x, 5*x] Η συνάρτηση inv( ) υπολογίζει τον αντίστροφο πίνακα, εφόσον αυτός υπάρχει. Επειδή ο υπολογισµός του αντιστρόφου γίνεται µε προσεγγιστικές µεθόδους επιστρέφεται, εάν ο αντίστροφος δεν υπάρχει, συνήθως η συνάρτηση επιστρέφει απάντηση πίνακα µαζί µε ένα προειδοποιητικό µήνυµα. Μία δοκιµή µπορεί να αποδείξει πόσο ανακριβής είναι ο υπολογισµός του αντιστρόφου. >> inv(a) Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 2.312965e-018. ans = 1.0e+016 * -0.4504 0.9007 -0.4504 0.9007 -1.8014 0.9007 -0.4504 0.9007 -0.4504 >> inv(a)*a Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 2.312965e-018. ans = 0 0 0 -4 0 8 2 0 0 Η inv( ) εφαρµόζεται και σε συµβολικούς πίνακες. >> inv(b) ans = [ 1/2, -1/4, 0] [ 0, 1/2, 0] [ 0, 0, 1/x]

Page 16: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 16 από 42

3.1.2 Παράδειγµα Υπολογισµός αντιστρόφου µε τη χρήση του επαυξηµένου πίνακα στο MATLAB Υπολογίστε αν υπάρχουν τους αντιστρόφους των πινάκων.

1) 2) 1 0 22 1 34 1 8

A⎛ ⎞⎜ ⎟= −⎜ ⎟⎜ ⎟⎝ ⎠

1 2 02 4 00 0 1

B⎛ ⎞⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠

Θα χρησιµοποιήσουµε την rref( ) για να υπολογίσουµε τον αντίστροφο για τους πίνακες του παραδείγµατος . 1) >> A=[1 0 2; 2 -1 3; 4 1 8] A = 1 0 2 2 -1 3 4 1 8 >> rref([A,eye(3)]) ans = 1 0 0 -11 2 2 0 1 0 -4 0 1 0 0 1 6 -1 -1 Μετά τις γραµµοπράξεις το αριστερό µέρος του πίνακα είναι ο µοναδιαίος και το δεξί ο αντίστροφος. 2) >> A=[1 2 0; 2 4 0; 0 0 2] A = 1 2 0 2 4 0 0 0 2 >> rref([A,eye(3)]) ans = Columns 1 through 5 1.0000 2.0000 0 0 0.5000 0 0 1.0000 0 0 0 0 0 1.0000 -0.5000 Column 6 0 0.5000 0 Παρατηρούµε ότι µετά τις γραµµοπράξεις το αριστερό µέρος του πίνακα δεν είναι ο µοναδιαίος οπότε και ο πίνακας δεν αντιστρέφεται.

Page 17: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 17 από 42

3.1.3 Παράδειγµα Λύση του παραδείγµατος των αεροπορικών συνδέσεων στο MATLAB Ορίζουµε τον πίνακα και απλώς εφαρµόζουµε τον τύπο. >> clear all >> a=[0 0 0 1 0 0; 0 0 1 1 0 0; 0 1 0 1 0 0; 1 1 1 0 1 1; 0 0 0 1 0 0;0 0 0 1 0 0] a = 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 1 1 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 >> a+a^2+a^3 ans = 1 2 2 6 1 1 2 4 5 8 2 2 2 5 4 8 2 2 6 8 8 7 6 6 1 2 2 6 1 1 1 2 2 6 1 1

Page 18: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 18 από 42

Κεφάλαιο 4

Ορίζουσες 4.1.1 Παράδειγµα Οι ορίζουσες πίνακα στο MATLAB Να υπολογίσετε την ορίζουσα και τον αντίστροφο του παρακάτω πίνακα :

2 2 2

1 1 1m a b c

a b c

⎛ ⎞⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠

Απάντηση. Η συνάρτηση του MATLAB που υπολογίζει την ορίζουσα ενός πίνακα είναι η det( ) και εφαρµόζεται είτε όταν οι πίνακες περιέχουν αµιγώς αριθµητικές ποσότητες είτε όταν ορίζονται ως συµβολικές ποσότητες. Πρώτα ορίζουµε το συµβολικό πίνακα m. >> syms a b c >> m=[1 1 1; a b c; a^2 b^2 c^2]; Ο υπολογισµός της ορίζουσας είναι εύκολος όπως και η παραγοντοποίησή της µε τη χρήση της factor( ). >> d=det(m) d = b*c^2-c*b^2-a*c^2+a*b^2+a^2*c-a^2*b >> factor(d) ans = -(-c+b)*(a-c)*(a-b) Ο αντίστροφος βρίσκεται µε τη κλίση της inv( ) όπως έχουµε δει. >> inv(m) ans = [ c*b/(-b*a+c*b+a^2-c*a), -(b+c)/(-b*a+c*b+a^2-c*a), 1/(-b*a+c*b+a^2-c*a)] [ -c*a/(-c*a+b*a-b^2+c*b), (a+c)/(-c*a+b*a-b^2+c*b), -1/(-c*a+b*a-b^2+c*b)] [ b*a/(-c*a+b*a+c^2-c*b), -(a+b)/(-c*a+b*a+c^2-c*b), 1/(-c*a+b*a+c^2-c*b)] Η simple( ) επιστρέφει την απλούστερη µορφή τω εκφράσεων του πίνακα. > s=simple(inv(m)) s =

Page 19: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 19 από 42

[ c*b/(a-c)/(a-b), -(b+c)/(a-c)/(a-b), 1/(a-c)/(a-b)] [ -c*a/(-c+b)/(a-b), (a+c)/(-c+b)/(a-b), -1/(-c+b)/(a-b)] [ b*a/(-c+b)/(a-c), -(a+b)/(-c+b)/(a-c), 1/(-c+b)/(a-c)] 4.2.1 Παράδειγµα Ο γενικευµένος αντίστροφος στο MATLAB Έστω . Ο πίνακας n mA ×∈ † m nA ×∈ που ικανοποιεί τις παρακάτω ιδιότητες :

( )( )

† † †

† †

† †

T

T

AA A AA AA A

AA AA

A A A A

=

=

=

=

ονοµάζεται γενικευµένος αντίστροφος ή ψευδοαντίστροφος του πίνακα Α. Η συνάρτηση PseudoInverse[] υπολογίζει τον ψευδοαντίστροφο ενός πίνακα. Έστω για παράδειγµα ο πίνακας :

1 2 32 3 43 4 5

A⎛ ⎞⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠

που έχει ορίζουσα 0. Πράγµατι αν αφαιρέσουµε διαδοχικά τη δεύτερη γραµµή από την τρίτη και την πρώτη γραµµή από την δεύτερη οδηγούµαστε σε ένα πίνακα που έχει δύο γραµµές ίδιες οπότε και ορίζουσα 0. Ο γενικευµένος αντίστροφος υπολογίζεται µε τη συνάρτηση pinv( ). Ο υπολογισµός του γίνεται µε τη χρήση αριθµητικών µεθόδων και είναι προσεγγίστικός. >> clear all >> a=[1 2 3;2 3 4;3 4 5] a = 1 2 3 2 3 4 3 4 5 >> pa=pinv(a) pa = -1.0833 -0.1667 0.7500 -0.1667 0.0000 0.1667 0.7500 0.1667 -0.4167 a*pa*a-a ans = 1.0e-014 * 0.0666 0.2220 0.3553 0.2665 0.4441 0.6217 0.2665 0.5329 0.7105

Page 20: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 20 από 42

Παρατηρήστε πάλι ότι οι πράξεις µε ακρίβεια δεκαέξι ψηφίων, µε τις οποίες εργάζεται το MATLAB, δεν επιστρέφει το αναµενόµενο µηδενικό αποτέλεσµα αλλά µία πολύ µικρή ποσότητα της τάξης του 10-15. >> max(max(abs(a*pa*a-a))) ans = 7.1054e-015 Για να βρούµε το µέγιστο στοιχείο ενός πίνακα (εδώ του πίνακα που έχει ως στοιχεία) τις απόλυτες τιµές της διαφοράς a*pa*a-a) εφαρµόζουµε δύο φορές τη συνάρτηση max( ). Η πρώτη εφαρµογή επιστρέφει ένα διάνυσµα που έχει ως στοιχεία το µεγαλύτερο στοιχείο κάθε στήλης. Η δεύτερη εφαρµογή µας επιστρέφει το µεγαλύτερο στοιχείο του πίνακα. >> max(max(abs(pa*a*pa-pa))) ans = 1.1102e-015 >> max(max(abs(a*pa-pa*a))) ans = 1.9984e-015 >> max(max(abs(pa*a-a*pa))) ans = 1.9984e-015 Για να βρούµε το µέγιστο στοιχείο ενός πίνακα (εδώ του πίνακα που έχει ως στοιχεία) τις απόλυτες τιµές της διαφοράς a*pa*a-a) Ο υπολογισµός του γενικευµένου αντιστρόφου βρίσκει εφαρµογή στα συστήµατα µε λιγότερες εξισώσεις από αγνώστους. Αν τώρα θέλουµε να λύσουµε το σύστηµα:

2 42 2 4 8

5

x y zx y z

x y

+ + =+ + =

− =

Ορίζουµε τους πίνακες >> clear all >> a=[1 1 2; 2 2 4; 1 -1 0];b=[4 8 5]'; Παρατηρούµε ότι έχει άπειρες λύσεις (Μία έκφραση είναι η µονοπαραµετρική οικογένεια λύσεων 4.5x z= − και 0.5y z= − − ή µία άλλη είναι ,

). 5y x= − −

4.5z x= −>> rref([a b]) ans = 1.0000 0 1.0000 4.5000 0 1.0000 1.0000 -0.5000 0 0 0 0

Page 21: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 21 από 42

Η χρήση του τελεστή \ εδώ αποτυγχάνει διότι η µέθοδος LU αποτυγχάνει. >> a\b Warning: Matrix is singular to working precision. (Type "warning off MATLAB:singularMatrix" to suppress this warning.) ans = Inf Inf Inf Ωστόσο µία λύση δίνεται από το γινόµενο του γενικευµένου αντιστρόφου επί τον πίνακα b. >> pinv(a)*b ans = 3.1667 -1.8333 1.3333 Η ακρίβεια της λύσης είναι πολύ µεγάλη µιας και το σφάλµα µικρό. >> a*ans-b ans = 1.0e-015 * 0 0 -0.8882 Αν τώρα θεωρήσουµε το ισοδύναµο σύστηµα.

2 45

x y zx y

+ + =− =

>> clear all >> a=[1 1 2; 1 -1 0];b=[4 5]'; Ο τελεστής \ δίνει µία από τις λύσεις µηδενίζοντας την παράµετρο της λύσης. >> a\b ans = 0 -5.0000 4.5000 Όπως και η χρήση του γενικευµένου αντιστρόφου. >> pinv(a)*b ans = 3.1667 -1.8333 1.3333

Page 22: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 22 από 42

Όµως η λύση αυτή είναι αυτή από τις άπειρες µε την ελάχιστη νόρµα (τετραγωνική ρίζα του αθροίσµατος των τετραγώνων των στοιχείων της λύσης.) >> [norm(a\b) norm(pinv(a)*b)] ans = 6.7268 3.8944 4.2.2 Παράδειγµα Η παραγοντοποίηση LU στο MATLAB Να παραγοντοποιηθεί σε µορφή LU ο πίνακας

6 2 4 43 3 6 112 8 21 86 0 10 7

A

− −⎛ ⎞⎜ ⎟− −⎜ ⎟=⎜ ⎟− −⎜ ⎟− −⎝ ⎠

και να λυθεί το σύστηµα 6 2 4 4 23 3 6 1 412 8 21 8 86 0 10 7 43

xyzw

− −⎛ ⎞⎛⎜ ⎟⎜

⎞ ⎛ ⎞⎟ ⎜ ⎟− − −⎜ ⎟⎜ =

⎜ ⎟⎜− −⎜ ⎟⎜− − −⎝ ⎠⎝

⎟ ⎜ ⎟⎟ ⎜ ⎟⎟ ⎜ ⎟⎠ ⎝ ⎠

Απάντηση. Όπως έχουµε αναφέρει η µέθοδος LU µε µερική οδήγηση (κατάλληλη εναλλαγή γραµµών του συστήµατος για την αποφυγή, αν αυτό είναι δυνατό, διαιρέσεων µε µηδενικά στοιχεία) είναι η µέθοδος που χρησιµοποιεί το MATLAB για αν λύνει συστήµατα µε τη χρήση του τελεστή \. H συνάρτηση lu( ) µας επιστρέφει την παραγοντοποίηση LU. >> clear all >> a=[6 -2 -4 4; 3 -3 -6 1;-12 8 21 -8;-6 0 -10 7]; >> [L,U]=lu(a) L = -0.5000 -0.5000 -0.8571 1.0000 -0.2500 0.2500 1.0000 0 1.0000 0 0 0 0.5000 1.0000 0 0 U = -12.0000 8.0000 21.0000 -8.0000 0 -4.0000 -20.5000 11.0000 0 0 4.3750 -3.7500 0 0 0 2.2857

Page 23: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 23 από 42

Ωστόσο, ισχύει όπου ο πίνακας µεταθέσεων των γραµµών του Α που έκανε η µέθοδος.

LU PA= P

>> [L,U,p]=lu(a) L = 1.0000 0 0 0 0.5000 1.0000 0 0 -0.2500 0.2500 1.0000 0 -0.5000 -0.5000 -0.8571 1.0000 U = -12.0000 8.0000 21.0000 -8.0000 0 -4.0000 -20.5000 11.0000 0 0 4.3750 -3.7500 0 0 0 2.2857 p = 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 Με την isequal( ) µπορούµε να εξετάσουµε αν δύο πίνακες είναι ίσοι. Η συνάρτηση επιστρέφει 1 (true) αν ισχύει η ισότητα και 0 (false) αν δεν ισχύει. >> isequal(L*U,p*a) ans = 1 Για να λύσουµε τώρα το σύστηµα πρέπει να λύσουµε δύο τριγωνικά συστήµατα

και Ux . Ly Pb= y= >> b=[2 -4 8 -43]'; >> y=L\(p*b) y = 8.0000 -47.0000 9.7500 -9.1429 >> x=U\y

Page 24: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 24 από 42

x = 4.5000 6.9000 -1.2000 -4.0000 >> a*x-b ans = 1.0e-014 * 0 0 -0.3553 0 4.2.3 Παράδειγµα Η Cholesky στο MATLAB Να βρεθεί η Cholesky παραγοντοποίηση του συµµετρικού πίνακα

14 11 1111 14 1111 11 14

A⎛ ⎞⎜ ⎟= ⎜ ⎟⎜ ⎟⎝ ⎠

Η συνάρτηση που χρειαζόµαστε είναι η chol( ). >> clear all >> a=[14 11 11; 11 14 11; 11 11 14]; >> u=chol(a) u = 3.7417 2.9399 2.9399 0 2.3146 1.0184 0 0 2.0785 Για τον πίνακα U ισχύει η σχέση όπου ο ανάστροφος του πίνακα U. TA U U= TU >> u.'*u-a ans = 0 0 0 0 0 0 0 0 0

Page 25: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 25 από 42

Κεφάλαιο 5 n και n

4.2.3 Παράδειγµα Βασικές πράξεις διανυσµάτων στο MATLAB. ∆ίνονται τα διανύσµατα

1 22 , 14 1

x y⎛ ⎞ ⎛ ⎞⎜ ⎟ ⎜ ⎟= =⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟−⎝ ⎠ ⎝ ⎠

α) Να υπολογίσετε το διάνυσµα 3x-4y, β) Να υπολογίσετε το εσωτερικό γινόµενο των διανυσµάτων x,y, γ) Να υπολογίσετε το εξωτερικό γινόµενο των x,y. Αφού ορίσουµε τα διανύσµατα και τον γραµµικό συνδυασµό τους. >> x=[1 2 4]';y=[2,1,-1]'; >> z=3*x+4*y z = 11 10 8 Μπορούµε µε την dot( ) και την cross( ) να βρούµε το εσωτερικό και το εξωτερικό γινόµενό τους αντίστοιχα. >> dot(x,y) ans = 0 >> cross(x,y) ans = -6 9 -3 Το Matlab δεν έχει ειδική συνάρτηση για να παραστήσουµε γραφικά διανύσµατα. Ωστόσο µπορούµε να το καταφέρουµε µε τη συνάρτηση quiver3(x,y,z,v,w,u) όπου τα x,y,z, καθορίζουν την αρχή του διανύσµατος και τα v,w,u το τέλος. Όπως βλέπουµε στις εντολές που ακολουθούν, µε τη hold µπορούµε να διατηρήσουµε το ίδιο παράθυρο για την παράσταση των επόµενων διανυσµάτων και µε τη clf καθαρίζουµε το παράθυρο των γραφικών από προηγούµενες ρυθµίσεις. >> clf

Page 26: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 26 από 42

>> quiver3(0,0,0,x(1),x(2),x(3)) >> hold Current plot held >> quiver3(0,0,0,y(1),y(2),y(3)) >> quiver3(0,0,0,z(1),z(2),z(3)) >> hold off

0 2 4 6 8 10

05

10-1

0

1

2

3

4

5

6

7

8

Page 27: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 27 από 42

Κεφάλαιο 7 Βάση και ∆ιάσταση

7.1 Παράδειγµα Βάση χώρου, Γραµµική ανεξαρτησία διανυσµάτων και τάξη πίνακα στο MATLAB.

Θα εξετάσουµε στο MATLAB εάν τα διανύσµατα 1 [0 0 1 2]η Τ= , , 2 [1 6 5 2]η Τ= − − 3 [2 3 2 0]η Τ= − είναι γραµµικά εξαρτηµένα ή

ανεξάρτητα;

Θα ορίσουµε έναν πίνακα µε στήλες τα διανύσµατα 1 2 3, ,η η η .

>> clear all

>> A=[0,1,2;0,6,3;1,-5,-2;2,-2,0]

A =

0 1 2

0 6 3

1 -5 -2

2 -2 0

Με τη χρήση της rref( ) µπορούµε να δούµε ότι η τάξη του πίνακα είναι 3. Το ίδιο µπορούµε να το δούµε χρησιµοποιώντας της κατάλληλη εντολή του MATLAB, για τον υπολογισµό της τάξης πίνακα, rank( ).

>> rref(A)

ans =

1 0 0

0 1 0

0 0 1

0 0 0

>> rank(A)

ans =

3

Οπότε συµπεραίνουµε ότι τα διανύσµατα είναι γραµµικώς ανεξάρτητα.

Για να βρούµε µία βάση του χώρου µε γενήτορες τα διανυσµάτων του παραδείγµατός µας θα πρέπει να χρησιµοποιήσουµε την εντολή συµβολικών υπολογισµών colspace( ). Για αυτήν την εντολή ο πίνακας θα πρέπει να έχει δηλωθεί ως συµβολικός µε τη χρήση της εντολής sym( ).

>> A=sym([0,1,2;0,6,3;1,-5,-2;2,-2,0])

A =

Page 28: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 28 από 42

[ 0, 1, 2]

[ 0, 6, 3]

[ 1, -5, -2]

[ 2, -2, 0]

>> colspace(A)

ans =

[ 0, 1, 0]

[ 0, 0, 1]

[ 1, 0, 0]

[ 2, 0, 4/3]

Τα τρία διανύσµατα αυτά που αντιστοιχούν στις στήλες του αποτελέσµατος παράγουν το χώρο.

Θα κάνουµε τους ίδιους υπολογισµούς και για τα διανύσµατα , ,

1 [0 0 1 2]η Τ=

2 [2 6 5 2]η Τ= − − 3 [1 3 2 0]η Τ= − .

>> clear all

>> A=[0,2,1;0,6,3;1,-5,-2;2,-2,0]

A =

0 2 1

0 6 3

1 -5 -2

2 -2 0

Πάλι µε τη χρήση της rref( ) µπορούµε να δούµε ότι η τάξη του πίνακα είναι 2 γεγονός που επιβεβαιώνεται και µε τη χρήση της rank( ).

>> rref(A)

ans =

1.0000 0 0.5000

0 1.0000 0.5000

0 0 0

0 0 0

>> rank(A)

ans =

2

Page 29: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 29 από 42

Εδώ συµπεραίνουµε ότι τα διανύσµατα είναι γραµµικώς ανεξάρτητα.

Για να βρούµε µία βάση του χώρου µε γενήτορες τα διανυσµάτων του παραδείγµατός µας θα πρέπει να χρησιµοποιήσουµε πάλι την εντολή συµβολικών υπολογισµών colspace( ).

>> A=sym([0,2,1;0,6,3;1,-5,-2;2,-2,0])

A =

[ 0, 2, 1]

[ 0, 6, 3]

[ 1, -5, -2]

[ 2, -2, 0]

>> colspace(A)

ans =

[ 0, 1]

[ 0, 3]

[ 1, 0]

[ 2, 4]

Τώρα τα δύο αυτά διανύσµατα που αντιστοιχούν στις στήλες του αποτελέσµατος αυτά παράγουν το χώρο.

7.2 Παράδειγµα Ορθοκανονική βάση στο στο MATLAB. n

Θα υπολογίσουµε στο MATLAB µία ορθοκανονική βάση του χώρου που ορίζουν τα διανύσµατα , 1 [1 1 1 1]η Τ= 2 [0 1 1 1]η Τ= , . 3 [0 0 1 1]η Τ=

Ορίζουµε τον πίνακα µε στήλες τα διανύσµατα.

>> C=[1,0,0; 1,1,0;1,1,1;1,1,1]

C =

1 0 0

1 1 0

1 1 1

1 1 1

Με την εντολή orth( ) µας επιστρέφεται ένας πίνακας µε τα διανύσµατα της ορθοκανονικής βάσης.

>> OC=orth(C)

OC =

-0.2418 -0.7120 -0.6592

-0.4530 -0.5180 0.7256

-0.6068 0.3352 -0.1395

-0.6068 0.3352 -0.1395

Page 30: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 30 από 42

Τα διανύσµατα αυτά, όπως βλέπουµε µε τις εντολές που ακολουθούν, είναι κάθετα µεταξύ τους και έχουν µέτρο 1.

>> OC(:,1)'*OC(:,2)

ans =

5.5511e-017

>> OC(:,2)'*OC(:,3)

ans =

2.6368e-016

>> OC(:,1)'*OC(:,3)

ans =

-1.3878e-016

>> sum(OC(:,1).^2)

ans =

1.0000

>> sum(OC(:,1).^2)

ans =

1.0000

>> sum(OC(:,2).^2)

ans =

1.0000

>> sum(OC(:,3).^2)

ans =

1

Παρατηρούµε ότι τα αποτελέσµατα που αναµένουµε µηδέν έχουν µία τάξη του 10-16 . Αυτό οφείλεται στο ότι ο υπολογισµός της ορθοκανονικής βάσης γίνεται µε προσεγγιστικές µεθόδους και την αριθµητική 16 ψηφίων της µηχανής. Αποτελέσµατα µε τέτοια ακρίβεια τα θεωρούµε ακριβή. Ισοδύναµη της εντολής που χρησιµοποιήσαµε για να υπολογίσουµε το µέτρο του διανύσµατος είναι και η εντολή norm( ).

>> norm(OC(:,2),2)

ans =

1.0000

Page 31: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 31 από 42

Κεφάλαιο 8 Γραµµικές απεικονίσεις

8.1 Παράδειγµα Βάση χώρου Πυρήνα και βάση χώρου εικόνα στο MATLAB. ∆ίνεται η απεικόνιση:

3 2: : ( , , ) (2 ,3 2 4 )f x y z x y z x y z→ → + − −R R +

Θα δείξουµε ότι είναι γραµµική και θα βρούµε τον πίνακά της ως προς τις κανονικές

βάσεις του πεδίου ορισµού και του πεδίου τιµών της. Στη συνέχεια θα βρούµε τις

βάσεις του πυρήνα Kerf και της εικόνας Imf της f. Θα ακολουθήσουµε τη διαδικασία

επίλυσης µε το χέρι και σε κάθε βήµα θα βλέπουµε επίσης πως µπορούµε να κάνουµε

τη λύση µε το MATLAB.

Για κάθε επιλογή διανυσµάτων ( , , )u x y z= , ( ', ', ')v x y z= του πεδίου ορισµού

έχουµε:

3R

( ) (( , , ) ( ', ', ')) ( ', ', ') (2( ') ( ') ( '),3( ') 2( ') 4( ')) (2 2 ' ' ',3 2 4 3 ' 2 ' 4 ') (2 ,3 2 4 ) (2 '

f u v f x y z x y z f x x y y z zx x y y z z x x y y z z

x y z x y z x y z x y zx y z x y z x

+ = + = + + + == + + + − + + − + + += + − + + − − + + − + == + − − + + + ' ',3 ' 2 ' 4 ')

( ) ( )y z x y z

f u f v− − + =

= +

=

Επίσης:

( ) ( ( , , )) ( , , ) (2 ,3 2 4 ) =λ(2 ,3 2 4 ) ( )

f u f x y z f x y zx y z x y z

x y z x y zf u

λ λ λ λ λλ λ λ λ λ λ

λ

= = == + − − +

+ − − + ==

=

Έτσι αποδείξαµε ότι η f είναι πράγµατι γραµµική απεικόνιση.

Για τις κανονικές βάσεις και των και

αντίστοιχα, παρατηρούµε ότι:

(1,0,0), (0,1,0), (0,0,1) (1,0), (0,1) 3R 2R

(1,0,0) (2 1 0 0, 3 1 2 0 4 0) (2,3) 2 (1,0) 3 (0,1)(0,1,0) (2 0 1 0, 3 0 2 1 4 0) (1, 2) 1 (1,0) 2 (0,1)(0,0,1) (2 0 0 1, 3 0 2 0 4 1) ( 1, 4) 1 (1,0) 4 (0,1)

fff

= ⋅ + − ⋅ − ⋅ + ⋅ = = ⋅ + ⋅= ⋅ + − ⋅ − ⋅ + ⋅ = − = ⋅ − ⋅= ⋅ + − ⋅ − ⋅ + ⋅ = − = − ⋅ + ⋅

Εποµένως, ο πίνακας της f ως προς τις προηγούµενες βάσεις είναι ο 2 1 13 2 4

−⎡ ⎤⎢ ⎥−⎣ ⎦

Ορίζουµε στο MATLAB τον παραπάνω πίνακα ως συµβολική ποσότητα µε όνοµα Α

και ως αριθµητικό πίνακα µε όνοµα ΑΑ.

>> A=sym([2 1 -1;3 -2 4])

Page 32: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 32 από 42

A =

[ 2, 1, -1]

[ 3, -2, 4]

>> AA=[2 1 -1;3 -2 4]

AA =

2 1 -1

3 -2 4

Για τον πυρήνα της f έχουµε:

( , , ) ( , , ) (0,0) (2 ,3 2 4 ) (0,0)2 0 2

3 2 4 0 3 2 4(2 ) 0

1122 2 11 2 0 11

2

x y z Kerf f x y z x y z x y zx y z z x y

x y z x y x y

z x xz x yx y y x

∈ ⇔ = ⇔ + − − + = ⇔

+ − = = +⎧ ⎫ ⎧ ⎫⇔ ⇔⎨ ⎬ ⎨ ⎬− + = − + + =⎩ ⎭ ⎩ ⎭

⎧ = −⎪= +⎧ ⎫ ⎪⇔ ⇔⎨ ⎬ ⎨+ = −⎩ ⎭ =

72 ,112

z xx

y x

−⎫ ⎧ =⎪ ⎪⎪ ⎪⇔ ∈⎬ ⎨ −⎪ ⎪ ⎪ =⎪ ⎪ ⎪⎩ ⎭ ⎩

R

Έτσι τα στοιχεία του Kerf έχουν τη µορφή:

11 7 11 7( , , ) (1, , )2 2 2 2

x x x x− −− = ⋅

− ,

µε το διάνυσµα 11 7(1, , )2 2− − να αποτελεί βάση. Πρόκειται , δηλαδή για έναν υπόχωρο

του διάστασης 1. 3R

Στο MATLAB τώρα, για το συµβολικό πίνακα Α µπορούµε να χρησιµοποιήσουµε τη

συνάρτηση null( ) για να υπολογίσουµε τη βάση του Kerf.

>> null(A)

ans =

[ 1]

[ -11/2]

[ -7/2]

Όπως παρατηρούµε το αποτέλεσµα είναι το ίδιο.

Η συνάρτηση null( ) εφαρµόζεται και σε µη συµβολικούς αριθµητικούς πίνακες (π.χ.

τον ΑΑ) και το αποτέλεσµά της είναι µία ορθοκανονική βάση του Kerf, όπως

φαίνεται από τη νόρµα που είναι ένα.

>> n=null(AA)

n =

-0.1516

Page 33: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 33 από 42

0.8339

0.5307

>> norm(n,2)

ans =

1.0000

Ωστόσο είναι εύκολο να διαπιστώσουµε ότι το διάνυσµα της βάσης που επιστρέφει

είναι στην ουσία το ίδιο.

>> n(3)/n(1)

ans =

-3.5000

>> n(2)/n(1)

ans =

-5.5000

Σε µία άλλη έκφρασή της η null( ) επιστρέφει µη ορθοκανονική βάση.

>> nn=null(AA,'d')

nn =

-0.1516

0.8339

0.5307

>> nn(2)/nn(1)

ans =

-5.5000

>> nn(3)/nn(1)

ans =

-3.5000

Αντίστοιχα, για την εικόνα Imf της γραµµικής απεικόνισης f έχουµε:

Im ( , , ) (2 ,3 2 4 ) (2 ,3 ) ( , 2 ) ( , 4 ) (2,3) (1, 2) ( 1,4)

v f v f x y z v x y z x y zv x x y y z zv x y z

∈ ⇔ = ⇔ = + − − +⇔ = + − + − ⇔⇔ = ⋅ + ⋅ − + ⋅ −

Πρόκειται δηλαδή για τον υπόχωρο του που παράγεται από τα διανύσµατα

. Επειδή όµως κάθε ζευγάρι από αυτά είναι γραµµικά

ανεξάρτητα, ο χώρος που παράγουν είναι ένας υπόχωρος του διάστασης 2,

δηλαδή ο ίδιος ο . Έτσι Imf = και ως βάση της µπορούµε να θεωρήσουµε

2R

(2,3), (1, 2), ( 1, 4)− −

2R2R 2R

Page 34: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 34 από 42

οποιοδήποτε ζευγάρι από τα (2,3), (1, 2), ( 1, 4)− − ή, γενικότερα, οποιοδήποτε

ζευγάρι µη συγγραµµικών, και άρα γραµµικά ανεξάρτητων διανυσµάτων, του

. 2R

Για την εικόνα Imf στο MATLAB µπορούµε να χρησιµοποιήσουµε τη collspace( ) η οποία εφαρµόζεται µόνο σε συµβολικούς πίνακες, όπως έχουµε αναφέρει. Στην περίπτωση αυτή ως βάση επιστρέφεται η κανονική βάση, κάτι που είναι σύµφωνο µε τα όσα αναφέρουµε παραπάνω.

>> colspace(A)

ans =

[ 1, 0]

[ 0, 1]

Page 35: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 35 από 42

Κεφάλαιο 9 Ιδιοτιµές και Ιδιοδιανύσµατα

9.1 Παράδειγµα Χαρακτηριστικά µεγέθη και εφαρµογές στο MATLAB. Ορίστε τον πίνακα

1 1 11 3 11 2 0

A−⎡ ⎤

⎢ ⎥= − −⎢ ⎥⎢ ⎥−⎣ ⎦

και βρείτε τις ιδιοτιµές του πίνακα. Βρείτε τα αντίστοιχα ιδιοδιανύσµατα. Πιστοποιείστε την ισχύ του θεωρήµατος Cayley-Hamilton. Να βρεθεί ο αντίστροφος του πίνακα µε χρήση του θεωρήµατος Cayley-Hamilton. Ορίζουµε τον πίνακα

>> format long

>> A=[1 1 -2; -1 2 1; 0 1 -1]

A =

1 1 -2

-1 2 1

0 1 -1

Η συνάρτηση poly( ) όταν εφαρµόζεται σε πίνακα επιστρέφει τους συντελεστές του χαρακτηριστικού πολυωνύµου του πίνακα. Τις ρίζες του µπορούµε να τη βρούµε µε την εντολή roots( ).

>> p=poly(A)

p =

Columns 1 through 2

1.00000000000000 -2.00000000000000

Columns 3 through 4

-1.00000000000000 2.00000000000000

>> roots(p)

ans =

6.00000000000001

3.99999999999998

3.00000000000000

Στο ίδιο συµπέρασµα φθάνουµε µε τη χρήση του ορισµού.

>> syms x

>> pp=Expand(det(x*eye(3)-A))

pp =

x^3-2*x^2-x+2

Page 36: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 36 από 42

>> solve(pp)

ans =

[ 1]

[ 2]

[ -1]

Ωστόσο, η εντολή eig( ) υπολογίζει απευθείας τις ιδιοτιµές.

>> eig(A)

ans =

2.00000000000000

1.00000000000000

-1.00000000000000

Μπορούµε µε την ίδια εντολή, στη σύνταξη που ακολουθεί, λαµβάνουµε ως στήλες ενός πίνακα τα ιδιοδιανύσµατα που αντιστοιχούν στις ισότιµες και έναν διαγώνιο πίνακα µε διαγώνια στοιχεία τις αντίστοιχες ιδιοτιµές.

>> [p,d]=eig(A)

p =

Columns 1 through 2

0.30151134457776 -0.80178372573727

0.90453403373329 -0.53452248382485

0.30151134457776 -0.26726124191242

Column 3

0.70710678118655

-0.00000000000000

0.70710678118655

d =

Columns 1 through 2

2.00000000000000 0

0 1.00000000000000

0 0

Column 3

0

0

-1.00000000000000

Μπορούµε εύκολα να πιστοποιήσουµε ότι ισχύει το θεώρηµα Cayley-Hamilton.

>> A^3-2*A^2-A+2*eye(3)

Page 37: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 37 από 42

ans =

0 0 0

0 0 0

0 0 0

Με βάση το θεώρηµα Cayley-Hamilton 1 21 12 2

A A A− = − + + I .

>> AINV=-1/2 *A^2+A+1/2 * eye(3)

AINV =

Columns 1 through 2

1.50000000000000 0.50000000000000

0.50000000000000 0.50000000000000

0.50000000000000 0.50000000000000

Column 3

-2.50000000000000

-0.50000000000000

-1.50000000000000

Κάτι που µπορούµε να το πιστοποιήσουµε µε τη χρήση της inv( ).

>> inv(A)

ans =

Columns 1 through 2

1.50000000000000 0.50000000000000

0.50000000000000 0.50000000000000

0.50000000000000 0.50000000000000

Column 3

-2.50000000000000

-0.50000000000000

-1.50000000000000

Page 38: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 38 από 42

Κεφάλαιο 10 ∆ιαγωνοποίηση

10.1 Παράδειγµα ∆ιαγωνοποίηση πίνακα στο MATLAB. Εξετάστε αν διαγωνοποιούνται οι ακόλουθοι πίνακες:

i) ii)1 3 33 5 36 6 4

A−⎡ ⎤

⎢ ⎥= −⎢ ⎥⎢ ⎥−⎣ ⎦

4 4 0 04 5 0 00 2 3 22 4 2 1

B

−⎡ ⎤⎢ ⎥−⎢ ⎥=⎢ ⎥−⎢ ⎥− −⎣ ⎦

iii)2 1 00 1 10 2 4

C⎡ ⎤⎢ ⎥= −⎢ ⎥⎢ ⎥⎣ ⎦

i) Ορίζουµε τον πίνακα και υπολογίζουµε τις ιδιοτιµές και τα διδιοδιανύσµατα µε την eig( ) και αφού έχει τρεις διαφορετικές ιδιοτιµές συµπεραίνουµε ότι ο πίνακας διαγωνοποιείται.

>> clear all

>> A=[ 1 -3 3; 3 -5 3; 6 -6 4]

A =

1 -3 3

3 -5 3

6 -6 4

>> [p,d]=eig(A)

p =

0.4082 0.4082 -0.1203

0.4082 -0.4082 -0.7595

0.8165 -0.8165 -0.6393

d =

4.0000 0 0

0 -2.0000 0

0 0 -2.0000

Οι πίνακες που µας δίνει η eig( ) ικανοποιούν την σχέση της διαγωνοποίησης . 1P AP D− =

>> inv(p)*A*p

ans =

4.0000 0 0

0.0000 -2.0000 -0.0000

0 0 -2.0000

∆εν πρέπει να ξεχνάµε ότι η eig( ) υπολογίζει προσεγγιστικά τις ιδιοτιµές και τα ιδιοδιανύσµατα. Σε αυτό οφείλονται και οι πολύ µικρές αποκλίσεις από τα αναµενόµενα, µε βάση τη θεωρία, αποτελέσµατα.

Page 39: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 39 από 42

ii) Στην περίπτωση αυτή παρατηρούµε εύκολα ότι τα γραµµικώς ανεξάρτητα διανύσµατα που παράγουν τον ιδιοχώρο είναι δύο, οπότε και ο πίνακας δεν διαγωνοποιείται.

>> B=[3 -4 0 0; 4 -5 0 0; 0 2 3 -2; -2 4 2 -1]

B =

3 -4 0 0

4 -5 0 0

0 2 3 -2

-2 4 2 -1

>> [p,d]=eig(B)

p =

-0.5000 0.5000 -0.0000 -0.0000

-0.5000 0.5000 -0.0000 -0.0000

0.5000 -0.5000 0.7071 0.7071

0.5000 -0.5000 0.7071 0.7071

d =

-1.0000 0 0 0

0 -1.0000 0 0

0 0 1.0000 0

0 0 0 1.0000

iii) Στην περίπτωση αυτού του πίνακα επίσης συµπεραίνουµε ότι δεν διαγωνοποιείται.

>> C= [ 2 1 0; 0 1 -1; 0 2 4]

C =

2 1 0

0 1 -1

0 2 4

>> [p,d]=eig(C)

p =

1.0000 1.0000 0.4082

0 -0.0000 0.4082

0 0.0000 -0.8165

d =

2 0 0

0 2 0

0 0 3

>> format long

Page 40: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 40 από 42

>> p

p =

Columns 1 through 2

1.00000000000000 1.00000000000000

0 -0.00000000000000

0 0.00000000000000

Column 3

0.40824829046386

0.40824829046386

-0.81649658092773

10.2 Παράδειγµα Τριγωνοποίηση πίνακα στο MATLAB. Τριγωνοποιείστε τον ακόλουθο πίνακα:

8 14 113 5 51 2 0

A⎡ ⎤⎢ ⎥= − − −⎢ ⎥⎢ ⎥− −⎣ ⎦

Η κατάλληλη εντολή είναι η εντολή schur( ). >> A=[8 14 11; -3 -5 -5; -1 -2 0]

A =

8 14 11

-3 -5 -5

-1 -2 0

>> [p,t]=schur(A)

p =

-0.8944 -0.1826 -0.4082

0.4472 -0.3651 -0.8165

0.0000 0.9129 -0.4082

t =

1.0000 -4.0826 20.4483

0.0000 1.0000 2.6832

0 0 1.0000

Οι πίνακες που µας δίνει η schur( ) ικανοποιούν την σχέση της τριγωνοποίησης . TP AP T=

Page 41: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 41 από 42

>> p'*A*p

ans =

1.0000 -4.0826 20.4483

0.0000 1.0000 2.6832

0.0000 0.0000 1.0000

10.3 Παράδειγµα ∆ιαγωνοποίηση συµµετρικού πίνακα στο MATLAB. ∆ιαγωνοποιείστε τον ακόλουθο πίνακα:

4 0 10 4 11 1 5

A−⎡ ⎤

⎢ ⎥= −⎢ ⎥⎢ ⎥− −⎣ ⎦

Οι συµµετρικοί πίνακες είναι ορθοµοναδιαία όµοιοι µε πραγµατικό διαγώνιο πίνακα.

Ορίζουµε τον πίνακα και παρατηρούµε ότι τα αποτελέσµατα τόσο της eig( ) όσο και της schur( ) είναι οι ίδιοι πίνακες.

>> clear all

>> A=[4 0 -1 ; 0 4 -1 ; -1 -1 5]

A =

4 0 -1

0 4 -1

-1 -1 5

>> [p,d]=eig(A)

p =

0.5774 0.7071 -0.4082

0.5774 -0.7071 -0.4082

0.5774 0.0000 0.8165

d =

3.0000 0 0

0 4.0000 0

0 0 6.0000

>> p'*A*p

ans =

3.0000 -0.0000 0.0000

-0.0000 4.0000 -0.0000

0 -0.0000 6.0000

>> [pp,t]=schur(A)

Page 42: Κεφάλαιο 1 - EAPedu.eap.gr/pli/pli12/shmeiwseis/MATLAB_grammikh.pdf · Σελίδα 1 από 42 Κεφάλαιο 1 Εισαγωγή 1. 2 Μιγαδικοί Αριθµοί

Σελίδα 42 από 42

pp =

0.5774 0.7071 -0.4082

0.5774 -0.7071 -0.4082

0.5774 0.0000 0.8165

t =

3.0000 0 0

0 4.0000 0

0 0 6.0000