{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "




\n", "


\n", "# Κεφάλαιο 3\n", "
\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", "

" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(x, y) |--> cos(x - y) + sin(x + y) \n" ] } ], "source": [ "f(x,y) = sin(x+y) + cos(x-y)\n", "print f, type(f)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\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", "

" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " \n" ] } ], "source": [ "def g(x,y):\n", " return sin(x+y) + cos(x-y)\n", "print g, type(g)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Όμως δεν μπορούμε να ολοκληρώσουμε την g(x,y) γιατί όπως μας πληροφορεί το Sage, to αντικείμενο 'function' δεν έχει την ιδιότητα 'integrate'\n", "

" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "ename": "AttributeError", "evalue": "'function' object has no attribute 'integrate'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mintegrate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mAttributeError\u001b[0m: 'function' object has no attribute 'integrate'" ] } ], "source": [ "g.integrate(x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\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" ] } ], "source": [ "e = g(x,y)\n", "print e, type(e)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Τώρα μπορούμε να μετατρέψουμε την συμβολική μεταβλητή e σε μια συνάρτηση, ας την πούμε h(x,y)\n", "

" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(x, y) |--> cos(x - y) + sin(x + y) \n", "(x, y) |--> -cos(x + y) - sin(-x + y)\n" ] } ], "source": [ "h(x,y) = e\n", "print h, type(h)\n", "print h.integrate(x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "απ' όπου παρατηρούμε ότι η h(x,y) είναι ορισμένη ως συμβολική έκφραση, και συνεπώς μπορούμε να την ολοκληρώσουμε.\n", "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.2 Αλματικές συναρτήσεις" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\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", "at -3 : 0\n", "at 4 : 1\n" ] } ], "source": [ "print unit_step, type(unit_step)\n", "print 'at -3 :', unit_step(-3)\n", "print 'at 4 :', unit_step(4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Η συνάρτηση unit_step είναι ορισμένη στο Sage στην κλάση \n", "sage.functions.generalized.FunctionUnitStep.
Μπορούμε να δούμε τη βοήθεια που μας προσφέρει το Sage για την συνάρτηση αυτή με την εντολή\n", "

" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " The unit step function, `\\mathrm{u}(x)` (``unit_step(x)``).\n", "\n", " INPUT:\n", "\n", " - ``x`` - a real number or a symbolic expression\n", "\n", " DEFINITION:\n", "\n", " The unit step function, `\\mathrm{u}(x)` is defined in Sage as:\n", "\n", " `\\mathrm{u}(x) = 0` for `x < 0` and `\\mathrm{u}(x) = 1` for `x \\geq 0`\n", "\n", " EXAMPLES::\n", "\n", " sage: unit_step(-1)\n", " 0\n", " sage: unit_step(1)\n", " 1\n", " sage: unit_step(0)\n", " 1\n", " sage: unit_step(x)\n", " unit_step(x)\n", " \n" ] } ], "source": [ "print sage.functions.generalized.FunctionUnitStep.__doc__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Συνεπώς η συνάρτηση unit_step στο Sage ορίζεται ως εξής $$ $$\n", "$$ \\mathrm{u}(x) = \\left\\lbrace \\begin{array}{cc} 1\\,, & x \\geq 0 \\,, \\\\ 0\\, & x < 0\\,. \\end{array} \\right.$$\n", "

" ] }, { "cell_type": "code", "execution_count": 9, "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": [ "p = plot(unit_step, -1, 1, exclude=[0],thickness=2)\n", "p.show(figsize=3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Το αξιοσημείωτο είναι ότι το Sage αναγνωρίζει την αλματική συνάρτηση στην κλάση των γενικευμένων συναρτήσεων (ή αλλιώς κατανομών), οι οποίες με μια γενικευμένη έννοια, έχουν παραγώγους οποιασδήποτε τάξης! Για παράδειγμα, η πρώτη παράγωγος της \"συνάρτησης\" unit_step, ή αλλιώς της κατανομής Heaviside, είναι η κατανομή $\\delta$ του Dirac. \n", "

" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dirac_delta(x)\n" ] } ], "source": [ "dudx = diff(unit_step(x),x) ; print dudx" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "print type(dirac_delta)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Η \"συνάρτηση\" $\\delta$ του Dirac, στο Sage ανήκει κι αυτή στην κλάση sage.functions.generalized.FunctionUnitStep. Η βοήθεια που μας προσφέρει το Sage για την dirac_delta είναι\n", "

" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " The Dirac delta (generalized) function, `\\delta(x)` (``dirac_delta(x)``).\n", "\n", " INPUT:\n", "\n", " - ``x`` - a real number or a symbolic expression\n", "\n", " DEFINITION:\n", "\n", " Dirac delta function `\\delta(x)`, is defined in Sage as:\n", "\n", " `\\delta(x) = 0` for real `x \\ne 0` and\n", " `\\int_{-\\infty}^{\\infty} \\delta(x) dx = 1`\n", "\n", " Its alternate definition with respect to an arbitrary test\n", " function `f(x)` is\n", "\n", " `\\int_{-\\infty}^{\\infty} f(x) \\delta(x-a) dx = f(a)`\n", "\n", " EXAMPLES::\n", "\n", " sage: dirac_delta(1)\n", " 0\n", " sage: dirac_delta(0)\n", " dirac_delta(0)\n", " sage: dirac_delta(x)\n", " dirac_delta(x)\n", " sage: integrate(dirac_delta(x), x, -1, 1, algorithm='sympy')\n", " 1\n", "\n", " REFERENCES:\n", "\n", " - http://en.wikipedia.org/wiki/Dirac_delta_function\n", "\n", " \n" ] } ], "source": [ "print sage.functions.generalized.FunctionDiracDelta.__doc__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\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", "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Από την εμπειρία μου σε διάφορα ΣΣΥ που έχω χρησιμοποιήσει κατά καιρούς, η υλοποίηση των γενικευμένων συναρτήσεων είναι αρκετά προβληματική . Δεν αποκλείεται όμως στο άμεσο μέλλον να κατασκευασθούν αλγόριθμοι που να τις χειρίζονται σωστά από μαθηματική άποψη. Αρκεί να βρεθεί ένας προγραμματιστής που να γνωρίζει πέρα από προγραμματισμό και στοιχειώδη συναρτησιακή ανάλυση. \n", "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Για να μην τρίζουν τα κόκκαλα του Laurent Schwartz, του μαθηματικού που έθεσε το σωστό μαθηματικό πλαίσιο για τις γενικευμένες συναρτήσεις, στο μάθημα θα χρησιμοποιούμε από τις \"γενικευμένες συναρτήσεις\" του Sage, μόνο την αλματική συνάρτηση unit_step, για πολύ συγκεκριμένους σκοπούς. Για παράδειγμα, για να κατασκευάσουμε πιο σύνθετες ασυνεχείς συναρτήσεις.\n", "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Επιπλέον, με κατάλληλες προσαρμογές στο όρισμά της, η συνάρτηση unit_step μπορεί να λειτουργήσει σαν φίλτρο, έτσι ώστε αν μια συνθήκη $Α$ ικανοποιείται ($x\\geq 1$) να πάρουμε την τιμή 1, κι αν δεν ικανοποιείται ($x< 0$), να πάρουμε την τιμή 0.\n", "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\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", "

" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 4 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "f(x) = unit_step(x)/3 + unit_step(x-1)/3 + unit_step(x-2)/3\n", "pp = plot(f(x),(x,-1,3),exclude=[0,1,2],thickness=2); pp.show(figsize=3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Επιπλέον, χρησιμοποιώντας την διαφορά unit_step(x-a) - unit_step(x-b) δυο βηματικών συναρτήσεων\n", "

" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nNkQkxX8ByijlJvfnpeUAAAAASUVORK5CYII=\n", "text/plain": [ "Graphics object consisting of 3 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "stepsub = plot( unit_step(x+2) - unit_step(x-1), (x,-4,3), exclude=[-2,1],thickness=2); \n", "stepsub.show(figsize=3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\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", "

" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[x01, x02, x03, x04, x05, x06, x07, x08, x09, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20]\n", "\n" ] } ], "source": [ "v = [var('x' + '%02d' % k) for k in range(1,21)]\n", "print v; print type(x13)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "

\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" ] } ], "source": [ "e = sum(C)\n", "print e; print type(e)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Για να επιστρέψουμε στην αναπαράσταση της τελευταίας συμβολικής έκφρασης με λίστα μπορούμε να χρησιμοποιήσουμε τη εντολή operands\n", "

" ] }, { "cell_type": "code", "execution_count": 19, "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" ] } ], "source": [ "ope = e.operands()\n", "print ope; print type(ope)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Ας υποθέσουμε ότι θέλουμε να υψώσουμε στην k-οστή δύναμη την k μεταβλητή στην λίστα με το όνομα ope. Αυτό επιτυγχάνεται ως εξής\n", "

" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, x02^3, x03^6, x04^9, x05^12, x06^15, x07^18, x08^21, x09^24, x10^27, x11^30, x12^33, x13^36, x14^39, x15^42, x16^45, x17^48, x18^51, x19^54, x20^57]\n" ] } ], "source": [ "r = [ope[k]^k for k in range(len(ope))]\n", "print r" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Παρατηρούμε ότι ο καθένας από τους παραπάνω όρους είναι συμβολική έκφραση\n", "

" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x16^45\n", "\n", "45\n" ] } ], "source": [ "print r[15] ; print type(r[15])\n", "print r[15].degree(x16)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "οπότε με την κατάλληλη επιλογή της μεταβλητής στο όρισμα της εντολής degree() λαμβάνουμε την δύναμη 45 για την μεταβλητή x16. Με παρόμοιο τρόπο μπορούμε να πάρουμε τις δυνάμεις όλων των μεταβλητών στην λίστα\n", "

" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57]\n" ] } ], "source": [ "print [(r[k]).degree(v[k]) for k in range(len(ope))]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Ας υποθέσουμε ότι θέλουμε να επιλέξουμε από την λίστα εκείνους τους όρους οι οποίοι έχουν δύναμη μικρότερη από 13. Αυτό μπορεί να υπολοιηθεί με την αλματική συνάρτηση unit_step ως εξής:\n", "

" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x03^6 : 1\n", "x09^24 : 0\n" ] } ], "source": [ "print r[2], ':', unit_step(13 - r[2].degree(v[2]))\n", "print r[8], ':', unit_step(13 - r[8].degree(v[8]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Το αποτέλεσμα μας πληροφορεί ότι η μεταβλητή x03 έχει δύναμη μικρότερη από 13, αφού η συνάρτηση unit_step (με το κατάλληλο όρισμα) μας επέστρεψε 1, ενώ η x09 δεν έχει, αφού η unit_step μας έδωσε 0. Με αυτόν τον τρόπο μπορούμε να περάσουμε από ένα φίλτρο όλους τους όρους με δύναμη μεγαλύτερη από 13. \n", "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Ορίζουμε με τον τελεστή lambda της Python μια συνάρτηση που την ονομάζουμε filter και η οποία έχει δυο ορίσματα, το x και το k, και μας δίνει ως αποτέλεσμα το x πολλαπλασιασμένο με την τιμή 0 ή 1, ανάλογα αν η δύναμη της μεταβλητής x είναι μεγαλύτερη του 13 ή όχι, αντίστοιχα. Έπειτα, εφαρμόζουμε την συνάρτηση filter στην λίστα που μας ενδιαφέρει, όπου ο δείκτης k διατρέχει τα στοιχεία της λίστας r[k], και τέλος καταχωρούμε το αποτέλεσμα σε μια νέα λίστα s.\n", "

" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, x02^3, x03^6, x04^9, x05^12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n" ] } ], "source": [ "filter = lambda x, k: x*unit_step(13 - x.degree(v[k]))\n", "s = [filter(r[k],k) for k in range(len(r))]\n", "print s" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\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", "

" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "577/408\n" ] } ], "source": [ "print our_sqrt(our_sqrt(our_sqrt(2)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\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" ] } ], "source": [ "s = 'our_sqrt('*5 + '2' + ')'*5\n", "print s; print type(s)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\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" ] } ], "source": [ "sin_7 = 'sin('*7 + 'x' + ')'*7\n", "print sin_7; print type(sin_7)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "sin(sin(sin(sin(sin(sin(sin(x)))))))\n", "\n" ] } ], "source": [ "sin_7x(x) = sin_7\n", "print sin_7x(x); print type(sin_7x)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.554016390755629630333389489401\n" ] } ], "source": [ "print sin_7x(pi/2).n(digits=30)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.4 Συμβολική και αριθμητική παραγώγιση" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.4.1 Συμβολική παραγώγιση" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Στο Sage παραγωγίζουμε με την εντολή diff\n", "

" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "the derivative of sin(x) is cos(x)\n" ] } ], "source": [ "print 'the derivative of sin(x) is', diff(sin(x),x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Για να παραγωγίσουμε διαδοχικά ως προς μια μεταβλητή υπάρχει ένα επιπλέον όρισμα στην εντολή diff \n", "

" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[sin(x), cos(x), -sin(x), -cos(x), sin(x)]\n" ] } ], "source": [ "print [diff(sin(x), x, k) for k in range(5)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\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" ] } ], "source": [ "f(x,y) = x^2*y + 2*x*y + x\n", "print 'f =', f\n", "print 'the derivative of f is', f.diff() ; print type(f.diff())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\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", "

" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(x, y) |--> 2*x*y + 2*y + 1\n", "(x, y) |--> x^2 + 2*x\n" ] } ], "source": [ "print f.diff(x)\n", "print f.diff(y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Τι θα συμβεί άραγε αν ζητήσουμε από το Sage να δράσει δυο φορές στην $f$ με το diff δίχως όρισμα;\n", "

" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ (x, y) |--> 2*y (x, y) |--> 2*x + 2]\n", "[(x, y) |--> 2*x + 2 (x, y) |--> 0]\n", "\n" ] } ], "source": [ "H = f.diff().diff() ; print H ; print type(H)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\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", "

" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(x, y) |--> 2*x + 2\n" ] } ], "source": [ "print f.diff(x).diff(y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.4.1 Αριθμητική παραγώγιση" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Στο Sage η αριθμητική παραγώγιση είναι διαθέσιμη μέσω της scipy.misc \n", "

" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "exact derivative : 2.71828182845905\n", "1st order approx : 2.71832713338\n" ] } ], "source": [ "from scipy.misc import derivative as numdif\n", "def f(x):\n", " return exp(x)\n", "print 'exact derivative :', exp(1.0)\n", "print '1st order approx :', numdif(f, 1.0, 1.0e-2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\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" ] } ], "source": [ "var('x')\n", "y = function('y')(x)\n", "dy = y.diff(x)\n", "print dy, type(dy)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\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" ] } ], "source": [ "circle = x^2 + y^2 - 1 == 0\n", "print circle; print type(circle)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\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", "

" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[\n", "diff(y(x), x) == -x/y(x)\n", "]\n" ] } ], "source": [ "yx = solve(dc, dy)\n", "print yx" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.5 Ολοκληρώματα κι αθροίσματα\n", "\n", "### 3.5.1 Ορισμένα κι αόριστα ολοκληρώματα\n", "\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", "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\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", "

" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "erf(x)\n" ] } ], "source": [ "ex2 = exp(-x^2)\n", "aoristo = 2/sqrt(pi)*integral(ex2,x); print aoristo" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Το αποτέλεσμα είναι μια συνάρτηση που το Sage την ονομάζει erf(x), και είναι γνωστή ως η συνάρτηση σφάλματος (error function). Αν πάρουμε βοήθεια για την συνάρτηση αυτή από το Sage μας πληροφορεί ότι ορίζεται ακριβώς με την μορφή του αόριστου ολοκληρώματος\n", "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\\text{erf}(x) = \\frac{2}{\\sqrt{\\pi}} \\int_0^x e^{-t^2} dt\\,, $$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\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": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEdCAYAAAAFP7AiAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAHEhJREFUeJzt3X1wFGWCx/FfD0EhxIT3AGPA4IU3BSYQMbwFUIzoaVjg\n5BJXUa/chUKgBErFrdr1vL062LtzUU98QcXDXSroubq86SmihqiAgARREJSoF17CywokvAhJ6Puj\nDS8hgUwyM89M9/dTlZrK0DP9G4P58fTT/bRl27YtAIDn+EwHAACYQQEAgEdRAADgURQAAHgUBQAA\nHkUBAIBHUQAA4FEUAAB4FAUAAB5FAcCzbNtWWVmZuBgeXkUBwDVmz56tAQMGKDExUcnJyRozZox2\n7NhR5/bl5eVKSkpSeXl5BFMC0YMCgGsUFhZq6tSpWrdund5//31VVFQoOztbJ06cMB0NiEoWi8HB\nrQ4ePKj27dtr9erVGjJkyAV/XlZWpqSkJB05ckSJiYkGEgJmMQKAax0+fFiWZal169amowBRqdEj\ngGeekb74opY3ti79XH22CfVzJvYZLTnqu02zZlLz5lJ8/NnH+HgpIUFKTpY6dJASE2t/v2hh27Zu\nv/12lZeXq6CgoNZtGAHA6+Ia+wbffScVFZ3/XM1Kqa1iTDzn5Rz1fd3p09LJk9Lx49KJE873tWne\n3CmC1FSpVy/p2mulrCypR4/oKIbJkydr69at+uSTTy65bVpamizLkt/vl9/vlyTl5eUpLy8v3DEB\no5gDQJ1sWzp1yimC48elsjJp3z6ptNT52rtX+vZbads2accOqbJSat9eGjZMysmRxo51Rg6RNmXK\nFC1btkyFhYXq3LlzndsxAoDXUQAIiaNHpU8/lT76SPrgA2ndOucwUV6e9OCDzsggEqZMmaIlS5ao\noKBAXbt2vei2FAC8jgJAWOzcKf33f0sLFjgjhbvukubMkTp1Ct8+J0+erPz8fC1dulTdunU783xS\nUpKaNWt2wfYUALyOAkBYnTzplMBjjzmHkp54QvrVr8IzT+Dz+WTV8savvPKKJkyYcMHzFAC8jgJA\nRBw+LD38sPTii9I//IO0cKGZ+YFzUQDwOq4DQES0bCnNny/95S/S229Lw4c7E8kAzKEAEFFjx0qF\nhdLu3dLgwdKuXaYTAd5FASDi+vVzzhiqqpJGjJAOHDCdCPAmCgBGdOninC5aXu5cM8B6bUDkUQAw\npmtXadky50ryqVNNpwG8hwKAUdddJz37rPTyy9Kf/mQ6DeAtnAaKqDBhgrR0qfTVV9LPy/GEXfVp\noLfccovi4uJY/weeQwEgKhw6JF1zjTNBvGxZZBaU4zoAeB2HgBAVWrWSnn9eWrFCWrzYdBrAGxgB\nIKqMHStt2CB9/XX4rxRmBACvYwSAqPIf/+FcIfzEE6aTAO5HASCqXH21s3z0nDnS/v2m0wDuRgEg\n6syaJcXFSf/+76aTAO5GASDqtG7tjALmzWPBOCCcKABEpenTpaZNpf/6L9NJAPeiABCVWraU/umf\npBdeYJ0gIFwoAEStqVOlH3+UFi0ynQRwJwoAUevqq52VQp98UuJqFSD0KABEtQcfdNYHWrUqfPvI\nzc1VTk6O8vPzw7cTIApxJTCimm1L6elS587OYnGhxJXA8DpGAIhqliVNnOjcR5hTQoHQogAQ9fLy\nnFNCuV8AEFoUAKJey5bSmDHSggVMBgOhRAEgJtx3n7NC6Pr1ppMA7kEBICbccIPUoYPEiTpA6FAA\niAlNmkj/+I/OzWKqqkynAdyBAkDMyMtzzgQqKDCdBHAHCgAxY8AAKTVVeu0100kAd6AAEDMsSxo3\nTlqyhMNAQChQAIgpY8dK+/ZJa9aYTgLEPgoAMeX666WOHaU33wzde7IWELyKtYAQcyZPlt55Ryou\ndg4LNRRrAcHrGAEg5uTkSN9/L23dajoJENsoAMSc4cOl+HhpxQrTSYDYRgEg5jRrJt14o7R8uekk\nQGyjABCTbrtN+vRT6dAh00mA2EUBICbdeqtzLcC775pOAsQuCgAx6corpd69KQCgMSgAxKybbpJW\nruQeAUBDUQCIWTfdJO3e7dwnAEDwKADErKws6bLLpPfeM50EiE0UAGJWfLw0ZIhzGAhA8CgAxLSb\nbpI++kg6darh78FaQPAq1gJCTNu4UcrIkFavloYODe61rAUEr2MEgJgWCEhJSdwlDGgICgAxrUkT\nZx6AAgCCRwEg5g0b5iwLUVFhOgkQWygAxLxhw6Tjx6UNG0wnAWILBYCY16+flJDAYSAgWBQAolJh\nYaFycnLk9/vl8/m0dOnSOreNi5N69izQo4/65POd/WrSpIn2798fwdRAbKEAEJWOHTumQCCgefPm\nyarHfR8DAUmytG3bNyotLVVpaan27t2r9u3bhz0rEKviTAcAajNq1CiNGjVKklSfS1WcApB2726n\n7t05px+oD0YAcIXu3SXJ1h13BNSpUydlZ2fr008/NR0LiGoUAFwhJaWj0tJeUCDwF7355ptKSUnR\n8OHDVVRUZDoaELU4BARX6Natm8aN66aFC6Xrr5cyMzO1c+dOzZ07VwsXLrzoa9PS0mRZlvx+v/x+\nvyQpLy9PeXl5kYgOGEMBwDUGDpTmzJH+7/+kLl2kAQMG6JNPPrnk67755hvWAoIncQgIrpGZ6Tyu\nWeM8FhUVqWPHjuYCAVGOEQCi0rFjx/Ttt9+eOQOouLhYmzdvVuvWrZWSkqJHH31Ue/bsOXN456mn\nnlJqaqo6d75Gy5b9pLVrX9SHH36oldwsAKgTBYCotGHDBo0YMUKWZcmyLM2cOVOSdM8992jBggUq\nLS1VSUnJme1PnTqlmTNnavfuPXr99XhlZfXRqlWrlJWVZeojAFGP+wHAVZ57Tpo2TSork5o3v/i2\n3A8AXsccAFxl4ECpspKF4YD6oADgKtde6ywMxzVgwKVRAHCVuDhpwICzZwIBqBsFANcZONApAGa3\ngIujAOA6AwdK+/dLxcWmkwDRjQKA61RfELZ2rdkcQLSjAOA6bdpIXbtKGzfWb/vc3Fzl5OQoPz8/\nvMGAKMOFYHCljIz6nwq6ePFirgOAJzECgCtlZEiffy5VVZlOAkQvCgCulJEhHTsmbd9uOgkQvSgA\nuFK/fs4jVwQDdaMA4EpJSVK3bhQAcDEUAFwrmIlgwIsoALhWRoa0aZOzOByAC1EAcK2MDOmnn6St\nW00nAaITBQDXSk+XLIvDQEBdKAC4VkKC1LMnBQDUhQKAq2Vk1H9JCMBrKAC4Wv/+0ubN0qlTdW/D\nWkDwKtYCgqtlZEgnT0pffeXMCdSGtYDgVYwA4GqBgOTzMQ8A1IYCgKvFx0vXXEMBALWhAOB6XBEM\n1I4CgOtlZEhffOHMBQA4iwKA6/Xr5ywH8dVXppMA0YUCgOv17u1cEVxUZDoJEF0oALheixbO0tAU\nAHA+CgCeEAhQAEBNFAA8oboATp82nQSIHhQAPCE9XSovl777znQSIHpQAPCEQMB5rO0wEGsBwatY\nCwiekJwsdejgFMC4cef/GWsBwasYAcAzmAgGzkcBwDMoAOB8FAA8IxCQdu2SDh40nQSIDhQAPKP6\nfgCMAgAHBQDPuPpq56pgCgBwUADwjCZNpD59KACgGgUAT2EiGDiLAoCnBALS119LJ06YTgKYRwHA\nU9LTpaoq6csvTScBzKMA4CnXXuvcJJ7DQAAFAI9p3lzq0eP8AmAtIHgVawHBc2pOBLMWELyKEQA8\nJxCQNm925gIAL6MA4DmBgHTsGPcGACgAeE71vQG++MJsDsA0CgCe066d5PdLW7aYTgKYRQHAkwIB\nRgAABQDXKCwsVE5Ojvx+v3w+n5YuXVrnthQAQAHARY4dO6ZAIKB58+bJsqyLbhsISPv3RygYEKW4\nDgCuMWrUKI0aNUqSZNv2RbetvjcA4GWMAOBJqalSQoLpFIBZFAA8yedz1gUCvIxDQPCsPn2ktWul\ntLQ0WZYlv98vv98vScrLy1NeXp7hhEB4UQDwrN69nceiom/UsSNrAcF7OAQEz+rTx3ncutVsDsAU\nCgCucezYMW3evFlFPy/1WVxcrM2bN6ukpKTW7Xv0cB43b45UQiC6cAgIrrFhwwaNGDFClmXJsizN\nnDlTknTPPfdowYIFF2zfrJnzyJIQ8CoKAK4xbNgwnT59OujXUQDwKg4BwfO+/FKqrDSdAog8CgCe\nd/KktGOH6RRA5FEAgLhJPLyJAoDnpaRImzaZTgFEHgUAz+vThxEAvIkCgOf17u0UwCUWEAVchwKA\n5733Xq4OHszRvHn5pqMAEcV1APC8V19drGuvTdRVV5lOAkQWIwB43pVXSq1aMREM76EA4HmW5dwi\nkolgeA0FAMi5RSQFAK+hAAA5I4DiYunIEdNJgMihAACdvUk8S0PDSygAQFL37tLll3MYCN5CAQCS\nmjZ1bhLPmUDwEgoA+BkTwfAaCgD4WSAgffWVdOqU6SRAZFAAwM8CAamigpvEwzsoAHhebm6ucnJy\ntH17viyLw0DwDsu2WQMR3lRWVqakpCQdOXJEiYmJkqRu3aRbb5WefNJwOCACGAEA5wgEOBMI3kEB\nAOeoPhOIcTG8gAIAzhEISGVl0vffm04ChB8FAJyjekkIDgPBCygA4BwdOkjJyZwJBG+gAIAamAiG\nV1AAQA3p6dLnn5tOAYQfBQDUkJEh7dkjlZaaTgKEFwUA1NC/v/O4caPZHEC4UQBADV26SG3aSBs2\nmE4ChBcFAM+rXgsoPz9fknOT+IwMCgDuF2c6AGDa4sWLz6wFVC0jQ3r5ZUOBgAhhBADUon9/ZxJ4\nzx7TSYDwoQCAWmRkOI8cBoKbUQBALa68UmrfngKAu1EAQC2YCIYXUABAHfr3d64FYGlouBUFANQh\nI0Pav1/atct0EiA8KACgDtUTwevXm80BhAsFANShUydnMnjdOtNJgPCgAICLuP56CgDuRQEAF5GZ\n6RwCqqw0nQQIPQoAnldzLaBzZWZKx49LX35pIBgQZqwFBM+rbS2gav36SXFx0tq1zp3CADdhBABc\nRHy81KcP8wBwJwoAuITMTGcEALgNBQBcQmam9PXX0qFDppMAoUUBAJeQmek8ckEY3IYCAC7h7/5O\nat2aw0BwHwoAUWvevHlKTU1V8+bNlZmZqfUX+Sf4woUL5fP51KRJE/l8Pvl8PsXHx4ckh2U5F4RR\nAHAbCgBR6bXXXtPMmTP1+OOPa9OmTerbt69uvvlmHTx4sM7XJCUlqbS09MzXDz/8ELI8mZnOmUCs\nDAo3oQAQlebOnauJEydqwoQJ6tGjh55//nnFx8drwYIFdb7Gsiy1a9dO7du3V/v27dWuXbuQ5cnM\nlH78Udq+PWRvCRhHASDqVFRUaOPGjbrxxhvPPGdZlkaOHKk1a9bU+bqjR4/qqquuUufOnfWLX/xC\nW7duDVmmgQMln08qLAzZWwLGUQCIOgcPHlRVVZWSk5PPez45OVmlpaW1vqZ79+5asGCBli5dqkWL\nFun06dMaNGiQdu/eHZJMV1zhXBW8enVI3g6ICiwFgZhh27Ysy6r1zzIzM5VZfb6mpIEDB6pnz56a\nP3++Hn/88Yu+b1pamizLkt/vl9/vlyTl5eUpLy/vvO2ysqQ33mjkhwCiCAWAqNO2bVs1adJE+/bt\nO+/5/fv3XzAqqEtcXJzS09P17bffXnLbb775ps61gM6VlSX98Y/SDz9IXbrUKwYQ1TgEhKjTtGlT\n9e/fX6tWrTrznG3bWrVqlQYNGlSv9zh9+rS+/PJLdezYMWS5hgxxHpkHgFtQAIhKM2bM0Pz58/Xq\nq6/q66+/1qRJk3T8+HHde++9kqQJEyboN7/5zZntf//732vlypX67rvvtGnTJv3yl7/UDz/8oPvv\nvz9kmdq0ka65hnkAuAeHgBCVxo8fr4MHD+p3v/ud9u3bp0AgoHfffffMqZ27du1SXNzZv76HDh3S\nr3/9a5WWlqpVq1bq37+/1qxZox49eoQ0V1aW9MEHIX1LwBjLtrm0Bd5UVlampKQkHTlypF5zAJKU\nny/deadUWirVczoCiFocAgKCMHSo8/jxx2ZzAKFAAQBBuPJKqWtX5gHgDhQAEKSsLAoA7kABAEHK\nypI2b5b+9jfTSYDGoQCAII0c6awKytlAiHUUABCklBSpRw/pvfdMJwEahwKA5+Xm5ionJ0f5+fn1\nfk12trRyJfcHQGzjOgB4VkOuA6i2YoV0223O/QG6dQtTQCDMGAEADTBsmNS0KYeBENsoAKABEhKk\nQYMoAMQ2CgBooOxs6cMPpYoK00mAhqEAgAbKzpaOHpXWrjWdBGgYCgBooPR0Z4no//1f00mAhqEA\ngAZq0kS69VZp2TLTSYCGoQCARsjJkbZskb7/3nQSIHgUANAI2dnO6aCMAhCLKACgERITpREjpKVL\nTScBgkcBAI2UkyN99JH044+mkwDBoQDgeQ1ZC+hc48ZJp09Lb70V4mBAmLEWEDyrMWsB1XTjjZLP\n5ywQB8QKRgBACOTmOvcH2LfPdBKg/igAIATGjnVGAG+8YToJUH8UABACbdo4p4QuXmw6CVB/FAAQ\nIrm50scfSyUlppMA9UMBACEyerR0+eXS66+bTgLUDwUAhEhiovT3fy/96U/cKhKxgQIAQuj++6XN\nm6V160wnAS6NAgBC6OabpdRU6dlnTScBLo0CAELI55MmTXLmAQ4eNJ0GuDgKAAix++5z5gBeecV0\nEuDiKAB4XmPXAqqpXTtp/HjphRecNYKAaMVaQPCsUK4FVNOnn0qDBzv3CbjttpC+NRAyFAA8K5wF\nYNvSkCFSRYVzRpBlhfTtgZDgEBAQBpYl/fM/S+vXS++8YzoNUDtGAPCscI4AJGcUMHSodOoUowBE\nJ0YAQJicOwp4+23TaYALMQKAZ4V7BCA5o4CsLOnECemzz5zrBIBowV9HIIwsS/rXf5U2bpQWLjSd\nBjgfBQCE2bBh0l13SQ89JP3tb6bTAGdRAEAE/Od/SlVV0iOPmE4CnEUBABGQnCzNmSO9/LJz72Ag\nGjAJDM+qngS+5ZZbFBcXp7y8POXl5YVtf6dPSzfdJG3b5iwZ3a5d2HYF1AsFAM+KxFlANe3ZI/Xt\nK/XrJ61YIcXFRWS3QK04BAREUKdOUn6+tGqVNHOm6TTwOgoAiLCRI6VnnpGeftq5UIwxOExhAAoY\nMGmSdPiw9Oij0smT0r/9G0tFIPIoAMCQWbOkyy+XZsyQjhyR5s51vgciJWYOAYXqZh2m8TlwrunT\npfnzndNDBw+Wdu5s2Pu45efB54gsCiDC+Byo6Ve/cm4gc/iwlJ4u/fGPzgqiwXDLz4PPEVkxUwCA\nm/XvL33+uXT33c6SEddcIz37rHT0qOlkcLOQFEBD2i4SDRnsPsK9fUNE4r8tnyO8+6jvaxITpXnz\npNmz89W3rzRtmuT3O4+rV0uVlUHvutGZGvOaWP95NGYfwTL1O5QCiOD2DcFf8PDuI1iR+Bwff5yv\nN96QvvtOeuAB6X/+x1lQrm1b6ZZbpH/5F2n5cueK4p9+CjpOgzI15DVu+Xm45XPUpl5nAdm2rfLy\n8jr/vLKyUmVlZUHtONjXROM+ojET+6j/9tXbRuvnSEpyzhR6+GHn8NCqVc49BebOdeYLqnXqJB0/\nXqlRo8rUpo2UlCQ1by41a3bhY5Mmzj0Jdu2q1KJFZfL5nO8tq+7Havv2VWrZsvp/jmC3D+c+an6O\n5cuD20cw24drHzVPEz506OJ/r6644gpZlzi3uF5LQVRfMg8AiA31WeKkXgVwqREAEIvKysqUkpKi\nkpKSiK0FZEpVlXNXstOnz35J539v2+d/X71NrHPDlda1fYb4eKljx7pfU58RQL0OAVmW5fr/QeBd\niYmJnvj73aqV6QSINpwGCgAeRQEAgEdRAADgUdwQBp5VfXJDfSbLADeiAADAo2LmENC2bds0evRo\ntWzZUgkJCbr++uu1a9cu07EabOLEifL5fHr66adNRwlKZWWlHnnkEfXp00cJCQny+/265557tHfv\nXtPRPGf27NkaMGCAEhMTlZycrDFjxmjHjh2mYzXK7Nmz5fP5NGPGDNNRGmTPnj26++671bZtW8XH\nx6tv3776/PPPTceqU0wUwM6dOzV06FD16tVLq1ev1pYtW/Tb3/5WzZo1Mx2tQf7617/qs88+k9/v\nNx0laMePH1dRUZEee+wxbdq0SW+99Za2b9+u0aNHm47mOYWFhZo6darWrVun999/XxUVFcrOztaJ\nEydMR2uQ9evX68UXX1Tfvn1NR2mQw4cPa/Dgwbr88sv17rvvatu2bXriiSfUKprPv7VjQG5urj1h\nwgTTMUJi165ddkpKir1161b7qquusp966inTkRpt/fr1ts/ns0tKSkxH8bQDBw7YlmXZhYWFpqME\nrby83O7WrZu9atUqe/jw4fb06dNNRwraI488YmdlZZmOEZSoHwHYtq0VK1YoLS1No0aNUnJysjIz\nM7VkyRLT0YJm27YmTJighx9+WD179jQdJ2QOHz4sy7LUsmVL01E8rfrn0Lp1a9NRgvbAAw/o9ttv\n1w033GA6SoMtW7ZMGRkZGj9+vJKTk9WvXz+99NJLpmNdVNQXwP79+3X06FH94Q9/0K233qqVK1dq\nzJgxGjt2rAoLC03HC8qcOXN02WWXacqUKaajhMzJkyc1a9Ys3XnnnUpISDAdx7Ns29aDDz6oIUOG\nqFevXqbjBGXx4sUqKirS7NmzTUdplOLiYj333HPq3r273nvvPU2aNEnTpk3Tn//8Z9PR6mZ4BHKB\nRYsW2QkJCXZCQoJ9xRVX2AUFBbZlWfZdd9113nY5OTn2nXfeaSjlpdX2OTp06GDv3bv3zDaxcAio\n5uf4+OOPz/xZRUWFffvtt9sZGRl2eXm5wZSYNGmSnZqaau/Zs8d0lKCUlJTYycnJ9hdffHHmuVg9\nBHTZZZfZQ4YMOe+5adOm2YMGDTKU6NKi7qbwo0ePVmZm5pnv27Ztq7i4uAsOmfTs2VOffPJJpOPV\nW83P8frrr+vAgQNKSUk581xVVZVmzJihJ598UsXFxSZiXlLNz1E9cV1ZWak77rhDJSUl+uCDD/jX\nv0FTpkzR22+/rcLCQnW82OpgUWjjxo06cOCA+vfvL/vnM9Krqqq0evVqPfPMMzp58mTMXKPRsWPH\nWn9Pvfnmm4YSXVrUFUCLFi3UtWvX85677rrrtH379vOe27Fjh7p06RLJaEGp+TkmTpyonJyc87bJ\nzs7WhAkTdN9990U6Xr3V9vOo/uVfXFysDz/8MLrPcnC5KVOmaMmSJSooKFDnzp1NxwnayJEjtWXL\nlvOeu/fee9WzZ0/NmjUrZn75S9LgwYMv+D21ffv2qP49FXUFUJuHHnpIubm5Gjp0qEaMGKF33nlH\ny5cvV0FBgelo9daqVasLflE2bdpUHTp0UFpamqFUwauqqtK4ceNUVFSk5cuXq6KiQvv27ZMktW7d\nWk2bNjWc0DsmT56s/Px8LV26VC1atDjzc0hKSoqZU6RbtGhxwZxFixYt1KZNm5g7UWL69OkaPHiw\nZs+erfHjx2vdunV66aWX9OKLL5qOVjfTx6Dq65VXXrHT0tLs+Ph4Oz093V62bJnpSI2Wmpoa9XMA\nNX3//fe2z+c778uyLNvn89kFBQWm43lK9X/3ml8LFy40Ha1RRowYEZNzALZt2ytWrLB79+5tN2/e\n3O7Vq5f98ssvm450USwFAQAeFfWngQIAwoMCAACPogAAwKMoAADwKAoAADyKAgAAj6IAAMCjKAAA\n8CgKAAA8igIAAI+iAADAo/4fbFEL4CypBbsAAAAASUVORK5CYII=\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 (, line 2)", "output_type": "error", "traceback": [ "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m2\u001b[0m\n\u001b[0;31m pprint integral(Integer(1)/x**Integer(2) , (x,a,b))\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" ] } ], "source": [ "a , b = var(' a , b')\n", "pprint integral(1/x^2 , (x,a,b))" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "

\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", "

" ] }, { "cell_type": "code", "execution_count": 66, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[a > 0, b > a]\n" ] } ], "source": [ "print assumptions()" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "

\n", "Οι περιορισμοί που επιβάλλουμε στις συμβολικές μεταβλητές την εντολή assumptions αναιρούνται με την εντολή forget \n", "

" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[a > 0]\n", "[]\n" ] } ], "source": [ "forget(b > a); print assumptions()\n", "forget(a > 0); print assumptions()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.5.2 Συμβολικά αθροίσματα" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\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", "

" ] }, { "cell_type": "code", "execution_count": 73, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-1/720*x^6 + 1/24*x^4 - 1/2*x^2 + 1\n", "\n" ] } ], "source": [ "Tcos = taylor(cos(x),x,0,6); print Tcos; print type(Tcos)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\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" ] } ], "source": [ "var('x, a')\n", "f = function('f')(x)\n", "Tf = taylor(f(x), x, a, 4)\n", "print Tf; print type(Tf)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\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", "

" ] }, { "cell_type": "code", "execution_count": 79, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " at 0x7f230d8cec80>\n", "\n" ] } ], "source": [ "g = series(cos(x), x0=0, n=None)\n", "print g; print type(g)" ] }, { "cell_type": "code", "execution_count": 80, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n", "-x**2/2\n" ] } ], "source": [ "print g.next()\n", "print g.next()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Ακόμα καλύτερα, χρησιμοποιώντας και πάλι την περικτική λίστα της Python [ F for k in L ] παίρνουμε μια λίστα σε μορφή Python, όπου τα στοιχεία της είναι οι όροι της σειράς Taylor,\n", "

" ] }, { "cell_type": "code", "execution_count": 81, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[x**4/24, -x**6/720, x**8/40320, -x**10/3628800, x**12/479001600]\n" ] } ], "source": [ "print [g.next() for k in range(5)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.6.3 Δυναμοσειρές " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\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" ] } ], "source": [ "var('x')\n", "q = x^3+5*x + 7\n", "pq = q.power_series(QQ)\n", "print pq; print type(pq)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\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", "1 + O(x^4)\n" ] } ], "source": [ "invpq = 1/pq\n", "print invpq; print type(invpq); print pq*invpq" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\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", "

" ] }, { "cell_type": "code", "execution_count": 86, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1/7 - 5/49*x + O(x^2)\n", "\n" ] } ], "source": [ "trinvpq = invpq.truncate_powerseries(2); \n", "print trinvpq; print type(trinvpq)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Μπορούμε επιπλέον να αποκόψουμε μια δυναμοσειρά σε ένα πολυώνυμο με την μέθοδο polynomial(), ή εναλλακτικά με την μέθοδο trancate()\n", "

" ] }, { "cell_type": "code", "execution_count": 87, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-174/2401*x^3 + 25/343*x^2 - 5/49*x + 1/7\n", "-5/49*x + 1/7\n" ] } ], "source": [ "print invpq.polynomial()\n", "print invpq.truncate(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.6.3 Προσεγγίσεις" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Με την προσέγγιση Padé προσεγγίζουμε μια συνάρτηση από μια ρητή συνάρτηση, όπου ο βαθμός του πολυωνύμου του αριθμητή και του παρανομαστή είναι δοσμένοι θετικοί ακέραιοι. Οι συντελεστές των πολυωνύμων είναι ρητοί αριθμοί και προσδιορίζονται από την μέθοδο Padé, στην οποία δεν θα επεκταθούμε περισσότερο εδώ. Συνήθως η προσέγγιση Padé μας δίνει μια καλύτερη προσέγγιση από τις σειρές Taylor, ιδίως όταν η συνάρτηση που θέλουμε να προσεγγίσουμε έχει πόλους. Στο Sage η προσέγγιση Padé μιας συνάρτησης υπολοιείται με την \"μέθοδο\" pade,\n", "που δέχεται σαν ορίσματα τον βαθμό του αριθμητή και του παρανομαστή.\n", "

" ] }, { "cell_type": "code", "execution_count": 88, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(60514/59*z^4 - 1428000/59*z^2 + 3155040/59)/(z^6 + 3814/59*z^4 + 149520/59*z^2 + 3155040/59)\n", "\n" ] } ], "source": [ "z = PowerSeriesRing(QQ, 'z').gen()\n", "pad = cos(z).pade(5,6)\n", "print pad; print type(pad)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\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", "

" ] }, { "cell_type": "code", "execution_count": 91, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "e^a\n" ] } ], "source": [ "var('a,n,x')\n", "print lim( (1+a/n)^n,n=oo)" ] }, { "cell_type": "code", "execution_count": 92, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "+Infinity\n" ] } ], "source": [ "print lim(1/x - log(1/x) , x=oo ,dir='+')" ] }, { "cell_type": "code", "execution_count": 93, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1\n" ] } ], "source": [ "print lim( x^(1/x) , x=oo)" ] }, { "cell_type": "code", "execution_count": 94, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-Infinity\n" ] } ], "source": [ "print lim( 1/x , x=0 , dir='-')" ] }, { "cell_type": "code", "execution_count": 95, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ind\n" ] } ], "source": [ "print lim(sin(1/x), x = 0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\n", "Με ind το Sage εννοεί απροσδιοριστία, δηλαδή δεν υπάρχει όριο αλλά οι τιμές της συνάρτησης παραμένουν φραγμένες.\n", "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.6 Δεσμευμένα ακρότατα" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\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", "

" ] }, { "cell_type": "code", "execution_count": 96, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "optimize x*y*z subject to x^2 + y^2 + z^2 - 1 == 0\n" ] } ], "source": [ "var('x,y,z')\n", "target = x*y*z\n", "constraint = x^2 + y^2 + z^2 - 1 == 0\n", "print 'optimize', target, 'subject to', constraint" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

\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", "

" ] } ], "metadata": { "kernelspec": { "display_name": "SageMath 7.5.1", "language": "", "name": "sagemath" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.13" } }, "nbformat": 4, "nbformat_minor": 0 }