Συστήματα Συμβολικής Άλγεβρας. (Computer Algebra System) Μέρος 1 ο Νίκος Ματζάκος nikmatz@unipi.gr
Τι είναι ένα C.A.System Είναι ένα πρόγραμμα (software) με το οποίο μπορούμε να κάνουμε συμβολικούς (και όχι μόνο) υπολογισμούς. Παραγοντοποιήσεις, Απλοποιήσεις, Υπολογισμό παραγώγων, ορίων, ολοκληρωμάτων, Επίλυση εξισώσεων, ανισώσεων κ.α. Γραφικές Παραστάσεις στο επίπεδο και στον χώρο. 2
Computer Algebra Systems Το 1969 στο εργαστήριο υπολογιστών του MIT δημιουργήθηκε το πρώτο C.A.S. σύστημα, γνωστό ως Macsyma και το οποίο αναπτύχθηκε σε γλώσσα προγραμματισμού Lisp. 3
C.A.System Ανοικτού Κώδικα Axiom (http://wiki.axiomdeveloper.org/frontpage/) Maxima (http://maxima.sourceforge.net/) Octave (http://www.gnu.org/software/octave/) Yacas (http://yacas.sourceforge.net/yacas.html) Eigenmath GiNaC JScience 4
C.A.System Corporate Derive (http://www.derive-europe.com) Mathematica (http://www.wolfram.com/) Mathcad(http://www.ptc.com/appserver/mkt/products/h ome.jsp?k=3901) Maple (http://www.maplesoft.com/) 5
Ιστορία (Maple) Πανεπιστήμιο του Καναδά Waterloo, ερευνητικό κέντρο ETH Zürich, η ανάπτυξη του έχει γίνει σε γλώσσα προγραμματισμού C Από 1995 συνεχίζεται η ανάπτυξη και η προώθηση του σε συνεργασία με την εταιρία Waterloo Maple Software www.mapleapps.com. 6
Τι είναι το Maple: Μαθηματικό Πακέτο (για συμβολικούς και αριθμητικούς υπολογισμούς) και Προηγμένη Γλώσσα Προγραμματισμού 7
Περιβάλλον Εργασίας Γραμμή εντολών Restart Γραμμή αποτελέσματος Γραμμή κατάστασης 8
Φύλλο Εργασίας Η κατάσταση εισαγωγής εντολών [> Η κατάσταση εισαγωγής κειμένου [ Η κατάσταση εισαγωγής μαθηματικών εκφράσεων στην «κλασική» μαθηματική τους μορφή μέσα σε κείμενο. 9
Βασικοί Κανόνες Σε κάθε εντολή πρέπει να δηλώνεται το τέλος της χρησιμοποιώντας το ελληνικό ερωτηματικό ;. Ο υπολογισμός γίνεται απλά πατώντας το [ENTER]. Γίνετε διαχωρισμός κεφαλαίων και πεζών γραμμάτων. 10
.Βασικοί Κανόνες Οιεντολέςκαιοιδεσμευμένεςλέξειςγράφονται πάντα με μικρά γράμματα. Αυτός ο κανόνας ωστόσο έχει αρκετές εξαιρέσεις οι σταθερές π και i είναι: Pi και I Eπίσης οι εντολές του πακέτου LinearAlgebra ξεκινάνε όλες με κεφαλαίο γράμμα Δεν επιτρέπετε να ορίσουμε μεταβλητή με το όνομα είδη δεσμευμένης λέξης (plot, if, for, ) Οι παράμετροι των εντολών τοποθετούνται σε παρενθέσεις και στην περίπτωση που είναι περισσότερες από μία χωρίζονται με κόμμα. εντολή ( παράμετρος1, παράμετρος2...); 11
[> plot(sin(x), x=-2*pi..2*pi, title="ημίτονο"); ENTER 12
Προσεγγιστικές και Ακριβής Τιμές το Maple χειρίζεται δύο ειδών αριθμητικές τιμές Ακριβείς αριθμητικές τιμές: Ακέραιοι. Κλάσματα ακεραίων. Συμβολικές σταθερές π,e,φ... sqrt(x), cos(x), sin(x), exp(x) κ.α. όπου x ακριβή τιμή. Αυτές τις ποσότητες το Maple τις χειρίζεται ως μαθηματικά αντικείμενα και εκτελεί πράξεις επιστρέφοντας ακριβή αποτελέσματα. 13
Προσεγγιστικές αριθμητικές τιμές Είναι ποσότητες με δεκαδικό μέρος καθορισμένης ακρίβειας. Αυτές οι ποσότητες δηλώνονται με μια τελεία. Π.χ. 3. είναι ο 3.0 με καθορισμένη ακρίβεια ή έχουν προκύψει ως αποτέλεσμα πράξεων άλλων προσεγγιστικών τιμών. 14
15
16
Μεταβλητές Μια μεταβλητή στο Maple μπορεί να έχει για όνομα οποιοδήποτε αλφαριθμητική σειρά χαρακτήρων για παράδειγμα a, total, exp1, sum1, sum2 κ.α. Δεν είναι αποδεκτά ονόματα που αρχίζουν με αριθμό π.χ.. 2nd, 3total, επίσης εκείνα που περιέχουν ειδικούς χαρακτήρες π.χ.. a&b, ονόματα που είναι δεσμευμένα από το Maple σαν εντολές π.χ.. plot, solve. ΑΠΟΔΟΣΗ ΤΙΜΗΣ Όνομα μεταβλητής := τιμή ή έκφραση; 17
f := x x 3 Ορισμός Συνάρτησης Όνομα συνάρτησης:=ανεξάρτητη μεταβλητή->τύπος; [> f := x -> x^3; [> f(2006); 8072216216 18
Παράγωγος diff(συνάρτηση, x$n); [>diff(cos(x),x); -sin(x) [>diff(cos(x),x$2); -cos(x) [>Diff(cos(x),x)=diff(cos(x),x); d dx cos( x) = sin( x) 19
Ολοκλήρωμα int(συνάρτηση, x=a...b); [>int(cos(x),x); sin(x) [>Int(cos(x),x=1..2)=int(cos(x),x=Pi..2*Pi); 2 cos( x) dx= 0 1 20
Γραφική Παράσταση 2d plot(expr,h,v,opt); [> plot(x^2 * sin(x)^2, x = -5*Pi.. 5*Pi,title="Η συνάρτηση x^2*sin(x)"); 21
Ορισμός Συνάρτησης 2 μεταβλητών Όνομα συνάρτησης:= (μεταβλητή1, μεταβλητή2,...)->τύπος > f:=(x,y)->sin(x)*cos(y); f := ( x, y ) sin( x ) cos( y) 22
Γραφική Παράσταση 3d > f:=(x,y)->x^3-3*x^2+y^2; > plot3d(f(x,y),x=-1..4,y=-3..3, axes=norma 23
Ορισμός Ενός Πίνακα (κατά γραμμές) <<α11 α12... α1n>,<a21 a22 a2n>,, <αm1 αm2... αmn>> Παράδειγμα: [> A := <<a b c>,<d e f>,<g h i>>; a b c A := d e f g h i 24
Βασικές Πράξεις Μητρών ΠΡΑΞΗ A+B A.B x*a A*x A^n v &x w ΠΕΡΙΓΡΑΦΗ Προσθέτει δυο Μήτρες ή δύο Διανύσματα Πολλαπλασιάζει Μήτρες ή Διανύσματα. Πολλαπλασιάζει αριθμό μη Μήτρα ή Διάνυσμα. Υπολογίζει δυνάμεις Μητρών. Υπολογίζει το εξωτερικό γινόμενο δυο διανυσμάτων 25
26
Το Πακέτο Εντολών Linearalgebra. Περιέχει εντολές που μας δίνουν την δυνατότητα να κάνουμε εύκολα πολύπλοκες διαδικασίες με Μήτρες και Διανύσματα. Για να ενεργοποιήσουμε «φορτώσουμε» τις εντολές του πακέτου πληκτρολογούμε: [> with(linearalgebra); 27
Το Πακέτο Εντολών Linearalgebra. 28
29
ΑΣΚΗΣΗ 1η: Να βρεθεί ο βαθμός της μήτρα. ΛΥΣΗ: Εντολές: 1 3 2 A = 2 4 4 9 7 18 Rank(Μήτρα Μήτρα); Βρίσκει τον βαθμό μιας μήτρας ColumnSpace(Μήτρα Μήτρα); Βρίσκει μια βάση για τον χώρο των στηλών. RowSpace(Μήτρα Μήτρα); Βρίσκει μια βάση για τον χώρο των γραμμών. 30
31
ΑΣΚΗΣΗ 2η: Να βρεθεί η αντίστροφη Μήτρα της Α. A ΛΥΣΗ: Εντολές: 1 1 1 = 2 1 2 3 2 4 IdentityMatrix( διάσταση ); Δημιουργεί μια ταυτοτική μήτρα ReducedRowEchelonForm(Μήτρα); Υπολογίζει την μορφή Gauss-Jordan μιας Μήτρας MatrixInverse( Μήτρα); Βρίσκει την αντίστροφη μήτρα. 32
33
34
ΑΣΚΗΣΗ 3η: Δίνεται ο πίνακας. 1 2 3 Να βρεθεί ο συμπληρωματικός του Α. A = Να βρεθεί ο αντίστροφος του Α 0 1 2 1 0 3 ΛΥΣΗ: 1 Εντολές: A 1 = adja A Minor( Μήτρα,, n,m); Υπολογίζει την ελάσσονα ορίζουσα ως προς την n γραμμή και m στήλη. Adjoit( Μήτρα); Βρίσκει την συμπληρωματική μήτρα μιας μήτρας. 35
A A A adja A A A 11 21 31 = 12 22 32 A A A 13 23 33 A 1 1 = A adja 36
ΑΣΚΗΣΗ 4η: Να λυθεί το σύστημα 2x + x + x = 5 1 2 3 4x + 10 x = 2 1 2 2x + 7x + 2x = 9 ΛΥΣΗ: 1 η Μέθοδος με χρήση αντίστροφου πίνακα 2 η μέθοδος- με χρήση κλιμακωτής μορφής 4 η με την χρήση της «έτοιμης» εντολής 1 2 3 Solve( {εξίσωση1, εξίσωση2,...},{ 2,...},{x,y,z, }); Βρίσκει την λύση ενός συστήματος εξισώσεων. 37
Αν A 0 1 τότε A 1 1 A A X = A B A X = B ( ) 1 X = A B 38
2x + x + x = 5 1 2 3 4x + 10 x = 2 1 2 2x + 7x + 2x = 9 1 2 3 1 X = A B 39
2x + x + x = 5 1 2 3 4x + 10 x = 2 1 2 2x + 7x + 2x = 9 1 2 3 40
2x + x + x = 5 1 2 3 4x + 10 x = 2 1 2 2x + 7x + 2x = 9 1 2 3 41
ΑΣΚΗΣΗ 5η: Να λυθεί το σύστημα για τις διάφορες τιμές τις παραμέτρου. x y+ z = 3 x + y + k z = 1 x + k y + z = k GaussianElimination( Μήτρα); Υπολογίζει την μορφή Gauss μιας Μήτρας. BackwardSubstitute( Μήτρα,free=x,free=x); Βρίσκει την συμπληρωματική μήτρα μιας μήτρας. 42
x y + z = 3 x + y + k z = 1 x + k y + z = k 43
44
Ανάγνωση-Εγγραφή μιας Μήτρας fopen( όνομα αρχείου, read (write),type); Ανοίγει ένα αρχείο για ανάγνωση-εγγραφή readdata( όνομα αρχείου, αριθμός στηλών ); Διαβάζει από ένα αρχείο fclose( όνομα αρχείου ); Κλείνει ένα αρχείο 45
46
ΕΝΤΟΛΗ ZeroMatrix(n,m ); IdentityMatrix( διάσταση ); HilbertMatrix( n,m,expr ); HankelMatrix (L,n); BezoutMatrix( p(x), q(x), x); HouseholterMatrix JordanBlockMatrix SylvesterMatrix ToeplitzMatrix VandermondeMatrix GivensRotation( διάνυσμα); UnitVector RandomMatrix(n,m); RandomVector (αριθμός στοιχείων) ; ΠΕΡΙΓΡΑΦΗ Δημιουργεί μια μηδενική μήτρα. Δημιουργεί μια ταυτοτική μήτρα Δημιουργεί την μήτρα του Hilbert Δημιουργεί την μήτρα του Hankel Δημιουργεί την μήτρα του Bazout Δημιουργεί την μήτρα του Householder Δημιουργεί την μήτρα του Jordan Δημιουργεί την μήτρα του Sylvester Δημιουργεί την μήτρα του Toeplitz Δημιουργεί την μήτρα του Vandermonde Κατασκευάζει την μήτρα για δοσμένη περιστροφή. Μοναδιαίο Διάνυσμα Δημιουργεί μια μήτρα με τυχαίους αριθμούς. Δημιουργεί ένα διάνυσμα με τυχαίους αριθμούς. Πίνακας 4 ΕιδικέςΜήτρεςκαιΔιανύσματα. 47
ΕΝΤΟΛΗ Adjoit( Μήτρα); CharacteristicMatrix ( Τετραγωνική Μήτρα, Μεταβλητή); CharacteristicPolynomial(Μήτρα, Μεταβλητή); Determint(Μήτρα); Eigenvalues( Μήτρα); Eigenvectors ( Μήτρα); HermitianTranspose( Μήτρα ή Διάνυσμα); MatrixInverse( Μήτρα); MinimalPolynomial(Μήτρα, Μεταβλητή); Minor(Μήτρα, n,m); NullSpace( Μήτρα); Permanent (Τετραγωνική Μήτρα); Rank( Μήτρα); Trace( Μήτρα); ΠΕΡΙΓΡΑΦΗ Βρίσκει τον ανάστροφο μιας μήτρας. Βρίσκει την χαρακτηριστική Μήτρα μιας Μήτρας Βρίσκει το χαρακτηριστικό πολυώνυμο μιας Μήτρας. Βρίσκει την ορίζουσα μιας Μήτρας. Βρισκει τις διοτιμές μιας μήτρας Υπολογίζει τις Ιδιοτιμές και τα Ιδιοδιανύσματα μιας μήτρας. compute transposes of Matrices and Vector Βρίσκει τον αντίστροφο. Βρίσκει το ελάχιστο πολυώνυμο μιας μήτρας. Υπολογίζει την ελλάσονα ορίζουσα ως προς την n γραμμή και m στήλη. compute a basis for the nullspace (kernel) of a Matrix ompute the permanent of a square Matrix Βρίσκει την τάξη μιας μήτρας Βρίσκει το Ίχνος μιας τετραγωνικής Μήτρας. Πίνακας 5 Βασικές Συναρτήσεις του Πακέτου LinearAlgebra. 48
Column(Μήτρα, n); ΕΝΤΟΛΗ ΠΕΡΙΓΡΑΦΗ Επιστρέφει n στήλη μίας Μήτρας. ColumnDimension(Μήτρα); Υπολογίζει την διάσταση του χώρου των στηλών ColumnOperation(Μήτρα,Κ); perform elementary column operations on a Matrix DeleteColumn((Μήτρα,L); DeleteRow(Μήτρα,L); Dimension(Μήτρα); Σβήνει μια στήλη Σβήνει μια γραμμή Υπολογίζει την διάσταση μιας Μήτρας. Row(Μήτρα, n); RowDimension(Μήτρα); Επιστρέφει γραμμή μίας Μήτρας. Υπολογίζει την διάσταση του χώρου των γραμμών RowOperation(Μήτρα,Κ); Πραγματοποιεί μια στοιχειώδη πράξη σε γραμμή SubMatrix(Μήτρα,r,c); Κατασκευάζει έναν υποπίνακα SubVector(Μήτρα,i ); Κατασκευάζει ένα υποδιάνυσμα Πίνακας 6 Τελεστές 49
Basis(Μήτρα); ΕΝΤΟΛΗ ΠΕΡΙΓΡΑΦΗ return a basis for a vector space ColumnSpace(Μήτρα); CrossProduct(v,u); DotProduct(v,u); GramSchmidt(V- list or set of Vector(s)); IntersectonBasis(Μήτρα); MatrixNorm Norm Normalize(Διάνυσμα); NullSpace(Μήτρα); return a basis for the column space of a Matrix compute the cross product of two Vectors v,u compute the dot product (standard inner product) of two Vectors compute an orthogonal set of Vectors return a basis for the intersection of vector space(s) compute the p-norm p of a Matrix compute the p-norm p of a Matrix or Vector normalize a Vector compute a basis for the nullspace (kernel) of a Matrix RowSpace(Μήτρα); SumBasis(Μήτρα); VectorAngle(v,u); return a basis for the row space of a Matrix return a basis for the direct sum of vector space(s) Υπολογίζει την γωνία άναμεσα σε δύο διανύσματα v,u της ίδιας διάστασης. VectorNorm Πίνακας 7 Τελεστές Διανυσμάτων. compute the p-norm p of a Vector 50
ΕΝΤΟΛΗ BidiagonalForm(Μήτρα); FrobeniusForm(Μήτρα); GaussianElimination (Μήτρα); HermiteForm(Μήτρα); HessenbergForm(Μήτρα); JordanForm(Μήτρα); LUDecomposition(Μήτρα); PopovForm(Μήτρα, Μεταβλητή); QRDecomposition(Μήτρα); ReducedRowEchelonForm(Μήτρα); SchurForm(Τετραγωνική Μήτρα); SmithForm(Μήτρα); TridiagonalForm(Τετραγωνική Μήτρα); ΠΕΡΙΓΡΑΦΗ reduce a Matrix to bidiagonal form reduce a Matrix to Frobenius form (rational canonical form) perform Gaussian elimination on a Matrix compute the Hermite normal form of a Matrix reduce a square Matrix to upper Hessenberg form reduce a Matrix to Jordan form compute the Cholesky,, PLU or PLU1R decomposition of a Matrix compute the Popov normal form of a Matrix compute QR factorization of a Matrix perform Gauss-Jordan elimination on a Matrix reduce a square Matrix to Schur form reduce a Matrix to Smith normal form reduce a square Matrix to tridiagonal form Πίνακας 8 Ειδικές Μορφές Μητρών του πακέτου LinearAlgebra. 51
Βιβλιογραφία Maple 9, Learning Guide B. W. Char Heck, André, Introduction to Maple, 3rd edition, Springer-Verlag, New York, 2003. F.j. Wright. Computing with Maple, CRC Press, 2001. 52