{ "metadata": { "name": "", "signature": "sha256:0d4667541f44ec03ba786e4ab054d3f34e373a4bd8de1e45f87dac11d6aa9bfc" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Taller Python Cient\u00edfico - PyConES 2014\n", "## Parte II: Introducci\u00f3n a SymPy (en 15 min)\n", "\n", "#### Juan Luis Cano, Kiko Correoso y \u00c1lex S\u00e1ez ([@Pybonacci](https://twitter.com/Pybonacci))\n", "#### Fran Navarro, Zuria Bauer y Daniel Domene ([@CAChemEorg](http://twitter.com/CAChemEorg))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\"Licencia
Taller de Python Cient\u00edfico por Pybonacci y CAChemE que se distribuye bajo una Licencia Creative Commons Atribuci\u00f3n 4.0 Internacional." ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Introducci\u00f3n al c\u00e1lculo simb\u00f3lico" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Con este documento vas a aprender a calcular derivadas, integrales, l\u00edmites... y resolver ecuaciones con Python de forma libre (\u00a1y gratuita!) tal y como trabajan Mathematica, Maple o Mupad.\n", "\n", "Hay dos sistemas de \u00e1lgebra computacional (CAS, computer algebraic system) a destacar para Python:\n", "\n", "* [SymPy](http://sympy.org/en/index.html) - Biblioteca o librer\u00eda de Python que se puede utilizar en cualquier programa de Python, o en una sesi\u00f3n de IPython y que proporciona poderosas funciones de CAS.\n", "* [Sage](http://www.sagemath.org/) - Sage es un entorno CAS completo y muy potente que tiene como objetivo proporcionar un sistema de c\u00f3digo abierto compitiendo con Mathematica y Maple. Sage no es una librer\u00eda de Python regular, sino m\u00e1s bien un entorno de CAS que utiliza Python como lenguaje de programaci\u00f3n.\n", "\n", "Sage es, en algunos aspectos, m\u00e1s poderoso que SymPy, pero ambos ofrecen una funcionalidad CAS muy completa. La ventaja de SymPy es que es una librer\u00eda m\u00e1s de Python y se puede usar directamente con c\u00f3digo o integrar en con el bloc de notas IPython. En esta lecci\u00f3n, por lo tanto, vamos a ver c\u00f3mo utilizar SymPy con Notebooks de IPython. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![](http://sympy.org/static/images/logo.png)\n", "\n", "Hoy veremos c\u00f3mo:\n", "\n", "* Crear s\u00edmbolos y expresiones.\n", "* Manipular expresiones (simplificaci\u00f3n, expansi\u00f3n...)\n", "* Calcular derivadas e integrales.\n", "* L\u00edmites y desarrollos en serie.\n", "* Resoluci\u00f3n de ecuaciones.\n", "* Resolci\u00f3n de EDOs.\n", "* Matrices\n", "\n", "SymPy se puede usar directamente online sin registro alguno en [SymPy Live](http://live.sympy.org/), [Sympy Gamma](http://www.sympygamma.com/) o mediante Notebooks con registro gratuito en [Cloud Sage](https://cloud.sagemath.com/). Existen otras alternativas gratutias (pero comerciales) online como [Wakari](https://www.wakari.io/), adem\u00e1s el futuro de IPython pasa por [Jupyter](http://jupyter.org/) (notebooks colaborativos para Julia, Python y R). Si lo que quieres instal\u00e1rtelo en tu ordenador recomendamos [Anaconda de Continuum](http://nbviewer.ipython.org/github/AeroPython/Curso_AeroPython/blob/master/Notebooks/Clase0_Bienvenido.ipynb)." ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Empezando con SymPy" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Creaci\u00f3n de s\u00edmbolos" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lo primero, como siempre, es importar aquello que vayamos a necesitar. En SymPy hay un comando muy sencillo que nos facilita esta tarea:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sympy import init_session" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "init_session(use_latex=True)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "IPython console for SymPy 0.7.5 (Python 3.4.1-64-bit) (ground types: python)\n", "\n", "These commands were executed:\n", ">>> from __future__ import division\n", ">>> from sympy import *\n", ">>> x, y, z, t = symbols('x y z t')\n", ">>> k, m, n = symbols('k m n', integer=True)\n", ">>> f, g, h = symbols('f g h', cls=Function)\n", "\n", "Documentation can be found at http://www.sympy.org\n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "WARNING: Hook shutdown_hook is deprecated. Use the atexit module instead.\n" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Podemos ver el comando `init_session` ha llevado a cabo algunas acciones por nostros:\n", "\n", "* Gracias a `use_latex=True` obtenemos la salida en $\\LaTeX$.\n", "* __Ha creado una serie de variables__ para que podamos ponernos a trabajar en el momento." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Nota: \n", "En Python, no se declaran las variables, sin embargo, no puedes usar una hasta que no le hayas asignado un valor. Si ahora intentamos crear una variable `a` que sea `a = 2 * b`, veamos qu\u00e9 ocurre:\n", "
" ] }, { "cell_type": "code", "collapsed": false, "input": [ "a = 2 * b" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'b' is not defined", "output_type": "pyerr", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0ma\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m2\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mb\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;31mNameError\u001b[0m: name 'b' is not defined" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Como en `b` no hab\u00eda sido creada, Python no sabe qu\u00e9 es `b`. Esto mismo nos ocurre con los s\u00edmbolos de SymPy. __Antes de usar una variable, debo decir que es un s\u00edmbolo y asign\u00e1rselo:__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## \u00bfVariables simb\u00f3licas?\n", "\n", "A diferencia de lo que estamos acostumbrados, las variables en SymPy son inc\u00f3gnitas. Podemos crear un nuevo s\u00edmbolo con la instancia de clase `Symbol`:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#creamos la variable/inc\u00f3ginta/s\u00edmbolo 'x'\n", "x = Symbol('x')\n", "x**2" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$x^{2}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAABQAAAAUBAMAAAB/pwA+AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEHarIkSJZt3NVLsy\nme8Q6PJIAAAAfklEQVQIHWNggIDcvQJQFpsD8wQok8OB5wuUyRfA8hXKZGDg+ghncijAmblwFvsF\nODOMIQbK5pm1aiOUyff//wcGBiFlVzUFsAhjAnsTB8RSNgG2j1wOEFEGzg1gBojgV4Azzx9gEABz\nuAT0GZggzPgF+xncISqElYTSC8BMADLaFmiW5nq4AAAAAElFTkSuQmCC\n", "prompt_number": 4, "text": [ " 2\n", "x " ] } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "\u00bfQu\u00e9 ha pasado aqu\u00ed arriba? En primer lugar creamos el s\u00edmbolo con la variable $x$ y despu\u00e9s vimos su valor. Si te has fijado, a diferencia de c\u00f3digo normal en Python (o MATLAB), $x^2$ no devuelve ning\u00fan valor (n\u00famero, texto, verdadero o falso) simplemente devuelve esa inc\u00f3gnita al cuadrado en el que a priori no sabemos que contiene. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As\u00ed, escribiendo una expresi\u00f3n con esta variable no habr\u00e1 evaluaci\u00f3n num\u00e9rica:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "(x + pi)**2" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left(x + \\pi\\right)^{2}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAEgAAAAbBAMAAAAt2dQtAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAMmYiu80QdonvRN2Z\nVKvu110NAAABZElEQVQoFY2Sv0vDQBTHv0na/CBE+w+oWcQ1qJOTKDgJdomDWAiIdBPFQSctguBQ\npKM4qZPgYDdxEIqzQzcHcXARR0HI4BLf5d21HJamb7j3vt/78O5dckBRNFeTIgRuNFYthPzI+CmE\nvCvrtxACgnQEyN8dAWoSY4S0DA6zQr7ZoWV+MJC7H7Te4hpYHwKV6aDa+wqchgZtaYo2vSz7hhdp\n9qum7BbLO82FDqHGu+KC9aOFQ/kxJORkFB1A7FIsAXbDfPCrLCV0NrE/M0fONLtPgJu4aSBHY8jo\nutGe2H9j6JI6obzIAr2ZSvgU1hT7BAHjPNFpHD/G8aZwJtEWSUJ0HNUVJCL3Oz0j//fy7jR4kBzD\nSXJGHWenyF+RHPwcuO+uYZYZBTltXAjnhW1quHNQPwlZKagU4ks4G2z78u46JJXV4iJ/LtKjdNMv\nqXL51sCyZutiW8lhj67XwAoV/i+bct4/Xs5GamR386YAAAAASUVORK5CYII=\n", "prompt_number": 5, "text": [ " 2\n", "(x + \u03c0) " ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Igual que con Python, se pueden definir simbolos de forma alternativa y m\u00e1s compacta de la siguiente forma:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "x, y, z, t = symbols('x y z t')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Para ver qu\u00e9 tipo de variable es $x$:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "type(x)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 7, "text": [ "sympy.core.symbol.Symbol" ] } ], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Recuerda que seguimos trabajando con Python, por lo que si vuelvo a asignar un valor nuevo a $x$:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "x = 3\n", "x**2" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$9$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAAoAAAAOBAMAAADkjZCYAAAALVBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAEJmJdiLvZqu7zURUMveL\naM0AAABYSURBVAgdY2AQMlFlYGBMZwgLYOBIYOCYwMC3gIH5IYPcBAaW1wxsQPZzBuYHDFxPGBiW\nMBx+zsDA7nL5DQMQcDwEkVwNDOypDPcCGFgWMi4H8o00NzAAAPA4EsdooCJwAAAAAElFTkSuQmCC\n", "prompt_number": 8, "text": [ "9" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "__Las conclusiones son:__\n", "\n", "* __Si quiero usar una variable como s\u00edmbolo debo crearla previamente.__\n", "* Las operaciones con s\u00edmbolos devuelven s\u00edmbolos.\n", "* Si una variable que almacenaba un s\u00edmbolo recibe otra asignaci\u00f3n, cambia de tipo.\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Nota: Por defecto, SymPy entiende que los s\u00edmbolos son n\u00fameros complejos. Esto puede producir resultados inesperados ante determinadas operaciones como, por ejemplo, lo logaritmos. __Podemos indicar que la variable es real, entera... en el momento de la creaci\u00f3n__:
" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#creamos s\u00edmbolos reales\n", "x, y, z, t = symbols('x y z t', real=True)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "#preguntamos si son reales\n", "x.is_integer is None" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 10, "text": [ "True" ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "
__Las variables de tipo `Symbol` act\u00faan como contenedores en los que no sabemos qu\u00e9 hay (un real, un complejo, una lista...), imag\u00ednatelas como inc\u00f3gnitas__.
" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Expresiones y manipulaciones algebraicas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Comencemos por crear una expresi\u00f3n como: $\\cos(x)^2+\\sin(x)^2$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "expresion = cos(x)**2 + sin(x)**2\n", "expresion" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\sin^{2}{\\left (x \\right )} + \\cos^{2}{\\left (x \\right )}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAJ4AAAAZBAMAAAAyHoooAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAMnZUzRC73UTviSKZ\nZqszMyTAAAACR0lEQVQ4EY2UP2gUQRTGv83deps9FqOkTpazixAPhIg2Cbj+KZcgFhZiIYIE/xDL\nNNeJNoliEVBwCwtJVK4KBhW30UIsDrESCwMKFlpEMMQYXeftzNvb2ezdOM375r3f993M7nJAfrmv\nX+W3Jm3El/HZlJGfG/E5jLbzBoM24ot42TJk5Mf/gU+GeYNRG/HZNMLqyCRvyJBYjlu32ebGqVrh\n/RqL8toDt7YY/yjFMd5XWZRXE+5EDt1wIGI7K7vNnXztiTM0fHAiFHowc9sLclTxGcnXXnh9j6Lu\nJwmp613TUSnL88pwa19jauUvhu/tHfc55pEQ0+NPx0SDpFicZ79ZauJM4yHIRgNaGn4auIrLwHG/\n/luOgUuAHXmztSngvexx3mrTumvNYZef2hSv4TdCRJR3Efij5rgGuKH7syIe4yE9L0BlvRbBWk9t\nitfw2sZ+UN554AfnLYrzoXqOtqOyp85nb1OrCWylNjmDhtsPkpjyLuh5wG6fcMpzg+DEnSCIAYd+\ncrIFbKQ2saEl8rr4M3ibxTxxAZE0hDB71cXzbac2wsTS8CPA92KeeMCV8AAGRF7hfQRiMhjD2Uxt\nMo5eXxc/HGKGLpu/7xNgvnkFLwT/VnrU+bDawbJ1C9Uotak8Db/57kNrJPkykqxN/PqkAPE9n21M\nP+6I7UnZ4jz721gbz5e+gmyKps+/gPNE1VqbG/UFqTiP+1rdiWtjwIu54fpSOXTWXmsnXiRnuHGK\nRd9qxLP/04zsm2fE6+p6XvYg++bl8H+XJanULdBSMwAAAABJRU5ErkJggg==\n", "prompt_number": 11, "text": [ " 2 2 \n", "sin (x) + cos (x)" ] } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "\u00bfQu\u00e9 est\u00e1 ocurriendo? Python detecta que a es una variable de tipo `Symbol` y al operar con ella nos devuelve otra variable de Sympy." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Nota: \n", "No debes olvidar en ning\u00fan momento que est\u00e1s utilizando Python, por lo tanto __el operador `=` est\u00e1 realizando una asignaci\u00f3n__. La variable `expr` pasa a contener `cos(x)**2 + sin(x)**2`, pero esto no es una ecuaci\u00f3n, m\u00e1s adelante veremos c\u00f3mo definirlas.\n", "
" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "`simplify()`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Podemos pedirle que simplifique la expresi\u00f3n anterior:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "simplify(expresion)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$1$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAPBAMAAAArJJMAAAAAJFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAADHJj5lAAAAC3RSTlMAzRAiu5mrdu/dZmiL4QAAAAAjSURBVAgd\nY2BgEGJgYDDZxMCgEgYkGNhJJVgzdmYB9TEwAACPpQrvlUCHcAAAAABJRU5ErkJggg==\n", "prompt_number": 12, "text": [ "1" ] } ], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "En este caso parece estar claro, lo que quiere decir m\u00e1s simple, pero como en cualquier _CAS_ el comando `simplify` puede no devolvernos la expresi\u00f3n que nosotros queremos. Cuando esto ocurra necesitaremos usar otras instrucciones." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "`evalf()`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Podemos obtener el valor num\u00e9rico haciendo uso del m\u00e9todo `.evalf()`__" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#ver pi con 25 decimales\n", "pi.evalf(25)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$3.141592653589793238462643$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAQgAAAAPBAMAAADqqkzAAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIom7VJlmdt1E7xDN\nMqsI8sYEAAAEFklEQVQ4EcWV32scVRTHvzO7O5vs7G5GoSIiGLakEcFmtQpqH7II+mjWlDxEbTMI\nttAHsxZCH6w0UHyTZF5EEMGEiNgf0kGQSi1mqdgiQbME+lbsgjYVfzStjWmbXTp+zzm7of+BAztz\n9nvP93PO3nvnLvBg6RnolY/lcYkfiS7GlyL4o1MBnLFdDYqlQw0T1ZB/tzAO//BAJ6cwM1oq4evB\nVwGntL1iHo1w5tB4lysIo7mDT3ZEpTlVjIQiOMPaxLFOdDq5DZwNnXl8B/cucC7K1CGiGXJJUkMG\n+M1yvCRJ7vmf45EA25DeMI9GqKJYIZ5cRSjN/xFvSM1jHVp2HX3T/O4/uyZNZBc60flrAfAH8Cv+\nBE4A55EqQ0Qz5He+A7wMPGo5GSY3i3MolnG0gjvm0Sgdwqkr1xBKy/djlxUzWu9xLDKJ11Fp4qHv\nO1GTT7SBofgLYK3h3ZTvTX7MUJSv24FvLMcF3EZfHW4LH0d+G+rRyC3Dn1auIXRkkj3zYrGt8rYc\n1kT//U34t9hatByzidScuJpyg6yfNvHpbuywHIofYbGMLBdOlkM9GvXeit0QINcQOvICs3hpsc5u\n+MEkmQkv6DaxemAvcIozEXJ0Nu77aZD7S0WAhuL+qQaKyZvhVk4ZOc7EBrPzVQHOEifR2sYO4xpC\nR9orU1G3mNBQeFw9thxn0G1iNx6LMAQs17gC/2DxAnIVqKiGVOzwR0+0424Of657A3nu5pX3pQd6\nLMokS4BwDSEjfjvEZyZulX+iIS5djv6tJoDUNPK1tMxETxmLLWROMokiYIbn4O1dPt7NWaR+ES/K\nTLhf8kaPRW9d3owg3C6ip+wnMV6LVWSS0XJC1ybSjfuayHAvHnhvqALsgbxBnqy3iDDDRPA2vM24\nk3OEund4ZZ0PnIjVo5HXxORJ5XYRpN0BJqNOMaE5AVLqlJn4Ct0milxfKYq1GNkm69bhbahohr+4\nWyI2f6UCzZFzgFexhQeA4QqyTViUi1FYV64i+LJy5BSbCFU0Wl8LKZlDnYlXrl/fvKYRHZmWqD8D\nL7FTbm3vropmIGbi2xusGlqOf0+SkW+CUz0cqkcjWaZV5SrCaHw7JiMVjZYro0fPAHtFsUAT5yTD\nVa3jYFC4iUIV2SDNPTGnohmqwAeY5x4JNAeFf7ka87gSCGA2UI9GuQB4iswFKMJoI9wT1CgazQsx\nUuPxoqV559EgTfBwPhjgSHwuxMOlgd+Bp3G2oqIaeDiz5CfcEJaDNJvILvkXgP1I3zaPRr1L8GrG\nFYSNpPp9vh1SzGj4cOx5YAbYd3om5CGYrFq0befr3N0ytpwk3Eju2N+AimpwRq9ysa/yD0xz4Ah0\nYE/EN3CMd/VohF9GxzkkXEUYbWBfoyMqjfH/fv0H1DXIUHmhQVgAAAAASUVORK5CYII=\n", "prompt_number": 13, "text": [ "3.141592653589793238462643" ] } ], "prompt_number": 13 }, { "cell_type": "code", "collapsed": false, "input": [ "#el mismo resultado se obtiene ocn la funci\u00f3n N()\n", "N(pi,25)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$3.141592653589793238462643$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAQgAAAAPBAMAAADqqkzAAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIom7VJlmdt1E7xDN\nMqsI8sYEAAAEFklEQVQ4EcWV32scVRTHvzO7O5vs7G5GoSIiGLakEcFmtQpqH7II+mjWlDxEbTMI\nttAHsxZCH6w0UHyTZF5EEMGEiNgf0kGQSi1mqdgiQbME+lbsgjYVfzStjWmbXTp+zzm7of+BAztz\n9nvP93PO3nvnLvBg6RnolY/lcYkfiS7GlyL4o1MBnLFdDYqlQw0T1ZB/tzAO//BAJ6cwM1oq4evB\nVwGntL1iHo1w5tB4lysIo7mDT3ZEpTlVjIQiOMPaxLFOdDq5DZwNnXl8B/cucC7K1CGiGXJJUkMG\n+M1yvCRJ7vmf45EA25DeMI9GqKJYIZ5cRSjN/xFvSM1jHVp2HX3T/O4/uyZNZBc60flrAfAH8Cv+\nBE4A55EqQ0Qz5He+A7wMPGo5GSY3i3MolnG0gjvm0Sgdwqkr1xBKy/djlxUzWu9xLDKJ11Fp4qHv\nO1GTT7SBofgLYK3h3ZTvTX7MUJSv24FvLMcF3EZfHW4LH0d+G+rRyC3Dn1auIXRkkj3zYrGt8rYc\n1kT//U34t9hatByzidScuJpyg6yfNvHpbuywHIofYbGMLBdOlkM9GvXeit0QINcQOvICs3hpsc5u\n+MEkmQkv6DaxemAvcIozEXJ0Nu77aZD7S0WAhuL+qQaKyZvhVk4ZOc7EBrPzVQHOEifR2sYO4xpC\nR9orU1G3mNBQeFw9thxn0G1iNx6LMAQs17gC/2DxAnIVqKiGVOzwR0+0424Of657A3nu5pX3pQd6\nLMokS4BwDSEjfjvEZyZulX+iIS5djv6tJoDUNPK1tMxETxmLLWROMokiYIbn4O1dPt7NWaR+ES/K\nTLhf8kaPRW9d3owg3C6ip+wnMV6LVWSS0XJC1ybSjfuayHAvHnhvqALsgbxBnqy3iDDDRPA2vM24\nk3OEund4ZZ0PnIjVo5HXxORJ5XYRpN0BJqNOMaE5AVLqlJn4Ct0milxfKYq1GNkm69bhbahohr+4\nWyI2f6UCzZFzgFexhQeA4QqyTViUi1FYV64i+LJy5BSbCFU0Wl8LKZlDnYlXrl/fvKYRHZmWqD8D\nL7FTbm3vropmIGbi2xusGlqOf0+SkW+CUz0cqkcjWaZV5SrCaHw7JiMVjZYro0fPAHtFsUAT5yTD\nVa3jYFC4iUIV2SDNPTGnohmqwAeY5x4JNAeFf7ka87gSCGA2UI9GuQB4iswFKMJoI9wT1CgazQsx\nUuPxoqV559EgTfBwPhjgSHwuxMOlgd+Bp3G2oqIaeDiz5CfcEJaDNJvILvkXgP1I3zaPRr1L8GrG\nFYSNpPp9vh1SzGj4cOx5YAbYd3om5CGYrFq0befr3N0ytpwk3Eju2N+AimpwRq9ysa/yD0xz4Ah0\nYE/EN3CMd/VohF9GxzkkXEUYbWBfoyMqjfH/fv0H1DXIUHmhQVgAAAAASUVORK5CYII=\n", "prompt_number": 14, "text": [ "3.141592653589793238462643" ] } ], "prompt_number": 14 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "subs()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "El m\u00e9todo `subs` tambi\u00e9n puede utilizarse para sustituir los s\u00edmbolos en expresiones:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "expresion = (sin(x) + 3 * x)\n", "expresion.subs(x, pi)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$3 \\pi$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAABYAAAAOBAMAAADZH/H+AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIom7VJlmdt1E7xDN\nMqsI8sYEAAAAjElEQVQIHWNgEFIyYYACxgAG/wQom/0LA38DlM25kmH/ASgbSMHVANlHGRjq////\n/5WBgVcjgIFJ112sUACkUuvCFQZF9gsgJgPXagYGA74NDAyMAgzMXxh4H3AABfl/MzB/Y2BN4AeK\ncxkwcHxk2L+BfwIDA1sCg38BQwUDlwJQ0dRQSwYGMwY+BQYAbFgct5yPkD8AAAAASUVORK5CYII=\n", "prompt_number": 15, "text": [ "3\u22c5\u03c0" ] } ], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Si queremos representar estas expresiones podemos hacerlo con la funci\u00f3n `plot`. Para ello, cargamos las librer\u00edas necesarias mediante el siguiente c\u00f3digo:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sympy.plotting import plot\n", "\n", "# Representa las figuras en l\u00ednea con el documento (no en una ventana emergente)\n", "%matplotlib inline" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Representamos $f(x) = x^2$ $\\forall \\: x \\in [-5,5]$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plot(x**2, (x, -5, 5))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n/H9c3A3He/r6sAAAAABJRU5ErkJggg==\n", "text": [ "" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 17, "text": [ "" ] } ], "prompt_number": 17 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Podemos adem\u00e1s representar funciones en 3D de forma an\u00e1loga:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sympy.plotting import plot3d\n", "\n", "plot3d(x*y, (x, -5, 5), (y, -5, 5))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\ngw/y1ltvAX+XoUmytLWE66+/Ho/HwxNPPIHD4fBREocPHz7OV2Lr1q2sW7cuKEW6uRA4Psdut/P9\n73+f1tZWnnnmGdLT04P1sReNUL3gwwhLxsLgs2XN98wzzxy3Vf7CF77AF77wBeB4X4knn3yS1tZW\ntFotlZWVbN26laqqKqKionC73TidzgUV6WaD//gcrVaLQqHg2LFj3HnnnezcuZNHH310VYt5AG1t\nbat6/s8iwkH3M4TPkjXffNzkYn0ltm7dSklJiW8YZqCvxGyddP5j2CMjI3G5XDz88MNUV1fz8ssv\nk5eXF/LvIIxTE+Gg+xlC2JpvdgiCQExMDBdddBEXXXQR4M1S29vbfRM4amtrkcvlbNy48ThfCY/H\ng91uP66TTuKKVSoVERERNDU1sWvXLq6++mreeuutkHpMnE5ez59VhDndzxBW0pqvr6+P6667jtHR\nUQRB4Oabb+bWW28N+nlWCrP5SgwMDJCSkuKzunS73YyMjHDJJZcwNTXFli1bKCgoYHx8nLvuuosv\nfvGLPr+JUKCvr49///d/p6WlZc3Yjp7GCBfSwvDiL3/5i08yduONN3L33XeH5DzDw8MMDw+zceNG\nzGYzlZWV/PGPf1wzSgn4u6/E+++/z+OPP05HRwdnn3026enpZGdn8+6771JaWkpiYiKHDh3iyJEj\ndHZ2+lzDgo216PV8GiNcSAvDi0svvZRLL7005OdJSUkhJSUFgMjISEpKShgcHFxTQVfylWhvb2f9\n+vW899576HQ6ampqeOmll7j99tt9zQdASGfNrVWv57WIcKYbRsjR3d3Njh07aGhoIDIycrWXE3RI\nI3xCjbDX82mFML0QxurAbDZzzjnncO+993LVVVet9nLWJFbS6zmMBSMcdMNYeTidTi6//HIuvfRS\ndu3atdrL+cwglF7PYSwYcwbd1VVmh7FmIYoiN954I6WlpSsScN1uN5s2bTqOQ/2s4rOkxz4dEQ66\nYYQEH3/8MS+//DJ79+5l06ZNbNq0ydd+HArs3r2b0tLScMABOjs7w1nuKYyweiGMkOCss87C4/Gs\nyLn6+/t58803ueeee3j88cdX5JxhhLFUhDPdME573H777aeEj0EYYSwE4bs0jNMab7zxBklJSWza\ntImTFIVPCzz55JOUlJRQXl5+WnsdhzE3wvRCGKc1PvnkE15//XXefPNNbDYb09PTXHfddbz44our\nvbRFY+/evbz++uvU1taiVCoZGxtb7SWFEQKEJWNhrBns27ePxx57jD/96U8hPc/U1BQ33XQTDQ0N\nCILA888/z/bt25d93GuuuYavf/3rnHfeeUFYZRirjLBkLIzPBlZCvXDbbbdx2WWX0dTURG1tbdBa\nm9va2vjggw/Yvn0755xzDocPHw7KccM4tRCmF8JYM9ixYwc7duwI6TmMRiMffvghv/71rwGvN290\ndPSCf3++Vl6Xy4XBYKC6uppDhw5xzTXX0NnZGbS1h3FqIBx0wwhjEejq6iIxMZGdO3dSU1NDZWUl\nu3fv9rXgngx79uyZ82dPP/00V199NQBVVVXIZDImJibCHgprDCfjdMMIIww/CIKwBdgPnCmK4iFB\nEH4MTIuieH8Qjv01IE0Uxe8KglAIvCuKYtZyjxvGqYUwpxtGGItDP9AviuKhv/39FWBzkI79PLBO\nEIQ64DfAdUE6bhinEML0QhhhLAKiKA4LgtAnCEKhKIqtwAVAQ5CO7QT+LRjHCuPURZheCCOMRUIQ\nhA3ALwAV0AHsFEXRuLqrCuN0QTjohhFGGGGsIMKcbhhhhBHGCiIcdMMII4wwVhD/P9249c6QEeGu\nAAAAAElFTkSuQmCC\n", "text": [ "" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 18, "text": [ "" ] } ], "prompt_number": 18 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## C\u00e1lculo" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Adem\u00e1s de las manipulaciones algebraicas, el otro uso principal de CAS es hacer el c\u00e1lculo, como derivadas, integrales o l\u00edmites..." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Derivadas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Puedes derivar una expresion usando el m\u00e9todo `.diff()` y la funci\u00f3n `dif()`" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#creamos una expresi\u00f3n\n", "expresion = cos(x)\n", "\n", "#obtenemos la derivada primera con funcion\n", "diff(expresion, x)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$- \\sin{\\left (x \\right )}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAEoAAAAVBAMAAAATJmVgAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEM3dMnZUu0TviSKZ\nZquXRLrEAAABSklEQVQoFaWSPUvDYBSFTz6a1ITYUOziIBVEdHIQXc2i4NQidBH8AHHP0kkkgj/A\ndHOSjA62vIOgi+jg6BD8A2bQubhL8b4mNwmazQvJeXI4OfcNBPjn6HFa4Hi/i7a7hXPH+M7A2omY\ngHlGlaFCaxGbBbFT6JRgVkKmTG+93DjPCYsFYvN4xw4Sffm59yHdG7pa+/e79D0Ss1F8aDATqH08\nymWngBI5a1obeKXHbOoDWDATmCEaMXnrgOVanwa9cYTmqpwFsjf64ifVRoO24JK6oPpE6MhbNrMr\nXzCpy89TSKmcsgXezkop2kgtHlyg9LlGhOm4lKLTG+4BapQqnd4YwBS0jjeOgIvDAA/U+CJr06kP\n96718WRmPNkKrsiiNXO91jAmXMoiFaIJNu2Q6a86T+xZXaYKPWGvyVCl+V+Yx6tStjw4jSPwDWX2\nRQ0oD4CmAAAAAElFTkSuQmCC\n", "prompt_number": 19, "text": [ "-sin(x)" ] } ], "prompt_number": 19 }, { "cell_type": "code", "collapsed": false, "input": [ "#utilizando m\u00e9todo\n", "expresion.diff(x)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$- \\sin{\\left (x \\right )}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAEoAAAAVBAMAAAATJmVgAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEM3dMnZUu0TviSKZ\nZquXRLrEAAABSklEQVQoFaWSPUvDYBSFTz6a1ITYUOziIBVEdHIQXc2i4NQidBH8AHHP0kkkgj/A\ndHOSjA62vIOgi+jg6BD8A2bQubhL8b4mNwmazQvJeXI4OfcNBPjn6HFa4Hi/i7a7hXPH+M7A2omY\ngHlGlaFCaxGbBbFT6JRgVkKmTG+93DjPCYsFYvN4xw4Sffm59yHdG7pa+/e79D0Ss1F8aDATqH08\nymWngBI5a1obeKXHbOoDWDATmCEaMXnrgOVanwa9cYTmqpwFsjf64ifVRoO24JK6oPpE6MhbNrMr\nXzCpy89TSKmcsgXezkop2kgtHlyg9LlGhOm4lKLTG+4BapQqnd4YwBS0jjeOgIvDAA/U+CJr06kP\n96718WRmPNkKrsiiNXO91jAmXMoiFaIJNu2Q6a86T+xZXaYKPWGvyVCl+V+Yx6tStjw4jSPwDWX2\nRQ0oD4CmAAAAAElFTkSuQmCC\n", "prompt_number": 20, "text": [ "-sin(x)" ] } ], "prompt_number": 20 }, { "cell_type": "markdown", "metadata": {}, "source": [ "__\u00bfvarias variables?__" ] }, { "cell_type": "code", "collapsed": false, "input": [ "expr_xy = y**3 *sin(x)**2 + x**2 * cos(y)\n", "expr_xy" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$x^{2} \\cos{\\left (y \\right )} + y^{3} \\sin^{2}{\\left (x \\right )}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAMQAAAAZBAMAAACcKJypAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEHarIkSJZt3NVLsy\nme8Q6PJIAAADZ0lEQVRIDZWVXUgUURTH/6O7s+u6rUNGEBENFhv2YkIQQQ/zUAQFuU8VEbloHxQI\n0kPggxUhPfRQ20OBRSQ9hCikWRAR1VL0IURahCElWRRBJH0X9LWdO/ec2emuGt2HPf/zO19z587O\nAHq1XHVY/Yex0/Vmtv3kgYnYt73y3BShafBjPDGjW7HcROzHveTnKULT4BHsM6MdGPJMpv1UJvJl\n8sj0dNQMv0JDxmTiJz6I+g9rvS1N7pvyUONuaTZwR8NYfrIgrFq3lB/wUbJVR8KVLaXJQKSf6YrJ\nosTkuJMvJMEe9tVa8YuVMR2RANsKR4QREHeoS6vkVyHtWhwVv0IE1mNzoIsiLbIsy2qWELJ0Eg2t\nIV/JaDaaJxPkF1XyRM95lWGsl+Jb46zOCFG2A3tlm4IHe3oVSnkCgspUofBeYNFG9wf6BKu/RtxO\nL2UcucfiXaGg1EZ2yVDlzAWr0i6Tedt3wWpKZ3DjTC0hdXRWi4t1DuRp4BFM/bLk4prc2k8YnLix\nQPr46dy4BVY2diCe0yMib3Dfu+thwOpHnFBlK41JjKMOaNMZ4BFMfTgX2I8LwEk3ErwhLtG1ceM2\n2I79IeHpBhU59OUPAkO3nsMmFO8C1szI4QrQrTNkBFMfbnGQVSOuAd84C4fo2rhxNyxU9EtgPt2Y\n5HegKntkwCOYygBOysVHmso5vAumPoz/WAg14jJUol6vaBfcWFVWuczRSCpB76qq/tmnfxFUI9Do\nJH/yiJ2dnYc7O0+pdE2VgrWzMKxG0F7DI6SxGjGUh+PnItjFIw/7qL26URhF2XjxEeFdMPXLViL2\nxRxBN0oab0TCqUMZj6CzQNcEXeKmLMpb9XFTceWSkuNm6o84CywzR9BxS+M2NHZdx2o/lV5Jr2F7\n9/M4nniOSo9OjHrTa6iRpo1xiuxCUx+ec3BR3aXwjWqm6+TGY6iumbmDWuhV/XArIiPNmeiORduI\n+H+96qZnHnCMM2SEpj5cv3tP5mah/mZhRe9vdU1q0V9PGkulDpT8dviEvjuRcY7JCHVG06y4J8Gg\nUoBh24HynEXPmO1yZIO2mhrZIbf44g4qQ9GwpAOJu5UuMCdMSWtqwLB7URyzUrhY+iRFa56SF1Rw\nRFNJm8QGnySzsiSXn7WYVxL5B4jwI0SVfwDYI9sGkPZwPwAAAABJRU5ErkJggg==\n", "prompt_number": 21, "text": [ " 2 3 2 \n", "x \u22c5cos(y) + y \u22c5sin (x)" ] } ], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "diff(expr_xy,x,2,y,2)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$2 \\left(- 6 y \\sin^{2}{\\left (x \\right )} + 6 y \\cos^{2}{\\left (x \\right )} - \\cos{\\left (y \\right )}\\right)$$" ], "metadata": {}, "output_type": "pyout", "png": "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\nSUVORK5CYII=\n", "prompt_number": 22, "text": [ " \u239b 2 2 \u239e\n", "2\u22c5\u239d- 6\u22c5y\u22c5sin (x) + 6\u22c5y\u22c5cos (x) - cos(y)\u23a0" ] } ], "prompt_number": 22 }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Si queremos que la deje indicada__, usamos `Derivative()`" ] }, { "cell_type": "code", "collapsed": false, "input": [ "Derivative(expr_xy, x,2,y)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\frac{\\partial^{3}}{\\partial x^{2}\\partial y} \\left(x^{2} \\cos{\\left (y \\right )} + y^{3} \\sin^{2}{\\left (x \\right )}\\right)$$" ], "metadata": {}, "output_type": "pyout", "png": "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\nssi6zP9P+Rcs14+zxsURUAAAAABJRU5ErkJggg==\n", "prompt_number": 23, "text": [ " 3 \n", " \u2202 \u239b 2 3 2 \u239e\n", "\u2500\u2500\u2500\u2500\u2500\u2500\u239dx \u22c5cos(y) + y \u22c5sin (x)\u23a0\n", " 2 \n", "\u2202y \u2202x " ] } ], "prompt_number": 23 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Integraci\u00f3n\n", "\n", "La integraci\u00f3n de expresiones se realiza de una manera similar:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "expresion = x**2\n", "integrate(expresion, x)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\frac{x^{3}}{3}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAABYAAAAvBAMAAAAV7ydtAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEHarIkSJZt3NVLsy\nme8Q6PJIAAAA2klEQVQoFWNggICkZAEoi4G3gHcDnJ3A/gHGZmDgnYBgyx2As4UmwZlANXC9DAw8\nv2AScgdYvsPYHA7sD4FsIWVXNQWepGQHBgbGBPYmDqjZbAJsH7mAYiDAyMCJZBq/AlgQTJw/wCAA\n4XEJ6DMwQdnxC/YzuEMVCSsJpRcgNNCU9R8BKLbHLW0XzAyWCwzrYV5g+sXA3wCVYH3KID8BpogB\noQYoNBcuzJNxAc5mYMg7gODwgUIfBFgcGLhhMcT/kYEbFkN8Gxg4vkCUMLAXMKxXgLIZYu9uBTEB\n9j0z2N/QE2QAAAAASUVORK5CYII=\n", "prompt_number": 24, "text": [ " 3\n", "x \n", "\u2500\u2500\n", "3 " ] } ], "prompt_number": 24 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Al proporcionar l\u00edmites para la variable de integraci\u00f3n podemos evaluar integrales definidas:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "expresion = x**3 - x**2 + x - 1\n", "\n", "integrate(expresion, (x, -1, 1))" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$- \\frac{8}{3}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAB0AAAAqBAMAAAC9wk0pAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEM3dMnaJmUSrVGYi\nu++0qWpTAAAAzElEQVQoFWNggAPRsAo4G8QoYOBcgCTAtYGBRwGJz3aBgdEAic/xV4BtAxKfYf7v\nbGQuA/t/RRT+dqd/DUgC3BMY9j9E4vMJMLD8QuLLA9mzkfh8BxgY7iDxORQZuAOQ+AyeZaj+QZaj\nH1vIGARUGBj+g8AHGlp8LO0Wsuk8BQzrkeOD9RcDvwGSAo4XDPIKSHwgE0U9kK+OIs2SXIDCZ2DI\nc0AV4EOOP54DDLzI8cf/kYH3N5J6vgsMzH+Q+NwbGNYHIPEZ2stvMDAAADj3LX76qAKqAAAAAElF\nTkSuQmCC\n", "prompt_number": 25, "text": [ "-8/3" ] } ], "prompt_number": 25 }, { "cell_type": "markdown", "metadata": {}, "source": [ "as\u00ed como integrales impropias:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "integrate(exp(-x**2), (x, -oo, oo))" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\sqrt{\\pi}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAB0AAAAVBAMAAABI7vhRAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAInarRM2ZVBDdiWbv\nuzJCz3LGAAAAr0lEQVQYGWNggADG/2DwAcplYHaAsSC0KCqXIR2VzzEBlc9WgMrvROUyrEblg7Tr\nAx3wDSrMtIGBa12RtKIAkO8CxJwMDM8ZFjI9ADKZjgIJJSBmuMDcACQl9B0YGEC28xkAVQFB/wUG\n7gVAmm0DfwOQYmD7yMAJYvQ38DsAKQbGbwy7QLQmA88CEM1g3zADRN1mYF4AohneL08A0zCC9WgD\njAmm2WGuhIkGwhhAGgDwdic2xV4k0wAAAABJRU5ErkJggg==\n", "prompt_number": 26, "text": [ " ___\n", "\u2572\u2571 \u03c0 " ] } ], "prompt_number": 26 }, { "cell_type": "markdown", "metadata": {}, "source": [ "
En SimPy, `oo` se utiliza como notaci\u00f3n para indicar el infinito.
" ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Series" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "La expansi\u00f3n de la serie es tambi\u00e9n una de las caracter\u00edsticas m\u00e1s \u00fatiles de un CAS. En SymPy podemos realizar un desarrollo en serie de una expresi\u00f3n mediante el m\u00e9todo `.series()` o la funci\u00f3n `series()`" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#creamos la expresi\u00f3n\n", "expr = exp(x)\n", "expr" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$e^{x}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAABMAAAAQBAMAAAAG6llRAAAALVBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAEIl2mSJE3e9UMqtmzXCQ\nkgMAAABlSURBVAgdY2AAA2Uv6wUQFrPAXvYECJOL4Q6EASKfwplcD7ig7DimAiYoU9pM2RDIZFQ2\nCYCKpAewKkCYrJ0MIgsgTO4e44MQFgPfBiiDgYFPAc7kADINIDzmCwwiMMNMbA5ABAFElA6yXWTQ\nswAAAABJRU5ErkJggg==\n", "prompt_number": 27, "text": [ " x\n", "\u212f " ] } ], "prompt_number": 27 }, { "cell_type": "code", "collapsed": false, "input": [ "#la desarrollamos en serie\n", "series(expr)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$1 + x + \\frac{x^{2}}{2} + \\frac{x^{3}}{6} + \\frac{x^{4}}{24} + \\frac{x^{5}}{120} + \\mathcal{O}\\left(x^{6}\\right)$$" ], "metadata": {}, "output_type": "pyout", "png": "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\n", "prompt_number": 28, "text": [ " 2 3 4 5 \n", " x x x x \u239b 6\u239e\n", "1 + x + \u2500\u2500 + \u2500\u2500 + \u2500\u2500 + \u2500\u2500\u2500 + O\u239dx \u23a0\n", " 2 6 24 120 " ] } ], "prompt_number": 28 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Se puede especificar el n\u00famero de t\u00e9rminos pas\u00e1ndole un argumento `n=...`. El n\u00famero que le pasemos ser\u00e1 el primer t\u00e9rmino que desprecie." ] }, { "cell_type": "code", "collapsed": false, "input": [ "series(expr, n=10)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$1 + x + \\frac{x^{2}}{2} + \\frac{x^{3}}{6} + \\frac{x^{4}}{24} + \\frac{x^{5}}{120} + \\frac{x^{6}}{720} + \\frac{x^{7}}{5040} + \\frac{x^{8}}{40320} + \\frac{x^{9}}{362880} + \\mathcal{O}\\left(x^{10}\\right)$$" ], "metadata": {}, "output_type": "pyout", "png": "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\n", "prompt_number": 29, "text": [ " 2 3 4 5 6 7 8 9 \n", " x x x x x x x x \u239b 10\u239e\n", "1 + x + \u2500\u2500 + \u2500\u2500 + \u2500\u2500 + \u2500\u2500\u2500 + \u2500\u2500\u2500 + \u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500 + O\u239dx \u23a0\n", " 2 6 24 120 720 5040 40320 362880 " ] } ], "prompt_number": 29 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Si nos molesta el $\\mathcal{O}(x^{10})$ lo podemos quitar con `removeO()`:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "series(expr, n=10).removeO()" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\frac{x^{9}}{362880} + \\frac{x^{8}}{40320} + \\frac{x^{7}}{5040} + \\frac{x^{6}}{720} + \\frac{x^{5}}{120} + \\frac{x^{4}}{24} + \\frac{x^{3}}{6} + \\frac{x^{2}}{2} + x + 1$$" ], "metadata": {}, "output_type": "pyout", "png": "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\n", "prompt_number": 30, "text": [ " 9 8 7 6 5 4 3 2 \n", " x x x x x x x x \n", "\u2500\u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500 + \u2500\u2500\u2500 + \u2500\u2500\u2500 + \u2500\u2500 + \u2500\u2500 + \u2500\u2500 + x + 1\n", "362880 40320 5040 720 120 24 6 2 " ] } ], "prompt_number": 30 }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Ejercicio." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Como est\u00e1s viendo, Python dispone de muchas librer\u00edas cient\u00edficas. Vamos a comrpobar lo bien que se llevan los [widgets de IPython Notebook 2.0](http://nbviewer.ipython.org/github/ipython/ipython/blob/2.x/examples/Interactive%20Widgets/Index.ipynb) y SymPy." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Cargamos widgets interactivos de IPython Notebook\n", "\n", "from IPython.html.widgets import interact\n", "from IPython.display import display\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 41 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Obt\u00e9n el desarrollo del $e^x$ y representa el resultado con la funci\u00f3n real." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def taylor_graf(n):\n", " \n", " expresion = #completar#\n", " \n", " #calculamos la expansion elimnando el termino del error\n", " expresion_aprox = series(expresion, x, n=n+1).removeO()\n", " \n", " p1 = plot(expresion, (x, -3, 3),\n", " show=False, line_color='b')\n", " \n", " p2 = plot(expresion_aprox, (x, -3, 3),\n", " show=False, line_color='r')\n", " \n", " # Haz la segunda funci\u00f3n parte de la primera\n", " p1.extend(p2)\n", " # Nota: Este c\u00f3digo se debe a que representar dos funciones\n", " # juntas con diferentes colores a\u00fan no est\u00e1 implementado\n", " # http://stackoverflow.com/questions/21429866/change-color-implicit-plot-sympy\n", " \n", " p1.show()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 49 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Funci\u00f3n exponencial $e^x$ (en azul) y la suma de los primeros n+1 t\u00e9rminos de su serie de Taylor en torno a cero (en rojo)." ] }, { "cell_type": "code", "collapsed": false, "input": [ "interact(taylor_graf, n=(0,10));" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nqJhFRDzmfwAGC/dNwKS/WQAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 50 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Si est\u00e1s viendo este IPython Notebook \"offline\", este es el resultado interactivo:\n", "![](taylor-exp.gif)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Matrices" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#creamos una matriz llena de s\u00edmbolos\n", "a, b, c, d = symbols('a b c d')\n", "A = Matrix([[a, b],\n", " [c, d]])\n", "A" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left[\\begin{matrix}a & b\\\\c & d\\end{matrix}\\right]$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAADcAAAAyBAMAAAAKOF7GAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhAiq3bdRLtm\nmc0lg57xAAABSUlEQVQ4Ee3UPUsDMRwG8OdSr9DT1oIuouANDgoO9w0qWPdzFrlu7rp0cOhQEARB\nEHHVT2D9AIqjo4Pgpi7iVBGlDlI4E/LSZ7hmdjDLJfnxz11yD8Fi/omiJvK8jpnmRpEhbK7XMVtI\nanKiGLfmPIg3H355MBp4UBwTlne7p2poW619lLivvWhNflhQz+wV3xbDBVR7jI0U8tj0PqsDVDqM\nTwgdBj1ka4x9RHIzujKL0UBKOoRczGKCm1KL8AebtxZrnakzQYZ9XMuhXjZsL+0cMm4fyEKDPE99\nXUkT3P1HeRpjDyG6uh+PmE48eJl6cMXzTvRHKJa7/LNkyF3AUD7BO6MMuQsYghh7hCrkL27ZZ84l\nVC4rscN5KpPdQIb83KLKPjcTcnN8Q6BEmumQG3xE+EBoQm5QrN6RwYTcIMuo/xfRe6X6LuNfjWlM\nFpMM9N8AAAAASUVORK5CYII=\n", "prompt_number": 51, "text": [ "\u23a1a b\u23a4\n", "\u23a2 \u23a5\n", "\u23a3c d\u23a6" ] } ], "prompt_number": 51 }, { "cell_type": "code", "collapsed": false, "input": [ "#sacamos autovalores\n", "A.eigenvals()" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\begin{Bmatrix}\\frac{a}{2} + \\frac{d}{2} - \\frac{1}{2} \\sqrt{a^{2} - 2 a d + 4 b c + d^{2}} : 1, & \\frac{a}{2} + \\frac{d}{2} + \\frac{1}{2} \\sqrt{a^{2} - 2 a d + 4 b c + d^{2}} : 1\\end{Bmatrix}$$" ], "metadata": {}, "output_type": "pyout", "png": "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\n", "prompt_number": 52, "text": [ "\u23a7 _________________________ _________________________\n", "\u23aa \u2571 2 2 \u2571 2 2 \n", "\u23a8a d \u2572\u2571 a - 2\u22c5a\u22c5d + 4\u22c5b\u22c5c + d a d \u2572\u2571 a - 2\u22c5a\u22c5d + 4\u22c5b\u22c5c + d \n", "\u23aa\u2500 + \u2500 - \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500: 1, \u2500 + \u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", "\u23a92 2 2 2 2 2 \n", "\n", " \u23ab\n", " \u23aa\n", " \u23ac\n", ": 1\u23aa\n", " \u23ad" ] } ], "prompt_number": 52 }, { "cell_type": "code", "collapsed": false, "input": [ "#inversa\n", "A.inv()" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\left[\\begin{matrix}\\frac{1}{a} + \\frac{b c}{a^{2} \\left(d - \\frac{b c}{a}\\right)} & - \\frac{b}{a \\left(d - \\frac{b c}{a}\\right)}\\\\- \\frac{c}{a \\left(d - \\frac{b c}{a}\\right)} & \\frac{1}{d - \\frac{b c}{a}}\\end{matrix}\\right]$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAPAAAABLCAMAAAB5hvoWAAAAPFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo1xBWAAAAE3RSTlMA\nMquZdlQQQOkwRLvd7yJmic1sqjZpngAABfNJREFUeAHtXOl66ygMxfFyO44T2zfv/64jMAYhxGYc\nN+0MP1oQoKPDZkB8Ec1LhZv45WHaeArRvNoOQv/L+YpZsry9JOHGcm3uNn4wNq7rwZpHqxUgzi7h\npr1NR1FtvaW18Wti+YiEsBD9CYTXy2dHPuJbCL+e1/SrRclHfAfh8QVrwwDWLLBIWKPeGDOIaYx3\nEO6mQXQwjadRNI+0CSeU2BEzVL2D8B26dV5FC+v9gNb/DGuOFtGIOdWzCA9lc/IxCtHexOO6pUsj\nnka4L5uJL5i/wDZ/IckxNFpGI0bL6Ey/h5lZV0gYpvAMw3mFjhbXfJE14gHCz3Z63bz+LCTctMsC\n2M+2mzu5WL8/aMQcIK+HuUqFhDkVHyP7jxPezk/yr9MjtIdtsdqYA4MSwzqZsMpPWy2QYZTo4WWV\nYXqof9csQIj2O6IJwhsk7WHekGbm5Uo6PpwtyOykIvX4rAqo8wg/4wdp8rW71TCugaok3CzLXW/D\n1ugX6EnvBGia70peWgNVSRh6ddwO0J389OrQ4iuUTdavcys7tV/mbSnA5fd6mf9RVQZJxKEo4QGu\nt7zhFp7D0E+D3NfBXhLttwd3kZfZ7SxkJ/dwU7i1zEDGuCyUGRAUg5SAIoSHqYErLjo4x9hytF2R\n6H7eTO798bo+RS+3m3bq5l9SkHbAUAySiEMRwi2Mt6bokmcA/RCcSyUnsZkLTXCDvbUsrIcCU4gw\nCyRxRRzfi8ehCGF5pOsyLqjNyB/U1YYQ930QyBym88ZFXQM37dzpknBiLgoGcocKIIk4lEt4kEe6\n+zzQMU0tMyN/aJ+DmpOTPvyaHFrFSxfeFlrFGsoKPNVUgKFcwgK2B80rOmWVMjPy5WW+mgHyCC6D\nyslajxp/ZdtU8H8NpNBQ+UhAyeokhMdb13ewoiaCP/J3wianv+9BDhd3K6y0YysScDLbKN4JG4GL\nlIIihDOQoQgz8vdxljknQAlebNOwCHKDQoJkbQx1iDAz8veVRM2J6FZ3N69w0bKTTUPlI8kbRROO\nEfZH/qKXdj/HQJGInIMFwSrWUFaQ1IKhjhH2IfCo8XOVBJx3d7T8qyuvQNGouA7qLMJi0vuJoK09\nfL7Q8v1E8WAdPqMK6jTC+kzAmyilsKts0JZm8a4Kw1VJThXUaYTFfkwk1pkkXKVuuy0lGdA6York\nRmqgziOcOJXDjm/ubuYLn7I5yr0G6jzC4mnYRK1VmXNqxsdVWKj0gwUCJQn/+fonrv9jcw88WPj7\nRd54fCw53jB8LuBLEOmJQ5povib5zYQvc/mb1vxewte5/D+D8IUu/88gLE+oV4dvHdIXuvxNu34r\n4Qtd/pZw6RnkzM/ShS5/TZh/sGBag4ucSZjT/3Gy/wmjLvHc8ORG0L2KzEsh9eXRPAjj7GcBfkcP\nE3c7y1QLfwdhfHcUYwt5NYRjt7G0zSvfOCRYeO72cPkKwvF7B/p99JzOYZsSOYwT3POBh1VUELYP\nDxgT/DavucRy7Gec4J673angJI4TRg8PGBP8NkflHQuKE4wT3PeBB7UeJ4weHjAm+G1e8cbBtZ5x\ngsPoIe52twpKHSaM7/85E7wnDoJxkyND8qIBJ7jvAw+qKyVs/PA7yYAJTJvvNYK2pDMKnOAhZYWE\nLaL24VmBi8C0OfbhuYWzUwVO8JDOQsIKUbn8tUO4wITio6tvc8AJ7m45/WpYUkjYICb88JwJhS5/\nbKWOlzjBmepKVEYYIW5vHJAghGDk9YQ3R3xsg2fAgpEywsj1r4d0gR8er+tBe+IZBU7wkKJCwhZR\nL1pWEEIw8hMWLaOLiRB/O1NCiQoJWzX7Gwcr8WLEBPzwwCtbLSD+9qC+w4TTA5SacPiNQ9B4nEH8\n7TjLiR8mnH7jQEyoeOPgWBxIuP72QCEQHyecfHhATKh44xA23+a4/nYrp7HjhJNvHFwTqt44UKsr\n0hWE4xcA1KaqNw5UWUW6gvCVbxwqGJKqNYSJqp+R3AirrS96RPUzbC+10vxwySB/0KPr9IvnUjU/\np7z64RL4VYJ/AVGSU5rI8CpmAAAAAElFTkSuQmCC\n", "prompt_number": 53, "text": [ "\u23a11 b\u22c5c -b \u23a4\n", "\u23a2\u2500 + \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u23a5\n", "\u23a2a 2 \u239b b\u22c5c\u239e \u239b b\u22c5c\u239e\u23a5\n", "\u23a2 a \u22c5\u239cd - \u2500\u2500\u2500\u239f a\u22c5\u239cd - \u2500\u2500\u2500\u239f\u23a5\n", "\u23a2 \u239d a \u23a0 \u239d a \u23a0\u23a5\n", "\u23a2 \u23a5\n", "\u23a2 -c 1 \u23a5\n", "\u23a2 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u23a5\n", "\u23a2 \u239b b\u22c5c\u239e b\u22c5c \u23a5\n", "\u23a2 a\u22c5\u239cd - \u2500\u2500\u2500\u239f d - \u2500\u2500\u2500 \u23a5\n", "\u23a3 \u239d a \u23a0 a \u23a6" ] } ], "prompt_number": 53 }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Esto es s\u00f3lo la punta del iceberg" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "SymPy es una herramienta con posibilidades infinitas, aqu\u00ed hemos visto sus funcionalidades m\u00e1s b\u00e1sicas. Hay muchas, muchas cosas que se pueden hacer. Si buscas material en espa\u00f1ol: " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* [Python y matem\u00e1ticas, por Jose Luis Tabara [formato v\u00eddeo]](https://www.youtube.com/playlist?list=PLilnwC7Bci67FKx1GUkF9PlvR2r_La2vN)\n", "* [Introducci\u00f3n a SymPy - AeroPython - Pybonacci](http://nbviewer.ipython.org/github/AeroPython/Curso_AeroPython/blob/master/Notebooks/Clase5a_SymPy.ipynb) (versi\u00f3n de este Notebook, pero m\u00e1s completa)\n", "* [Mec\u00e1nica con SymPy](http://nbviewer.ipython.org/github/AeroPython/Curso_AeroPython/blob/master/Notebooks/Clase5b_Mecanica-SymPy.ipynb)\n" ] } ], "metadata": {} } ] }