Εισαγωγή στην υπολογιστική άλγεβρα με το πρόγραμμα Maxima ΜΗ ΕΙΝΑΙ ΒΑΣΙΛΙΚΗΝ ΑΤΡΑΠΟΝ ΕΠΙ ΓΕΩΜΕΤΡΙΑΝ Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr 7 Νοεμβρίου 2013 1 / 35
Λίγα λόγια για το Maxima Είναι γραμμένο στη γλώσσα Lisp Ξεκίνησε τη δεκαετία του 1960 στο πανεπιστήμιο MIT των ΗΠΑ, ως Macsyma. Από το 1982 πέρασε στο πανεπιστήμιο του Texas, William F. Schelter Το 1998 ο καθηγητής Schelter απέσπασε την άδεια να δημοσιεύει τον πηγαίο κώδικα κάτω από την άδεια GPL και στην ουσία να καταστήσει το πρόγραμμα ελεύθερο λογισμικό Διατίθεται δωρεάν για όλα τα κύρια λειτουργικά συστήματα, πχ Windows, Mac, Linux Μπορείτε να το προμηθευτείτε από την ιστοσελίδα: http://maxima.sourceforge.net 2 / 35
Η λευκή σελίδα εκκίνησης 3 / 35
Εντολές στο Maxima Βασικές εντολές και λειτουργίες Κάθε εντολή παίρνει αυτόματα ένα κωδικό αρίθμησης %i1, %i2,... Κάθε εντολή έχει ένα αποτέλεσμα που αριθμείται αντίστοιχα %o1, %o2,... Κάθε εντολή τελειώνει με ;, εμφάνιση αποτελέσματος, ή με το σύμβολο $, απόκρυψη αποτελέσματος Εκτελούμε εντολές με CTRL ENTER ή SHIFT ENTER (αυτόματη τοποθέτηση ;) Με τον τελεστή : (άνω-κάτω τελεία) αναθέτουμε μία τιμή σε μια μεταβλητή Με την εντολή CTRL R εκτελούμε όλες τις εντολές του προγράμματος από την αρχή 4 / 35
Μερικές αλγεβρικές παραστάσεις 5 / 35
Χρήση μεταβλητών Επανάληψη χρήσης (a + b) 2 a + 1 Η τιμή a χρησιμοποιείται δύο φορές 6 / 35
Σταθερές Ειδική σήμανση για σταθερές %e, σταθερά του Euler = 2.718281828459... %pi, π = 3.141592653589793... %phi, μαγικός αριθμός Φ = 1.618033988749895... %i, i = 1 %inf, %minf, 7 / 35
Ενσωματωμένες συναρτήσεις 8 / 35
Λίγη τριγωνομετρία 9 / 35
Λίστες 1 Λίστα τιμών Μια συλλογή τιμών που μεταξύ τους χωρίζονται με κόμμα και περικλείονται με αγκύλες. Με ομοιογενείς τιμές 1 x : [10, 15, 30, 22]; Με ανομοιογενείς τιμές 1 x : [10, 15, Athens, 22]; Με εμφώλευση άλλης λίστας 1 x : [10, [3,7,-4], 30, 22]; 10 / 35
Αλγεβρικές παραστάσεις με λίστες 11 / 35
Σύνολα Ορισμός συνόλων Σύνολο ορίζεται με τη συνάρτηση set. 1 x : set (1, 2, 3); 2 x : set (1, 3, 3, 3); 3 x : set (1, 3, 2); 4 x : set ([1,0], [1,1], [1,2]); 12 / 35
Ενωση, Τομή και διαφορά συνόλων 1 a : set (1, 2, 3); 2 b : set (2, 3, 4, 5); 3 union(a, b); 4 intersection (a, b); 5 setdifference (a, b); 6 setdifference (b, a); 13 / 35
Καρτεσιανό γινόμενο συνόλων 1 a : set (1, 2, 3); 2 b : set (10, 20); 3 cartesian_product (a, b); 14 / 35
Πληθικότητα συνόλου 1 a : set (1, 2, 3); 2 b : set (10, 20); 3 cardinality (a); 4 cardinality ( cartesian_product (a, b) ); 15 / 35
Ορισμός συνάρτησης Μια συνάρτηση ορίζεται με τον τελεστή :=, για παράδειγμα 1 f(x) := x^2-5*x - 6; ισοδυναμεί με τον μαθηματικό ορισμό f (x) = x 2 5x 6 Στη συνέχεια μπορούμε να καλέσουμε τη συνάρτηση, για παράδειγμα: 1 f(1); με αποτέλεσμα: f (1) = 1 2 5 1 6 = 1 5 6 = 10 16 / 35
Συνάρτηση με δύο μεταβλητές f (x, y) = 2 cos x sin y f ( π 6, ) 2 π 3 f(x,y) := 2 * cos(x) * sin(y); f(%pi/6, 2*%pi/3); 17 / 35
Βασικές συναρτήσεις επίλυσης εξισώσεων solve(eq, x), επίλυση εξίσωσης ως προς x lhs(expr), το αριστερό μέρος μιας παράστασης που περιέχει το σύμβολο = rhs(expr), το δεξί μέρος μιας παράστασης που περιέχει το σύμβολο = allroots(expr), επίλυση με αριθμητική προσέγγιση 18 / 35
Επίλυση εξισώσεων Παραδείγματα 1 x 2 1 = 0 x 2 a = 0 1 solve (x^2-1, x); 2 solve (x^2 - a, x); 19 / 35
Επίλυση εξισώσεων Παραδείγματα 1 x + 1 = 2 x + 3 solve (x+1 = 2*x+3, x); 2 x + y + 1 = y + 3 solve (2*x+y+1 = y+3, x); q = p 5 + 50 solve (q = p/5 + 50, p); 20 / 35
Επώνυμες παραστάσεις 1 eq : x^2-5*x + 6; 2 solve(eq); 21 / 35
Υπολογισμός παράστασης ως προς μία μεταβλητή 1 eq : 20*x-5*y = 100 + 15*y; 2 solve(eq, y); 3 f(x,y) := x^2 + y^2; 4 solve(f(x,y)=1, y); 22 / 35
Συναρτήσεις και επίλυση εξισώσεων f (x) = x 2 5 x 6 1 f(x) := x^2-5*x - 6; 2 solve(f(x)=0); 3 solve(f(x)=18); 23 / 35
Επίλυση μη γραμμικών εξισώσεων x(x + 1) = x + 1 solve (x * (x+1) = -x + 1, x); log(x 2 + 1) = 4 solve (log(xˆ2+1)=4, x); x x+1 = x 2 3 solve (x/(x+1) = xˆ(2/3)); 24 / 35
Συστήματα γραμμικών εξισώσεων x 2y = 4 2x + y = 3 1 solve([x-2*y=4, 2*x+y=3], [x, y]); ή, με περισσότερο «καθαρό» τρόπο: 1 eq1 : x-2*y=4; 2 eq2 : 2*x+y=3; 3 solve([eq1, eq2], [x, y]); 25 / 35
Τομή δύο καμπυλών y = 2 x + 5 y = 3 x + 15 c1 : y = 2 * x + 5; c2 : y = -3*x + 15; solve([c1, c2], [x, y]); 26 / 35
Σύστημα 3 3 2 x 1 +x 2 2 x 3 = 4 2 x 1 x 2 = 2 4 x 1 x 3 = 3 1 eq1 : 2*x1 + x2-2*x3 = 4; 2 eq2 : -2*x1 + x2 = 2; 3 eq3 : 4*x1 - x3 = 3; 4 solve([eq1, eq2, eq3], [x1, x2, x3]); 27 / 35
Μη γραμμικό σύστημα εξισώσεων x 2 + 4 y = 25 2 x + y = 4 1 eq1 : x^2 + 4*y = 25; 2 eq2 : -2*x + y = 4; 3 solve([eq1, eq2], [x, y]); 28 / 35
Μη γραμμικό σύστημα εξισώσεων 2 1 eq1 : x + 1/(x+y) = -1; 2 eq2 : 2*x - y = 3; 3 solve([eq1, eq2], [x1, x2]); x + 1 x+y = 1 2 x y = 3 29 / 35
Μιγαδικές λύσεις z + 2 z = 2 1 eq: z + 2/z = 2; 2 solve(eq, z); 30 / 35
Η λύση της εξίσωσης σε μεταβλητή x 5 = 3 x 1 eq : x-5 = 3-x ; 2 sol : solve(eq, x); 3 x0 : rhs(sol[1]); 31 / 35
Οι λύσεις συστήματος εξισώσεων σε μεταβλητές x 2y = 4 2x + y = 3 1 eq1 : x - 2*y = 4; 2 eq2 : 2*x + y=3; 3 sol : solve([eq1, eq2], [x,y]); 4 x0 : rhs(sol[1][1]); 5 y0 : rhs(sol[1][2]); 32 / 35
Οι λύσεις συστήματος μη γραμμικών εξισώσεων σε μεταβλητές x + 1 x+y = 1 2 x y = 3 1 eq1 : x^2 + 4*y = 25; 2 eq2 : -2*x + y = 4; 3 sol : solve([eq1, eq2], [x, y]); 4 x1 : rhs(sol[1][1]); 5 x2 : rhs(sol[2][1]); 6 y1 : rhs(sol[1][2]); 7 y2 : rhs(sol[2][2]); 33 / 35
Επανάληψη επίλυσης Η εντολή solve χρησιμοποιείται για την αλγεβρική επίλυση εξισώσεων ή συστημάτων εξισώσεων solve(expr, x) ή απλά solve(expr) για επίλυση μιας εξίσωσης ως προς x Αν η παράσταση expr δεν περιέχει το σύμβολο = εννοείται πως = 0 Η παράσταση expr μπορεί να είναι μη γραμμική εξίσωση ή συνάρτηση Η σύνταξη solve([expr1, expr2], [x1, x2]) επιτρέπει την επίλυση συστημάτων εξισώσεων, εδώ 2 2 Μπορούμε να αποθηκεύσουμε τις λύσεις σε μεταβλητές για περαιτέρω χρήση με τη συνάρτηση rhs 34 / 35
Σχόλια και ερωτήσεις Σας ευχαριστώ για την προσοχή σας Είμαι στη διάθεσή σας για σχόλια, απορίες και ερωτήσεις 35 / 35