{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 3. Λογισμός συναρτήσεων" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.1 Ορισμός μαθηματικών συναρτήσεων στο Sage" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n",
"Στην Python μια συνάρτηση ορίζεται με την εντολή def
. Χρησιμοποιώντας τον ορισμό αυτό μπορούμε να υπολογίζουμε τις τιμές της συνάρτησης σε διάφορα σημεία, καθώς επίσης και να σχεδιάζουμε την γραφική της παράσταση. Με την βοήθεια του Sage μπορούμε επιπλέον να παραγωγίσουμε, να ολοκληρώσουμε, να βρούμε όρια της συνάρτησης, να αναπτύξουμε την συνάρτηση σε σειρά Taylor γύρω από ένα σημείο, και γενικότερα να εφαρμόσουμε ένα πλήθος από μαθηματικές έννοιες για την μελέτη της, καθαρά συμβολικά!
\n",
"Επίσης, το Sage μας παρέχει έναν πιο άμεσο τρόπο ορισμού μιας συνάρτησης\n",
"
\n", "Παρατηρήστε τον τρόπο που το Sage εμφανίζει την συνάρτηση, καθώς και ότι η συνάρτηση $f(x,y)$ είναι κι αυτή μια συμβολική έκφραση. Ας υπολογίσουμε μια τιμή της συνάρτησης με το Sage, κι ας ζητήσουμε μετά το αόριστο ολοκλήρωμά της\n", "ως προς $x$.\n", "
" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "(x, y) |--> -cos(x + y) - sin(-x + y)\n" ] } ], "source": [ "print f(3*pi/4,pi)\n", "sage: print f.integrate(x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " \n",
"Παρατηρούμε ότι το αποτέλεσμα της ολοκλήρωσης της $f(x,y)$ ως προς την μεταβλητή $x$, εμφανίζεται και πάλι με την μορφή μιας συνάρτησης.
\n",
"Ας δούμε κάποιες διαφορές μεταξύ του Sage και της Python, όσον αφορά στον ορισμό συναρτήσεων\n",
"
\n",
"Όμως δεν μπορούμε να ολοκληρώσουμε την g(x,y)
γιατί όπως μας πληροφορεί το Sage, to αντικείμενο 'function'
δεν έχει την ιδιότητα 'integrate'
\n",
"
\n", "Επειδή όμως στο Sage έχουμε την δυνατότητα να ορίζουμε συναρτήσεις, και το Sage βλέπει τα πάντα συμβολικά, μπορούμε να θέσουμε την τιμή της g σε μια συμβολική μεταβλητή e\n", "
" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cos(x - y) + sin(x + y) \n",
"Τώρα μπορούμε να μετατρέψουμε την συμβολική μεταβλητή e σε μια συνάρτηση, ας την πούμε h(x,y)
\n",
"
\n",
"απ' όπου παρατηρούμε ότι η h(x,y)
είναι ορισμένη ως συμβολική έκφραση, και συνεπώς μπορούμε να την ολοκληρώσουμε.\n",
"
\n", "Η απλούστερη τμηματικά ασυνεχής συνάρτηση είναι η αλματική, δηλαδή η συνάρτηση εκείνη που η τιμή της αλλάζει από 0 σε 1, στο σημείο $x=0$. Ισοδύναμα λέμε ότι παρουσιάζει ένα άλμα ύψους μονάδας στο σημείο $x=0$. Υπάρχει άραγε η συνάρτηση αυτή στο Sage;\n", "
" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "unit_step \n",
"Η συνάρτηση unit_step
είναι ορισμένη στο Sage στην κλάση \n",
"sage.functions.generalized.FunctionUnitStep
.
Μπορούμε να δούμε τη βοήθεια που μας προσφέρει το Sage για την συνάρτηση αυτή με την εντολή\n",
"
\n",
"Συνεπώς η συνάρτηση unit_step
στο Sage ορίζεται ως εξής $$ $$\n",
"$$ \\mathrm{u}(x) = \\left\\lbrace \\begin{array}{cc} 1\\,, & x \\geq 0 \\,, \\\\ 0\\, & x < 0\\,. \\end{array} \\right.$$\n",
"
\n",
"Το αξιοσημείωτο είναι ότι το Sage αναγνωρίζει την αλματική συνάρτηση στην κλάση των γενικευμένων συναρτήσεων (ή αλλιώς κατανομών), οι οποίες με μια γενικευμένη έννοια, έχουν παραγώγους οποιασδήποτε τάξης! Για παράδειγμα, η πρώτη παράγωγος της \"συνάρτησης\" unit_step
, ή αλλιώς της κατανομής Heaviside, είναι η κατανομή $\\delta$ του Dirac. \n",
"
\n",
"Η \"συνάρτηση\" $\\delta$ του Dirac, στο Sage ανήκει κι αυτή στην κλάση sage.functions.generalized.FunctionUnitStep
. Η βοήθεια που μας προσφέρει το Sage για την dirac_delta
είναι\n",
"
\n",
"Από μαθηματική σκοπιά, και οι δυο \"ορισμοί\" της \"συνάρτησης\" $\\delta$ του Dirac, στο Sage, είναι τουλάχιστον τραγικοί. Ο πρώτος λέει ότι η dirac_delta(x)
είναι παντού μηδέν στο $\\mathbb{R}$ εκτός από το σημείο $x=0$, και έχει ολοκλήρωμα στο $\\mathbb{R}$ ίσο με ένα! Πράγμα αδύνατον, αφού σύμφωνα με τα βασικά στοιχεία ολοκλήρωσης κατά Riemann (ή ακόμα και κατά Lebesgue), δυο συναρτήσεις που είναι ταυτόσημες παντού\n",
"εκτός από ένα πεπερασμένο πλήθος σημείων, έχουν ακριβώς το ίδιο ολοκλήρωμα! Οπότε το ολοκλήρωμά της θα έπρεπε να είναι μηδέν κι όχι 1.
Ο δεύτερος εναλλακτικός ορισμός πάει λίγο πιο βαθιά και μιλά για ελεγκτικές συναρτήσεις (test functions). Όμως, ο προγραμματιστής του Sage που υλοποίησε την διαβολική \"συνάρτηση\" $\\delta$, θα όφειλε να γνωρίζει ότι ούτε αυτό ισχύει, ακόμα με την έννοια των γενικευμένων συναρτήσεων, αφού η \"συνάρτηση\" $\\delta$ του Dirac δεν μπορεί να παραχθεί από καμία τοπικά ολοκληρώσιμη συνάρτηση. Η αναφορά ιδίως στην wikipedia με αφήνει άφωνο!\n",
"
\n", "Από την εμπειρία μου σε διάφορα ΣΣΥ που έχω χρησιμοποιήσει κατά καιρούς, η υλοποίηση των γενικευμένων συναρτήσεων είναι αρκετά προβληματική . Δεν αποκλείεται όμως στο άμεσο μέλλον να κατασκευασθούν αλγόριθμοι που να τις χειρίζονται σωστά από μαθηματική άποψη. Αρκεί να βρεθεί ένας προγραμματιστής που να γνωρίζει πέρα από προγραμματισμό και στοιχειώδη συναρτησιακή ανάλυση. \n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " \n",
"Για να μην τρίζουν τα κόκκαλα του Laurent Schwartz, του μαθηματικού που έθεσε το σωστό μαθηματικό πλαίσιο για τις γενικευμένες συναρτήσεις, στο μάθημα θα χρησιμοποιούμε από τις \"γενικευμένες συναρτήσεις\" του Sage, μόνο την αλματική συνάρτηση unit_step
, για πολύ συγκεκριμένους σκοπούς. Για παράδειγμα, για να κατασκευάσουμε πιο σύνθετες ασυνεχείς συναρτήσεις.\n",
"
\n",
"Επιπλέον, με κατάλληλες προσαρμογές στο όρισμά της, η συνάρτηση unit_step
μπορεί να λειτουργήσει σαν φίλτρο, έτσι ώστε αν μια συνθήκη $Α$ ικανοποιείται ($x\\geq 1$) να πάρουμε την τιμή 1, κι αν δεν ικανοποιείται ($x< 0$), να πάρουμε την τιμή 0.\n",
"
\n",
"Για παράδειγμα, με την βοήθεια της unit_step
μπορούμε να φτιάξουμε μια νέα συνάρτηση που έχει τρία σκαλοπάτια \n",
"$$ \\mathrm{f}(x) = \\left\\lbrace \\begin{array}{cc} 1\\,, & x \\leq 0 \\,, \\\\ \\frac{1}{3} \\,, & 0 < x \\leq 1\\,, \\\\\n",
" \\frac{2}{3}\\,, & 1 \\leq x < 2 \\,,\\\\ 1 \\,, & x>2 \\,. \\end{array} \\right.$$\n",
"
\n",
"Επιπλέον, χρησιμοποιώντας την διαφορά unit_step(x-a) - unit_step(x-b)
δυο βηματικών συναρτήσεων\n",
"
\n", "για διάφορες τιμές των a, b, μπορούμε να φτιάξουμε (γιατί;) την τμηματικά συνεχή συνάρτηση $$ $$\n", "$$ \\mathrm{g}(x) = \\left\\lbrace \\begin{array}{cc} 0\\,, & x < -2 \\,, \\\\ x^2 \\,, & -2 \\leq x < 1\\,, \\\\\n", " x-1\\,, & 1 \\leq x < 2 \\,, \\\\ 3-x\\,, & 2 \\leq x < 3 \\,, \\\\ 0\\,, & x \\geq 3\\,. \\end{array} \\right.$$\n", "
" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 3 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "g(x) = x^2*( unit_step(x+2) - unit_step(x-1) ) + \\\n", " (x-1)*( unit_step(x-1) - unit_step(x-2) ) + \\\n", " (3-x)*( unit_step(x-2) - unit_step(x-3) )\n", "ppp = plot(g(x),(x,-4,5), exclude=[-2,1],thickness=2); ppp.show(figsize=4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.3 Δουλεύοντας με συναρτήσεις" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "### 3.3.1 Περιεκτικές λίστες" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ " \n",
"Οι περιεκτικές λίστες στην Python
είναι εκφράσεις της μορφής [ f(x) for x in L ]
\n",
"όπου L
είναι μια λίστα και f(x)
μια συνάρτηση. Το αποτέλεσμα είναι μια νέα λίστα που περιέχει όλες τις τιμές της συνάρτησης f(x)
στα αντίστοιχα x
που ανήκουν στην λίστα L
. Στο Sage μπορούμε να χρησιμοποιήσουμε τις περιεκτικές λίστες για να κατασκευάσουμε συμβολικές εκφράσεις αυθαίρετου μεγάλου μήκους και σχήματος. Για παράδειγμα, μπορούμε να κατασκευάσουμε μια ακολουθία 20 συμβολικών μεταβλητών x01,x02,...,x20
.\n",
"
\n", "Τώρα υψώνουμε στον κύβο όλες τις συμβολικές μεταβλητές της παραπάνω λίστας\n", "
" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[x01^3, x02^3, x03^3, x04^3, x05^3, x06^3, x07^3, x08^3, x09^3, x10^3, x11^3, x12^3, x13^3, x14^3, x15^3, x16^3, x17^3, x18^3, x19^3, x20^3]\n" ] } ], "source": [ "C = [x^3 for x in v]\n", "print C " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Για να κατασκευάσουμε μια συμβολική έκφραση ας προσθέσουμε όλους τους όρους της τελευταίας λίστας\n", "
" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x01^3 + x02^3 + x03^3 + x04^3 + x05^3 + x06^3 + x07^3 + x08^3 + x09^3 + x10^3 + x11^3 + x12^3 + x13^3 + x14^3 + x15^3 + x16^3 + x17^3 + x18^3 + x19^3 + x20^3\n", " \n",
"Για να επιστρέψουμε στην αναπαράσταση της τελευταίας συμβολικής έκφρασης με λίστα μπορούμε να χρησιμοποιήσουμε τη εντολή operands
\n",
"
\n",
"Ας υποθέσουμε ότι θέλουμε να υψώσουμε στην k-οστή δύναμη την k μεταβλητή στην λίστα με το όνομα ope
. Αυτό επιτυγχάνεται ως εξής\n",
"
\n", "Παρατηρούμε ότι ο καθένας από τους παραπάνω όρους είναι συμβολική έκφραση\n", "
" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x16^45\n", " \n",
"οπότε με την κατάλληλη επιλογή της μεταβλητής στο όρισμα της εντολής degree()
λαμβάνουμε την δύναμη 45 για την μεταβλητή x16. Με παρόμοιο τρόπο μπορούμε να πάρουμε τις δυνάμεις όλων των μεταβλητών στην λίστα\n",
"
\n",
"Ας υποθέσουμε ότι θέλουμε να επιλέξουμε από την λίστα εκείνους τους όρους οι οποίοι έχουν δύναμη μικρότερη από 13. Αυτό μπορεί να υπολοιηθεί με την αλματική συνάρτηση unit_step
ως εξής:\n",
"
\n",
"Το αποτέλεσμα μας πληροφορεί ότι η μεταβλητή x03
έχει δύναμη μικρότερη από 13, αφού η συνάρτηση unit_step
(με το κατάλληλο όρισμα) μας επέστρεψε 1, ενώ η x09
δεν έχει, αφού η unit_step
μας έδωσε 0. Με αυτόν τον τρόπο μπορούμε να περάσουμε από ένα φίλτρο όλους τους όρους με δύναμη μεγαλύτερη από 13. \n",
"
\n",
"Ορίζουμε με τον τελεστή lambda
της Python
μια συνάρτηση που την ονομάζουμε filter
και η οποία έχει δυο ορίσματα, το x και το k, και μας δίνει ως αποτέλεσμα το x πολλαπλασιασμένο με την τιμή 0 ή 1, ανάλογα αν η δύναμη της μεταβλητής x είναι μεγαλύτερη του 13 ή όχι, αντίστοιχα. Έπειτα, εφαρμόζουμε την συνάρτηση filter
στην λίστα που μας ενδιαφέρει, όπου ο δείκτης k διατρέχει τα στοιχεία της λίστας r[k]
, και τέλος καταχωρούμε το αποτέλεσμα σε μια νέα λίστα s.\n",
"
\n", "Στην νέα λίστα μπορούμε, για παράδειγμα, να αθροίσουμε τα στοιχεία της\n", "
" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x05^12 + x04^9 + x03^6 + x02^3 + 1\n" ] } ], "source": [ "t = sum(s)\n", "print t" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "ή να πάρουμε το γινόμενο των πέντε πρώτων μη μηδενικών όρων της\n", "
" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x02^3*x03^6*x04^9*x05^12\n" ] } ], "source": [ "gin = prod(s[k] for k in (0 .. 4)) ; print gin" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.3.2 Σύνθεση συναρτήσεων" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Θεωρούμε την παραβολική τροχιά ενός βλήματος που εκτοξεύθηκε από το έδαφος για $t=0\\,\\rm sec$ και προσέκρουσε στο έδαφος για $t=45\\,\\rm sec$, 12 χιλιόμετρα, πιο μακρυά. Θεωρούμε ότι το βλήμα ταξιδεύει με σταθερή οριζόντια ταχύτητα, και ονομάζουμε $f(t)$ την συνάρτηση που μας δίνει το ύψος του βλήματος σε κάθε χρονική στιγμή. Πρώτα απ' όλα, υλοποιούμε το παραβολικό σχήμα της τροχιάς του βλήματος από μια συνάρτηση $y(x)$\n", "
" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 1 graphics primitive" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "y(x) = x*(12 - x)\n", "p = plot(y(x), (x, 0, 12)); p.show(figsize=3.5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Τώρα θέλουμε την συνάρτηση $f(t)$ ως συνάρτηση του χρόνου $t$ (σε sec). Επειδή υποθέσαμε ότι το βλήμα ταξιδεύει με σταθερή οριζόντια ταχύτητα, η οριζόντια απόσταση $x$ (σε χλμ) που διανύει το βλήμα είναι μια γραμμική σχέση του $t$, και ίση με $x = \\frac{12}{45}\\, t$. Οπότε για $t=0$, $x=0$ και για $t=45$, $x=12$.\n", "
" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x at 0 : 0\n", "x at 45 : 12\n" ] } ], "source": [ "x(t) = 12/45*t\n", "print 'x at 0 :', x(0)\n", "print 'x at 45 :', x(45)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Συνεπώς, το ύψος $y$ του βλήματος, ως συνάρτηση του χρόνου t, είναι η σύνθεση της συνάρτησης $y(x)$ της παραβολής, με την γραμμική συνάρτηση $x=\\frac{12}{45}\\,t$, δηλαδή $f(t)=y(x(t))$\n", "
" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "altitude at 0 sec: 0\n", "altitude at 22.5 sec: 36.0000000000000\n", "altitude at 45 sec: 0\n" ] } ], "source": [ "f(t) = y(x(t))\n", "print 'altitude at 0 sec:', f(0)\n", "print 'altitude at 22.5 sec:', f(22.5)\n", "print 'altitude at 45 sec:', f(45)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Με την σύνθεση συναρτήσεων έχουμε διαχωρίσει το γεωμετρικό σχήμα της τροχιάς του βλήματος από την εξέλιξη της τροχιάς στον χρόνο. Για παράδειγμα, ας μειώσουμε στο μισό την ταχύτητα του βλήματος\n", "
" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "altitude at 45 sec: 36\n", "altitude at 90 sec: 0\n" ] } ], "source": [ "h(t) = t/2\n", "hf(t) = f(h(t))\n", "print 'altitude at 45 sec:', hf(45)\n", "print 'altitude at 90 sec:', hf(90)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Παρατηρούμε ότι το βλήμα φτάνει στο μέγιστο ύψος, για $t=45\\,\\rm sec$, και προσκρούει στο έδαφος για $t=90\\,\\rm sec$. Μπορούμε να δούμε μια τρισδιάστατη απεικόνιση της τροχιάς του βλήματος με τις παρακάτω εντολές\n", "
" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nRK5CYII=\n", "text/plain": [ "Graphics3d Object" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "p1 = parametric_plot3d([x(t), 0, f(t)], (t, 0, 45),thickness=4,color='blue',figsize=4); \n", "show(p1,viewer='tachyon')" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "### 3.3.2 Σύνθεση μιας συνάρτησης n-φορές με τον εαυτό της" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Ας υποθέσουμε ότι θέλουμε με την μέθοδο του Newton να βρούμε τις ρίζες μιας εξίσωσης της μορφής $f(x)=0$\n", "
" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def newton_step(f, x):\n", " n(x) = x - f(x)/diff(f,x)\n", " return n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Για χάρη ευκολίας ας θεωρήσουμε ότι θέλουμε να βρούμε μια προσεγγιστική τιμή για την τετραγωνική ρίζα του 2, ως την λύση της εξίσωσης $f(x)=x^2-2=0$.\n", "
" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x |--> x - 1/2*(x^2 - 2)/x\n" ] } ], "source": [ "sqr(x) = x^2 - 2\n", "our_sqrt = newton_step(sqr, x)\n", "print our_sqrt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " \n",
"Παρατηρούμε ότι λόγω της μορφής που έχει η συνάρτηση newton_step
που ορίσαμε,\n",
"αν θέσουμε ως αρχική προσέγγιση έναν ακέραιο και συνθέσουμε επαναληπτικά την συνάρτησή μας, θα πάρουμε ως αποτέλεσμα μια ρητή προσέγγιση της λύσης μας, δηλ. του $\\sqrt{2}$.\n",
"
\n", "Στο Sage υπάρχει ένας \"τεμπέλικος\" τρόπος για πάρουμε την σύνθεση μιας συνάρτησης με τον εαυτό της όσες φορές θέλουμε! Απλά πολλαπλασιάζουμε κατάλληλα χαρακτήρες (strings)\n", "
" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "our_sqrt(our_sqrt(our_sqrt(our_sqrt(our_sqrt(2)))))\n", "\n", "και υπολογίζουμε το αποτέλεσμα με αφετηρία ένα αρχικό σημείο, για παράδειγμα για $x=2$.\n", "
" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "886731088897/627013566048\n" ] } ], "source": [ "v = eval(s)\n", "print v" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Για να συγκρίνουμε την παραπάνω προσέγγιση με την πραγματική τιμή του $\\sqrt{2}$ δίνουμε\n", "
" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.41421356237309504880168962350\n", "1.41421356237309504880168872421\n" ] } ], "source": [ "print v.n(digits=30)\n", "print sqrt(2).n(digits=30)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Φυσικά, με τον παραπάνω τρόπο μπορούμε να ορίσουμε μια νέα συμβολική έκφραση η οποία είναι η σύνθεση μιας οποιασδήποτε συνάρτηση n-φορές με τον εαυτό της! Για ευκολία παίρνουμε n=7 φορές σύνθεση την συνάρτηση του ημιτόνου με τον εαυτό του\n", "
" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "sin(sin(sin(sin(sin(sin(sin(x)))))))\n", " \n",
"Στο Sage παραγωγίζουμε με την εντολή diff
\n",
"
\n",
"Για να παραγωγίσουμε διαδοχικά ως προς μια μεταβλητή υπάρχει ένα επιπλέον όρισμα στην εντολή diff
\n",
"
\n", "Μπορούμε να παραγωγίζουμε συναρτήσεις πολλών μεταβλητών τις οποίες έχουμε ορίσει εμείς\n", "
" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "f = (x, y) |--> x^2*y + 2*x*y + x\n", "the derivative of f is (x, y) |--> (2*x*y + 2*y + 1, x^2 + 2*x)\n", " \n",
"από όπου παρατηρούμε ότι το Sage μας επέστρεψε ένα διανυσματικό πεδίο. Οι συνιστώσες του δεν είναι άλλες από τις μερικές παραγώγους της $f(x,y)$ ως προς $x$ και $y$, αντίστοιχα. Με άλλα λόγια, αν δεν δώσουμε όρισμα στην εντολή diff
για μια συνάρτηση πολλών μεταβλητών, το Sage μας επιστρέφει την κλίση (gradient) της $f$, η οποία συμβολίζεται με $${\\rm{grad}} \\, f \\,\\, \\mbox{ή} \\,\\,\\nabla f := \\left( \\frac{\\partial f}{\\partial x},\n",
"\\frac{\\partial f}{\\partial x}\\right)\\,.$$\n",
"Πράγματι \n",
"
\n",
"Τι θα συμβεί άραγε αν ζητήσουμε από το Sage να δράσει δυο φορές στην $f$ με το diff
δίχως όρισμα;\n",
"
\n",
"Το αποτέλεσμα είναι ένας πίνακας που περιέχει τις δεύτερες μερικές παραγώγους της $f(x,y)$, και είναι γνωστός με το όνομα Hessian. Τα στοιχεία του πίνακα είναι $H_{i\\,j} = \\frac{\\partial^2 f}{\\partial x_i \\, \\partial x_j}$, ή ισοδύναμα την μορφή πίνακα, για το συγκεκριμένο παράδειγμα, $$ $$\n",
"$$ \\left( H_{ij}\\right ) = \\left( \\begin{array}{cc} \n",
"\\frac{\\partial^2 f}{\\partial x^2} & \\frac{\\partial^2 f}{\\partial x \\, \\partial y} \\\\ \\frac{\\partial^2 f}{\\partial y \\, \\partial x} & \\frac{\\partial^2 f}{\\partial y^2} \\end{array} \\right)$$ $$ $$\n",
"Για να πάρουμε ένα στοιχείο από την πίνακα αυτό δίνουμε τα ονόματα των μεταβλητών στην εντολή \n",
"diff
. Για παράδειγμα, για να πάρουμε την μικτή μερική παράγωγο $\\frac{\\partial^2 f}{\\partial x \\, \\partial y}$, δίνουμε\n",
"
\n",
"Στο Sage η αριθμητική παραγώγιση είναι διαθέσιμη μέσω της scipy.misc
\n",
"
\n", "Η αριθμητική παραγώγιση χρησιμοποιεί κεντρικές διαφορές. Με την γνωστή μέθοδο της παρεμβολής μπορούμε να βελτιώσουμε τη αριθμητική ακρίβεια στην προσέγγιση\n", "
" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.71832713338\n", "2.71828182755\n", "2.71828182846\n", "2.71828182846\n", "2.71828182846\n", "2.71828182845905\n" ] } ], "source": [ "ND = [numdif(f, 1.0, 1.0e-2, order=k) for k in range(3, 12, 2)]\n", "for a in ND: print a\n", "print exp(1.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "όπου το k που δηλώνει την τάξη πρέπει να είναι περιττός θετικός ακέραιος.\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.4.1 Πεπλεγμένη παραγώγιση" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Στο Sage μπορούμε να δηλώσουμε τις παραγώγους συμβολικά. Ας υποθέσουμε ότι η (εξαρτημένη) συμβολική μεταβλητή y, είναι συνάρτηση της (ανεξάρτητης) συμβολικής μεταβλητής x \n", "
" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "diff(y(x), x)\n", "Το παραπάνω αποτέλεσμα μπορούμε να το χρησιμοποιήσουμε για να εφαρμόσουμε πεπλεγμένη παραγώγιση\n", "
" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x^2 + y(x)^2 - 1 == 0\n", "\n", "Η παραπάνω εξίσωση του κύκλου ορίζει, με έμμεσο τρόπο, πώς η συμβολική μεταβλητή $y$ εξαρτάται από το $x$. Παραγωγίζοντας την εξίσωση του κύκλου ως προς $x$, παίρνουμε την εξίσωση\n", "
" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2*y(x)*diff(y(x), x) + 2*x == 0\n" ] } ], "source": [ "dc = circle.diff(x)\n", "print dc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " \n",
"την οποία φυσικά μπορούμε να την λύσουμε ως προς την παράγωγο $y'(x)$, που δεν είναι άλλη από την συμβολική μεταβλητή που ονομάσαμε dy
\n",
"
\n", "Το θεµελιώδες θεώρηµα του απειροστικού λογισµού μας πληροφορεί ότι η αντίστροφη διαδικασία της παραγώγισης είναι η ολοκλήρωση. Δοσμένης μιας παραγωγίσιμης συνάρτησης μπορούμε, κατ'αρχήν, να βρούμε την συνάρτηση της παραγώγου της σε κλειστή μορφή. Όμως, γενικά, δεν ισχύει το ίδιο για το ολοκλήρωμά της. Μάλιστα ένα αόριστο ολοκλήρωμα, ως συνάρτηση του άνω ορίου, αποτελεί έναν εναλλακτικό ορισμό μιας νέας πιο σύνθετης συνάρτησης. Τα κλασικά παραδείγματα είναι οι εναλλακτικοί ορισμοί των συναρτήσεων του λογαρίθμου και του τόξου εφαπτομένης:\n", " $$ \\log x = \\int_1^x \\frac{1}{t} \\, dt \\,,\\qquad \\arctan x = \\int_0^x \\frac{1}{1+t^2}\\,dt\\,.$$\n", "Ας θεωρήσουμε την συνάρτηση $f(x) = e^{-x^2}$, της οποίας η παράγωγος είναι\n", "
" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x |--> -2*x*e^(-x^2)\n" ] } ], "source": [ "f(x) = exp(-x^2)\n", "df = f.diff(x); print df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Η γραφική παράσταση της $f(x) = e^{-x^2}$ μοιάζει με μια καμπάνα γύρω από το $x=0$, η οποία σβήνει στο μηδέν πάρα πολύ γρήγορα. \n", "
" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nCbAetROfMakAAAAASUVORK5CYII=\n", "text/plain": [ "Graphics object consisting of 1 graphics primitive" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fplot = plot(f(x),(x,-3,3),figsize=4) ; fplot.show()" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "\n", "Ας ζητήσουμε από το Sage το ορισμένο ολοκλήρωμα της $f(x) = e^{-x^2}$, στο διάστημα $(-\\infty, \\infty)$\n", "
" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "sqrt(pi)\n" ] } ], "source": [ "orismeno = integral(f(x),(x,-oo,oo)); print orismeno" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " \n",
"δηλαδή \n",
"$$ \\int_{-\\infty}^\\infty e^{-t^2}\\,dt = \\sqrt{\\pi}\\,. $$\n",
"Παρατηρήστε ότι στο Sage το άπειρο ($\\infty$) δηλώνεται με δυο κολλητά όμικρον (οο
).\n",
"Επειδή η $f(x) = e^{-x^2}$ είναι άρτια συνάρτηση σε όλο το πεδίο ορισμού της, δηλαδή το $\\mathbb{R}$, ισχύει ότι \n",
"$$ \\int_{0}^\\infty e^{-t^2}\\,dt = \\frac{\\sqrt{\\pi}}{2} \\qquad \\Rightarrow \\qquad \\frac{2}{\\sqrt{\\pi}} \\, \\int_{0}^\\infty e^{-t^2}\\,dt =1 \\,. $$\n",
"
\n", "Χρησιμοποιώντας την γνωστή ιδιότητα της παρεμβολής του ολοκληρώματος Riemann, για οποιοδήποτε $x\\in \\mathbb{R}$, (γιατί;) έχουμε ότι \n", "$$\\frac{2}{\\sqrt{\\pi}} \\, \\left( \\int_{0}^x \\,\\,+ \\int_{x}^\\infty e^{-t^2}\\,dt \\right) =1 \\quad \\Rightarrow \\quad\n", "\\frac{2}{\\sqrt{\\pi}} \\, \\int_{0}^x e^{-t^2}\\,dt + \\frac{2}{\\sqrt{\\pi}} \\, \\int_{x}^\\infty e^{-t^2}\\,dt = 1 \n", "\\qquad (*)\n", "$$\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " \n",
"Στην τελευταία ισότητα το πρώτο ολοκλήρωμα είναι ένα αόριστο ολοκλήρωμα της συνάρτησης $f(x) = e^{-x^2}$, πολλαπλασιασμένο με $\\frac{2}{\\sqrt{\\pi}}$. Ας ρωτήσουμε το Sage ποιό είναι το αόριστο ολοκλήρωμα με την εντολή εντολή integral
, η οποία δέχεται για ορίσματα την υπό ολοκλήρωση συνάρτηση και την μεταβλητή στην οποία ολοκληρώνουμε\n",
"
\n",
"Το αποτέλεσμα είναι μια συνάρτηση που το Sage την ονομάζει erf(x)
, και είναι γνωστή ως η συνάρτηση σφάλματος (error function). Αν πάρουμε βοήθεια για την συνάρτηση αυτή από το Sage μας πληροφορεί ότι ορίζεται ακριβώς με την μορφή του αόριστου ολοκληρώματος\n",
"
\n", "σε απόλυτη συμφωνία με τους προηγούμενους υπολογισμούς μας. Η γραφική παράσταση της συνάρτησης σφάλματος είναι\n", "
" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n41k1AAAAAElFTkSuQmCC\n", "text/plain": [ "Graphics object consisting of 1 graphics primitive" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "erfplot = plot(erf(x),(x,-7,7),figsize = 4) ; erfplot.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Επιπλέον, από την σχέση $(*)$ παίρνουμε ότι \n", "$$ \\frac{2}{\\sqrt{\\pi}} \\, \\int_{x}^\\infty e^{-t^2}\\,dt = 1 -{\\rm{erf}}(x) $$\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Η συνάρτηση $\\rm{erfc}(x) = 1-\\rm{erf}(x)$, ή ισοδύναμα ${\\rm{erfc}}(x) = \\frac{2}{\\sqrt{\\pi}} \\, \\int_{x}^\\infty e^{-t^2}\\,dt$, ονομάζεται η συμπληρωματική συνάρτηση σφάλματος \n", "$\\rm{erfc}(x) = 1 - \\rm{erf}(x)$, και η γραφική της παράσταση είναι\n", "
" ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 1 graphics primitive" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "erfcplot = plot(1-erf(x),(x,-7,7),figsize = 4) ; erfcplot.show()" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "\n", "Στο Sage δεν έχει κάθε συμβολική συνάρτηση ορισμένο ή αόριστο ολοκλήρωμα. Για παράδειγμα\n", "
" ] }, { "cell_type": "code", "execution_count": 59, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "integrate(tan(e^(-x^2)), x, 0, 1)\n" ] } ], "source": [ "r = integral(tan(exp(-x^2)),(x,0,1)) ; print r" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "\n", "Αν η συνάρτηση της οποίας αναζητούμε το ορισμένο ολοκλήρωμα σε κάποιο διάστημα είναι ολοκληρώσιμη κατά Riemann, μπορούμε να ζητήσουμε από το Sage μια αριθμητική προσέγγισή του\n", "
" ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.996025062538\n" ] } ], "source": [ "print r.n()" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "### 3.5.2 Βοηθώντας το Sage" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "\n", "Ας ζητήσουμε από το Sage να μας δώσει το ολοκλήρωμα Riemann της $f(x)=x^2$, όπου τα άκρα της ολοκλήρωσης είναι συμβολικές εκφράσεις\n", "
" ] }, { "cell_type": "code", "execution_count": 61, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-1/3*a^3 + 1/3*b^3\n" ] } ], "source": [ "a , b = var(' a , b')\n", "print integral(x^2 , (x,a,b))" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "\n", "Το αποτέλεσμα είναι αναμενόμενο αφού γνωρίζουμε ότι το ολοκλήρωμα είναι $$ $$\n", "$$ \\int_a^b x^2\\, dx = \\frac{1}{3}\\, \\left. x^3\\right|_a^b = \\frac{1}{3}\\,b^3-\\frac{1}{3}\\,a^3 \\,,$$ $$ $$\n", "το οποίο γεωμετρικά παριστάνει το εμβαδό ανάμεσα στον x-άξονα, την παραβολή $y=x^2$, και τις κατακόρυφες ευθείες $x=a$, $x=b$, όπως δείχνεται στο παρακάτω σχήμα\n", "
" ] }, { "cell_type": "code", "execution_count": 62, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAARsAAADPCAYAAADF9XWsAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAHF5JREFUeJzt3XlcVeW+x/HPAmUoFApC0yhNb2khecQ5cNhq4jEHTFPU\nNOccylRK6kpqonUqJcvs5NXM2z2adj1mhWkeraPV7UAdRZyHxAFUBHEDgshmP/ePfeJkTgx7r7WH\n3/sfX5u99lo/RL/81lrP8yxNKaUQQggH8zK6ACGEZ5CwEULoQsJGCKELCRshhC4kbIQQupCwEULo\nQsJGCKELCRshhC4kbIQQupCwEULoQsJGCKELCRsncfDgQaNLEMKhJGycwOLFi/Hz87vpNrm5uSxc\nuFCnioSwPwkbnZWVlfH8888zbdo0Fi1axNatWwkNDaVRo0YV23z88cc0aNCA77//vuJrISEhdO7c\nmaVLl950/0opCgoKkMn8wtlI2Ohs9erVlJaW0qdPH0wmE++88w5Dhgy5apsnnngCi8VCu3btrvp6\n69atSUtL48KFCzfcf2FhIYGBgRQWFjqkfiGqS8JGZ1u2bKFr166YTCa8vb0JCwtD07Srtvn222+J\njo6mVq1a13y+T58+rFy5Uq9yhbAbCRudmM1m5s+fz5dffkl6ejqrV69m27ZttGnT5pptt27dSq1a\ntVi9ejXPPPMM+/btq3ivc+fObNq0Sc/ShQCgvBz69YNt26r3eU1W6tNPUVER9913H3l5eQDEx8fT\ntWtXevfufdV24eHhrFixgnbt2pGSksKyZcvYuHFjxfuNGjUiMzPzuscoKCggMDCQXr16XdMZxcXF\nERcXZ99vSniMTz+FJ5+EH3+E353hV8q1fbpwmD179hAREVHxuqioCH9//6u2yc7OpqysrOJ6zblz\n58jNzb1qGy+vWzekn3zyCXXr1rVD1UKAUjBvnqJjx0u0axdQrX3IaZSO0tPTadmyZcXrkJAQ8vPz\nr9omNTWV6Ojoitdff/01MTExV21zvWs5QjjSl19CRobG2LE51d6H/KvV0e7du+nYsWPF6+bNm3Py\n5MmrtgkICCAoKAiAI0eOkJGRwYcffljxvsVioU6dOvoULAS2riYpSRERUUDr1sXV3o90NjratWsX\nrVq1qngdExPDzp07r9qmW7duaJrGqlWrWLx4Mdu2beO2226reD8tLQ2TyaRbzUJs2wapqRrDhmXy\nuxunVSKdjU4sFgu5ubm0aNGi4mvBwcGEhoaSk5NDaGgoAJqm8eabbwIwcuTIa/azadMmBg8erE/R\nQmC7VtOsWRFt2uQDIdXej3Q2DpaVlUW9evVITU2lf//+17yfmJjIkiVLKrWvwsJCcnNzad26tb3L\nFOK6du6EHTtq3tWAhI3D+fj4MGDAAFJSUkhMTLzm/YYNGxIbG8vmzZtvua/k5GSSkpIcUaYQ15WU\npGjS5BIdO+bVeF8yzsZF5OXloZQiJOTmbeyv42zMZrPc+hY1kpYGbdtCYuI+TKbzgO0Oanh4eLX2\nJ9dsXERwcLDRJQgPM2eO4r77Sujc+bxd9ienUUKIa6SmwqZNGk89lYm3t332KZ2NEOIac+YoGjUq\noUuX6g/i+z3pbIQQV0lNha++sm9XA9LZCCF+Z/ZsW1fTubP9uhqQzkYI8Rv/+Ads3mz/rgaksxFC\n/MacOYrGje3f1YB0NkKIf/nxR1tXM3z4cbt3NSCdjRDiX/7d1dhnXM3vSWcjhODHH2HLFo2nnnJM\nVwPS2Qgh+O0dKMd0NSCdjRAe7//+D77+WmPEiONUYsXZapPORggPN2uW4v77ix3a1YB0NkJ4tG3b\nYPt2jVGjfnFoVwPS2QjhsZSCl19WNG9exKOP1ny9mluRzkYID/XFF7a1hceMOVbjVfgqQzobITyQ\n1Wrralq1MhMZeVGXY0pnI4QHWrMG9u3TGDPmF92OKZ2NEB6mrAwSExVRUXk89FCBbseVzkYID/Ph\nh5CZCaNGHdf1uBI2QniQkhKYO1fRrVsO999/SddjS9gI4UGWLoXz5+HppzN1P7aEjRAeoqAAFixQ\n9Op1hoYNS3Q/voSNEB5i0SIoKlI89VSmIceXsBHCA5w9C2+9pYiNPc1dd10xpAYJGyE8wJw5Cm/v\ncoYNO2lYDRI2Qri5gwdh+XIYNiyTOnUshtUhYSOEm0tIUISGltK/f5ahdUjYCOHGdu6EjRs1Ro/+\nBR8fZWgtMl1BCDelFMTHKx588BImk/0fzVJV0tkI4abWr7ctITFhwlGHL4xVGdLZCOGGrlyBhAQr\n7dvn84c/6LOExK04Qd4JIeztgw/g+HGN8eP1W0LiViRshHAzZrNtsmXPnmdp3FjfyZY3I2EjhJt5\n/XXFpUtK9yUkbkXCRgg3cvw4JCfDoEEnDZuWcCMSNkK4kZkzFXXrlhEXd8roUq4hYSOEm9ixAz79\nVGPs2GP4+5cbXc415Na3EG6gvBymTrU9A6p793NGl3Nd0tkI4QZWrYLduzUmTz7iFAP4rkc6GyFc\nXGEhvPSSbV3hhx/W72kJVeWkGSiEqKwFC6CgQDnVAL7rkbARwoUdPw6LFimefPIkoaGlRpdzUxI2\nQriw+HhFYGAZQ4YYtwJfZUnYCOGi/vY3+OtfNcaNO4q/v9Xocm5JLhAL4YKuXIEpUxQREQV07278\nWjWVIWEjhAtavBiOHoUPPjiMphldTeXIaZQQLiYryzaru1+/LJo0cZ5Z3bciYSOEi4mPV/j6Whg1\nKtPoUqpEwkYIF/LNN/DJJ7aLwgEBxj2WpTrkmo0QLqKsDCZPthIeXsRjjznn/KebkbARwkW8+y4c\nOqTxwQeHnXb+0824YMlCeJ4zZ2yP0O3bN5umTYuMLqdaJGyEcAHTpilq1bIwerRzLfVZFRI2Qji5\nzZth7VqNiROPGvqs7pqSazZCOLHiYpg40UpkpNlpF8WqLOlshHBi8+ZBdjY8/7zrjBS+EQkbIZxU\nRga89ZZi+PAT3HNPidHl1JiEjRBOyGqF8eMV99xT4hLLR1SGXLMRwgktWwY//qixePEhatdWRpdj\nFxI2QjiZM2cgIUHRu/cZIiLMRpdjN3IaJYSTmTpV4eVlcfo1hatKwkYIJ7Jhg+1Bc5MnH6FuXdcd\nU3M9cholhJO4cAEmTlQ8+mgeJpNrrL5XFdLZCOEkpk9XXLpU7hZjaq5HwkYIJ/DVV7BqlcakSUcJ\nCblidDkOIadRQhisoADGjbPSpo2ZmJizRpfjMNLZCGGwF15Q5Ocrpk8/6JanT7+SsBHCQNu3w7Jl\nGuPHH6N+fed+omVNyWmUEAa5dAnGjLHSsmUBffpkG12Ow0lnI4RB4uMVZ89CfPwhl1zms6o84FsU\nwvls3gx//rPGhAlHadjQ9Wd0V4acRgmhs7w8GDVK0bZtPv36uf/p06+kszHYwYMHjS5B6EgpmDRJ\nUVxczgsvuPfdp9+TsDHQ4sWL8fPzu+V2ubm5LFy4UIeKhKOtWQPr1mlMnXrIbQfv3YicRumkrKyM\nF154AU3TCAsLo0WLFoSGhtKoUaNbfjYkJITOnTuzdOlSJk2a5PhihUOcOgWTJyu6dcvBZDpvdDm6\nk85GJ6tXr6a0tJQ+ffpgMpl45513GDJkSKU/37p1a9LS0rhw4YIDqxSOYrXC008ratcuY+rUI0aX\nYwgJG51s2bKFrl27YjKZ8Pb2JiwsDK2KJ+x9+vRh5cqVDqpQONKSJbB9u8aLLx5w6cex1ES1T6NK\nSuDcOajEWYBHM5vNLFmyhC+//JLGjRtjsVjIycmhTZs212xrsViYO3cuYWFhXL58mZSUFNauXUtQ\nUBAAnTt35r333mPGjBl6fxuiBvbtg5kzFbGxWbRunW90OYapdmczahT07q0oLrZnOe4nMDCQqVOn\nUrt2bebPn8/QoUM5ffo0oaGh12w7btw4GjRowPjx4+nVqxfp6ekVQQMQHBzMsWPH9Cxf1FBJCTz5\npJW77y5hwgT3Wnmvqqrd2cyeDZGRiueeg+XLPej+XTXs2bOHiIiIitdFRUX4+/tftc3u3bvZsGED\ny5Ytq/iMyWS6Zl9elRxqOmTIEGrVuvrHGxcXR1xcXFXLFzUwfbri2DF4//19+PpajS7HUNUOm+bN\nYerUo7z++gN07w5VuNbpcdLT02nZsmXF65CQEPLzr26nv/nmG6KioqhduzYA27dvp1u3bpjNZgID\nAyu2+32A3Mgnn3xC3bp17VC9qK4NG2yjhKdNO0LjxpeMLsdwNbpA/Mc/5tC9+znGj7elt7i+3bt3\nXxU2zZs35+TJq58FFBQURL169QDIz88nJSWFTp06sWbNmoptLBYLderU0adoUSOnTsGYMYro6FyP\nmGRZGTUKG02DadMOExh4mcGDFVc8a4xSpe3atYtWrVpVvI6JiWHnzp1XbfPrbfC1a9fyxRdfEBcX\nx8aNG3nooYcqtklLS7vuqZVwLhYLDB2q8PG5Qny8Z40SvpkaD+q77bZyZs3ax5QpkSQkKBYtkr/Z\n37JYLOTm5tKiRYuKrwUHBxMaGkpOTk7FhWJ/f39WrFhx031t2rSJwYMHO7ReUXNJSfDDD5CcvN/t\nnpBQE3YZZ/Pgg0VMmHCM5GSNlBR77NH1ZWVlUa9ePVJTU+nfv/817ycmJrJkyZJK76+wsJDc3Fxa\nt25tzzKFnf3tb/Dqq4oRIzLd6gFz9mC3QX1PPHGaDh3yGDFCcfq0vfbqunx8fBgwYAApKSkkJiZe\n837Dhg2JjY1l8+bNldpfcnIySUlJ9i5T2FFWFsTFKSIjLzJ8+Amjy3E6mlKq2g8S/u6777BY/t0m\nms21GD++Dfff78Pf/67h42OXGj1eXl4eSilCQkJuuW1BQQGBgYGYzWa5G6WjsjLo0kVx5EgZy5al\nERRUZnRJDhESEkJ4eHi1PmvX6QqBgRZmz97LTz8pZsxwj4ehO4Pg4OBKBY0wzksvKVJT4ZVX9rpt\n0NSU3edGPfRQIZMnH2XJEo3f3LUVwm199hksXGhbtDw8vMDocpyWQyZi9uuXTY8e5xg7VrF3ryOO\nIIRzOHbMNpu7U6fzDBwoFytvxiFho2kwffoh7r67mAEDrBRI2As3VFQE/ftbqVPnssetulcdDlti\nws/Pypw5ezlzRvH004rqX4YWwvkoZVtH+JdfFK++mkFAQLnRJTk9h65nc889JcycuZ8NGzRee82R\nRxJCX6+9Bv/7vxoJCQdo3FiWPqgMhy+eFRWVx8iRmcyapfj8c0cfTQjHS0mBWbNsA/eio3ONLsdl\n6LJS34gRmURF5TJsmGLfPj2OKIRjHDxom/f06KO2X6Ki8nQJGy8veOmlg9SrV0yfPoq8PD2OKoR9\nmc3Qr5/izjtLSEg44BFPsbQn3f66/P3LSUrKID/fwqBBijIZ9yRcSHk5DBumyM4u59VXM7j9drkg\nXFW6ZnP9+peZPXsvO3fCtGlye0q4jvh4xVdfwaxZ+wkL84zH5dqb7o1gy5Zmnn32MO+9p/HOO3of\nXYiqW7oU3n5bY8qUI7RrJ4/SqS5DHlLXt+8ZsrP9ef75MO67T6NfPyOqEOLWvvoKnn1WMXDgaWJj\nZcW9mjDsEtf48b8QHZ1LXJwiLc2oKoS4sfR0ePJJRYcOeTzzjKx7W1OGhY2XF7z88gHuv7+Qxx9X\nZGYaVYkQ18rOht69rTRocIn//M8DeHsbXZHrM/Tmna+vlXnzMqhdu5Q//tHKxYtGViOETWEhPP64\noqysjPnz9+DvL3ee7MHwkQJ33FHGggXpZGVZiY1VlJYaXZHwZKWlEBurOHzYyvz5ewgJkVX87cXw\nsAG4994S5s3L4IcfFEOHKsrlF4kwgNUKI0cqdu5UJCXtoWlTedaTPTlF2ABERJhJTNzHZ5/BpEky\nS1zoSyl47jnFp5/axtK0bCmLldub04QN2CZtxscfYtkyjVdekbQR+pk/H957T+P55w/L5EoHMWSc\nzc306nWWixdrk5TUhLvugueeM7oi4e6WLYPERBg16jh9+pwxuhy35XRhAzBkyCkuXvRh6tQwAgJg\n9GijKxLu6uOP4ZlnFLGxWTz1lDx+xZGcMmw0DZ555hiXL3sxdmwDfH01hg0zuirhbtats60fHBNz\nlilTjsqyng7mlGEDtsCZOvUIV654MWJEfXx8NAYNMroq4S4++8y2Lo3JlMOMGYdkuQgdOG3YgG2U\ncXz8ISwWL4YODcXXV6NvX6OrEq5u0ybbNISoqFwSEg7K6GCdOH2ee3tDQsJBOnbMZdAg2zR/Iapr\n2zYYMEDRtm0es2btx9tb7nrqxenDBsDbWzFr1n7atMmjf3/Fxo1GVyRc0ebNtmkIjzySzyuv7KNW\nLQkaPblE2ADUrq2YPXsfHTrkMnCgYu1aoysSrmTjRujbV9Gq1QXmzcvAx0eCRm8uEzZgC5zExP10\n7ZrD0KGKVauMrki4grVrYeBAxaOPnmfOnL0SNAZx6gvE1+PtrUhIOICPTzlPP92A4mKYONHoqoSz\nWrUKRo9WdO9+jhdfPCTXaAzkcmEDtrtUM2YcxtfXyqRJ91BSAtOnG12VcDbvvw+TJkHv3meYPv2w\n3N42mEuGDdjG4UyZchQ/v3JmzLiP8+cVCxZoMjBLoJRt+sH8+TBw4CkmTTom/y6cgMuGDdgCZ9y4\n4wQGlvH6603JzlYsX65Ru7bRlQmjlJXBhAmKlSs1Jkw4xuDBpyRonIRLh82vnnzyNHfeeYU//akZ\nZ8/C+vUaAQFGVyX0dukSDBqk2LrVtuRsjx7njC5J/IbbnMV2757D66/v4fvvrXTubOWc/DvzKOfP\nQ9euim+/tbJgwR4JGifkNmEDEBl5kbff3sWJExbatLGyZ4/RFQk97N8P7dpZOXbMQnLyLtq0yTe6\nJHEdbhU2AE2bFrF06c/4+RXTsaOMNnZ3mzZB+/YKuMy77/7Mgw8WGV2SuAG3CxuA0NBSFi/+J5GR\nucTGKl57DVlm1M0oBW+9ZZt+0KLFBd5992caNLhsdFniJtwybAD8/a3Mnr2P4cNP8PLLMGKEokQe\n0ewWSkttA/VeeAHi4k7y6qsZ3H67rJLv7NzibtSNeHnB6NGZNGpUzBtvNCMjw3anqkkToysT1XXi\nhG3qQXq64qWXDvLYY3Ih2FW4bWfzWyZTDkuW/Exe3mUiI+U6jqvatAn+8AfF6dNXeOedXRI0LsYj\nwgagadNLvP/+T0RE5NK/P7z4osJiMboqURnl5TBrFvTuDc2aXeCDD9Jo1qzQ6LJEFbn1adTvBQSU\nM3fuPj799B4WLWrC998r/ud/NBo3NroycSOnTsFTTyl27oSxY48TF3dS5ji5KI/7sWmabcRxcvIu\njh8v5ZFHFP/933K3yhmtWwcREYr9+8tYuDCdYcMkaFyZx/7oWrQo4L/+K42OHc8xciQMHqy4cMHo\nqgRAQYHtqQeDB0PLludZvjyVli0vGl2WqCGPOo36vdtvLych4SDt2+eRnPwg4eFerFzpRc+eRlfm\nubZsgXHjrOTlKWbOPEzPnudkIqWb8NjO5re6dLH99mzY0ExMjG1MTq48gVVXFy78+gwnCA01s3x5\nGjExEjTuRMLmX+666wpvvJHOzJkH2bixnGbNFH/5i1zLcTSl4K9/hebNFevXlxMff5A330zn7rtl\nNLC7kbD5DU2DmJizrFz5Dx555DzDh0NMjOLQIaMrc0+HD0OvXoonnoD/+I88Vq5MpXfvs9LNuCkJ\nm+u4884yEhP3s2BBBhkZpYSHK+LjwWw2ujL3UFQECQkQHq7Ys6eUefP2Mm/eXkJCrhhdmnAgCZub\n6NAhj48+SmXkyOMsXVpO06aK5cttg8xE1ZWX2xYgf+ABK2+/bWXYsExWrkwlKipXuhkPIGFzCz4+\nVoYPP8mqVf+gVatzjBsHLVpYWb8erFajq3MNStme2xQRYeXpp+GBB34N8RP4+spfoqeQsKmku+66\nwksvHWTp0p8JCDAzcCBERipSUuQi8o0oZXvcbYcOiv79wc+vgKVLf2bOnH3Ury8XgD2NhE0VNW9e\nyBtvpPP227tQqoDHH7f9Z/rsMzm9+pXVChs2QNu2iu7d4eLFIt56K52FC3fTvLnMafJUEjbV9Mgj\nZpKTd/Hmm+mUlBQQGwvNmin+/GcoLja6OmOUlsJHH8FDDykGDACLpYA//WkP77//M5GRslSnp9OU\nqv5JwHfffYdFpk4DsH9/XdatC2PnzhDuuAPGjdMYMwaaNtW3joKCAgIDAzGbzdStW1eXYx4/Dh98\nACtWKHJzNTp2zGPo0BM8/HCBLscX+gkJCSE8PLxan61R2MyZM4cuXbpU9+NuKTvbj/Xr72Hr1voU\nFtaiSxfFmDEaTzwB/v6OP75eYXP5MqSkwPLlii1bbFM/evY8S9++2dx7r4e2dh4gJCSEjIwM4uLi\nqvzZGoVNVFQUSUlJ1f24Wyst9WLHjhA2b27AP/8ZRGCgIjYWBg7U6N4dfH0dc1xHho3FYrvgu2aN\nYsMGKCjQaN68kMcfz8JkysHPT+4subuQkBBefvllPv/88yp/1qMnYjqSr6+VHj1y6NEjh6wsf7Zs\nqcf27fX46CN/6tZV9OkD/ftrmExw551GV3tjZrNtcmRKiiIlRZGX58W9915mwICzmEw5hIXJws6i\nciRsdNCwYQmjR2cyalQmmZm3sWPHXezcGcpf/nI7Xl6KyEjo0UMjOhratIHgYONqNZvhhx9gxw74\n+98VaWlgsWg0aVJMz565dOp0ngceKJJBeKLKJGx0pGnQuHExjRufYOTIE5w758tPP93Bzz/fydKl\nd7Bgge0h5U2aWGnfXqN1a43mzeHBB+Hee7HrwlFKwdmzsHcvpKdDerpi1y7FgQMaVqtGcHAZERH5\nTJlykfbt86hXr9R+BxceqVJho5SisPDa8REWi4VLly7ZvShPERBwiS5dLtClyzGUgjNn/Dl0KIDD\nh+vw0091WbfudsrKbAnj66to3FjRsKFGaKhG/foQGgp16oCfn+3is58flJXZ7gB99pntz/x8uHjx\n339mZSkyMxWnTmmUltraEz+/cho1KqZRoyJMpkJatCjg7rtLrupe5McsAPz8/LBYLBQUXHunsU6d\nOmg3aXkrdYH414uOQghxI7e6KVGpsLlRZyOMV15uuw19+TKUlEB+fgFRUWH89NMpgoPrEhRk39Mv\nIW7ELp2NcB1GDOoTojLkd54QQhcSNkIIXchplJv59frarc6fhdCbhI0QQhdyGiWE0IWEjRBCFxI2\nQohK+fjjj2nQoAHff/99tT4v12yEEJVSXFxMo0aNyM7Oplatqk+rlM5GCFEp3377LdHR0dUKGqjm\nrG+LxcLcuXMJCwvj8uXLpKSksHbtWoKCgqpVhBDC+W3dupVatWqxevVqduzYwbPPPsvDDz9c6c9X\n6zRq1KhRtG3blokTJ3LkyBGio6M5e/ZsVXcjhHAh4eHhrFixgnbt2pGSksKyZcvYuHFjpT9f5dOo\n3bt3s2HDBsaOHQvAnj17MJlMVd2NEMKFZGdnU1ZWRrt27QA4d+4cubm5VdpHlcPmm2++ISoqitq1\nbQs9bd++nW7dumGWB2EL4bZSU1OJjo6ueP31118TExNTpX1UOWyCgoKoV68eAPn5+aSkpNCpUyfW\nrFlT1V0JIVxEQEBAxTXZI0eOkJGRwYwZM6q0jypfsykpKWHKlCk89thjlJaWcuDAAYKDg2nbti2d\nOnWq0sGFEK5BKcWLL75IeHg4aWlpzJo1i/r161dpHzLORgihCxlnI4TQhYSNEEIXEjZCCF1I2Agh\ndCFhI4TQhYSNEEIXEjZCCF1I2AghdCFhI4TQhYSNEEIXEjZCCF38P9WjhJcMOAXDAAAAAElFTkSu\nQmCC\n", "text/plain": [ "Graphics object consisting of 2 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f(x) = x^2\n", "fplot = plot(f(x),(x,-2,3), ticks=[[-2.0,3.0],[4,9]], \\\n", " tick_formatter=[[\"$a$\",\"$b$\"],[\"$f(a)$\",\"$f(b)$\"]],\\\n", " fill='axis',figsize=3); fplot.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Ας ζητήσουμε τώρα από το Sage το ολοκλήρωμα της $y=\\frac{1}{x^2}$ στο διάστημα $(a,b)$ \n", "
" ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "collapsed": false }, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid syntax (\n", "Το Sage μας επιστρέφει λάθος (ακριβέστερα το Maxima το οποίο εκτελεί την συμβολική ολοκλήρωση), κι ύστερα από αρκετές γραμμές κώδικα κατέληξε στο συμπέρασμα που σημειώνει παραπάνω με κόκκινο χρώμα \n", "
" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "\n", "Με μια πιο προσεχτική ματιά, η συνάρτηση της οποίας ζητάμε το ολοκλήρωμα Riemann δεν ορίζεται στο σημείο $x=0$, και καθώς το $x$ πλησιάζει το μηδέν από αριστερά ή από δεξιά απειρίζεται θετικά, δηλαδή η συνάρτησή μας έχει ασύμπτωτο τον $y$ άξονα. Έτσι το Sage έχει κάθε λόγο να παραπονιέται, γιατί η $y=\\frac{1}{x^2}$ είναι συνεχής μόνο κατά διαστήματα, στα $(-\\infty,0)$ και $(0,\\infty)$, και το θεμελιώδες θεώρημα του απειροστικού λογισμού δεν ισχύει σε ένωση ξένων διαστημάτων. Η γραφική παράσταση της συνάρτησής μας είναι\n", "
" ] }, { "cell_type": "code", "execution_count": 64, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nGP5EREHo/wE6upXe6gcQUgAAAABJRU5ErkJggg==\n", "text/plain": [ "Graphics object consisting of 2 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f(x) = 1/x^2\n", "fplot = plot(f(x),(x,-2,2),ymin=1,ymax=50,figsize=4,detect_poles=True)\n", "fplot.set_legend_options(back_color=(1,0.9,0.9), shadow=False); fplot.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Οπότε για να πάρουμε ένα συνεπές αποτέλεσμα πρέπει να περιορίσουμε κατάλληλα τις τιμές των συμβολικών μεταβλητών $a,b$, στα άκρα της ολοκλήρωσης. Για παράδειγμα, $b>a>0$. \n", "
" ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1/a - 1/b\n" ] } ], "source": [ "assume( a > 0, b > a)\n", "print integral(1/x^2, (x,a,b))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " \n",
"Σε κάθε στιγμή μπορούμε να πληροφορηθούμε για τις υποθέσεις που έχουμε επιβάλλει στις συμβολικές μεταβλητές μας με την εντολή assumptions
\n",
"
\n",
"Οι περιορισμοί που επιβάλλουμε στις συμβολικές μεταβλητές την εντολή assumptions
αναιρούνται με την εντολή forget
\n",
"
\n", "Το Sage μπορεί να βρει σε κλειστή μορφή το άθροισμα συμβολικών εκφράσεων. Για παράδειγμα ας θεωρήσουμε το άθροισμα των n πρώτων όρων της αριθμητικής προόδου\n", "$$ \\sum_{k=1}^n k = 1+2+3+\\cdots + n\\,.$$\n", "
" ] }, { "cell_type": "code", "execution_count": 68, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "1/2*n^2 + 1/2*n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "1/2*(n + 1)*n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "var('k, n')\n", "s = sum(k, k, 1, n)\n", "s.show()\n", "f = s.factor()\n", "f.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Το ενδιαφέρον είναι ότι αν μια σειρά $\\sum_{k=1}^\\infty a_k$ συγκλίνει,\n", "το Sage είναι ικανό να υπολογίσει το άθροισμα της σειρά. Για παράδειγμα, ας θεωρήσουμε την σειρά $ \\sum_{k=1}^\\infty \\frac{1}{k^2}$, η οποία από τα κριτήρια σύγκλισης σειρών που μάθαμε στον απειροστικό λογισμό, γνωρίζουμε ότι συγκλίνει. Σε ποιόν αριθμό να συγκλίνει άραγε;\n", "
" ] }, { "cell_type": "code", "execution_count": 69, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "1/6*pi^2" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sum(1/k^2, k, 1, oo).show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Ας πάρουμε τώρα, την εναλλασσόμενη σειρά \n", "$$ \\sum_{k=1}^\\infty (-1)^k \\frac{1}{k}\\,,$$\n", "η οποία, από τα κριτήρια των εναλλασσόμενων σειρών, γνωρίζουμε ότι και αυτή συγκλίνει.\n", "
" ] }, { "cell_type": "code", "execution_count": 70, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-log(2)\n" ] } ], "source": [ "print sum((-1)^(k)/k, k, 1, oo)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Χρησιμοποιώντας τις περιεκτικές λίστες της Python μπορούμε να ελέγξουμε το τελευταίο αποτέλεσμα που μας δίνει το Sage\n", "
" ] }, { "cell_type": "code", "execution_count": 71, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.693142180585\n", "0.6931471805599453\n" ] } ], "source": [ "L = [float((-1)^k/k) for k in range(1, 100001)]\n", "print -sum(L)\n", "print (log(2)).n(digits=16)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "απ' όπου συμπεραίνουμε ότι η σειρά συγκλίνει πολύ αργά.\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Για τον υπολογισμό του αθροίσματος της σειράς $\\sum_{n=0}^\\infty r^n$, το Sage χρειάζεται την βοήθειά μας για να περιορίσουμε τις τιμές της συμβολικής έκφρασης $r$, σε $|r|<1$,\n", "
" ] }, { "cell_type": "code", "execution_count": 72, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-1/(r - 1)\n" ] } ], "source": [ "var('r , n')\n", "assume( abs(r) < 1)\n", "print sum(r^n, n,0,oo)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.6 Σειρές Taylor, δυναμοσειρές, προσέγγιση και όρια" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.6.1 Σειρές Taylor" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " \n",
"Στο Sage το ανάπτυγμα μιας συνάρτησης γύρω από ένα σημείο δίνεται με την εντολή taylor
. Ας βρούμε την σειρά Taylor της συνάρτησης cos(x)
γύρω από το x=0, μέχρι όρους τάξης 6 \n",
"
\n", "Το αποτέλεσμα δεν είναι μια σειρά αλλά το πολυώνυμο που προκύπτει αν αποκόψουμε από την σειρά όλους τους όρους με τάξη μεγαλύτερη από 6.\n", "Επίσης παρατηρούμε ότι το αποτέλεσμα είναι μια συμβολική έκφραση. Μπορούμε να ζητήσουμε να μας δώσει το αποτέλεσμα καθαρά συμβολικά\n", "
" ] }, { "cell_type": "code", "execution_count": 101, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1/24*(a - x)^4*diff(f(a), a, a, a, a) - 1/6*(a - x)^3*diff(f(a), a, a, a) + 1/2*(a - x)^2*diff(f(a), a, a) - (a - x)*diff(f(a), a) + f(a)\n", "\n", "Σαν ένα άλλο παράδειγμα θεωρούμε την ακολοθουθία των αριθμών Fibonacci η οποία εμφανίζεται ως οι συντελεστές της σειράς Taylor γύρω από το x=0, της ρητής συνάρτησης \n", "$$ g(x) = \\frac{1}{1-x-x^2}\\,.$$ \n", "Ας δούμε τους 10 πρώτους αριθμούς της ακολουθίας αριθμών Fibonacci \n", "
" ] }, { "cell_type": "code", "execution_count": 75, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10946*x^20 + 6765*x^19 + 4181*x^18 + 2584*x^17 + 1597*x^16 + 987*x^15 + 610*x^14 + 377*x^13 + 233*x^12 + 144*x^11 + 89*x^10 + 55*x^9 + 34*x^8 + 21*x^7 + 13*x^6 + 8*x^5 + 5*x^4 + 3*x^3 + 2*x^2 + x + 1\n", "[[1, 0], [1, 1], [2, 2], [3, 3], [5, 4], [8, 5], [13, 6], [21, 7], [34, 8], [55, 9], [89, 10], [144, 11], [233, 12], [377, 13], [610, 14], [987, 15], [1597, 16], [2584, 17], [4181, 18], [6765, 19], [10946, 20]]\n" ] } ], "source": [ "g(x) = 1/(1-x-x^2)\n", "Tg = taylor(g(x), x, 0, 20)\n", "print Tg;\n", "print Tg.coefficients()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Το Sage μπορεί να μας δώσει πολυωνυμικά αναπτύγματα σε σειρά Taylor και για συναρτήσεις πολλών μεταβλητών\n", "
" ] }, { "cell_type": "code", "execution_count": 76, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1/384*(pi - 2*y)^4 + 1/16*(pi - 2*y)^2*x^2 + 1/24*x^4 - 1/8*(pi - 2*y)^2 - 1/2*x^2 + 1\n" ] } ], "source": [ "var('x,y')\n", "h = cos(x)*sin(y)\n", "print taylor(h,(x,0),(y,pi/2),5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.6.2 Σειρές Taylor και SymPy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Για να δούμε ποιά συστήματα χρησιμοποιεί το Sage για τον υπολογισμό των σειρών Taylor δίνουμε\n", "
" ] }, { "cell_type": "code", "execution_count": 77, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['ginac', 'Maxima']\n" ] } ], "source": [ "from sage.misc.citation import get_systems\n", "print get_systems('taylor(cos(x), x, 0, 6)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Μπορούμε εναλλακτικά να χρησιμοποιήσουμε το SymPy που μας δίνει το αποτέλεσμα στην μορφή Python\n", "
" ] }, { "cell_type": "code", "execution_count": 78, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 - x**2/2 + x**4/24 - x**6/720 + x**8/40320 + O(x**10)\n" ] } ], "source": [ "from sympy.series import series\n", "print series(cos(x), x0=0, n=10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " \n",
"Αν δώσουμε n=None
, ως αποτέλεσμα θα πάρουμε μια γεννήτρια συμβολικών εκφράσεων με την βοήθεια της οποίας μπορούμε να βρούμε επαναληπτικά τον επόμενο όρο της σειράς Taylor με την εντολή next
\n",
"
\n",
"Ακόμα καλύτερα, χρησιμοποιώντας και πάλι την περικτική λίστα της Python [ F for k in L ]
παίρνουμε μια λίστα σε μορφή Python, όπου τα στοιχεία της είναι οι όροι της σειράς Taylor,\n",
"
\n", "Όπως είδαμε στο Sage οι \"σειρές\" Taylor δεν είναι δυναμοσειρές γύρω από κάποιο σημείο $x_0$, αλλά πολυώνυμα που προκύπτουν αν αποκόψουμε από την σειρά όλους τους όρους της από μια τάξη και πάνω, ανάλογα με την αντίστοιχη τάξη της παραγώγου. Όμως το Sage μας παρέχει την δυνατότητα να μετατρέψουμε ένα πολυώνυμο (γύρω από το μηδέν) σε μια δυναμοσειρά \n", "
" ] }, { "cell_type": "code", "execution_count": 82, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "7 + 5*x + x^3 + O(x^4)\n", "\n", "Ο λόγος που ίσως μας είναι χρήσιμη η μετατροπή ενός πολυωνύμου σε μια δυναμοσειρά, είναι ότι για τις δυναμοσειρές μπορεί να ορισθεί η διαίρεση (μέχρι όρους τάξης n) και συνεπώς μια δυναμοσειρά έχει έναν αντίστροφο (μέχρι όρους τάξης n), το οποίο δεν ισχύει για πολυώνυμα. Ας δούμε ένα παράδειγμα\n", "
" ] }, { "cell_type": "code", "execution_count": 83, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1/7 - 5/49*x + 25/343*x^2 - 174/2401*x^3 + O(x^4)\n", "\n", "Παρατηρούμε ότι το γινόμενο της δυναμοσειράς pq με την invpq μας δίνει 1 μέχρι όρους τάξης 4. Η τάξη αυτή είναι η τάξη της ακρίβειας των υπολογισμών και δεν είναι ίση με τον βαθμό του πολυωνύμου που εμφανίζεται στην δυναμοσειρά\n", "
" ] }, { "cell_type": "code", "execution_count": 84, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4\n", "4\n" ] } ], "source": [ "print pq.prec(); print invpq.prec(); " ] }, { "cell_type": "code", "execution_count": 85, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3\n" ] } ], "source": [ "print pq.degree()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " \n",
"Μπορούμε επίσης να μετρατρέψουμε μια δυναμοσειράς σε μια δυναμοσειρά μκρότερης ακρίβειας χρησιμοποιώντας την μέθοδο trancate_powerseries()
\n",
"
\n",
"Μπορούμε επιπλέον να αποκόψουμε μια δυναμοσειρά σε ένα πολυώνυμο με την μέθοδο polynomial()
, ή εναλλακτικά με την μέθοδο trancate()
\n",
"
\n",
"Με την προσέγγιση Padé προσεγγίζουμε μια συνάρτηση από μια ρητή συνάρτηση, όπου ο βαθμός του πολυωνύμου του αριθμητή και του παρανομαστή είναι δοσμένοι θετικοί ακέραιοι. Οι συντελεστές των πολυωνύμων είναι ρητοί αριθμοί και προσδιορίζονται από την μέθοδο Padé, στην οποία δεν θα επεκταθούμε περισσότερο εδώ. Συνήθως η προσέγγιση Padé μας δίνει μια καλύτερη προσέγγιση από τις σειρές Taylor, ιδίως όταν η συνάρτηση που θέλουμε να προσεγγίσουμε έχει πόλους. Στο Sage η προσέγγιση Padé μιας συνάρτησης υπολοιείται με την \"μέθοδο\" pade
,\n",
"που δέχεται σαν ορίσματα τον βαθμό του αριθμητή και του παρανομαστή.\n",
"
\n", "Για να δούμε πόσο καλή είναι η προσέγγιση Padé της συνάρτησης του συνημιτόνου ας υπολογίσουμε την τιμή της σε ένα σημείο κι ας την συγκρίνουμε με την πραγματική τιμή στο ίδιο σημείο.\n", "
" ] }, { "cell_type": "code", "execution_count": 89, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-0.9970661822\n", "-1\n" ] } ], "source": [ "print pad(pi).n(digits=10)\n", "print cos(pi)" ] }, { "cell_type": "code", "execution_count": 90, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 2 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pp = plot(pad,(z,-2*pi,2*pi),legend_label='pad $\\cos \\,x$',color='red');\n", "pc = plot(cos(x),(x,-2*pi,2*pi),legend_label='$\\cos\\, x$');\n", "(pp+pc).show(figsize=4)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "\n", "Θα έχουμε την ευκαιρία κατά την διάρκεια των μαθημάτων να δούμε προσεγγίσεις μιας συνάρτησης μέσω άλλων συναρτήσεων, όπως τριγωνομετρικές, όταν θα αναφερθούμε στις σειρές Fourier, και τα πολυώνυμα Chebyshev.\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.6.3 Όρια" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " \n",
"Στο Sage μπορούμε να βρούμε όρια συναρτήσεων (συμπεριλαμβανομένων πλευρικών ορίων) με την εντολή limit
, ή ισοδύναμα με την συντομογραφία της lim
\n",
"
\n",
"Με ind
το Sage εννοεί απροσδιοριστία, δηλαδή δεν υπάρχει όριο αλλά οι τιμές της συνάρτησης παραμένουν φραγμένες.\n",
"
\n",
"Στην τελευταία αυτή παράγραφο του κεφαλαίου θα δούμε ένα παράδειγμα που είναι ενδεικτικό της αποτελεσματικής εφαρμογής των συμβολικών και αριθμητικών εργαλείων του Sage. \n",
"\n",
"Υποθέτω ότι είστε εξοικειωμένοι με το πρόβλημα βελτιστοποίησης των τιμών μιας συνάρτησης πολλών μεταβλητών υπό δέσμευση, με την μέθοδο των πολλαπλασιαστών Lagrange. Πιο συγκεκριμένα.
\n",
"Μας ενδιαφέρει να βρούμε τις βέλτιστες (μέγιστες κι ελάχιστες) τιμές της συνάρτησης $$ $$\n",
"$$ f(x,y,x) = x \\,y\\, z \\,,$$ $$ $$\n",
"δοσμένου ότι τα σημεία $(x,y,z)$ είναι σημεία σφαίρας ακτίνας μονάδας και κέντρου $(0,0,0)$\n",
"$$ $$ $$ g(x,y,z)=x^2+y^2+z^2=1\\,.$$ $$ $$\n",
"Στο Sage ορίζουμε με συμβολικές εκφράσεις την συνάρτηση που θέλουμε να βελτιστοποιήσουμε και την εξίσωση της δέσμευσης\n",
"
\n", "Για να εφαρμόσουμε την μέθοδο των πολλαπλασιαστών Lagrange, πρέπει να βρούμε τις κλίσεις των συναρτήσεων $f\\,,g\\,,$ οπότε πρέπει να μετατρέψουμε τις συμβολικές εκφράσεις μας σε συναρτήσεις για να είναι σε θέση το Sage να υπολογίσει συμβολικά μερικές παραγώγους\n", "
" ] }, { "cell_type": "code", "execution_count": 97, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "target as function : (x, y, z) |--> x*y*z\n", "constraint as function : (x, y, z) |--> x^2 + y^2 + z^2 - 1\n", "gradient of target : (x, y, z) |--> (y*z, x*z, x*y)\n", "gradient of constraint : (x, y, z) |--> (2*x, 2*y, 2*z)\n" ] } ], "source": [ "f(x,y,z) = target\n", "g(x,y,z) = constraint.lhs()\n", "print 'target as function :', f\n", "print 'constraint as function :', g\n", "gradf = f.diff()\n", "gradg = g.diff()\n", "print 'gradient of target :', gradf\n", "print 'gradient of constraint :', gradg" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Αφού υπολογίσαμε τις κλίσεις είμαστε έτοιμοι να φτιάξουμε το σύστημα των εξισώσεων που η λύση τους θα μας δώσει τα δεσμευμένα ακρότατα. Συνήθως στην μέθοδο με τους πολλαπλασιαστές Lagrange η πραγματική παράμετρος δηλώνεται με $\\lambda$. Στο παρόν παράδειγμα την δηλώνουμε με την συμβολική μεταβλητή ell\n", "
" ] }, { "cell_type": "code", "execution_count": 98, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[-2*ell*x + y*z == 0, -2*ell*y + x*z == 0, x*y - 2*ell*z == 0, x^2 + y^2 + z^2 - 1 == 0]\n" ] } ], "source": [ "var('ell')\n", "eqs = [gradf(x,y,z)[k] - ell*gradg(x,y,z)[k] == 0 for k in range(3)]\n", "eqs.append(constraint)\n", "print eqs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Τώρα δεν έχουμε παρά να λύσουμε το σύστημα των εξισώσεων για να βρούμε τα δεσμευμένα ακρότατα\n", "
" ] }, { "cell_type": "code", "execution_count": 99, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[\n", "[x == 0, y == -1, z == 0, ell == 0],\n", "[x == 0, y == 1, z == 0, ell == 0],\n", "[x == 0, y == 0, z == -1, ell == 0],\n", "[x == 0, y == 0, z == 1, ell == 0],\n", "[x == 1, y == 0, z == 0, ell == 0],\n", "[x == -1, y == 0, z == 0, ell == 0],\n", "[x == -1/3*sqrt(3), y == 1/3*sqrt(3), z == -1/3*sqrt(3), ell == 1/6*sqrt(3)],\n", "[x == 1/3*sqrt(3), y == -1/3*sqrt(3), z == -1/3*sqrt(3), ell == 1/6*sqrt(3)],\n", "[x == -1/3*sqrt(3), y == -1/3*sqrt(3), z == 1/3*sqrt(3), ell == 1/6*sqrt(3)],\n", "[x == 1/3*sqrt(3), y == 1/3*sqrt(3), z == 1/3*sqrt(3), ell == 1/6*sqrt(3)],\n", "[x == -1/3*sqrt(3), y == 1/3*sqrt(3), z == 1/3*sqrt(3), ell == -1/6*sqrt(3)],\n", "[x == 1/3*sqrt(3), y == -1/3*sqrt(3), z == 1/3*sqrt(3), ell == -1/6*sqrt(3)],\n", "[x == -1/3*sqrt(3), y == -1/3*sqrt(3), z == -1/3*sqrt(3), ell == -1/6*sqrt(3)],\n", "[x == 1/3*sqrt(3), y == 1/3*sqrt(3), z == -1/3*sqrt(3), ell == -1/6*sqrt(3)]\n", "]\n", "found 14 solutions\n" ] } ], "source": [ "sols = solve(eqs,[x,y,z,ell])\n", "print sols\n", "print 'found', len(sols), 'solutions'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Το Sage βρήκε 14 λύσεις, οπότε 14 πιθανά δεσμευμένα ακρότατα. Οι αντίστοιχες τιμές της συνάρτησης $f(x,y,z)$ που θέλουμε να βελτιστοποιήσουμε είναι\n", "
" ] }, { "cell_type": "code", "execution_count": 100, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0, 0, 0, 0, 0, 0, 1/9*sqrt(3), 1/9*sqrt(3), 1/9*sqrt(3), 1/9*sqrt(3), -1/9*sqrt(3), -1/9*sqrt(3), -1/9*sqrt(3), -1/9*sqrt(3)]\n" ] } ], "source": [ "print [target.substitute(sols[k]) for k in range(0,len(sols))]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " \n",
"οπότε τα σημεία
\n",
"$\\left(\\frac{-\\sqrt{3}}{3}\\,, \\frac{\\sqrt{3}}{3} ,\\,\\frac{-\\sqrt{3}}{3}\\right)$,\n",
"$\\left(\\frac{\\sqrt{3}}{3}\\,, \\frac{-\\sqrt{3}}{3} ,\\,\\frac{-\\sqrt{3}}{3}\\right)$,\n",
"$\\left(\\frac{\\sqrt{3}}{3}\\,, \\frac{\\sqrt{3}}{3} ,\\,\\frac{\\sqrt{3}}{3}\\right)$,\n",
"$\\left(\\frac{-\\sqrt{3}}{3}\\,, \\frac{-\\sqrt{3}}{3} ,\\,\\frac{\\sqrt{3}}{3}\\right)$ \n",
"είναι δεσμευμένα μέγιστα,
\n",
"και τα σημεία
\n",
"$\\left(\\frac{-\\sqrt{3}}{3}\\,, \\frac{-\\sqrt{3}}{3} ,\\,\\frac{-\\sqrt{3}}{3}\\right)$,\n",
"$\\left(\\frac{\\sqrt{3}}{3}\\,, \\frac{\\sqrt{3}}{3} ,\\,\\frac{-\\sqrt{3}}{3}\\right)$,\n",
"$\\left(\\frac{-\\sqrt{3}}{3}\\,, \\frac{\\sqrt{3}}{3} ,\\,\\frac{\\sqrt{3}}{3}\\right)$,\n",
"$\\left(\\frac{\\sqrt{3}}{3}\\,, \\frac{-\\sqrt{3}}{3} ,\\,\\frac{\\sqrt{3}}{3}\\right)$\n",
"είναι δεσμευμένα ελάχιστα.\n",
"