Σημειώσεις υπολογιστικής άλγεβρας με το πρόγραμμα maxima Αθανάσιος Σταυρακούδης 2 Απριλίου 2013
2 Αθανάσιος Σταυρακούδης
Περιεχόμενα 1 Εισαγωγή στο Maxima 1 1.1 Λίγα ιστορικά στοιχεία.............................. 1 1.2 Το Maxima σαν αριθμομηχανή.......................... 1 1.3 Αριθμητικές μεταβλητές στο Maxima...................... 4 1.4 Ενσωματωμένες μαθηματικές συναρτήσεις.................... 6 2 Λύνοντας εξισώσεις με το Maxima 10 2.1 Απλές πολυωνυμικές εξισώσεις.......................... 10 2.1.1 Επώνυμες παραστάσεις.......................... 11 2.1.2 Συναρτήσεις και επίλυση εξισώσεων................... 13 2.1.3 Υπολογισμός παράστασης ως προς μία μεταβλητή............ 13 2.1.4 Ασκήσεις................................. 14 2.2 Άλλες μη γραμμικές εξισώσεις.......................... 15 2.3 Συστήματα γραμμικών εξισώσεων........................ 16 2.3.1 Ασκήσεις................................. 19 2.4 Συστήματα μη γραμμικών εξισώσεων....................... 19 2.4.1 Ασκήσεις................................. 20 2.5 Επίλυση εξίσωσης με μιγαδικές ρίζες....................... 21 2.5.1 Ασκήσεις................................. 23 3 Γραφικές παραστάσεις με το Maxima 24 3.1 Εισαγωγή..................................... 24 3.2 Παραδείγματα γραφικών παραστάσεων δύο διαστάσεων............. 24 3.2.1 Η γραφική παράσταση της συνάρτησης x 2 1.............. 24 3.2.2 Η γραφική παράσταση της συνάρτησης 1 x................ 25 3.2.3 Η γραφική παράσταση της συνάρτησης log x............... 26 3.2.4 Η γραφική παράσταση της συνάρτησης x 3 2 x 2 + 1.......... 28
ii Αθανάσιος Σταυρακούδης 3.2.5 Η γραφική παράσταση της συνάρτησης cos(x).............. 30 3.2.6 Ασκήσεις................................. 31 3.3 Παραδείγματα γραφικών παραστάσεων δύο διαστάσεων με περισσότερες συναρτήσεις....................................... 32 3.3.1 Η γραφική παράσταση των συναρτήσεων cos x, sin x.......... 32 3.3.2 Η γραφική παράσταση των συναρτήσεων 2 x 2 + 10 και 110 x + 110. 34 3.3.3 Προσθήκη οριζόντιων γραμμών...................... 36 3.3.4 Γραμμικός συνδυασμός συναρτήσεων.................. 37 3.3.5 Καμπύλες της ίδιας συνάρτησης για διαφορετικές τιμές παραμέτρων.. 38 3.4 Γραφικές παραστάσεις συναρτήσεων δύο μεταβλητών και τρισδιάστατα γραφήματα 40 3.4.1 Το γράφημα της συνάρτησης x 2 + y 2.................. 40 3.4.2 Να γίνει το γράφημα της συνάρτησης χρησιμότητας........... 41 3.4.3 Ασκήσεις................................. 44 3.5 Διαγράμματα ισοϋψών καμπυλών (contour plots)................ 44 3.5.1 Το διάγραμμα ισοϋψών καμπυλών μιας κωνικής επιφάνειας....... 45 3.5.2 Το διάγραμμα ισοϋψών καμπυλών της συνάρτησης χρησιμότητας.... 48 3.5.3 Ασκήσεις................................. 50 4 Παραγώγιση με το Maxima 52 4.1 Παραγώγιση συναρτήσεων μιας μεταβλητής................... 52 4.2 Παράγωγοι μεγαλύτερης τάξης.......................... 54 4.3 Μερικές και ολικές παράγωγοι συναρτήσεων πολλών μεταβλητών....... 55 4.4 Ορισμός συναρτήσεων παραγώγων........................ 56 4.5 Γράφημα συνάρτησης και εφαπτόμενης σε σημείο................ 56 4.6 Βελτιστοποίηση με χρήση παραγώγων...................... 58 4.6.1 Συνάρτηση μιας μεταβλητής με ένα ακρότατο.............. 58 4.6.2 Συνάρτηση μιας μεταβλητής με περισσότερα από ένα ακρότατα..... 61 4.6.3 Βελτιστοποίηση συνάρτησης δύο μεταβλητών.............. 62 5 Ολοκλήρωση με το Maxima 66 5.1 Απλά ολοκληρώματα............................... 66 5.2 Ολοκληρώματα με άπειρο............................. 67 5.3 Ασκήσεις...................................... 68
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 iii Σαν πρόλογος Οι σημειώσεις είναι ακόμα (δυστυχώς) φτωχές και με μικρά πιθανά σφάλματα. Θεωρώ ωστόσο πως είναι βοηθητικές και χρήσιμες, και γι αυτό δημοσιεύονται. Σε περίπτωση που εντοπίσετε κάποιο σφάλμα σας παρακαλώ επικοινωνήστε μαζί μου: astavrak@uoi.gr. Οι σημειώσεις για το πρόγραμμα Maxima σας παρέχονται κάτω από την άδεια creative commons όπως περιγράφεται εδώ: http://creativecommons.org/licenses/by-nc-sa/3.0/gr. και εδώ: http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=401 Με απλά λόγια έχετε την άδεια διανομής και τροποποίησης του περιεχομένου με τις προϋποθέσεις: Αναφοράς στον δημιουργό. Μη εμπορικής χρήσης. Παρόμοιας διανομής αν τροποποιήσετε το περιεχόμενο. Αθανάσιος Σταυρακούδης Ιωάννινα, 2 Απριλίου 2013 http://stavrakoudis.econ.uoi.gr
iv Αθανάσιος Σταυρακούδης
1 Εισαγωγή στο Maxima 1.1 Λίγα ιστορικά στοιχεία Πρόκειται για ένα σύστημα υπολογιστικής άλγεβρας (Computer Algebra System). Είναι γραμμένο στη γλώσσα Lisp. Το Maxima αναπτύχθηκε κατά τη δεκαετία του 1960 στο πανεπιστήμιο MIT των ΗΠΑ, την εποχή εκείνη ήταν γνωστό ως Macsyma. Από εκεί πέρασε στο υπουργείο Ενέργειας των ΗΠΑ. Από το 1982 υπεύθυνος για τη συντήρηση και ανάπτυξη του κώδικα του Maxima ο καθηγητής του πανεπιστημίου του Texas William F. Schelter. Το 1998 ο καθηγητής Schelter απέσπασε την άδεια να δημοσιεύει τον πηγαίο κώδικα του Maxima κάτω από την άδεια GPL και στην ουσία να καταστήσει το πρόγραμμα ελεύθερο λογισμικό. Από το 2000 το Maxima είναι στο SourceForge, τον κύριο ιστότοπο διανομής ελεύθερου λογισμικού. Διατίθεται δωρεάν για όλα τα κύρια λειτουργικά συστήματα, πχ Windows, Mac, Linux κα. Τα τελευταία χρόνια έχει αναπτυχθεί μια διεπαφή χρήστη GUI του Maxima, το wxmaxima, το οποίο και χρησιμοποιείται σε αυτό το βιβλίο. Μπορείτε να προμηθευτείτε το Maxima από την ιστοσελίδα: http://maxima.sourceforge.net 1.2 Το Maxima σαν αριθμομηχανή Θα ξεκινήσουμε με μερικές απλές πράξεις. Θα δείτε πως το Maxima είναι πολύ πιο ευέλικτο από μια απλή αριθμομηχανή. Το Maximaστην εκκίνησή του μοιάζει με λευκή σελίδα, όπως δείχνει το σχήμα 1.1. Μια απλή αριθμητική πράξη, πχ 3 + 2 μπορεί να γίνει ως εξής: Πληκτρολογούμε 3+2 και στη συνέχεια CTRL+ENTER, δηλαδή ταυτόχρονη πίεση των πλήκτρων Control και Enter. Για τους περισσότερους χρήστες αυτό είναι πιο εφικτό και απλό αν κρατήσουν πατημένο το πλήκτρο
2 Αθανάσιος Σταυρακούδης Σχήμα 1.1: Το περιβάλλον εργασίας του Maxima κατά την εκκίνηση Την πράξη αυτή τη συμβολίζουμε, σε μορφή κώδικα, με ένα ελληνικό ερωτηματικό στο τέλος, πχ: 1 3+2; Το Maxima θα ανταποκριθεί με το αποτέλεσμα, το πέντε, όπως φαίνεται στο σχήμα 1.2. Σχήμα 1.2: Το περιβάλλον εργασίας του Maxima μετά την εκτέλεση της πράξης 3+2 Οπως φαίνεται στο σχήμα 1.2 το Maximaαποκρίνεται με την κωδικοποίηση %i1 για την είσοδο από τον χρήστη (μπλε γραφή) και %o1 για την έξοδο του προγράμματος (μαύρη γραφή). Οι κωδικοί (i=input, o=output) αυξάνονται σταδιακά καθώς ο χρήστης εισάγει περισσότερες εντολές στο πρόγραμμα. CTRL και στη συνέχεια πατήσουν Enter
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 3 Μια περισσότερο σύνθετη πράξη είναι το κλάσμα: 3 + 2 12 4 Η πράξη αυτή μπορεί να εισαχθεί στο πρόγραμμα ως: 1 (3+2) / (12-4); Το αποτέλεσμα ( 5 8 ) φαίνεται στο σχήμα 1.3. Προσέξτε την αύξηση στην αρίθμηση εισόδουεξόδου (%i2, %o2). Σχήμα 1.3: Το περιβάλλον εργασίας του Maxima μετά την εκτέλεση της πράξης (3+2) / (12-8) Παρατηρήστε πως το αποτέλεσμα δίνεται σε κλασματική μορφή. Αν θέλετε την αριθμητική τιμή στο αποτέλεσμα, πρέπει να δώσετε την εντολή numer, όπως δείχνει το σχήμα 1.4: 1 (3+2) / (12-4), numer; Και μια πιο σύνθετη αλγεβρική παράσταση: 3 (2 2+3 1) Θα πρέπει να δώσουμε (με προσοχή στις παρενθέσεις) την εντολή: 1 3 * ( 2^(2+3) - 1); Και θα πάρουμε το αποτέλεσμα του σχήματος 1.5. Οι κενοί χαρακτήρες κατά την είσοδο μιας αλγεβρικής παράστασης δεν είναι απαραίτητοι. Ωστόσο, κάνουν την ανάγνωσή της πιο εύκολη.
4 Αθανάσιος Σταυρακούδης Σχήμα 1.4: Το περιβάλλον εργασίας του Maxima μετά την εκτέλεση της πράξης (3+2) / (12-8), numer Σχήμα 1.5: Το περιβάλλον εργασίας του Maxima μετά την εκτέλεση της πράξης 3(2 2+3 1) 1.3 Αριθμητικές μεταβλητές στο Maxima Πολλές φορές είναι επιθυμητό να αποθηκεύσουμε μια τιμή σε μια μεταβλητή, συνήθως γιατί χρειάζεται να την χρησιμοποιήσουμε περισσότερες από μία φορές. Ετσι αποφεύγουμε την επανάληψη της εισαγωγής της. Πέρα από κόπο, μειώνουμε τις πιθανότητες να κάνουμε λάθος. Δείτε μια απλή περίπτωση. Εστω πως a = 2, b = 3. Θέλουμε την τιμή της παράστασης: (a + b) 2 a + 1 Μπορούμε να γράψουμε:
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 5 1 a : 2; 2 b : 3; 3 (a+b)^2 / (a+1); και να πάρουμε το αποτέλεσμα του σχήματος 1.6. Σχήμα 1.6: Το περιβάλλον εργασίας του Maxima μετά την εκτέλεση της πράξης (a + b) 2 /(a + 1) Γιατί κάναμε τόσο κόπο (δύο επιπλέον εντολές) και δε γράψαμε απλά: 1 (2+3)^2 / (2+1); εισάγοντας απ ευθείας τις τιμές των μεταβλητών a, b; Η απάντηση έχει δύο σκέλη: 1. Γιατί οι τιμές των μεταβλητών χρησιμοποιούνται περισσότερο από μία φορές. Πχ, η μεταβλητή a = 2 χρησιμοποιείται δύο φορές, δεν υπάρχει λόγος να την εισάγουμε δύο φορές. Επίσης, σε μεγαλύτερα προγράμματα, η τιμή μιας μεταβλητής μπορεί να χρησιμοποιηθεί πολλές φορές, πολύ περισσότερες από δύο. Πέρα από το γεγονός πως είναι μη αποτελεσματική η πολλαπλή εισαγωγή, υπάρχει ο κίνδυνος να γίνει κάποιο λάθος, πχ την τέταρτη φορά που θα χρειαστεί η τιμή της a να εισαχθεί η τιμή 4 αντί 2. Τέτοια λάθη συμβαίνουν συχνά, και είναι δύσκολο να εντοπιστούν. Το σχήμα 1.7 δείχνει (a + b)2 τον υπολογισμό της παράστασης απευθείας, χωρίς τη χρήση μεταβλητών. a + 1 2. Ο δεύτερος λόγος έχει να κάνει με την εφαρμογή του προγράμματος σε διαφορετικές συνθήκες. Για παράδειγμα, μπορεί να χρειαστεί να υπολογίσουμε την παράσταση (a + b) 2 για μια διαφορετική τιμή της μεταβλητής a. Τότε, θα χρειαστεί να αλλάξουμε a + 1 την τιμή της μεταβλητής μόνο μία φορά, όχι δύο. Δείτε για παράδειγμα το σχήμα 1.8, όπου έχει αλλάξει η τιμή της μεταβλητής a = 1. Μπορούμε να εκτελέσουμε όλες τις
6 Αθανάσιος Σταυρακούδης εντολές του προγράμματος με την ταυτόχρονη πίεση CTRL+R. Η τιμή της παράστασης (a + b) 2 a + 1 = (1 + 2)2 1 + 1 υπολογίστηκε σωστά με 8. Αντίθετα, στον υπολογισμό χωρίς μεταβλητές χρειάζεται να αλλάξουμε δύο φορές τη μεταβλητή a για να δώσει το σωστό αποτέλεσμα. Και το χειρότερο από όλα: από πουθενά δεν είναι εμφανές ποιο είναι a και ποιο είναι b. Για το λόγο αυτό, είναι προτιμότερο να κάνετε ανάθεση τιμής σε μεταβλητή χρησιμοποιώντας τον τελεστή της άνω και κάτω τελείας (:) Σχήμα 1.7: Το περιβάλλον εργασίας του Maxima μετά την εκτέλεση της πράξης (2 + 3) 2 /(2 + 1) Σημαντικό: Χρησιμοποιούμε τον τελεστή ανάθεσης τιμής : για να εκχωρήσουμε μια τιμή σε μια μεταβλητή. Στη συνέχεια μπορούμε να χρησιμοποιήσουμε το όνομα τη μεταβλητής αντί για την τιμή της. Μπορούμε να τη χρησιμοποιήσουμε όσες φορές θέλουμε. Αν αλλάξουμε την τιμή της μεταβλητής μπορούμε να ξανατρέξουμε όλους τους υπολογισμούς με τον συνδυασμό πλήκτρων CTRL+R. 1.4 Ενσωματωμένες μαθηματικές συναρτήσεις Ας δούμε τη χρήση μερικών ενσωματωμένων συναρτήσεων στο Maxima. 1. Η συνάρτηση abs() επιστρέφει την απόλυτη τιμή, πχ: 3 Από το μενού Cell επιλέξτε Evaluate All Cells
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 7 Σχήμα 1.8: Το περιβάλλον εργασίας του Maxima μετά την εκτέλεση της πράξης (a + b) 2 /(a + 1), με αλλαγή της μεταβλητής a 1 abs(-3); 2. Η συνάρτηση sqrt() επιστρέφει την τετραγωνική ρίζα, πχ: 4 1 sqrt(4); 3. Η συνάρτηση log() επιστρέφει το φυσικό λογάριθμο, πχ: log 1 1 log(1); 4. Η συνάρτηση exp() επιστρέφει την ύψωση στη βάση των φυσικών λογαρίθμων, πχ: exp 1 1 exp(1);
8 Αθανάσιος Σταυρακούδης Σχήμα 1.9: Το περιβάλλον εργασίας του Maxima μετά την εκτέλεση των πράξεων με τις συναρτήσεις abs, sqrt, log, exp 5. Δείτε τα αποτελέσματα των τελευταίων υπολογισμών στο σχήμα 1.9. Προσέξτε πως η βάση των φυσικών λογαρίθμων παριστάνεται ως %e. 6. Μια άλλη ειδική σταθερά είναι ο αριθμός π ο οποίος δηλώνεται ως %πι. Δείτε τη χρήση του σε τριγωνομετρικές συναρτήσεις. Η συνάρτηση cos() επιστρέφει το συνημίτονο, πχ: cos(π) 1 cos(%pi); 7. Η συνάρτηση sin() επιστρέφει το ημίτονο, πχ: sin(2π) 1 sin(2*%pi); 8. Η συνάρτηση tan() επιστρέφει την εφαπτομένη, πχ: ( π ) tan 4 1 tan(%pi/4);
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 9 9. Η συνάρτηση atan() επιστρέφει το τόξο εφαπτομένης, πχ: arctan(1) 1 atan(1); 10. Η συνάρτηση acos() επιστρέφει το τόξο συνημιτόνου, πχ: ( arccos 1 ) 2 1 acos(-1/2); Δείτε τα αποτελέσματα των τελευταίων υπολογισμών στο σχήμα 1.10. Σχήμα 1.10: Το περιβάλλον εργασίας του Maxima μετά την εκτέλεση των πράξεων με τις συναρτήσεις cos, sin, tan, atan, acos
2 Λύνοντας εξισώσεις με το Maxima 2.1 Απλές πολυωνυμικές εξισώσεις Για να λύσουμε την εξίσωση: x 2 1 = 0 (2.1) θα γράψουμε στο Maxima: 1 solve(x^2-1=0, x); Ενώ, για να λύσουμε την εξίσωση: x 2 a = 0 (2.2) θα γράψουμε στο Maxima: 1 solve(x^2-a=0, x); Οπως φαίνεται στο σχήμα 2.1 το πρόγραμμα δίνει δύο λύσεις. Αν οι τιμές των παραμέτρων είναι γνωστές, όπως στην πρώτη περίπτωση τότε παίρνουμε αριθμητική απάντηση, πχ x = 1. Διαφορετικά, παίρνουμε παραμετρική απάντηση, λύνουμε την εξίσωση ως προς x: x = a. Οπως ίσως έγινε ήδη κατανοητό, για την επίλυση εξισώσεων χρησιμοποιείται η συνάρτηση solve. Η συνάρτηση αυτή μπορεί να χρησιμοποιηθεί για την επίλυση γραμμικών και μη γραμμικών εξισώσεων, όπως επίσης και για συστήματα εξισώσεων (γραμμικών και μη). Η γενική μορφή της είναι solve ( εξίσωση, μεταβλητή ). Γράφουμε δηλαδή πρώτα την εξίσωση και μετά το κόμα το όνομα της μεταβλητής, ως προς την οποία θέλουμε να λύσουμε.
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 11 Σχήμα 2.1: Το περιβάλλον εργασίας του Maxima για την επίλυση της εξίσωσης x 2 1 = 0 Μπορούμε να λύσουμε εξισώσεις που δεν είναι στην ανηγμένη τους μορφή. Για παράδειγμα: x + 1 = 2x + 3 (2.3) θα γράψουμε στο Maxima: 1 solve(x+1=2*x+3, x); Επίσης, μπορούμε να λύσουμε ως προς μια μεταβλητή μια παράσταση, όπως να λυθεί ως προς x: x + 2y + 1 = y + 3 1 solve(x+2*y+1=y+3, x); Κλασικό τέτοιο πρόβλημα στα Οικονομικά είναι να βρεθεί η αντίστροφη συνάρτηση προσφοράς, όταν είναι γνωστή η ποσότητα (q) του προϊόντος ως προς την τιμή (p). Να λυθεί ως προς p η εξίσωση: q = p 10 (2.4) 5 1 solve(q=p/5-10, p); 2.1.1 Επώνυμες παραστάσεις Πολλές φορές είναι πιο απλό και χρήσιμο να δώσουμε ένα όνομα σε μια αλγεβρική παράσταση, για παράδειγμα: 1 eq : x^2-5*x + 6; 2 solve(eq); Σε τέτοιες παραστάσεις, αν δεν υπάρχει ο τελεστής = τότε υπονοείται πως η παράσταση ισούται με μηδέν. Μπορούμε να γράψουμε την παράσταση (εξίσωση) σε όποια μορφή θέλουμε, δεν είναι ανάγκη να είναι όλα τα μέλη από την ίδια πλευρά, για παράδειγμα:
12 Αθανάσιος Σταυρακούδης Σχήμα 2.2: Το περιβάλλον εργασίας του Maxima για την επίλυση παραμετρικών εξισώσεων 1 eq : x^2-5*x = -6; 2 solve(eq); ή, ακόμα: 1 eq : x^2 + 6 = 5*x; 2 solve(eq); Το σχήμα 2.3 δείχνει την επίλυση της εξίσωσης x 2 5x + 6 = 0 στο Maxima χρησιμοποιώντας διάφορες αλγεβρικές παραστάσεις. Σχήμα 2.3: Το περιβάλλον εργασίας του Maxima για την επίλυση εξισώσεων με επώνυμες αλγεβρικές παραστάσεις
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 13 2.1.2 Συναρτήσεις και επίλυση εξισώσεων =): Στο Maxima μπορούμε να ορίσουμε μια συνάρτηση με τον τελεστή := (προσοχή όχι με 1 f(x) := x^2-5*x - 6; 2 solve(f(x)=0); Επίσης, μπορούμε να θέσουμε μια άλλη τιμή, διαφορετική από το μηδέν, για παράδειγμα: 1 f(x) := x^2-5*x - 6; 2 solve(f(x)=18); Το σχήμα 2.4 δείχνει την επίλυση εξίσωσης στο Maxima χρησιμοποιώντας συναρτησιακές μορφές. Σχήμα 2.4: Το περιβάλλον εργασίας του Maxima για την επίλυση συναρτησιακών εξισώσεων 2.1.3 Υπολογισμός παράστασης ως προς μία μεταβλητή Σε μια αλγεβρική παράσταση με περισσότερες από μία μεταβλητές είναι δυνατόν να λύσουμε ως προς τη μία από αυτές. Για παράδειγμα, έστω η παράσταση: 20 x 5 y = 15 y + 100 (2.5) Να λυθεί ως προς y: 1 eq : 20*x-5*y = 100 + 15*y; 2 solve(eq, y); y = x 5 Προσέξτε πως σε αυτή την περίπτωση η συνάρτηση solve καλείται με δεύτερο όρισμα την μεταβλητή ως προς την οποία θέλουμε να λύσουμε. Αν υπάρχει μόνο μία μεταβλητή στην παράσταση κάτι τέτοιο δεν είναι υποχρεωτικό. Για παράδειγμα, οι εκφράσεις:
14 Αθανάσιος Σταυρακούδης 1 solve(x^2-1); 2 solve(x^2-1, x); είναι ισοδύναμες και θα δώσουν το ίδιο αποτέλεσμα. Ωστόσο, αν στην παράσταση υπάρχουν πολλές μεταβλητές πρέπει να διευκρινίσουμε ως προς πια μεταβλητή θέλουμε την επίλυση. Το ίδιο μπορούμε να κάνουμε και με συναρτησιακές μορφές των εξισώσεων. Για παράδειγμα, έστω η συνάρτηση: f (x, y) = x 2 + y 2 (2.6) Να λυθεί ως προς y η εξίσωση: f (x, y) = 1 (2.7) Θα γράψουμε στο Maxima: 1 f(x,y) := x^2 + y^2; 2 solve(f(x,y)=1, y); Για να πάρουμε ως απάντηση: y = 1 x 2, y = 1 x 2 όπως φαίνεται στο σχήμα 2.5. Σχήμα 2.5: Το περιβάλλον εργασίας του Maxima για την επίλυση πολυμεταβλητών παραστάσεων/συναρτησιακών ως προς μία μεταβλητή 2.1.4 Ασκήσεις Να βρείτε τις ρίζες των εξισώσεων: 1. x 3 + x 2 10 x + 8 = 0 2. 6 x 3 23 x 2 5 x + 4 = 0
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 15 3. 3 x 2 + 2 a x a 2 = 0 4. 24 x 3 86 x 2 + 71 x 15 = 0 5. x 2 + 2 x 9999 = 0 2.2 Άλλες μη γραμμικές εξισώσεις Δεν υπάρχουν μόνο οι πολυωνυμικές εξισώσεις. Υπάρχουν εκθετικές, λογαριθμικές, τριγωνομετρικές, κα. Ας δούμε μερικά παραδείγματα. Να λυθεί η εξίσωση: e x = 2 (2.8) Στο Maxima μπορούμε να γράψουμε: 1 solve(exp(-x) = 2, x); και να πάρουμε τη λύση: x = log(2) Να λυθεί η εξίσωση: log(x 2 + 1) = 4 (2.9) Στο Maxima μπορούμε να γράψουμε: 1 solve(log(x^2+1)=4, x); και να πάρουμε τη λύση: [x = e 4 1, x = e 4 1 ] Σε τέτοιες περιπτώσεις, αν θέλουμε την αριθμητική (προσεγγιστική λύση): 1 solve(log(x^2+1)=4, x), numer; και να πάρουμε τη λύση: [x = 7.321075740944018, x = 7.321075740944018] Να λυθεί η εξίσωση: 2 x+1 = 3 (2.10) Στο Maxima μπορούμε να γράψουμε: 1 solve(2^(x+1)=3, x);
16 Αθανάσιος Σταυρακούδης και να πάρουμε τη λύση: x = log (3) log (2) log (2) Σε παρόμοιες περιπτώσεις είναι πολλές φορές προτιμότερο να λύνουμε τη λογαριθμισμένη εξίσωση: Στο Maxima θα γράψουμε: log 2 x+1 = log 3 (2.11) 1 solve(log(2^(x+1))=log(3), x); Σε αυτή την περίπτωση θα πάρουμε το ίδιο αποτέλεσμα, όπως και πριν. Σε μερικές περιπτώσεις ωστόσο είναι αδύνατη η λύση της μη λογαριθμισμένης εξίσωσης. 2.3 Συστήματα γραμμικών εξισώσεων Με το Maxima μπορούμε να λύσουμε συστήματα γραμμικών εξισώσεων. Για παράδειγμα, να λυθεί το σύστημα: x 2y = 4 2x + y = 3 (2.12) Στο Maxima μπορούμε να γράψουμε: 1 solve([x-2*y=4, 2*x+y=3], [x, y]); και να πάρουμε τη λύση: x = 2, y = 1 Οταν έχουμε περισσότερες από μία εξισώσεις τότε τις γράφουμε την μία μετά την άλλη χωρίζοντάς τες με κόμμα (λίστα) και τοποθετώντας τες μέσα σε αγκύλες. Το ίδιο κάνουμε και με τις μεταβλητές, εδώ x, y. Οπως και και με εξίσωση μιας μεταβλητές, έτσι και σε αυτή την περίπτωση αν η επίλυση γίνεται ως προς όλες τις μεταβλητές των εξισώσεων, τότε μπορούμε να παραλείψουμε τη λίστα των μεταβλητών. Μπορούμε δηλαδή να γράψουμε: 1 solve([x-2*y=4, 2*x+y=3]); Ωστόσο, η προηγούμενη γραφή με τη λίστα μεταβλητών είναι πιο καθαρή, περισσότερο εύληπτη και λιγότερο ευαίσθητη σε πιθανά λάθη. Ενας άλλος τρόπος είναι να χρησιμοποιήσουμε επώνυμες αλγεβρικές παραστάσεις: 1 eq1 : x-2*y=4; 2 eq2 : 2*x+y=3; 3 solve([eq1, eq2], [x, y]);
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 17 Σχήμα 2.6: Τομή δύο ευθειών στο καρτεσιανό επίπεδο Ενα γραμμικό σύστημα μπορεί να χρησιμοποιηθεί για εύρεση της τομής δύο ευθειών, όπως φαίνεται στο σχήμα 2.6, στην περίπτωση που αυτές εκφράζονται ως δύο γραμμικές συναρτήσεις της ίδιας μεταβλητής. Αν για παράδειγμα γράψουμε το προηγούμενο σύστημα στη μορφή: f(x) = 1 2 x 2 g(x) = 2x + 3 (2.13) Μπορούμε να λύσουμε την εξίσωση: f(x) = g(x) (2.14) γράφοντας στο Maxima: 1 f(x) := x/2-2; 2 g(x) := -2*x+3; 3 solve(f(x)=g(x), x); Θα λάβουμε ως λύση το x = 2. Η αντίστοιχη τιμή του y, μπορεί να βρεθεί ως: 1 f(2); Ενας άλλος εύχρηστος τρόπος είναι να καλέσετε τη διαδικασία Solve Linear System από το μενού Equations. Δώστε τον αριθμό των εξισώσεων (πχ 2) και πληκτρολογήστε τις εξισώσεις στο παράθυρο διαλόγου, όπως δείχνει το σχήμα 2.8.
18 Αθανάσιος Σταυρακούδης Σχήμα 2.7: Το περιβάλλον εργασίας του Maxima για την επίλυση συστημάτων γραμμικών εξισώσεων Σχήμα 2.8: Το περιβάλλον εργασίας του Maxima για την επίλυση συστημάτων γραμμικών εξισώσεων μέσα από τη διαδικασία Equations Solve Linear System Το Maxima μπορεί να χρησιμοποιηθεί για την επίλυση περισσότερων εξισώσεων. παράδειγμα, για να επιλυθεί το σύστημα: Για 2 x 1 + x 2 2 x 3 = 4 2 x 1 + x 2 = 2 4 x 1 x 3 = 3 (2.15) μπορούμε να γράψουμε στο Maxima:
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 19 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]); 2.3.1 Ασκήσεις Να λυθούν τα παρακάτω συστήματα γραμμικών εξισώσεων: 1. 5x + y 4z = 5 2x + 3y + z = 7 2x 3y + 4z = 8 2. 2x 1 3x 2 + 2x 3 + z = 16 3x 1 + x 2 + 2x 3 + 5z = 15 4x 1 5x 2 3x 3 + z = 11 3x 1 + 2x 2 + x 3 + z = 12 3. x + 2y + 3z = 3 2x + y 3z = 0 3x 2y z = 2 2.4 Συστήματα μη γραμμικών εξισώσεων Με το Maxima υπάρχει η δυνατότητα για την επίλυση συστημάτων μη γραμμικών εξισώσεων. Για παράδειγμα, να λυθεί το σύστημα: 1 y + x + x = 1 2 x y = 3 (2.16) Παραδοσιακά, ένα τέτοιο σύστημα θα λυνόταν με τη μέθοδο της αντικατάστασης. Στο Maxima μπορούμε να γράψουμε: 1 eq1 : 1/(x+y) + x = -1; 2 eq2 : 2*x - y = 3; 3 solve([eq1, eq2], [x, y]);
20 Αθανάσιος Σταυρακούδης και να πάρουμε ως λύση: 2 [[x = 3, y = 3 3 2 + 2 3 2 3 ], [x = 2 3, y = 3 3 2 2 3 2 3 ]] μία λίστα με δύο ζεύγη τιμών, όπως δείχνει το σχήμα 2.9. Σχήμα 2.9: εξισώσεων Το περιβάλλον εργασίας του Maxima για την επίλυση συστημάτων μη γραμμικών του 3: Υπενθυμίζεται πως η ποσότητα 3 3 2 αντιστοιχεί στην τετραγωνική ρίζα της τρίτης δύναμης 3 3 2 = 3 3 2.4.1 Ασκήσεις Να βρεθούν οι ρίζες των παρακάτω συστημάτων μη γραμμικών εξισώσεων: 1. y = 10 x + 15 y = x 2 5 x + 21 2. y = 5 x 2 + 10 x + 10 y = 3 x 2 20 x + 80 3. y = 2 x + 5 y = 1 x 2
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 21 2.5 Επίλυση εξίσωσης με μιγαδικές ρίζες Το Maxima μπορεί να χρησιμοποιηθεί για την επίλυση μιγαδικών εξισώσεων, με τον ίδιο ακριβώς τρόπο που λύνει εξισώσεις με πραγματικές ρίζες. Υπενθυμίζεται πως η μιγαδική μονάδα δηλώνεται με το σύμβολο %i: 1 = %i Η παρακάτω άσκηση δόθηκε στις εισαγωγικές εξετάσεις για τα πανεπιστήμια το καλοκαίρι του 2010. Να βρεθούν οι ρίζες z 1, z 2 της εξίσωσης: z + 2 z = 2 (2.17) όπου z C με z 0. Ας δούμε ένα παράδειγμα. Η εξίσωση 2.17 έχει δύο μιγαδικές ρίζες: z 1 = 1 i, z 2 = 1 + i Το σχήμα 2.10 δείχνει την εύρεση των ριζών με χρήση Η/Υ καθώς και την επιβεβαίωση της λύσης. Η πορεία είναι σχετικά απλή. Εδώ θα δοθεί μια σύντομη περιγραφή της. Να θυμάστε πως τα δεδομένα που εισάγει ο χρήστης δηλώνονται με το γράμμα i (από το input=είσοδος), ενώ η απόκριση του προγράμματος δηλώνεται με το γράμμα o (από το output=έξοδος). Σχήμα 2.10: Επίλυση της εξίσωσης 2.17 στο περιβάλλον Maxima Ας δούμε τα βήματα ένα-ένα (ευκαιρία για επανάληψη):
22 Αθανάσιος Σταυρακούδης 1. Στη γραμμή i1 ο χρήστης πληκτρολογεί την εξίσωση που επιθυμεί να λύσει. Ο τερματισμός της εντολής εισόδου γίνεται με τον συνδυασμό CTRL+ENTER. Το πρόγραμμα ερμηνεύει την είσοδο που του δόθηκε και αποκρίνεται στη γραμμή o1. 2. Με δεξί κλικ πάνω στο o1 αναδύεται ένα μενού επιλογών. Ο χρήστης επιλέγει Simplify Expression, δηλαδή την εκτέλεση κάποιων πράξεων και την απλοποίηση της έκφρασης. Το πρόγραμμα θα αποκριθεί τόσο με την γραμμή i2 που είναι η πραγματική εντολή που δόθηκε μέσω της επιλογής δεξιού κλικ, όσο και με την γραμμή o2 που είναι το αποτέλεσμα της επεξεργασίας της εντολής απλοποίησης έκφρασης. 3. Με δεξί κλικ πάνω στο o2 αναδύεται ένα μενού επιλογών, όπως και πριν. Ο χρήστης επιλέγει Solve, δηλαδή την επίλυση της εξίσωσης. Θα αναδυθεί ένα νέο παράθυρο που ζητεί το όνομα της μεταβλητής, ως προς την οποία θα πρέπει να γίνει η επίλυση. Ο χρήστης δίνει το z. Το πρόγραμμα θα αποκριθεί τόσο με την γραμμή i3 που είναι η πραγματική εντολή που δόθηκε μέσω της επιλογής δεξιού κλικ, όσο και με την γραμμή o3 που είναι το αποτέλεσμα της επεξεργασίας της εντολής απλοποίησης έκφρασης, δηλαδή οι ρίζες της εξίσωσης. Προσέξτε πως η δήλωση του φανταστικού μέρους ενός μιγαδικού αριθμού γίνεται με το %i και απλά με το i. Αυτό γίνεται για εσωτερικούς λόγους του προγράμματος και όχι για λόγους μαθηματικού συμβολισμού. 4. Μπορούμε να ζητήσουμε την επιβεβαίωση της λύσης. Για παράδειγμα, ο χρήστης κάνει δεξί κλικ πάνω στο o2 και επιλέγει Substitute, δηλαδή υποκατάσταση. Στο αναδυόμενο παράθυρο ζητά να αντικατασταθεί η παράμετρος z με την τιμή 1 %i. Το πρόγραμμα θα αποκριθεί τόσο με την γραμμή i4 που είναι η πραγματική εντολή που δόθηκε μέσω της επιλογής δεξιού κλικ, όσο και με την γραμμή o4 που είναι το αποτέλεσμα της ε- πεξεργασίας της εντολής υποκατάστασης. Οπως βλέπετε, το πρόγραμμα θα κάνει τις πράξεις και θα επαληθεύσει πως η τιμή της παράστασης: ισούται με 2. (1 i) 2 + 2 1 i 5. Η επαλήθευση μπορεί να γίνει και για τη δεύτερη ρίζα, με τον ίδιο τρόπο. Εδώ, για λόγους σύγκρισης, το δεξί κλικ έγινε πάνω στο o1. παράστασης: 2 i + 1 + i + 1 Επαληθεύεται πως η τιμές της ισούται με 2. Υπενθυμίζεται πως οι παραστάσεις o1 και o2 είναι απολύτως ισοδύναμες από μαθηματική άποψη. Βέβαια, στην πράξη πολλές φορές δεν γνωρίζουμε εκ των προτέρων, πριν κάνουμε κάποια ανάλυση, αν μια εξίσωση έχει πραγματικές ή μιγαδικές ρίζες. Για παράδειγμα, να βρεθούν οι ρίζες της εξίσωσης: x 3 2x 2 + 3 = 0 (2.18) Στο Maxima θα γράψουμε:
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 23 1 solve(x^3-2*x^2 + 3, x); και θα λάβουμε ως λύση: 3 i 3 [x =, x = 2 3 i + 3, x = 1] (2.19) 2 Εχουμε δηλαδή μια πραγματική και δύο μιγαδικές ρίζες. Η επίλυση γίνεται με τον ίδιο ακριβώς τρόπο: με κλήση της συνάρτησης solve. 2.5.1 Ασκήσεις Να βρεθούν οι ρίζες των παρακάτω εξισώσεων: 1. z 3 1 z = 3 2. z 3 + 1 = 0 3. z 2 + 2 z + 3 = 0 4. z z 2 z+1 = 1 5. z 2 z z 2 +1 = z 2 6. z 2 z+i = 2 7. 2 5 z+i = 2 + i 8. z 3 i = 2 z 9. i z = 1 z 1 z i 10. z+i = cos (z)
3 Γραφικές παραστάσεις με το Maxima 3.1 Εισαγωγή Η κατασκευή γραφικής παράστασης μιας μαθηματικής συνάρτησης με το Maxima είναι ιδιαίτερα απλή και γίνεται με τη συνάρτηση plot2d. Αυτό που χρειάζεται είναι : 1. Ο ορισμός της συνάρτησης, πριν ή κατά την κλήση της διαδικασίας γραφήματος 2. Ο ορισμός των ορίων των μεταβλητών (πχ x,y ) 3. Προαιρετικά άλλες επιλογές, όπως η λεζάντα, οι τίτλοι αξόνων, χρώματα, κτλ 3.2 Παραδείγματα γραφικών παραστάσεων δύο διαστάσεων Στα παρακάτω παραδείγματα, με το ελληνικό ερωτηματικό υπονοείται το CTRL+ENTER. 3.2.1 Η γραφική παράσταση της συνάρτησης x 2 1 Εστω η συνάρτηση: (x) = x 2 1, x [ 5, 5] (3.1) Μπορούμε να κάνουμε με τρεις τρόπους, όπως δείχνει το σχήμα 3.1. Ο πιο απλός τρόπος είναι να γράψουμε τη συνάρτηση ως όρισμα στη plot2d: 1 plot2d(x^2-1, [x, -5, 5]);
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 25 Ενας άλλος τρόπος είναι να ορίσουμε την παράσταση x 2 1 ως y, και στη συνέχεια να κάνουμε το γράφημα της y: 1 y : x^2-1; 2 plot2d(y, [x, -5, 5]); Τέλος, μπορούμε να ορίσουμε τη συνάρτηση f(x) = x 2 1 και να κάνουμε το γράφημα της συνάρτησης: 1 f(x) := x^2-1; 2 plot2d(f(x), [x, -5, 5]); Και οι τρεις τρόποι (σχήμα 3.1) θα καταλήξουν στο ίδιο αποτέλεσμα, όπως φαίνεται στο σχήμα 3.2 Σχήμα 3.1: Το περιβάλλον του Maxima για την γραφική παράσταση της συνάρτησης y = x 2 1 3.2.2 Η γραφική παράσταση της συνάρτησης 1 x Εστω η συνάρτηση: f(x) = 1, x [0.1, 1] (3.2) x θα ακολουθήσουμε τα ίδια βήματα με το προηγούμενο παράδειγμα. Το γράφημα μπορεί να γίνει με οποιοδήποτε από τρεις τρόπους, όπως δείχνει το σχήμα 3.3. 1 plot2d (1/x, [x, 0.1, 2]); 2 y : 1/x ; 3 plot2d (y, [x, 0.1, 2]); 4 f(x) := 1/x; 5 plot2d(f(x), [x, 0.1, 1]); Υπενθυμίζεται πως οι τρόποι παρουσιάζονται για λόγους εξάσκησης και εκμάθησης. Προφανώς θα πρέπει να επιλέξετε έναν για το γράφημα, ανάλογα με τις ανάγκες του προγράμματος και το στυλ που επιλέγετε. Το γράφημα της συνάρτησης y = 1/x δίνεται στο σχήμα 3.4.
26 Αθανάσιος Σταυρακούδης Σχήμα 3.2: Το γράφημα της συνάρτησης y = x 2 1 Σχήμα 3.3: Το περιβάλλον του Maxima για την γραφική παράσταση της συνάρτησης y = 1/x 3.2.3 Η γραφική παράσταση της συνάρτησης log x Εστω η συνάρτηση: f(x) = log x, x [0.1, 10] (3.3) Οπως ήδη γνωστό, υπάρχουν τρεις δυνατότητες: 1 plot2d (log(x), [x, 0.1, 10]); 2 y : log(x) 3 plot2d (y, [x, 0.1, 10]); 4 f(x) := log(x); 5 plot2d(f(x), [x, 0.1, 10]);
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 27 Σχήμα 3.4: Το γράφημα της συνάρτησης y = 1/x Ο λόγος που στο άξονα x (τετμημένη) ξεκινάμε το γράφημα (σχήμα 3.5) από μια μικρή θετική τιμή και όχι από το μηδέν είναι γιατί ο λογάριθμος του μηδενός δεν ορίζεται. Το Maxima δεν θα παραπονεθεί αν του ζητήσετε το λογάριθμο του μηδενός. Αλλά το γράφημα δε θα φαίνεται καλό. Εξ άλλου οι τιμές του: lim x 0 log x είναι πολύ μικρές, το γράφημα θα χάσει τη σωστή εμφάνισή του. Βέβαια μπορείτε και μόνοι σας να δοκιμάσετε, ή να πειραματιστείτε με άλλες μικρές τιμές. Σχήμα 3.5: Το γράφημα της συνάρτησης y = log x
28 Αθανάσιος Σταυρακούδης 3.2.4 Η γραφική παράσταση της συνάρτησης x 3 2 x 2 + 1 Εστω η συνάρτηση: f(x) = x 3 2 x 2 + 1, x [ 2, 3] (3.4) Δεν θα επιμένουμε περισσότερο σε λεπτομέρειες κατασκευής του γραφήματος (σχήμα 3.6), λογικά, μετά τα προηγούμενα παραδείγματα είναι απλό και κατανοητό: 1 f(x) := x^3-2*x^2 + 1; 2 plot2d(f(x), [x, -2, 3]); Σχήμα 3.6: Το γράφημα της συνάρτησης y = x 3 2 x 2 + 1 Στο σημείο αυτό, ίσως είναι ενδιαφέρον να εξηγηθούν κάποιες επιπλέον δυνατότητες και επιλογές στη μορφοποίηση του γραφήματος. Για παράδειγμα μπορούμε να αλλάξουμε του τίτλους των αξόνων και να προσθέσουμε γραμμές πλέγματος, όπως φαίνεται στο σχήμα 3.7 : 1 f(x) := x^3-2*x^2 + 1; 2 plot2d(f(x), [x, -2, 3], [ylabel, "f(x)"], [xlabel, "x"], 3 [gnuplot_preamble, "set grid;"]); Ο τίτλος αξόνων δηλώνεται με την επιλογή ylabel για τον κάθετο άξονα, ή xlabel για τον οριζόντιο άξονα. Δηλώνουμε το κείμενο του τίτλου μέσα σε εισαγωγικά. Η επιλογή αυτή, όπως σχεδόν όλα στο Maxima είναι μια λίστα τιμών: πρέπει να δηλωθούν μέσα σε αγκύλες και οι τιμές χωρίζονται με κόμματα: [ylabel, f(x) ]. Προσέξτε πως η ίδια λογική ισχύει και για τα όρια του οριζόντιου άξονα: [x, -2, 3]. Το Maxima δεν μπορεί να επέμβει στην κατασκευή των γραμμών πλέγματος. Η επιλογή [gnuplot preamble, set grid; ] αναφέρεται στο πρόγραμμα gnuplot. Το Maxima χρησιμοποιεί το πρόγραμμα gnuplot για την κατασκευή των γραφημάτων. Οι εντολές στο Maxima http://www.gnuplot.info/
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 29 Σχήμα 3.7: Τροποποίηση των τίτλων αξόνων σε γράφημα συνάρτησης διερμηνεύονται και εκτελούνται από το gnuplot. Ο χρήστης βέβαια δε βλέπει αυτή τη διαδικασία. Επειδή ωστόσο δεν υπάρχει κατάλληλη οδηγία στο Maxima για την προσθήκη των γραμμών πλέγματος, θα πρέπει να δοθεί σχετική εντολή στη γλώσσα του gnuplot. Η οδηγία [gnuplot preamble, set grid; ] κάνει αυτό ακριβώς: οδηγεί το Maxima να περάσει στο gnuplot την οδηγία κατασκευής γραμμών πλέγματος. Δεν είναι απαραίτητο να βάζετε γραμμές πλέγματος. Μερικές φορές ωστόσο τα γραφήματα είναι πιο καλαίσθητα και πιο ευανάγνωστα αν έχουν γραμμές πλέγματος. Μία άλλη επέμβαση είναι στο χρώμα και το πάχος της γραμμής (style). Μπορούμε να επέμβουμε στο πάχος της γραμμής (πχ 10), όπως επίσης και να αλλάξουμε το χρώμα (σχήμα 3.8), πχ: 1 f(x) := x^3-2*x^2 + 1; 2 plot2d(f(x), [x, -2, 3], [ylabel, "f(x)"], [xlabel, "x"], 3 [style, [lines, 10, 2]], 4 [gnuplot_preamble, "set grid;"]); Ο ορισμός του στυλ είναι και αυτό λίστα (λίστα μέσα σε λίστα) γι αυτό απαιτούνται δύο αγκύλες στο τέλος. Η επιλογή [lines, 10, 2] σημαίνει πως η γραμμή θα γίνει με πάχος 10 (πολύ έντονη) και με χρώμα που αντιστοιχεί στο 2. Το Maxima χρησιμοποιεί την προκαθορισμένη κωδικοποίηση χρωμάτων από το gnuplot, πχ, 1 μπλε, 2 κόκκινο, 3 πράσινο, 4 φούξια, κτλ. Μπορούμε επίσης να προσθέσουμε λεζάντα (υπόμνημα) στο γράφημα (σχήμα 3.8). Σε γραφήματα με μόνο μία καμπύλη αυτό δεν είναι απαραίτητο. Είναι ωστόσο αναγκαίο σε περιπτώσεις με περισσότερες καμπύλες. Το υπόμνημα μπορεί να προστεθεί με την οδηγία legend:
30 Αθανάσιος Σταυρακούδης 1 f(x) := x^3-2*x^2 + 1; 2 plot2d(f(x), [x, -2, 3], [ylabel, "f(x)"], [xlabel, "x"], 3 [style, [lines, 10, 2]], [legend, "y = log(x)"], 4 [gnuplot_preamble, "set grid;"]); Σχήμα 3.8: Τροποποίηση του πάχος και χρώματος γραμμής σε γράφημα συνάρτησης 3.2.5 Η γραφική παράσταση της συνάρτησης cos(x) Εστω η συνάρτηση: f(x) = cos(x), x [2π, 2π] (3.5) Οι αριθμοί όπως το π απαιτούν ειδικό χειρισμό, δηλώνεται με %pi 1 f(x) := cos(x) 2 plot2d(f(x), [x, -2*%pi, 2*%pi]); Το γράφημα της συνάρτησης y = cos x φαίνεται στο σχήμα 3.9. Μερικές φορές είναι επιθυμητή η επέκταση της κλίμακας του κάθετου άξονα πέρα από τα όρια των τιμών της συνάρτησης. Για παράδειγμα, ενώ είναι γνωστό πως οι τιμές της συνάρτησης του συνημιτόνου είναι μεταξύ [ 1, 1], για την καλαισθησία του γραφήματος είναι προτιμότερο να επεκτείνουμε τα όρια, πχ [ 1.5, 1.5]. Ετσι το γράφημα θα φαίνεται καλύτερα και πιο ομαλά στο ανθρώπινο μάτι. Αυτό μπορεί να γίνει με την οδηγία [y, a, b] όπου a,b τα όρια του κάθετου άξονα, όπως φαίνεται στο σχήμα 3.10: 1 f(x) := cos(x) 2 plot2d(f(x), [x, -2*%pi, 2*%pi], [y, -1.5, 1.5],);
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 31 Σχήμα 3.9: Γραφική παράσταση της συνάρτησης του συνημιτόνου Σχήμα 3.10: Τροποποίηση του κλίμακας του κάθετου άξονα 3.2.6 Ασκήσεις Να κάνετε γραφήματα των παρακάτω συναρτήσεων: 1. y = x + cos x 2. y = x 2 x+1 3. y = 10 x 1 3 4. y = 100 5 x
32 Αθανάσιος Σταυρακούδης 3.3 Παραδείγματα γραφικών παραστάσεων δύο διαστάσεων με περισσότερες συναρτήσεις Θα δούμε τώρα πως μπορούμε να κάνουμε τη γραφική παράσταση δύο ή περισσότερων συναρτήσεων στο ίδιο γράφημα. Η λύση είναι απλή τοποθετούμε τα ονόματα ή τους ορισμούς των συναρτήσεων σε λίστα, μέσα σε αγκύλες με τιμές που χωρίζονται με κόμματα. Οταν υπάρχουν δύο ή περισσότερες καμπύλες στο γράφημα είναι απαραίτητη η τοποθέτηση υπομνήματος: κάθε καμπύλη πρέπει να ξεχωρίζει από τις άλλες είτε από το πάχος, είτε από το χρώμα της. Το Maxima τοποθετεί τις καμπύλες αυτόματα με διαφορετικό χρωματισμό, πχ την πρώτη με μπλε χρώμα, τη δεύτερη με κόκκινο, την τρίτη με πράσινο, κτλ. Μπορείτε βέβαια να αλλάξετε το χρωματισμό όπως θέλετε ή να τροποποιήσετε το πάχος της καμπύλης με την οδηγία style. 3.3.1 Η γραφική παράσταση των συναρτήσεων cos x, sin x Εστω οι συναρτήσεις: f(x) = cos x g(x) = sin x (3.6) με x [0, 2π] Οπως και με τα παραδείγματα μιας συνάρτησης, έτσι και εδώ, υπάρχουν τρεις τρόποι (σχήμα 3.11) να κάνουμε το γράφημα (σχήμα 3.12). Ο πρώτος είναι να γράψουμε ενσωματωμένους τους ορισμούς των συναρτήσεων (inline) μέσα στην οδηγία plot2d: 1 plot2d([cos(x), sin(x)], [x, 0, 2*%pi]); Οι δύο ορισμοί συναρτήσεων πρέπει να περικλείονται σε αγκύλες υποχρεωτικά. Ο δεύτερος τρόπος είναι να οριστούν δύο παραστάσεις: 1 y1 : cos(x); 2 y2 : sin(x); 3 plot2d([y1, y2], [x, 0, 2*%pi]); Ο τρίτος τρόπος είναι να οριστούν δύο συναρτήσεις: 1 f(x) := cos(x) 2 g(x) := sin(x) 3 plot2d([f(x), g(x)], [x, 0, 2*%pi]); Μπορούμε να αλλάξουμε τα χρώματα ή το πάχος των καμπυλών, ή ακόμα άλλες σχετικές παραμέτρους του γραφήματος. Ο παρακάτω κώδικας θα δώσει το γράφημα του σχήματος 3.13.
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 33 Σχήμα 3.11: Το περιβάλλον του Maxima για την γραφική παράσταση των συναρτήσεων y = cos x, y = sin x Σχήμα 3.12: Η γραφική παράσταση των συναρτήσεων y = cos x, y = sin x 1 f(x) := cos(x) 2 g(x) := sin(x) 3 plot2d([cos(x), sin(x)], [x, 0, 2*%pi], [y, -1.5, 1.5], 4 [xlabel, "x"], [ylabel, "f(x)"], 5 [style, [lines, 2, 4], [lines, 2, 1]], 6 [legend, "cos", "sin"], 7 [gnuplot_preamble, "set grid;"]);
34 Αθανάσιος Σταυρακούδης Σχήμα 3.13: Η γραφική παράσταση των συναρτήσεων y = cos x, y = sin x μετά από τροποποίηση των παραμέτρων του γραφήματος 3.3.2 Η γραφική παράσταση των συναρτήσεων 2 x 2 +10 και 110 x+110 Εστω οι συναρτήσεις: S(x) = 2 x 2 + 10 (3.7) D(x) = 110 x + 110 (3.8) με x [0, 10], y [0, 100]. Εδώ έχουμε δύο συναρτήσεις, όπως και και πριν, αλλά υπάρχει περιορισμός στα όρια τόσο του οριζόντιου όσο και του κάθετου άξονα. Αυτό μπορεί να ρυθμιστεί με την επιλογή [y, 0, 100]. Αν θεωρήσουμε πως οι συναρτήσεις D(x), S(x) αντιπροσωπεύουν την τιμή ενός προϊόντος (x είναι η ποσότητα) ένα διάγραμμα ισορροπίας αγοράς: D(x) η τιμή ζήτησης (Demand) και S(x) η τιμή προσφοράς (Supply), τότε μπορούμε να κατασκευάσουμε το γράφημα (σχήμα 3.14) ως εξής: 1 S(x) := 2*x^2 + 10; 2 D(x) := -10*x + 110; 3 plot2d([d(x), S(x)], [x, 0, 10], [y, 0, 100], 4 [xlabel, "Quantity"], [ylabel, "Price"], 5 [style, [lines, 3, 1], [lines, 3, 2]], 6 [legend, "Demand", "Supply"], 7 [gnuplot_preamble, "set grid;"]); Οταν έχουμε ορίσει τις συναρτήσεις, όπως στο προηγούμενο παράδειγμα S(x) και D(x), μπορούμε να καλέσουμε την εντολή plot2d μόνο με το όνομα της συνάρτησης, πχ [D, S], αντί του [D(x), S(x)]. Το αποτέλεσμα θα είναι το ίδιο: 1 plot2d([d(x), S(x)]);
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 35 Σχήμα 3.14: Η γραφική παράσταση των συναρτήσεων προσφοράς-ζήτησης Φυσικά υπονοείται πως οι υπόλοιπες επιλογές παρέμειναν οι ίδιες. Επίσης, είναι δυνατό να έχουμε μίξη των ορισμών. Για παράδειγμα μπορούμε να ορίσουμε τη συνάρτηση προσφοράς ως συνάρτηση και τη συνάρτηση ζήτησης ως παράσταση: 1 S : 2*x^2 + 10; 2 D(x) := -10*x + 110; 3 plot2d([d(x), S(x)], [x, 0, 10], [y, 0, 100], 4 [xlabel, "Quantity"], [ylabel, "Price"], 5 [style, [lines, 3, 1], [lines, 3, 2]], 6 [legend, "Demand", "Supply"], 7 [gnuplot_preamble, "set grid;"]); Το αποτέλεσμα θα είναι πάλι το ίδιο, όπως και στο σχήμα 3.14. Προσοχή βέβαια στο πως ορίζεται μια παράσταση: 1 S : 2*x^2 + 10; και πως ορίζεται μια συνάρτηση: 1 D(x) := -10*x + 110; Μπορούμε επίσης να κάνουμε μίξη με συναρτήσεις ή παραστάσεις που έχει οριστεί και με παραστάσεις που δίνονται ενσωματωμένες στην plot2d: 1 D(x) := -10*x + 110; 2 plot2d([d(x), 2*x^2 + 10], [x, 0, 10], [y, 0, 100], 3 [xlabel, "Quantity"], [ylabel, "Price"], 4 [style, [lines, 3, 1], [lines, 3, 2]], 5 [legend, "Demand", "Supply"], 6 [gnuplot_preamble, "set grid;"]);
36 Αθανάσιος Σταυρακούδης Το αποτέλεσμα θα είναι και πάλι το ίδιο. Κάτι τέτοιο βέβαια πρέπει να εφαρμόζεται κατά περίπτωση και με φειδώ. Η αξία της ομοιογενούς και με συνέπεια γραφής είναι πολύ μεγάλη για να την εγκαταλείψουμε εύκολα. Ωστόσο, υπάρχουν περιπτώσεις που είναι καλό και χρήσιμο να εφαρμόζουμε εξαιρέσεις από τον κανόνα. 3.3.3 Προσθήκη οριζόντιων γραμμών Μερικές φορές είναι επιθυμητή η προσθήκη επιπλέον καμπυλών στο γράφημα, οι οποίες δεν αντιπροσωπεύουν συναρτήσεις του προβλήματος, αλλά δίνουν έμφαση στο γράφημα ή χρησιμοποιούνται για εξαγωγή συμπερασμάτων. Για παράδειγμα, οι καμπύλες του σχήματος 3.14 τέμνονται στο σημείο x = 5, y = 60. Πως μπορούμε να φέρουμε μια οριζόντια γραμμή στο σημείο αυτό; Και πάλι υπάρχουν τρεις τρόποι να το πετύχουμε: 1. Η ενσωμάτωση (ινλινε): 1 plot2d([d(x), S(x), 60], [x, 0, 10], [y, 0, 100]); 2. Ο ορισμός μια παράστασης: 1 p0 : 60 2 plot2d([d(x), S(x), p0], [x, 0, 10], [y, 0, 100]); 3. Ο ορισμός μια συνάρτησης: 1 p0(x) := 60 2 plot2d([d(x), S(x), p0(x)], [x, 0, 10], [y, 0, 100]); Θα προτιμήσουμε τον δεύτερο τρόπο, όπως δείχνει το σχήμα 3.15. Σχήμα 3.15: Το περιβάλλον του Maxima για την προσθήκη οριζόντιας γραμμής σε γράφημα Το αποτέλεσμα της διαδικασίας του σχήματος 3.15 φαίνεται στο σχήμα 3.16.
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 37 Σχήμα 3.16: Η γραφική παράσταση των συναρτήσεων ζήτησης και προσφοράς με την προσθήκη οριζόντιας γραμμής στην τιμή ισορροπίας 3.3.4 Γραμμικός συνδυασμός συναρτήσεων Εστω οι συναρτήσεις: f(x) = x 2 g(x) = x x + 6 (3.9αʹ) (3.9βʹ) Να γίνει το γράφημα της συνάρτησης: h(x) = f(x) + g(x) (3.10) με x [0, 10] μαζί με το γράφημα των συναρτήσεων f(x), g(x). Εδώ έχουμε να κάνουμε με ένα γραφική παράσταση τριών συναρτήσεων. Η τρίτη ωστόσο παράγεται με γραμμικό συνδυασμό των δύο πρώτων, οπότε μπορούμε να την ορίσουμε με βάση τις άλλες δύο. Να πως μπορούμε να το χειριστούμε: 1 f(x) := x^2; 2 g(x) := 5*x+6; 3 plot2d([f(x), g(x), f(x)+g(x)], [x, 0, 10], [y, 0, 100], 4 [legend, "f ", "g ", "f + g "], 5 [gnuplot_preamble, "set grid; set key left"]); Προσέξτε πως έχουμε μετακινήσει τη θέση του υπομνήματος (set key left) στα αριστερά, όπου υπάρχει μεγαλύτερος κενός χώρος. Το αποτέλεσμα φαίνεται στο σχήμα 3.17.
38 Αθανάσιος Σταυρακούδης Σχήμα 3.17: Γραφική παράσταση γραμμικού συνδυασμού συναρτήσεων 3.3.5 Καμπύλες της ίδιας συνάρτησης για διαφορετικές τιμές παραμέτρων Ας δούμε μια άλλη περίπτωση, η οποία εμφανίζεται πολύ συχνά σε οικονομικά προβλήματα. Πολλές φορές θέλουμε να κατασκευάσουμε την καμπύλη μιας συνάρτησης αλλά για διαφορετικές τιμές των παραμέτρων της. Για παράδειγμα, ας πάρουμε τη συνάρτηση: Y (K) = 10 K a (3.11) η οποία δείχνει το προϊόν (Y ) μιας επιχείρησης ως προς το κεφάλαιο (K), με σταθερή την ποσότητα της εργασίας. Το a είναι μια παράμετρος που παίρνει τιμές 0 < a < 1 2. Σχήμα 3.18: Η γραφική παράσταση της συνάρτησης παραγωγής για ως προς το κεφάλαιο για διαφορετικές τιμές α
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 39 Το ζητούμενο είναι να κατασκευάσουμε τις καμπύλες της συνάρτησης (σχήμα 3.18) για τιμές a = 0.2, 0.3, 0.4 πάνω στο ίδιο γράφημα, έτσι θα έχουμε τη δυνατότητα συγκριτικής αναπαράστασης. Οπως και σε άλλες περιπτώσεις, έτσι και εδώ, υπάρχουν πολλές δυνατότητες. 1. Μπορούμε να κατασκευάσουμε το γράφημα με ενσωμάτωση (inline) των οδηγιών στην εντολή plot2d: 1 plot2d([10*k^0.2, 10*K^0.3, 10*K^0.4], [K, 0, 5], 2 [xlabel, "K"], [ylabel, "Y"], 3 [style, [lines, 2, 1], [lines, 2, 2], [lines, 2, 3]], 4 [legend, "a = 0.2", "a = 0.3", "a = 0.4"], 5 [gnuplot\_preamble, "set grid; set key 5, 4"]); Προσέξτε την επιλογή [K, 0, 5] για τα όρια του οριζόντιου άξονα. Αντίθετα, τα όρια του κάθετου άξονα ορίζονται πάντα ως (πχ) [y, 0, 30] ανεξάρτητα από όνομα της εξαρτημένης μεταβλητής (εδώ Y ). Επίσης, η επιλογή set key 5, 4 ορίζει την θέση του υπομνήματος πάνω στις συντεταγμένες του γραφήματος: η άνω δεξιά θέση του υπομνήματος τίθεται στη θέση με τετμημένη 5 και τεταγμένη 4. Το αποτέλεσμα φαίνεται στο σχήμα 3.18. 2. Μια άλλη επιλογή είναι να ορίσουμε τρεις παραστάσεις και να κάνουμε το γράφημα των τριών παραστάσεων: 1 Y1 : 10*K^0.2; 2 Y2 : 10*K^0.3; 3 Y3 : 10*K^0.4; 4 plot2d([y1, Y2, Y3], [K, 0, 5], 5 [xlabel, "K"], [ylabel, "Y"], 6 [style, [lines, 2, 1], [lines, 2, 2], [lines, 2, 3]], 7 [legend, "a = 0.2", "a = 0.3", "a = 0.4"], 8 [gnuplot_preamble, "set grid; set key 5,4"]); Το αποτέλεσμα είναι το ίδιο με πριν και φαίνεται στο σχήμα 3.18. 3. Ο τρίτος τρόπος είναι να ορίζουμε τη συνάρτηση Y (K) ως παραμετρική, ή συνάρτηση δύο μεταβλητών: Y (K, a) = 10 K a και να καλέσουμε τη συνάρτηση Y τρεις φορές μέσα στην plot2dψ(κ,α): 1 Y(K,a) := 10*K^a; 2 a1 : 0.2; 3 a2 : 0.3; 4 a3 : 0.4; 5 plot2d([y(k, a1), Y(K, a2), Y(K, a3)], [K, 0, 5], 6 [xlabel, "K"], [ylabel, "Y"], 7 [style, [lines, 2, 1], [lines, 2, 2], [lines, 2, 3]], 8 [legend, "a = 0.2", "a = 0.3", "a = 0.4"], 9 [gnuplot_preamble, "set grid; set key 5,4"]); Το αποτέλεσμα είναι το ίδιο με πριν και φαίνεται στο σχήμα 3.18.
40 Αθανάσιος Σταυρακούδης Και πάλι θα τονίσουμε πως δεν υπάρχει κάποιος απόλυτος κανόνας για την επιλογή της μιας ή της άλλης προσέγγισης. Εξαρτάται από από τις συνθήκες του προβλήματος και το στυλ προγραμματισμού που ακολουθεί κανείς. Βέβαια, η αλήθεια είναι πως όσο πιο γενική είναι μια λύση, τόσο πιο εύκολο είναι να προσαρμοστεί σε διαφορετικές συνθήκες και να οδηγήσει στη γρήγορη λύση ενός νέου προβλήματος. Από την άποψη αυτή η λύση της παραμετρικής συνάρτησης (δύο μεταβλητές) ίσως είναι προτιμότερη. 3.4 Γραφικές παραστάσεις συναρτήσεων δύο μεταβλητών και τρισδιάστατα γραφήματα Με την εντολή plot3d στο Maxima μπορούμε να κάνουμε τρισδιάστατα γραφήματα. Οι περισσότερες επιλογές των γραφημάτων είναι παρόμοιες με αυτές των γραφημάτων σε δύο διαστάσεις. Τέτοιες γραφικές παραστάσεις είναι βέβαια επιφάνειες και όχι καμπύλες. Για να μπορέσει κανείς να πάρει το μέγιστο από τα τρισδιάστατα γραφήματα θα πρέπει να τα κάνει μόνος του και να χρησιμοποιήσει τις δυνατότητες περιστροφής που του δίνονται. 3.4.1 Το γράφημα της συνάρτησης x 2 + y 2 Εστω η συνάρτηση: f(x, y) = x 2 + y 2 (3.12) Σχήμα 3.19: Η γραφική παράσταση σε τρεις διαστάσεις της συνάρτησης f(x, y) = x 2 + y 2 1. Μπορούμε να κατασκευάσουμε το γράφημα με ενσωμάτωση (inline) των οδηγιών στην εντολή plot3d: 1 plot3d(x^2+y^2, [x, -3, 3], [y, -3, 3]); Το αποτέλεσμα φαίνεται στο σχήμα 3.19. 2. Μια άλλη επιλογή είναι να ορίσουμε τρεις παραστάσεις και να κάνουμε το γράφημα των τριών παραστάσεων:
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 41 1 z : x^2 + y^2; 2 plot3d(z, [x, -3, 3], [y, -3, 3]); Το αποτέλεσμα είναι το ίδιο με πριν και φαίνεται στο σχήμα 3.19. 3. Ο τρίτος τρόπος είναι να ορίζουμε πρώτα τη συνάρτηση δύο μεταβλητών: 1 f(x,y) := x^2 + y^2; 2 plot3d(f(x,y), [x, -3, 3], [y, -3, 3]); Το αποτέλεσμα είναι το ίδιο με πριν και φαίνεται στο σχήμα 3.19. Σχήμα 3.20: Το περιβάλλον του Maxima για την γραφική παράσταση της συνάρτησης f(x, y) = x 2 + y 2 3.4.2 Να γίνει το γράφημα της συνάρτησης χρησιμότητας Εστω η συνάρτηση: U(x, y) = x 3 4 y 1 4 (3.13) για 0 x 20 και 0 y 20. Μια πρώτη προσέγγιση μπορεί να είναι: 1 U(x,y) := x^(3/4) * y^(1/4); 2 plot3d(u, [x, 0, 20], [y, 0, 20], 3 [legend, false]); Το αποτέλεσμα φαίνεται στο σχήμα 3.21. Η επιλογή [legend, false] σημαίνει την αναίρεση εμφάνισης του υπομνήματος (συγκρίνετε με το σχήμα 3.19). Με την ευκαιρία μπορούμε να δώσουμε κάποιες επιπλέον επεξηγήσεις για τα τρισδιάστατα γραφήματα, έτσι όπως κατασκευάζονται με την εντολή plot3d του Maxima.
42 Αθανάσιος Σταυρακούδης Σχήμα 3.21: Η γραφική παράσταση σε τρεις διαστάσεις της συνάρτησης U(x, y) = x 3 4 y 1 4 Το πρόγραμμα κατασκευάζει γραμμές πλέγματος (grid) κατά μήκος των αξόνων. Το πλήθος αυτών των γραμμών ελέγχεται με την επιλογή [grid, nx, ny]. Για παράδειγμα, η οδηγία: 1 U(x,y) := x^(3/4) * y^(1/4); 2 plot3d(u, [x, 0, 20], [y, 0, 20], 3 [grid, 20, 5]); θα δημιουργήσει 20 γραμμές πλέγματος στον άξονα x και 5 γραμμές πλέγματος y. Ετσι σχηματίζεται ένα πλέγμα από ορθογώνια. Το πρόγραμμα χρωματίζει αυτά τα ορθογώνια ανάλογα με τις τιμές της συνάρτησης. Μπορούμε να αναιρέσουμε αυτό το χρωματισμό με την επιλογή [palette, false]: 1 U(x,y) := x^(3/4) * y^(1/4); 2 plot3d(u, [x, 0, 20], [y, 0, 20], 3 [palete, false]); Μπορούμε να αλλάξουμε το χρώμα από τις γραμμές πλέγματος με την επιλογή [mesh lines color, color]. Για παράδειγμα κόκκινες γραμμές πλέγματος: 1 U(x,y) := x^(3/4) * y^(1/4); 2 plot3d(u, [x, 0, 20], [y, 0, 20], 3 [mesh_lines_color, red]); Το Maxima χρησιμοποιεί μια σταδιακή μεταβολή του χρωματισμού της επιφάνειας της συνάρτησης, για να υποδηλώσει τη μεταβολή στις τιμές της συνάρτησης. Ετσι είναι καλύτερα ορατό που η συνάρτηση έχει μέγιστο και που ελάχιστο, κάτι που εξαρτάται από τις τιμές των δύο μεταβλητών x, y. Ο χρωματισμός ελέγχεται από την παράμετρο [palette, [options]]. Για παράδειγμα: 1 U(x,y) := x^(3/4) * y^(1/4); 2 plot3d(u, [x, 0, 20], [y, 0, 20], 3 [palette, [hue, 0.3, 0.8,.8, 0.9]]);
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 43 Δοκιμάστε διάφορες τιμές για να δείτε το αποτέλεσμα (μικρότερες της μονάδας). Ο παρακάτω κώδικας θα κατασκευάσει το γράφημα του σχήματος 3.22 1 plot3d(u, [x, 0, 20], [y, 0, 20], 2 [legend, false], 3 [mesh_lines_color, false], 4 [palette, [hue, 0.5,0.7, 0.6, 0.9]]); Σχήμα 3.22: Η γραφική παράσταση σε τρεις διαστάσεις της συνάρτησης U(x, y) = x 3 4 y 1 4 με επιπλέον χρωματικές επιλογές Ο παρακάτω κώδικας θα κατασκευάσει το γράφημα του σχήματος 3.23. 1 plot3d(u, [x,0, 20], [y, 0, 20], 2 [legend, false], 3 [gnuplot_preamble, "set grid"]); Σχήμα 3.23: Η γραφική παράσταση σε τρεις διαστάσεις της συνάρτησης U(x, y) = x 3 4 y 1 4 επιλογή προσθήκης γραμμών πλέγματος με την Το σχήμα 3.23 δε διαφέρει σημαντικά από το σχήμα 3.22. Το πλεονέκτημά του είναι η προσθήκη της χρωματικής κλίμακας στο πλάι. Υπενθυμίζεται πως το πρόγραμμα Maxima χρωματίζει την επιφάνεια της U(x, y ανάλογα με την τιμή της συνάρτησης. Για παράδειγμα οι τιμές U(4, 4), U(3, 9.5) και U(7, 0.75) αντιστοιχούν (προσεγγιστικά) στο 4. Η τιμή αυτή το gnuplot στην πραγματικότητα που εκτελεί τις γραφικές εντολές του Maxima
44 Αθανάσιος Σταυρακούδης αντιστοιχεί στο μωβ χρώμα του σχήματος 3.23. Η ίδια τιμή της συνάρτησης U(x, y) αντιστοιχεί σε πολλούς συνδυασμούς των x, y. Ο πλέον εύκολος τρόπος για να αντιληφθεί το ανθρώπινο μάτι αυτή την ιδιότητα είναι ο χρωματισμός με το ίδιο χρώμα εκεί όπου οι τιμές είναι οι ίδιες. Επίσης, η χρωματική διαστρωμάτωση βοηθάει να αντιληφθούμε καλύτερα που υπάρχουν μέγιστα ή/και ελάχιστα στη συνάρτηση. Για να αντιληφθείτε καλύτερα τις συνέπειες του σωστού χρωματισμού ενός τρισδιάστατου γραφήματος, δείτε το γράφημα με ομοιόμορφο χρώμα, όπως φαίνεται στο σχήμα 3.24. Ο ομοιόμορφος χρωματισμός δεν βοηθάει στον ξεκάθαρο διαχωρισμό των περιοχών όπου η συνάρτηση U(x, y) παίρνει τις ίδιες τιμές. 1 plot3d(u, [x,0, 20], [y, 0, 20], 2 [legend, false], 3 [mesh_lines_color,false], 4 [palette, [hue, 0, 0, 0.4, 0.9]]); Σχήμα 3.24: Η γραφική παράσταση σε τρεις διαστάσεις της συνάρτησης U(x, y) = x 3 4 y 1 4 με τροποποίηση των χρωματικών επιλογών 3.4.3 Ασκήσεις Να κάνετε τα γραφήματα των παρακάτω συναρτήσεων: 1. z = x 2 y 2 2. z = x 2 2 x y + y 2 3. U(x, y) = x 1/2 y 1/2 4. U(x, y) = x 0.3 y 0.7 3.5 Διαγράμματα ισοϋψών καμπυλών (contour plots) Το διαγράμματα ισοϋψών καμπυλών (contour plots) είναι δισδιάστατες απεικονίσεις σχέσεων τριών μεταβλητών. Για παράδειγμα μια σχέση τριών μεταβλητών είναι η συνάρτηση: z = x 2 + y 2 (3.14)
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 45 Κάθε καμπύλη σε ένα τέτοιο γράφημα αντιστοιχεί σε μια καθορισμένη τιμή του z. Δηλαδή, δύο διαφορετικά σημεία της ίδιας ισοϋψούς καμπύλης έχουν την ίδια τιμή z, αλλά σε διαφέρουν τουλάχιστον σε ένα από τα x, y. Υπάρχουν άπειροι συνδυασμοί των x, y που μπορεί να δώσουν την ίδια τιμή στο z, όπως ακριβώς υπάρχουν άπειρα σημεία πάνω σε μια καμπύλη. Ολοι μας έχουμε δει πολλά διαγράμματα ισοϋψών καμπυλών, άσχετα αν δεν αναγνωρίζουμε ως τέτοια. Οι φυσικοί χάρτες (όροι και πεδιάδες), οι χάρτες καιρού (υψηό και χαμηλό βαρομετρικό), οι καμπύλες αδιαφορίας στα οικονομικά, όλα είναι διαγράμματα ισοϋψών καμπυλών. Μερικά από αυτά είναι αποτελέσματα μετρήσεων (πχ χάρτες καιρού), άλλα (πχ καμπύλες αδιαφορίας) είναι κατασκευάσματα από μαθηματικά μοντέλα (πχ συνάρτηση χρησιμότητας). Γιατί κάνουμε διαγράμματα ισοϋψών καμπυλών καμπυλών, ενώ μπορούμε να έχουμε τα τρισδιάστατα αντίστοιχά τους; Για δύο κυρίους λόγους: 1. Τα δισδιάστατα γραφήματα είναι πιο εύχρηστα όταν συγκεντρωνόμαστε σε επιμέρους πληροφορίες, τις περισσότερες φορές δε χρειάζεται όλη η πληροφορία (και πολυπλοκότητα) που κουβαλά ένα τρισδιάστατο γράφημα 2. Είναι πιο εύκολο να αναπαρασταθούν στο χαρτί, ή σε μια ηλεκτρονική σελίδα, αντίθετα τα τρισδιάστατα γραφήματα απαιτούν χρήση Η/Υ για μέγιστη λειτουργικότητα 3.5.1 Το διάγραμμα ισοϋψών καμπυλών μιας κωνικής επιφάνειας Εστω η συνάρτηση: z = x 2 + y 2 (3.15) Ας δούμε πρώτα το τρισδιάστατο γράφημα της συνάρτησης: 1 a : 20; 2 z : sqrt(x^2+y^2); 3 plot3d(z, [x, -a, a], [y, -a, a], 4 [legend, false], 5 [mesh_lines_color, false]); Το αποτέλεσμα της διαδικασίας φαίνεται στο σχήμα 3.25. Το γράφημα έχει κωνικό σχήμα. Η συνάρτηση έχει ελάχιστο στο σημείο 0, 0: z(0, 0) = 0 2 + 0 2 = 0 ενώ έχει παντού αλλού θετικές τιμές. Φανταστείτε τώρα ένα επίπεδο παράλληλο με το επίπεδο x xy y να τέμνει κάθετα τον άξονα z z και να κόβει φέτα από το γράφημα της συνάρτησης. Οπως ξέρουμε από τη γεωμετρία η τομή μιας τέτοιας κωνικής επιφάνειας με επίπεδο κάθετο στον άξονα z z είναι κύκλος. Μάλιστα το σημείο z που το επίπεδο τέμνει τον άξονα είναι η ακτίνα του κύκλου. Φανταστείτε επίσης μια σειρά από παράλληλα επίπεδα που τέμνουν με παρόμοιο τρόπο την επιφάνεια του γραφήματος. Τέλος, δείτε αυτούς τους κύκλους σε προβολή πάνω στο επίπεδο x xy y. Κάτω τέτοιο μπορούμε να το πετύχουμε με την επιλογή [gnuplot preamble, set contour ] στο προηγούμενο γράφημα:
46 Αθανάσιος Σταυρακούδης Σχήμα 3.25: Η γραφική παράσταση σε τρεις διαστάσεις της συνάρτησης z = x 2 + y 2 1 a : 20; 2 z : sqrt(x^2+y^2); 3 plot3d(z, [x, -a, a], [y, -a, a], 4 [legend, false], 5 [mesh_lines_color, false], 6 [gnuplot_preamble, "set contour"]); Το αποτέλεσμα της διαδικασίας φαίνεται στο σχήμα 3.26. Μπορούμε να παρατηρήσουμε τις προβολές των τομών πάνω στο επίπεδο. Σχήμα 3.26: Η γραφική παράσταση σε τρεις διαστάσεις της συνάρτησης z = x 2 + y 2 με τις προβολές των ισοϋψών καμπυλών Ενα διάγραμμα ισοϋψών καμπυλών είναι λοιπόν οι προβολές των τομών μιας επιφάνειας με επίπεδο κάθετα στον άξονα z z. Για να το πετύχουμε αυτό χρησιμοποιούμε την εντολή contour plot. Το διάγραμμα ισοϋψών καμπυλών της εξίσωσης 3.14 μπορούμε να γράψουμε: 1 a : 20; 2 z : sqrt(x^2+y^2); 3 contour_plot(z, [x, -a, a], [y, -a, a]);
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 47 Το αποτέλεσμα φαίνεται στο σχήμα 3.27. Το χρώμα κάθε καμπύλης υποδηλώνει διαφορετική τιμή στο άξονα z, επομένως διαφορετική τιμής της συνάρτησης. Η αντιστοίχηση μεταξύ καμπυλών και επιφάνειας φαίνεται στο σχήμα 3.26. Είναι σημαντικό να έρχεται εύκολα στο μυαλό μας η αντιστοίχηση του σχήματος 3.25 με το σχήμα 3.27 χωρίς τη μεσολάβηση του σχήματος 3.26. Ούτως ή άλλως, όλα τα σχήματα αφορούν το γράφημα, με διαφορετικούς τρόπους, της ίδιας συνάρτησης. Μπορούμε να επιλέξουμε οποιοδήποτε θέλουμε, ανάλογα με τους σκοπούς και τις προτεραιότητες μας. Σχήμα 3.27: Διάγραμμα ισοϋψών καμπυλών της συνάρτησης z = x 2 + y 2 Τέλος, το σχήμα 3.28 δείχνει τις διαδικασίες για την κατασκευή των γραφημάτων στο περιβάλλον του Maxima. Σχήμα 3.28: Το περιβάλλον του Maxima για την γράφημα ισοϋψών καμπυλών της συνάρτησης z = x 2 + y 2 Ενας άλλος τρόπος παρασουσίασης ισοϋψών καμπυλών είναι ο χρωματισμός των περιοχών
48 Αθανάσιος Σταυρακούδης ανάμεσα στις ισοϋψείς καμπύλες. Η μέθοδος αυτή εφαρμόζεται στους φυσικούς χάρτες: πεδιάδες, λόφοι, βουνά, οροπέδια κτλ παρουσιάζονται με αποχρώσεις του πράσινου και του καφέ. Η ένταση της απόχρωσης δίχνει το υψόμετρο (εδώ τιμή της συνάρτησης z). Για να πετύχουμε κάτι τέτοιο στο Maxima χρησιμοποιούμε την επιλογή [gnuplot preamble, set view map ]. Αυτό θα έχει σαν συνέπεια τη προβολή του γραφήματος από μια θέση κάθετη στο επίπεδο x xy y, πάνω από από άξονα z z. Μπορείτε και μόνοι σας να περιστρέψετε το σχήμα 3.25 ή το σχήμα 3.26 για να πετύχετε κάτι τέτοιο. Μπορούμε να το κάνουμε αυτόματα ως εξής: 1 a : 20; 2 z : sqrt(x^2+y^2); 3 plot3d(z, [x, -a, a], [y, -a, a], 4 [legend, false], 5 [gnuplot_preamble,"set view map;"]); το οποίο θα μας δώσει το σχήμα 3.29. Σχήμα 3.29: Κάτοψη της γραφικής παράστασης της συνάρτησης z = x 2 + y 2. Το χρώμα του διαγράμματος αντιστοιχεί στην τιμή της συνάρτησης z, όπως δείχνει το διπλανό υπόμνημα. 3.5.2 Το διάγραμμα ισοϋψών καμπυλών της συνάρτησης χρησιμότητας Εστω η συνάρτηση χρησιμότητας: U(x, y) = x 3 4 y 1 4 (3.16) όπου x, y οι ποσότητες δύο αγαθών. Το τρισδιάτατο γράφημα αυτής της συνάρτησης φαίνεται στο σχήμα 3.21. Μπορούμε να κάνουμε το γράφημα ισοϋψών καμπυλών ως εξής: 1 U(x,y) := x^(3/4) * y^(1/4); 2 contour_plot(u, [x, 0, 20], [y, 0, 20], 3 [legend, true]);
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 49 Σχήμα 3.30: Γράφημα ισοϋψών καμπυλών της συνάρτησης U(x, y) = x 3/4 y 1/4 το οποίο θα μας δώσει το σχήμα 3.30. Μπορούμε να καθορίσουμε το πλήθος των ισοϋψών καμπυλών σε ένα τέτοιο γράφημα με την επιλογή cntrparam levels}: 1 U(x,y) := x^(3/4) * y^(1/4); 2 contour_plot(u, [x, 0, 20], [y, 0, 20], 3 [gnuplot_preamble, 4 "set cntrparam levels 10; 5 unset colorbox"]); το οποίο θα μας δώσει το σχήμα 3.31. Σχήμα 3.31: Γράφημα ισοϋψών καμπυλών της συνάρτησης U(x, y) = x 3/4 y 1/4 μετά από τροποποίηση των του πλήθους των ισοϋψών καμπυλών Μπορούμε επίσης να δούμε το γράφημα ισοϋψών καμπυλών σε μορφή έγχρωμου χάρτη: 1 U(x,y) := x^(3/4) * y^(1/4); 2 plot3d(u, [x, 0, 20], [y, 0, 20], 3 [legend, false], 4 [gnuplot_preamble, "set view map"]);
50 Αθανάσιος Σταυρακούδης το οποίο θα μας δώσει το σχήμα 3.32. Σχήμα 3.32: Χάρτης ισοϋψών καμπυλών της συνάρτησης U(x, y) = x 3/4 y 1/4 Μερικές φορές είναι επιθυμητή η κατασκευή ασπρόμαυρου γραφήματος, όπου οι χαμηλές τιμές της συνάρτησης αναπαριστώνται με μαύρο χρώμα και οι υψηλές τιμές με ανοικτό γκρι. Μπορούμε να πετύχουμε κάτι τέτοιο με την επιλογή set palette gray: 1 U(x,y) := x^(3/4) * y^(1/4); 2 plot3d(u, [x, 0, 20], [y, 0, 20], 3 [legend, false], 4 [gnuplot_preamble, "set view map; set palette gray"]); το οποίο θα μας δώσει το σχήμα 3.33. Σχήμα 3.33: εμφάνιση Χάρτης ισοϋψών καμπυλών της συνάρτησης U(x, y) = x 3/4 y 1/4 σε ασπρόμαυρη 3.5.3 Ασκήσεις Να κάνετε γραφήματα ισοϋψών καμπυλών, με τουλάχιστον δύο τρόπους, των παρακάτω συναρτήσεων:
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 51 1. z = x 2 y 2 2. z = x 2 2 x y + y 2 3. U(x, y) = x 1/2 y 1/2 4. U(x, y) = x 0.3 y 0.7
4 Παραγώγιση με το Maxima 4.1 Παραγώγιση συναρτήσεων μιας μεταβλητής Με μια απλή έννοια, η παράγωγος μιας συνάρτησης δείχνει το μέγεθος της μεταβολής στην τιμή μιας συνάρτησης, όταν μεταβάλλεται η είσοδός της, πχ πόσο μεταβάλλεται το y όταν αλλάζει το x. Για πολλά οικονομικά μεγέθη, το ενδιαφέρον εστιάζεται όχι τόσο πολύ στην απόλυτη τιμή τους, αλλά στις μεταβολές τους. Η εύρεση μιας παραγώγου είναι πολύ συχνή διαδικασία για έναν οικονομολόγο. Εστω η συνάρτηση: f(x) = x 2 (4.1) Η παράγωγός της είναι: f (x) = 2x (4.2) Αυτό σημαίνει πως: f (x)dx = f(x) (4.3) εξής: Στο πρόγραμμα Maxima μπορούμε να υπολογίσουμε την παράγωγο με την εντολή diff ως 1. Με ενσωμάτωση της συνάρτησης στην εντολή diff: 1 diff(x^2, x); Στην παραγώγιση χωρίς άλλες παραμέτρους υπονοείται η πρώτη παράγωγος, κάτι το οποίο μπορούμε να δηλώσουμε ως:
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 53 1 diff(x^2, x, 1); 2. Με ορισμό μιας παράστασης, 1 y : x^2; 2 diff(y, x); 3. Με ορισμό μιας συνάρτησης: 1 f(x) := x^2; 2 diff(f(x), x); Και οι τρεις τρόποι θα καταλήξουν στο ίδιο αποτέλεσμα, όπως φαίνεται στο σχήμα 4.1 Σχήμα 4.1: Το περιβάλλον του Maxima για την παραγώγιση της συνάρτησης y = x 2 Το Maxima μπορεί να χρησιμοποιηθεί βέβαια και για των παραγώγιση περισσότερο πολύπλοκων συναρτήσεων, όπως φαίνεται στο σχήμα 4.2. d d x x x + 1 = 1 x + 1 d d x e d d x 1 x 2 = 2 1 e x 2 2 x 1 3 = 2 3 x 4 3 x (x + 1) 2 (4.4) x 3 (4.5) (4.6)
54 Αθανάσιος Σταυρακούδης Σχήμα 4.2: Το περιβάλλον του Maxima για την παραγώγιση της συναρτήσεων 4.2 Παράγωγοι μεγαλύτερης τάξης Μπορούμε να υπολογίσουμε παραγώγους μεγαλύτερης τάξης, όπως φαίνεται στο σχήμα 4.3: d 3 d 2 d 2 d x 2 x3 = 6 x (4.7) cos x = cos x (4.8) d x2 ( x e x ) d x 3 = 3 e x x e x (4.9) d 4 ( d x 4 1 ) = 24 x x 5 (4.10)
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 55 Σχήμα 4.3: Το περιβάλλον του Maxima για τον υπολογισμό παραγώγων μεγαλύτερης τάξης 4.3 Μερικές και ολικές παράγωγοι συναρτήσεων πολλών μεταβλητών Εστω η συνάρτηση δύο μεταβλητών: f (x, y) = x 2 + y 2 (4.11) και Οι μερικές παράγωγοι είναι: df(x) dx df(y) dx = 2x (4.12) = 2y (4.13) Ο υπολογισμός στο Maxima μπορεί να γίνει ως εξής: 1 f(x, y) := x^2 + y^2; 2 diff(f(x, y), x); 3 diff(f(x, y), y); Μπορούμε επίσης να υπολογίσουμε παράγωγο μεγαλύτερης τάξης, πχ: 1 f(x, y) := x^2 + y^2; 2 diff(f(x,y), x, 2); Η, να υπολογίσουμε την ολική παράγωγο: 1 f(x, y) := x^2 + y^2; 2 diff(f(x,y), x) + diff(f(x,y), y);
56 Αθανάσιος Σταυρακούδης Σχήμα 4.4: Το περιβάλλον του Maxima για τον υπολογισμό μερικών παραγώγων 4.4 Ορισμός συναρτήσεων παραγώγων Εστω η συνάρτηση: f (x) = x 2 (4.14) Πως μπορούμε να ορίσουμε τη συνάρτηση της παραγώγου: Εστω η συνάρτηση: g (x) = f (x) = 2 x (4.15) Μπορούμε να κάνουμε κάτι τέτοιο με δύο τρόπους (όπως φαίνεται στο σχήμα 4.5): 1. Με χρήση του τελεστή διπλού εισαγωγικού: 1 f(x) := x^2; 2 g(x) := (diff(f(x), x)); 2. Με χρήση της συνάρτησης define: 1 f(x) := x^2; 2 define(g(x), diff(f(x), x)); 4.5 Γράφημα συνάρτησης και εφαπτόμενης σε σημείο Πολλές φορές, σε κάποιο γράφημα, χρειάζεται να παραστήσουμε ταυτόχρονα κάποια συνάρτηση και την εφαπτόμενη ευθεία σε κάποιο σημείο. Γνωρίζουμε πως η εφαπτόμενη ευθεία έχει κλίση ίση με την παράγωγο σε αυτό το σημείο.
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 57 Σχήμα 4.5: Το περιβάλλον του Maxima για τον ορισμό συνάρτησης παραγώγου Εστω η συνάρτηση: f (x) = x 2 6 x + 20 (4.16) Να γίνει το γράφημα της συνάρτησης με την εφαπτόμενη ευθεία στο σημείο a = 4, όπως φαίνεται στο σχήμα 4.6. Σχήμα 4.6: Το γράφημα της συνάρτησης x 2 6 x + 20 και της εφαπτόμενης ευθείας στο σημείο a = 4 Για το γράφημα της συνάρτησης f(x) μπορούμε να κάνουμε το εξής: 1 f(x) := x^2-6*x + 20; 2 plot2d([f(x)], [x, a-5, a+5]); Στο σημείο a = 4, η παράγωγος της συνάρτησης f(x) έχει τιμή:
58 Αθανάσιος Σταυρακούδης 1 define(g(x), diff(f(x), x)); 2 g(a); Αυτή είναι η κλίση της ευθείας που εφάπτεται στην καμπύλη της συνάρτησης f(x). Η ευθεία αυτή τέμνει τον κάθετο άξονα στο σημείο: f(a) a f (a) = f(a) a g(a) Επομένως η συνάρτηση που περιγράφει την εφαπτομένη της καμπύλης f(x) στο σημείο a είναι: h(x) = f (x) x + f(a) a f (a) = g(a) x + f(a) a g(a) (4.17) Μπορούμε έτσι να ορίσουμε την ευθεία της εφαπτόμενης και να κάνουμε το γράφημα του σχήματος 4.6 ως εξής, όπως φαίνεται στο σχήμα : 1 f(x) := x^2-6*x + 20; 2 a : 4; 3 define(g(x), diff(f(x), x)); 4 define(h(x), g(a)*x+f(a)-a*g(a)); 5 plot2d([f(x), h(x)], [x, a-5, a+5], 6 [ylabel, "y"], [legend, "f(x)", "h(x)"], 7 [style, [lines, 4, 1], [lines, 2, 2]], 8 [gnuplot_preamble, "set grid"]); Ο ορισμός των νέων συναρτήσεων μπορεί να γίνει και ως: 1 f(x) := x^2-6*x + 20; 2 g(x) := (diff(f(x), x)); 3 h(x) := (g(a)*x + f(a)-a*g(a)); 4.6 Βελτιστοποίηση με χρήση παραγώγων 4.6.1 Συνάρτηση μιας μεταβλητής με ένα ακρότατο Τα ακρότατα μιας συνάρτησης μπορούν να βρεθούν λύνοντας την εξίσωση της πρώτης παραγώγου. Για παράδειγμα, τα ακρότατα της συνάρτησης: f (x) = 3 x 2 12 x + 17 (4.18) ψ = φ(ξ) έχει ακρότατες τιμές (μέγιστο ή ελάχιστο) εκεί όπου ρίζες η εξίσωση: f (x) = 6 x 12 = 0 (4.19) Η γραφική παράσταση της συνάρτησης 4.18 φαίνεται στο σχήμα 4.8 Να πως μπορούμε να υπολογίσουμε το ακρότατο της συνάρτησης 4.18:
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 59 Σχήμα 4.7: Το περιβάλλον του Maxima για το γράφημα καμπύλης και εφαπτόμενης σε σημείο Σχήμα 4.8: Το γράφημα της συνάρτησης y = 3 x 2 12 x + 17 1 f(x) := 3*x^2-12*x +17; 2 f1(x) := (diff(f(x), x)); 3 sol : solve(f1(x)=0, x); 4 x0 : rhs(sol[1]); 5 f(x0); 6 f1(x0);
60 Αθανάσιος Σταυρακούδης Με τον τρόπο αυτό: 1. Ορίσαμε την συνάρτηση f (x) 2. Ορίσαμε την συνάρτηση f (x) 3. Λύσαμε την εξίσωση f (x) = 0 και αναθέσαμε τη λύση στη μεταβλητή sol 4. Εξαγάγαμε το αριστερό σκέλος της λίστας sol στη μεταβλητή x 0 5. Υπολογίσαμε την τιμή f (x 0 ) 6. Επιβεβαιώσαμε (f (x 0 )) πως η τιμή της παραγώγου ισούται με μηδέν Από την ανάλυση γνωρίζουμε πως το ακρότατο μιας συνάρτησης είναι μέγιστο αν η τιμή της δεύτερη παραγώγου είναι αρνητική, ενώ είναι ελάχιστο αν η τιμή της δεύτερης παραγώγου είναι θετική. Αυτό μπορούμε να το υπολογίσουμε ως εξής: 1 f2(x) := (diff(f(x), x, 2)); 2 f2(x0); Συνολικά, οι υπολογισμοί φαίνονται στο σχήμα 4.9. Σχήμα 4.9: Το περιβάλλον του Maxima για τον υπολογισμό του ακρότατου της συνάρτησης y = 3 x 2 12 x + 17
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 61 4.6.2 Συνάρτηση μιας μεταβλητής με περισσότερα από ένα ακρότατα Εστω η συνάρτηση: f (x) = x 4 4 x 3 + ( 2) x 2 + 12 x + 120 (4.20) Σχήμα 4.10: Το γράφημα της συνάρτησης x 4 4 x 3 + ( 2) x 2 + 12 x + 120 Η εξίσωση της παραγώγου της: 4 x 3 12 x 2 4 x + 12 = 0 (4.21) έχει τρεις ρίζες: x = 1, x = 1, x = 3 επομένως η συνάρτηση έχει τρία ακρότατα, δείτε επίσης και το σχήμα 4.10. Ας δούμε τον υπολογισμό των ακρότατων και επίσης αν πρόκειται για ελάχιστο ή για μέγιστο: 1 f(x) := x^4-4*x^3-2*x^2 + 12*x + 120; 2 f1(x) := (diff(f(x), x)); 3 sol : solve(f1(x)=0); 4 x1 : rhs(sol[1]); 5 x2 : rhs(sol[2]); 6 x3 : rhs(sol[3]); 7 f2(x) := (diff(f(x), x, 2)); 8 f2(x1); 9 f2(x2); 10 f2(x3); Τα αποτελέσματα των υπολογισμών φαίνονται στο σχήμα 4.11. παρατηρούμε πως η συνάρτηση
62 Αθανάσιος Σταυρακούδης έχει μέγιστο στο x 1 = 1 (αρνητική τιμή της δεύτερης παραγώγου) και δύο ελάχιστα στα σημεία x 2 = 1, x 3 = 3 (θετική τιμή της δεύτερης παραγώγου). Τα αποτελέσματα αυτά μπορούν να επιβεβαιωθούν και από το σχήμα 4.10 που δείχνει τη γραφική παράσταση της συνάρτησης 4.20. Σχήμα 4.11: Το περιβάλλον του Maxima για τον υπολογισμό των ακρότατων της συνάρτησης x 4 4 x 3 + ( 2) x 2 + 12 x + 120 4.6.3 Βελτιστοποίηση συνάρτησης δύο μεταβλητών Ας υποθέσουμε πως τα κέρδη μιας εταιρείας η οποία παράγει δύο προϊόντα σε ποσότητες x, y την εβδομάδα είναι: π (x, y) = 0.4 x 2 0.1 y 2 0.08 x y + 120 x + 60 y 400 (4.22) Το γράφημα της συνάρτησης φαίνεται στο σχήμα 4.12. Να βρεθεί ο συνδυασμός x, y που μεγιστοποιεί τα κέρδη της επιχείρησης.
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 63 Σχήμα 4.12: Η γραφική παράσταση της συνάρτησης π (x, y) = 0.4 x2 0.1 y 2 0.08 x y +120 x+ 60 y 400 Το ακρότατο (αν υπάρχει) της συνάρτησης 4.22 μπορεί να βρεθεί ως: 1 2 3 4 pi pi1x pi1y crit : : : : -0.4*x^2-0.1*y^2-0.08*x*y + 120*x + 60*y - 400; (diff(pi, x)); (diff(pi, y)); solve([pi1x=0, pi1y=0], [x, y]); Το αποτέλεσμα φαίνεται στο σχήμα 4.13. Σχήμα 4.13: Το περιβάλλον του Maxima για τον υπολογισμό των ακρότατων της συνάρτησης π (x, y) = 0.4 x2 0.1 y 2 0.08 x y + 120 x + 60 y 400 Η μερική παράγωγος ως προς x είναι: π = 0.8 x 0.08 y + 120 x (4.23)
64 Αθανάσιος Σταυρακούδης Η μερική παράγωγος ως προς y είναι: π y = 0.08 x 0.2 y + 60 (4.24) Το γραμμικό αυτό σύστημα έχει μοναδική λύση την x = 125, y = 250. Αυτές είναι οι λεγόμενες αναγκαίες συνθήκες για την ύπαρξη ακρότατου: Οι πρώτες παράγωγοι πρέπει να είναι ίσες με μηδέν στο σημείο αυτό. Θα πρέπει ωστόσο να εξετάσουμε και τις αναγκαίες συνθήκες (συνθήκες δεύτερης τάξης) ώστε να βεβαιωθούμε πως πρόκειται για μέγιστο, παρ όλο που κάτι τέτοιο μοιάζει εμφανές από το σχήμα 4.12. εξετάζουν την εσσιανή μήτρα της συνάρτησης: Οι συνθήκες δεύτερης τάξης H(f) = 2 f x 2 1 2 f x 2 x 1. 2 f x n x 1 2 f x 1 x 2 2 f x 2 2. 2 f x n x 2 2 f x 1 x n 2 f x 2 x n.... 2 f x 2 n (4.25) η οποία, για την περίπτωση που εξετάζουμε είναι: H(π) = 2 π x 2 1 2 π y x 2 π x y 2 π y 2 (4.26) Αν η ορίζουσα της μήτρας είναι θετική τότε το κρίσιμο σημείο είναι μέγιστο, αν είναι αρνητική τότε το κρίσιμο σημείο είναι ελάχιστο. Στο Maxima θα γράψουμε: 1 hes : hessian(pi, [x,y]); 2 determinant(hes); Οπως φαίνεται στο σχήμα 4.14 η ορίζουσα της Εσσιανής μήτρας είναι θετική, επομένως το κρίσιμο σημείο είναι μέγιστο. Ενα βιβλίο μαθηματικής ανάλυσης θα διαφωτίσει τον αναγνώστη καλύτερα για τη μαθηματική βάση αυτής της προσέγγισης.
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=513 65 Σχήμα 4.14: Το περιβάλλον του Maxima για τον υπολογισμό της Εσσιανής μήτρας της συνάρτησης π (x, y) = 0.4 x 2 0.1 y 2 0.08 x y + 120 x + 60 y 400
5 Ολοκλήρωση με το Maxima 5.1 Απλά ολοκληρώματα Σχήμα 5.1: Υπολογισμός απλού αόριστου ολοκληρώματος και παράδειγμα ορισμένου ολοκληρώματος. 1. Ο ορισμός μιας συνάρτησης γίνεται με την εντολή f (x):=2*x. Προσέξτε το συνδυασμό