0% found this document useful (0 votes)
48 views43 pages

Class 1 Methods: From Import Import As Import Import From Import Import As Import As

The document discusses an introductory Python numerical methods class. It provides code to define lists of student emails and assign them different numerical problems. It then outlines the course, which will cover lists, tuples, dictionaries, and numerical methods topics like systems of linear equations, interpolation, roots of equations, differentiation, integration, initial value problems, and eigenvalue problems. It introduces Python, discussing its design, uses in scientific computing, and installation process.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
48 views43 pages

Class 1 Methods: From Import Import As Import Import From Import Import As Import As

The document discusses an introductory Python numerical methods class. It provides code to define lists of student emails and assign them different numerical problems. It then outlines the course, which will cover lists, tuples, dictionaries, and numerical methods topics like systems of linear equations, interpolation, roots of equations, differentiation, integration, initial value problems, and eigenvalue problems. It introduces Python, discussing its design, uses in scientific computing, and installation process.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 43

8/9/2020 class_1_numerical_methods

Class 1 Numerical Methods

Class 1 Methods
In [1]: from IPython.display import IFrame

In [2]: import numpy as np

In [3]: import random

In [4]: import math

In [5]: from sympy import *

In [6]: import matplotlib.pyplot as plt

In [7]: import pandas as pd

student = ['[email protected]', '[email protected]', '[email protected]',


'[email protected]', '[email protected]', '[email protected]',
'[email protected]', '[email protected]']

In [12]: students = {'emails':['[email protected]', '[email protected].


co', '[email protected]',
'[email protected]', '[email protected]', 'kandrea.hernand
[email protected]', '[email protected]', '[email protected]']}

In [13]: stu = pd.DataFrame(students)

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 1/43
8/9/2020 class_1_numerical_methods

In [14]: stu

Out[14]:
emails

0 [email protected]

1 [email protected]

2 [email protected]

3 [email protected]

4 [email protected]

5 [email protected]

6 [email protected]

7 [email protected]

In [15]: stu['assigned problem'] = 'known'

In [16]: stu

Out[16]:
emails assigned problem

0 [email protected] known

1 [email protected] known

2 [email protected] known

3 [email protected] known

4 [email protected] known

5 [email protected] known

6 [email protected] known

7 [email protected] known

In [28]: stu.iloc[0,1] = 'Systems of Linear Algebraic Equations(SLAE)'

In [29]: stu.iloc[5,1] = 'Interpolation and Curve Fitting'

In [30]: stu.iloc[2,1] = 'Roots of Equations'

In [31]: stu.iloc[3,1] = 'Numerical Differentiation'

In [32]: stu.iloc[4,1] = 'Numerical Integration'

In [33]: stu.iloc[1,1] = 'Initial Value Problems'

In [34]: stu.iloc[6,1] = 'Two - Points Boundary Value Problems'

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 2/43
8/9/2020 class_1_numerical_methods

In [35]: stu.iloc[7,1] = 'Summetric Matrix Eigenvalue Problems'

In [36]: stu

Out[36]:
emails assigned problem

0 [email protected] Systems of Linear Algebraic Equations(SLAE)

1 [email protected] Initial Value Problems

2 [email protected] Roots of Equations

3 [email protected] Numerical Differentiation

4 [email protected] Numerical Integration

5 [email protected] Interpolation and Curve Fitting

6 [email protected] Two - Points Boundary Value Problems

7 [email protected] Summetric Matrix Eigenvalue Problems

In [ ]:

Getting started with Python

Empezando con Python

Advanced Python

Complete course

https://www.youtube.com/watch?v=HGOBQPFzWKo&ab_channel=freeCodeCamp.org
(https://www.youtube.com/watch?v=HGOBQPFzWKo&ab_channel=freeCodeCamp.org)

Who is this course for?

Out line

1. Lists
2. Tuples
3. Dictionary

Lists
file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 3/43
8/9/2020 class_1_numerical_methods

In [ ]: mylist = ["banana", "cherry", "apple"]

In [ ]: mylist.

In [ ]: mylist.count('banana')

In [ ]: print(mylist)

In [ ]: mylist2 = list()

In [ ]: print(mylist2)

In [ ]: mylist3 = [5, True, "apple", "apple", 1.5]

In [ ]: print(mylist3)

In [ ]: item = mylist[2]

In [ ]: print(item)

In [ ]: print(mylist[-1])

In [ ]: mylist[-2]

In [ ]: print(mylist[-2])

In [ ]: for i in mylist:
print(i)

In [ ]: for x in mylist:
print(x)

In [ ]: if "lemon" in mylist:
print("yes")
else:
print("no")

In [ ]: len(mylist)

In [ ]: %%time
print(len(mylist))

In [ ]: print('el último número calculado fue {_}', len(mylist))

In [ ]: mylist.append("lemon")

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 4/43
8/9/2020 class_1_numerical_methods

In [ ]: mylist

In [ ]: mylist.insert(1,"blueberry")

In [ ]: mylist

In [ ]: mylist.pop()

In [ ]: mylist.remove("cherry")

In [ ]: mylist

In [ ]: mylist.pop()

In [ ]: mylist

In [ ]: mylist.clear()

In [ ]: mylist

In [ ]: mylist = ["banana", "lemon", "apple", "cherry", "blueberry"]

In [ ]: mylist.reverse()

In [ ]: mylist

In [ ]: mylist = [-1,5,0,-4,-10,7,20, -3]

In [ ]: mylist.sort()

In [ ]: mylist

In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [ ]:

Introducción a Python
file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 5/43
8/9/2020 class_1_numerical_methods

Se trata de un lenguaje de alto nivel, interpretado, interactivo y de propósito general cuyo diseño hace especial
hincapié en una sintaxis limpia y una buena legibilidad.

Además es un lenguaje multiparadigma que soporta programación imperativa, programación orientada a


objetos, y en menor medida, programación funcional.

Los lectores con conocimiento de algún lenguaje de programación encontrarán en Python un lenguaje sencillo,
versátil y que proporciona código fácilmente legible.

Para aquéllos que no están familiarizados con la programación, Python supone un primer contacto agradable
pues los programas pueden ser comprobados y depurados con facilidad, permitiendo al usuario concentrarse
más en el problema a resolver que en los aspectos concretos de la programación.

Aproximadamente a partir de 2005, la inclusión de algunas extensiones especialmente diseñadas para el


cálculo numérico han permitido hacer de Python un lenguaje muy adecuado para la computación científica,
disponiendo hoy en día de una colección de recursos equivalente a la que podemos encontrar en un entorno
bien conocido como MATLAB, y que continúa en permanente crecimiento.

Python es software de código abierto que está disponible en múltiples plataformas (GNU/Linux, Unix, Windows,
Mac OS, etc.).

Se encuentra en la actualidad con dos versiones en funcionamiento que no son completamente compatibles.

La mayor parte del código que se encuentra escrito en Python sigue las especificaciones de la versión 2,
aunque hace ya algunos años que la versión 3 se encuentra disponible.

Esta versión fue diseñada para rectificar algunos defectos fundamentales del diseño del lenguaje que no podían
ser implementados manteniendo la compatiblidad con la versión 2.

En estas notas se usará la versión 3 del lenguaje.

Instalación de Python

Python viene instalado por defecto en los sistemas Linux y OSX, y se puede instalar de forma sencilla en los
sistemas Windows desde la página oficial www.python.org.

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 8/43
8/9/2020 class_1_numerical_methods

Sin embargo, diversos módulos de interés, y entre ellos, los dedicados a la programación científica que veremos
en los capítulos 4, 5, 6 y 7, requieren de instalaciones separadas.

Existen diversas posibilidades para realizar la instalación de otros módulos, pero nosotros vamos a optar por
una solución simple y eficiente, que consiste en la instalación de la distribución de Python anaconda.

Anaconda Python es una distribución que contiene el núcleo básico de Python y un conjunto de módulos entre
los que se encuentran todos los que vamos a emplear en este texto.

Además incluye por defecto la consola IPython y el entorno IPython Notebook que veremos en las siguientes
secciones, entre otras herramientas de interés.

La descarga de esta distribución se puede realizar desde la página de la empresa que la desarrolla
https://www.anaconda.com/download (https://www.anaconda.com/download)

Allí encontraremos descargas para los sistemas Linux, Windows y Mac en versiones para 32 y 64 bits, y en la
versión 2.7 o 3.6 de Python (en el momento de escribir estas notas).

Como hemos comentado antes, aquí usaremos la versión 3 de Python, por lo que habría que descargar el
instalador para la versión 3.6.

En la misma página de descarga tenemos instrucciones directas para su instalación, que son bastante simples.

Durante la instalación en los sistemas Windows se pregunta si queremos que el intérprete Python que instala
anaconda sea el intérprete por defecto en el sistema, ya que anaconda convive bien con otras versiones de
Python en el mismo sistema, y si queremos añadir anaconda a la variable PATH.

Responderemos afirmativamente a ambas cuestiones. De igual modo, en los sistemas Linux se nos pedirá que
ajustemos la variable PATH del sistema para que esté accesible el entorno anaconda.

Una vez instalado, podemos ejecutar el programa anaconda-navigator que aparece en la lista de programas (en
Windows o Mac) o desde la consola en Linux, que nos permitirá ejecutar alguno de los programas que
comentaremos en la siguiente sección.

MANEJO BÁSICO DE PYTHON

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 9/43
8/9/2020 class_1_numerical_methods

En esta sección veremos algunos aspectos generales relacionados con el uso del intérprete y la creación de
scripts, para, en la siguiente sección, describir el entorno IPython Notebook (ahora denominado Jupyter
Notebook) que recomendamos encarecidamente para trabajar con Python.

Inicialmente en Python podemos trabajar de dos formas distintas: a través de la consola o mediante la ejecución
de scripts o guiones de órdenes.

El primer método es bastante útil cuando queremos realizar operaciones inmediatas y podemos compararlo con
el uso de una calculadora avanzada.

El uso de scripts de órdenes corresponde a la escritura de código Python que es posteriormente ejecutado a
través del intérprete.

Para iniciar una consola Python bastará escribir la orden python en una terminal, obteniéndose algo por el estilo:

que nos informa de la versión que tenemos instalada y nos señala el prompt >>> del sistema, el cual indica la
situación del terminal a la espera de órdenes. Podemos salir con la orden exit() o pulsando las teclas ctrl + D (
ctrl + Z en Windows)

Una vez dentro del intérprete podemos ejecutar órdenes del sistema, por ejemplo

In [ ]: print("Hola mundo")

Obviamente la función print imprime la cadena de texto o string Hola Mundo que aparece como argumento, y
que va encerrada entre comillas para indicar precisamente que se trata de un string.

Una vez ejecutada la orden el intérprete vuelve a mostrar el prompt.

La creación de un script o archivo de texto

La otra alternativa a la ejecución de órdenes con Python es la creación de un script.

Se trata de un archivo de texto en el que listamos las órdenes Python que pretendemos ejecutar.

Para la edición del archivo nos vale cualquier editor de texto sin formato. Escribiendo la orden

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 10/43
8/9/2020 class_1_numerical_methods

In [ ]: print("Hola mundo")

en un archivo, lo salvamos con un nombre cualquiera, por ejemplo hola.py, en el que la extensión ha de ser .py.

Podemos ejecutar el código sencillamente escribiendo en una consola la orden python hola.py (obviamente
situándonos correctamente en el path o ruta donde se encuentre el archivo).

También es posible hacer ejecutable el código Python escribiendo en la primera línea del archivo4

IPYTHON NOTEBOOK

El IPython Notebook es una variante de la consola IPython, que usa un navegador web como interfaz y que
constituye un entorno de computación que mezcla la edición de texto con el uso de una consola.

El proyecto ha evolucionado hacia el entorno Jupyter, que soporta otros lenguajes, además de Python.

Es una forma muy interesante de trabajar con Python pues aúna las buenas características de la consola
IPython, con la posibilidad de ir editando las entradas las veces que sean necesarias.

Además, permiten añadir texto en diferentes formatos (LATEX inclusive) e incluso imágenes, por lo que se
pueden diseñar páginas interactivas con código e información.

Puesto que este es el entorno que preferimos para trabajar, describiremos con un poco de detalle su
funcionamiento general.

Para correr el entorno podemos escribir en una terminal la orden jupyter-notebook,7 lo que nos abrirá una
ventana en un navegador web con un listado de los notebooks disponibles y la posibilidad de navegar en un
árbol de directorios, así como de editar ficheros desde el navegador. Los notebooks son ficheros con extensión
.ipynb que pueden ser importados o exportados con facilidad desde el propio entorno web.

Si no disponemos de un notebook previo, podemos crear uno nuevo pulsando sobre el desplegable New (arriba
a la derecha), eligiendo el tipo deseado, en nuestro caso Python 3 (véase la figura adjunta). Esto abre
automáticamente una nueva ventana del navegador a la vez que crea un nuevo fichero Untitled con extensión
.ipynb en la carpeta donde nos encontremos.

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 11/43
8/9/2020 class_1_numerical_methods

La nueva ventana del navegador nos muestra el notebook creado, en la que podemos cambiar el título
fácilmente sin más que clicar sobre el mismo. El concepto básico del entorno Jupyter son las celdas, que son
cuadros donde insertar texto que puede admitir diferentes formatos de entrada que pueden seleccionarse a
través del menú desplegable del centro de la barra de herramientas (véase la figura adjunta).

Básicamente nos interesan las celdas tipo Code, que contendrán código en lenguaje Python, y que aparecerán
numeradas como en la consola IPython, y las de tipo Markdown, en las que podemos escribir texto marcado por
este tipo de lenguaje,8 o incluso texto en formato LATEX, que nos permite añadir información contextual al
código que estemos escribiendo.

Por ejemplo, si en una celda estilo Markdown escribimos lo siguiente:

Cabecera
y a continuación pulsamos + , que supone la ejecución del contenido de la celda, obtendremos:

Cabecera que es el resultado de interpretar el símbolo # antes de una palabra, que supone darle formato de
título de primer nivel. Si la entrada hubiera sido:

Cabecera
entonces la salida es: Cabecera

es decir, el símbolo ### se refiere a una cabecera de tercer nivel.

En el menú del notebook Help Markdown se puede acceder a la sintaxis básica del lenguaje Markdown.

Cada notebook dispone de una barra de herramientas típica para guardar, cortar, pegar, etc., y botones para
ejecutar el contenido de una celda o para,en caso de necesidad, interrumpir la ejecución.

Otras funciones están accesibles a través del menú.

Aquí sólo citaremos la opción File Make a Copy... , que realiza una copia del notebook y File Download as que
proporciona una exportación del notebook a un archivo de diverso formato: desde el propio formato .ipynb, a un
fichero .py con el contenido de todas las celdas (las de tipo Markdown aparecen como comentarios), o también
ficheros html o pdf, entre otros.

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 12/43
8/9/2020 class_1_numerical_methods

Para cerrar un notebook usaremos la opción del menú File Close and Halt . Para cerrar completamente el
entorno debemos volver a la terminal desde la que ejecutamos la orden jupyter-notebook y pulsar ctrl + c ; a
continuación se nos pedirá confirmación para detener el servicio, que habrá que hacer pulsando y .

Si por error hemos cerrado la ventana Home del navegador podemos recuperarla en la dirección
http://localhost:8888 (http://localhost:8888) Si ya disponemos de un notebook y queremos seguir trabajando
sobre él, podemos abrirlo desde la ventana Home del navegador moviéndonos en el árbol de directorios hasta
encontrarlo.

Obsérvese que por restricciones de seguridad, el servicio no da acceso a directorios por encima del de partida,
que coincide con el directorio desde el que se ha ejecutado la orden jupyter-notebook.

Para poder cargar un notebook que no esté accesible de este modo, debemos usar el botón de Upload que nos
permitirá localizar en nuestro ordenador el fichero adecuado.

Para finalizar con esta breve introducción a Jupyter, queremos hacer referencia al estupendo conjunto de atajos
de teclado disponibles que permite realizar ciertas tareas de forma rápida, como crear celdas por encima o por
debajo de la celda activa, juntar o dividir el contenido de celdas, definir el tipo de celda, etc.

La información está accesible desde el menú Help Keyboard shortcuts .

El lenguaje Python

En este capítulo comenzaremos a ver los aspectos básicos del lenguaje: variables, módulos, bucles,
condicionales y funciones.

Usaremos multitud de ejemplos para ilustrar la sintaxis del lenguaje y lo haremos desde un entorno Jupyter
Notebook, por lo que el código irá apareciendo en celdas de entrada y sus correspondientes salidas.

ASPECTOS BÁSICOS DEL LENGUAJE

Python es un lenguaje dinámicamente tipado, lo que significa que las variables pueden cambiar de tipo en
distintos momentos sin necesidad de ser previamente declaradas.

Las variables son identificadas con un nombre, que debe obligatoriamente comenzar por una letra y en el que
se hace la distinción entre mayúsculas y minúsculas, y son definidas mediante el operador de asignación =.

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 13/43
8/9/2020 class_1_numerical_methods

No están permitidos las palabras reservadas de la Tabla 2.1.2

Palabras reservadas

and continue except global lambda pass while

as def False if None raise with

assert

Variables numéricas

Veamos algunos ejemplos:

In [ ]: a = 2 # define un entero

In [ ]: b = 5. # define un número real

In [ ]: c = 3+1j # define un número complejo

In [ ]: d = complex (3,2) # define un número complejo

In [ ]: type(d)

Obsérvese la necesidad de poner un punto para definir el valor como real y no como entero, el uso de j en lugar
de i en los números complejos junto con la necesidad de anteponer un número sin usar ningún operador en
medio, y el uso de la función complex.

Nótese también que la asignación de una variable no produce ninguna salida.

También podemos ver en el ejemplo el uso del carácter # para introducir comentarios en un código Python.

Podemos recuperar el tipo de dato de cada variable con la función type,

In [ ]: print(type(a), type(b), type(c))

Como vemos, Python asigna el tipo (o clase) a cada variable en función de su definición.

Nótese también el uso de la coma con la función print.

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 14/43
8/9/2020 class_1_numerical_methods

Por defecto, la coma introduce un espacio entre los argumentos de la función, que corresponde al valor por
defecto del parámetro sep.

Nótese también el uso del ; para escribir más de una sentencia en la misma línea.

No obstante, su uso no es recomendado porque el código pierde legibilidad.

Operadores aritméticos

Los operadores aritméticos habituales en Python son:

+ (suma),
- (resta),
* (multiplicación),
/ (división),
** (potenciación, que también se puede realizar con la función pow),
// (división entera), que da la parte entera de la división entre dos números,
y el operador % (módulo), que proporciona el resto de la división entre dos números.

Asimismo es importante destacar el carácter fuertemente tipado del lenguaje Python, que puede observarse en
los siguientes ejemplos:

In [ ]: a = 5; b = 3
print(a//b)

esto es, la división entera entre 5 y 3 es 1, como número entero.

Sin embargo,

In [ ]: c = 5.

In [ ]: d = 3.

In [ ]: print(c//d)

da como resultado 1, como número real.

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 15/43
8/9/2020 class_1_numerical_methods

Esto se debe a que el resultado se expresa en el mismo tipo que los datos con los que se opera.

Así pues, el lector podrá entender el porqué del siguiente resultado:

In [ ]: print(c % d)
print(int(c)%int(d))

Nótese el uso de la función de conversión a entero int.

La función float hace la conversión a número real.

La única excepción a esta regla ocurre con la división.

Si escribimos

In [ ]: print(5/3)

el resultado, lógicamente, no es un entero.

Finalmente, cuando Python opera con números de distinto tipo, realiza la operación transformando todos los
números involucrados al mismo tipo, según una jerarquía de tipos que va de enteros a reales y luego a
complejos:

In [ ]: a = 3.

In [ ]: b = 2+3j

In [ ]: c = a+b

In [ ]: print(c)
print(type(c))

Existen también operadores aumentados de asignación cuyo significado permite abreviar expresiones como

In [ ]: a = a+b

del siguiente modo:

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 16/43
8/9/2020 class_1_numerical_methods

In [ ]: a += b

In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [ ]:

HOW TO USE THE NUMPY LINSPACE FUNCTION

https://www.sharpsightlabs.com/blog/numpy-
linspace/#:~:text=The%20NumPy%20linspace%20function%20(sometimes,structured%20as%20a%20NumPy%20
(https://www.sharpsightlabs.com/blog/numpy-
linspace/#:~:text=The%20NumPy%20linspace%20function%20(sometimes,structured%20as%20a%20NumPy%20

The NumPy linspace function (sometimes called np.linspace) is a tool in Python for creating numeric sequences.

La función linspace de NumPy (a veces llamada np.linspace) es una herramienta en Python para crear
secuencias numéricas.

It’s somewhat similar to the NumPy arange function, in that it creates sequences of evenly spaced numbers
structured as a NumPy array.

Es algo similar a la función arange de NumPy, ya que crea secuencias de números espaciados uniformemente
estructurados como una matriz de NumPy.

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 17/43
8/9/2020 class_1_numerical_methods

There are some differences though. Moreover, some people find the linspace function to be a little tricky to use.

Sin embargo, existen algunas diferencias. Además, algunas personas encuentran que la función linspace es un
poco complicada de usar.

It’s not that hard to understand, but you really need to learn how it works.

No es tan difícil de entender, pero realmente necesitas aprender cómo funciona.

That being said, this tutorial will explain how the NumPy linspace function works.

Dicho esto, este tutorial explicará cómo funciona la función linspace de NumPy.

It will explain the syntax, and it will also show you concrete examples of the function so you can see it in action.

Explicará la sintaxis y también te mostrará ejemplos concretos de la función para que puedas verla en acción.

Near the bottom of the post, this will also explain a little more about how np.linspace differs from np.arange.

Ok, first things first. Let’s look a little more closely at what the np.linspace function does and how it works.

NUMPY LINSPACE CREATES SEQUENCES OF EVENLY SPACED


VALUES WITHIN AN INTERVAL

NUMPY LINSPACE CREA SECUENCIAS DE VALORES ESPACIADOS UNIFORMEMENTE DENTRO DE UN


INTERVALO

The NumPy linspace function creates sequences of evenly spaced values within a defined interval.

La función linspace de NumPy crea secuencias de valores espaciados uniformemente dentro de un intervalo
definido.

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 18/43
8/9/2020 class_1_numerical_methods

Essentally, you specify a starting point and an ending point of an interval, and then specify the total number of
breakpoints you want within that interval (including the start and end points).

Esencialmente, usted especifica un punto de inicio y un punto final de un intervalo y luego especifica el número
total de puntos de interrupción que desea dentro de ese intervalo (incluidos los puntos inicial y final).

The np.linspace function will return a sequence of evenly spaced values on that interval.

La función np.linspace devolverá una secuencia de valores espaciados uniformemente en ese intervalo.

To illustrate this, here’s a quick example. (We’ll look at more examples later, but this is a quick one just to show
you what np.linspace does.)

Para ilustrar esto, aquí hay un ejemplo rápido. (Veremos más ejemplos más adelante, pero este es uno rápido
solo para mostrarle lo que hace np.linspace).

In [ ]: np.linspace(start= 0, stop = 100, num = 5)

This code produces a NumPy array (an ndarray object) that looks like the following:

|0|25|50|75|100|
|-|-|-|-|-|

In [ ]: That’s the ndarray that the code produces, but we can also visualize the outpu
t like this:

Ese es el ndarray que produce el código, pero también podemos visualizar el resultado de esta manera:

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 19/43
8/9/2020 class_1_numerical_methods

So what’s going on here?

Entonces, ¿qué está pasando aquí?

Remember: the NumPy linspace function produces a evenly spaced observations within a defined interval.

Recuerde: la función linspace de NumPy produce observaciones espaciadas uniformemente dentro de un


intervalo definido.

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 20/43
8/9/2020 class_1_numerical_methods

We specified that interval with the start and stop parameters. In particular, this interval starts at 0 and ends at
100.

Especificamos ese intervalo con los parámetros de inicio y parada. En particular, este intervalo comienza en 0 y
termina en 100.

We also specified that we wanted 5 observations within that range.

También especificamos que queríamos 5 observaciones dentro de ese rango.

So, the linspace function returned an ndarray with 5 evenly spaced elements.

Entonces, la función linspace devolvió un ndarray con 5 elementos espaciados uniformemente.

The first element is 0. The last element is 100. The remaining 3 elements are evenly spaced between 0 and 100.

El primer elemento es 0. El último elemento es 100. Los 3 elementos restantes están espaciados uniformemente
entre 0 y 100.

As should be expected, the output array is consistent with the arguments we’ve used in the syntax.

Como era de esperar, la matriz de salida es coherente con los argumentos que hemos utilizado en la sintaxis.

Having said that, let’s look a little more closely at the syntax of the np.linspace function so you can understand
how it works a little more clearly.

Habiendo dicho eso, veamos un poco más de cerca la sintaxis de la función np.linspace para que pueda
entender cómo funciona con un poco más de claridad.

THE SYNTAX OF NUMPY LINSPACE

LA SINTAXIS DE NUMPY LINSPACE

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 21/43
8/9/2020 class_1_numerical_methods

The syntax of the NumPy linspace is very straightforward.

La sintaxis del linspace de NumPy es muy sencilla.

Obviously, when using the function, the first thing you need to do is call the function name itself:

Obviamente, al usar la función, lo primero que debe hacer es llamar al nombre de la función:

To do this, you use the code np.linspace (assuming that you’ve imported NumPy as np).

Para hacer esto, usa el código np.linspace (asumiendo que ha importado NumPy como np).

Inside of the np.linspace code above, you’ll notice 3 parameters: start, stop, and num. These are 3 parameters
that you’ll use most frequently with the linspace function.

Dentro del código np.linspace anterior, notarás 3 parámetros: inicio, detención y num. Estos son 3 parámetros
que utilizará con más frecuencia con la función linspace.

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 22/43
8/9/2020 class_1_numerical_methods

Python es un lenguaje de programación creado por Guido Van Rossum entre finales de los ochenta y principios
de los noventa, apareciendo su primera versión estable en 1994.

In [24]: from IPython.display import IFrame

In [25]: IFrame('https://en.wikipedia.org/wiki/Guido_van_Rossum', width=800, height= 40


0)

Out[25]: 20. Constine, Josh. "Dropbox Hires Away Google's Guido van Rossum, The Father Of
h.com/2012/12/07/dropbox-guido-van-rossum-python/). Techcrunch. Archived (http
0121209015453/http://techcrunch.com/2012/12/07/dropbox-guido-van-rossum-pyt
December 2012. Retrieved 7 December 2012.
21. "Foreword for "Programming Python" (1st ed.)" (https://www.python.org/doc/essay
s://web.archive.org/web/20140724173913/https://www.python.org/doc/essays/fore
24 July 2014.
22. "Python-Dev] SETL (was: Lukewarm about range literals)" (http://mail.python.org/p
August/008881.html). Archived (https://web.archive.org/web/20110514231628/http
l/python-dev/2000-August/008881.html) from the original on 14 May 2011.
23. Fairchild, Carlie (12 July 2018). "Guido van Rossum Stepping Down from Role as
Dictator For Life" (https://web.archive.org/web/20180713192427/https://www.linuxj
an-rossum-stepping-down-role-pythons-benevolent-dictator-life). Linux Journal. Ar
ps://www.linuxjournal.com/content/guido-van-rossum-stepping-down-role-pythons-
13 July 2018. Retrieved 12 July 2018.
24. "Projects" (https://octoverse.github.com/projects.html). The State of the Octoverse
25. "Programming Language Popularity" (https://web.archive.org/web/2015041216112
Archived from the original (http://langpop.com/) on 12 April 2015.
26. "index | TIOBE - The Software Quality Company" (https://www.tiobe.com/tiobe-ind
27. van Rossum, Guido (May 2008). "An Open Source App: Rietveld Code Review To
web/20151017112923/https://cloud google com/appengine/articles/rietveld) Archiv

IFrame ('https://en.wikipedia.org/wiki/Guido (https://en.wikipedia.org/wiki/Guido) van Rossum', ancho = 800, alto


= 400)

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 6/43
8/9/2020 class_1_numerical_methods

There are also a few other optional parameters that you can use.

También hay algunos otros parámetros opcionales que puede utilizar.

Let’s talk about the parameters of np.linspace:

Hablemos de los parámetros de np.linspace:

THE PARAMETERS OF NUMPY LINSPACE

LOS PARÁMETROS DE NUMPY LINSPACE

There are several parameters that help you control the linspace function: start, stop, num, endpoint, and dtype.

Hay varios parámetros que le ayudan a controlar la función linspace: inicio, parada, num, endpoint y dtype.

To understand these parameters, let’s take a look again at the following visual:

Para comprender estos parámetros, veamos nuevamente el siguiente elemento visual:

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 23/43
8/9/2020 class_1_numerical_methods

start

The start parameter is the beginning of the range of numbers.

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 24/43
8/9/2020 class_1_numerical_methods

El parámetro de inicio es el comienzo del rango de números.

So if you set start = 0, the first number in the new nd.array will be 0.

Entonces, si establece start = 0, el primer número en la nueva matriz nd. Será 0.

Keep in mind that this parameter is required.

Tenga en cuenta que este parámetro es obligatorio.

stop

The stop parameter is the stopping point of the range of numbers.

El parámetro de parada es el punto de parada del rango de números.

In most cases, this will be the last value in the range of numbers.

En la mayoría de los casos, este será el último valor en el rango de números.

Having said that, if you modify the parameter and set endpoint = False, this value will not be included in the
output array. (See the examples below to understand how this works.)

Dicho esto, si modifica el parámetro y establece endpoint = False, este valor no se incluirá en la matriz de
salida.
(Vea los ejemplos a continuación para comprender cómo funciona esto).

num (optional)

The num parameter controls how many total items will appear in the output array.

El parámetro num controla cuántos elementos totales aparecerán en la matriz de salida.

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 25/43
8/9/2020 class_1_numerical_methods

For example, if num = 5, then there will be 5 total items in the output array.

Por ejemplo, si num = 5, habrá 5 elementos en total en la matriz de salida.

If, num = 10, then there will be 10 total items in the output array, and so on.

Si num = 10, habrá un total de 10 elementos en la matriz de salida, y así sucesivamente.

This parameter is optional. If you don’t provide a value for num, then np.linspace will use num = 50 as a default.

Este parámetro es opcional. Si no proporciona un valor para num, entonces np.linspace usará num = 50 como
valor predeterminado.

endpoint (optional)

The endpoint parameter controls whether or not the stop value is included in the output array.

El parámetro de punto final controla si el valor de parada se incluye o no en la matriz de salida.

If endpoint = True, then the value of the stop parameter will be included as the last item in the nd.array.

Si endpoint = True, el valor del parámetro de parada se incluirá como último elemento de la matriz nd.

If endpoint = False, then the value of the stop parameter will not be included.

Si endpoint = False, el valor del parámetro de parada no se incluirá.

By default, endpoint evaluates as True.

De forma predeterminada, el punto final se evalúa como Verdadero.

In [ ]: np.linspace(0,100,5, endpoint = True)

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 26/43
8/9/2020 class_1_numerical_methods

dtype (optional)

Just like in many other NumPy functions, with np.linspace, the dtype parameter controls the data type of the
items in the output array.

Al igual que en muchas otras funciones de NumPy, con np.linspace, el parámetro dtype controla el tipo de datos
de los elementos en la matriz de salida.

If you don’t specify a data type, Python will infer the data type based on the values of the other parameters.

Si no especifica un tipo de datos, Python inferirá el tipo de datos según los valores de los otros parámetros.

If you do explicitly use this parameter, however, you can use any of the available data types from NumPy and
base Python.

Sin embargo, si usa explícitamente este parámetro, puede usar cualquiera de los tipos de datos disponibles de
NumPy y Python base.

YOU DON’T NEED TO USE ALL OF THE PARAMETERS EVERY


TIME

NO ES NECESARIO USAR TODOS LOS PARÁMETROS CADA VEZ

Keep in mind that you won’t use all of these parameters every time that you use the np.linspace function.

Tenga en cuenta que no utilizará todos estos parámetros cada vez que utilice la función np.linspace.

Several of these parameters are optional.

Varios de estos parámetros son opcionales.

Moreover, start, stop, and num are much more commonly used than endpoint and dtype.

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 27/43
8/9/2020 class_1_numerical_methods

Además, start, stop y num se utilizan con mucha más frecuencia que endpoint y dtype.

USING THE SYNTAX WITHOUT PARAMETER VALUES

UTILIZANDO LA SINTAXIS SIN VALORES DE PARÁMETROS

Also keep in mind that you don’t need to explicitly use the parameter names.

También tenga en cuenta que no es necesario que utilice explícitamente los nombres de los parámetros.

You can write code without the parameter names themselves; you can add the arguments as “positional
arguments” to the function.

Puede escribir código sin los propios nombres de los parámetros; puede agregar los argumentos como
"argumentos posicionales" a la función.

Here’s an example:

Aquí tienes un ejemplo:

np.linspace(0, 100, 5) This code is functionally identical to the code we used in our previous examples:
np.linspace(start = 0, stop = 100, num = 5).

In [ ]: np.linspace (0, 100, 5)

In [ ]: np.linspace(stop = 20, start = 10, num = 11)

Este código es funcionalmente idéntico al código que usamos en nuestros ejemplos anteriores:

In [ ]: np.linspace(start = 0, stop = 100, num = 5).

The main difference is that we did not explicitly use the start, stop, and num parameters.

La principal diferencia es que no usamos explícitamente los parámetros start, stop y num.

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 28/43
8/9/2020 class_1_numerical_methods

Instead, we provided arguments to those parameters by position.

En cambio, proporcionamos argumentos a esos parámetros por posición.

When you don’t use the parameter names explicitly, Python knows that the first number (0) is supposed to be the
start of the interval.

Cuando no utiliza los nombres de los parámetros de forma explícita, Python sabe que se supone que el primer
número (0) es el inicio del intervalo.

It know that 100 is supposed to be the stop.

Sabe que se supone que 100 es la parada.

And it knows that the third number (5) corresponds to the num parameter.

Y sabe que el tercer número (5) corresponde al parámetro num.

Again, when you don’t explicitly use the parameter names, Python assigns the argument values to parameters
strictly by position; which value appears first, second, third, etc.

De nuevo, cuando no utiliza explícitamente los nombres de los parámetros, Python asigna los valores de los
argumentos a los parámetros estrictamente por posición; qué valor aparece primero, segundo, tercero, etc.

You’ll see people do this frequently in their code.

Verá que las personas hacen esto con frecuencia en su código.

People will commonly exclude the parameter names in their code and use positional arguments instead.

La gente normalmente excluye los nombres de los parámetros en su código y usa argumentos posicionales en
su lugar.

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 29/43
8/9/2020 class_1_numerical_methods

Although I realize that it’s a little faster to write code with positional arguments, I think that it’s clearer to actually
use the parameter names.

Aunque me doy cuenta de que es un poco más rápido escribir código con argumentos posicionales, creo que es
más claro usar los nombres de los parámetros.

As a best practice, you should probably use them.

Como práctica recomendada, probablemente debería utilizarlos.

EXAMPLES: HOW TO USE NUMPY LINSPACE

Now that you’ve learned how the syntax works, and you’ve learned about each of the parameters, let’s work
through a few concrete examples.

CREATE INTERVAL BETWEEN 0 AND 1, IN BREAKS OF .1

A quick example

In [ ]: np.linspace(start = 0, stop = 1, num = 11)

Which produces the output array:

Que produce la matriz de salida:

An example like this would be useful if you’re working with percents in some way.

For example, if you were plotting percentages or plotting “accuracy” metrics for a machine learning classifier, you
might use this code to construct part of your plot.

Explaining how to do that is beyond the scope of this post, so I’ll leave a deeper explanation of that for a future
blog post.

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 30/43
8/9/2020 class_1_numerical_methods

CREATE INTERVAL BETWEEN 0 AND 100, IN BREAKS OF 10

Crear una secuencia de 0 a 100, con incrementos de 10

A very similar example is creating a range of values from 0 to 100, in breaks of 10.

Un ejemplo muy similar es la creación de un rango de valores de 0 a 100, en rupturas de 10.

In [ ]: np.linspace(start = 0, stop = 100, num = 11)

The code for this is almost identical to the prior example, except we’re creating values from 0 to 100.

El código para esto es casi idéntico al del ejemplo anterior, excepto que estamos creando valores de 0 a 100.

Since it’s somewhat common to work with data with a range from 0 to 100, a code snippet like this might be
useful.

Dado que es algo común trabajar con datos con un rango de 0 a 100, un fragmento de código como este puede
resultar útil.

HOW TO USE THE ENDPOINT PARAMETER

CÓMO USAR EL PARÁMETRO ENDPOINT

As mentioned earlier in this blog post, the endpoint parameter controls whether or not the stop value is included
in the output array.

Como se mencionó anteriormente en esta publicación de blog, el parámetro de punto final controla si el valor de
detención se incluye o no en la matriz de salida.

By default (if you don’t set any value for endpoint), this parameter will have the default value of True.

That means that the value of the stop parameter will be included in the output array (as the final value).

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 31/43
8/9/2020 class_1_numerical_methods

However, if you set endpoint = False, then the value of the stop parameter will not be included.

Here’s an example.

In the following code, stop is set to 5.

In [ ]: np.linspace(start = 1, stop = 5, num = 4, endpoint = False)

But because we’re also setting endpoint = False, 5 will not be included as the final value.

On the contrary, the output nd.array contains 4 evenly spaced values (i.e., num = 4), starting at 1, up to but
excluding 5:

array([ 1., 2., 3., 4.])

Personally, I find that it’s a little un-intuitive to use endpoint = False, so I don’t use it often.

But if you have a reason to use it, this is how to do it.

MANUALLY SPECIFY THE DATA TYPE

ESPECIFICAR MANUALMENTE EL TIPO DE DATOS

As mentioned earlier, the NumPy linspace function is supposed to “infer” the data type from the other input
arguments.

You’ll notice that in many cases, the output is an array of floats.

If you want to manually specify the data type, you can use the dtype parameter.

This is very straightforward. Using the dtype parameter with np.linspace is identical to how you specify the data
type with np.array, specify the data type with np.arange, etc.

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 32/43
8/9/2020 class_1_numerical_methods

In [26]: IFrame('https://es.wikipedia.org/wiki/Guido_van_Rossum', width = 800, height =


400)

Out[26]:

Guido van Rossum


Guido van Rossum es un informático,1 conocido por ser el
autor del lenguaje de programación Python. Nació y creció en Guido
los Países Bajos.

En el ambiente de los desarrolladores del lenguaje Python


también se le conoce por el título BDFL (Benevolent Dictator
for Life), teniendo asignada la tarea de fijar las directrices sobre
la evolución de Python, así como la de tomar decisiones finales
sobre el lenguaje que todos los desarrolladores acatan. Van
Rossum tiene fama de ser bastante conservador, realizando
pocos cambios al lenguaje entre versiones sucesivas, intentando
mantener siempre la compatibilidad con versiones anteriores. El
12 de julio de 2018, con un mensaje enviado a la lista de python-
committers, anunció su retiro de los procesos de decisión.2

En el año 2001 recibió el FSF Award for the Advancement of

Guido van Rossum (Dutch: born 31 January 1956) is a Dutch programmer best known as the creator of the
Python programming language, for which he was the "Benevolent dictator for life" (BDFL) until he stepped down
from the position in July 2018.

Guido van Rossum (holandés: nacido el 31 de enero de 1956) es un programador holandés mejor conocido
como el creador del lenguaje de programación Python, para el que fue el "dictador benevolente de por vida"
(BDFL) hasta que dejó el cargo en julio de 2018. .

He is currently a member of the Python Steering Council, however he has withdrawn from nominations for the
2020 Python Steering Council.

Actualmente es miembro del Consejo Directivo de Python, sin embargo, se ha retirado de las nominaciones
para el Consejo Directivo de Python 2020.

El nombre del lenguaje deriva de la afición de su creador al grupo de humor inglés Monty Python.

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 7/43
8/9/2020 class_1_numerical_methods

Essentially, you use the dtype parameter and indicate the exact Python or NumPy data type that you want for the
output array:

np.linspace(start = 0, stop = 100, num = 5, dtype = int)

In this case, when we set dtype = int, the linspace function produces an nd.array object with integers instead of
floats.

Again, Python and NumPy have a variety of available data types, and you can specify any of these with the
dtype parameter.

HOW NP.LINSPACE IS DIFFERENT FROM NP.ARANGE

CÓMO NP.LINSPACE ES DIFERENTE DE NP.ARANGE

If you’re familiar with NumPy, you might have noticed that np.linspace is rather similar to the np.arange function.

Si está familiarizado con NumPy, es posible que haya notado que np.linspace es bastante similar a la función
np.arange.

The essential difference between NumPy linspace and NumPy arange is that linspace enables you to control the
precise end value, whereas arange gives you more direct control over the increments between values in the
sequence.

La diferencia esencial entre NumPy linspace y NumPy arange es que linspace le permite controlar el valor final
preciso, mientras que arange le da un control más directo sobre los incrementos entre valores en la secuencia.

To be clear, if you use them carefully, both linspace and arange can be used to create evenly spaced sequences.

Para ser claros, si los usa con cuidado, tanto linspace como arange se pueden usar para crear secuencias
espaciadas uniformemente.

To a large extent, these are two similar different tools for creating sequences, and which you use will be a matter
of preference.

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 33/43
8/9/2020 class_1_numerical_methods

En gran medida, estas son dos herramientas diferentes y similares para crear secuencias, y las que utilice será
una cuestión de preferencia.

I personally find np.arange to be more intuitive, so I tend to prefer arange over linspace.

Personalmente, encuentro que np.arange es más intuitivo, por lo que tiendo a preferir arange sobre linspace.

Again though, this will mostly be a matter of preference, so try them both and see which you prefer.

Sin embargo, una vez más, esto será principalmente una cuestión de preferencia, así que pruébelos y vea cuál
prefiere.

FOR MORE PYTHON DATA SCIENCE TUTORIALS, SIGN UP FOR


OUR EMAIL LIST

PARA OBTENER MÁS TUTORIALES DE CIENCIA DE DATOS DE PYTHON, REGÍSTRESE EN NUESTRA


LISTA DE CORREO ELECTRÓNICO

Here at Sharp Sight, we teach data science. We want to help you master data science as fast as possible.

If you sign up for our email list, you’ll receive Python data science tutorials delivered to your inbox.

You’ll get free tutorials on:

NumPy
Pandas
Base Python
Scikit learn
Machine learning
Deep learning … and more … delivered to your inbox every week.

Want to learn data science in Python? Sign up now.

In [ ]:

In [ ]:

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 34/43
8/9/2020 class_1_numerical_methods

In [ ]:

In [ ]:

In [ ]:

In [ ]:

Aspectos avanzados sobre Sympy

ALGO MÁS SOBRE FUNCIONES

Documentando funciones

Se puede documentar una función en Python añadiendo una cadena de documentación justo detrás de la
definición de función:

In [ ]: def mi_funcion(parametro):
"""
esta función no hace nada
Absolutamente nada
"""
pass

In [ ]: help(mi_funcion)

In [ ]: mi_funcion?

En tal caso, la función help(mifuncion) o escribiendo mifuncion? en Jupyter Notebook nos mostrará la
documentación de la función.

In [ ]: def fibonacci(k,a=1,b=1):
"""esta función entrega todos los términos de
la función de fibonacci que son menores al parámetro k"""
sucesion = [a]
while b < k:
sucesion.append(b)
a,b = b,a+b
return sucesion

In [ ]: fibonacci(50,4)

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 35/43
8/9/2020 class_1_numerical_methods

La llamada a esta función puede realizarse de diversos modos.

Usando sólo el argumento posicional: fibonacci(100).

Explicitando el argumento posicional: f ibonacci(k = 100).

Pasando sólo alguno de los argumentos opcionales (junto con el posicional):


f ibonacci(100, 3) , en cuyo caso a = 3 y b = 1 .

Pasando todos los argumentos: f ibonacci(10, 2, 3).

También es posible realizar la llamada usando los nombres de las variables por defecto, así

In [ ]: fibonacci(100,b = 3) # equivale a fibonacci(100,0,3)

In [ ]: fibonacci(100,b=4,a=2) # equivale a fibonaci(100,2,4)

In [ ]: fibonacci(b = 1, k = 100, a = 1) # equivale a fibonacci(100, 1,1)

pero

In [ ]: fibonacci(b = 4, a = 2)

genera error pues falta el argumento posicional; ni tampoco se puede escribir:

In [ ]: fibonacci(k = 100, 1, 1)

pues los argumentos posicionales deben preceder a los nombrados.

Todas estas posibilidades hacen que en determinados momentos sea preferible obligar al usuario a realizar
llamadas a una función especificando explícitamente determinados argumentos.

Si cambiamos la cabecera de la función fibonacci por:

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 36/43
8/9/2020 class_1_numerical_methods

In [ ]: def fibonacci(k,*,a=1,b=1):
sucesion = [a]
while b < k:
sucesion.append(b)
a,b = b,a+b
return sucesion

In [ ]: fibonacci(100)

pero ya no

In [ ]: fibonacci(100,2)

pues a partir del primer argumento hemos de explicitar los demás;

es decir, llamadas válidas podrían ser:

In [ ]: fibonacci(100,a=2,b=3)

In [ ]: fibonacci(100,b = 2)

In [ ]: fibonacci(100,a = 2)

Número indeterminado de argumentos

Python admite la inclusión de un número indeterminado de parámetros en una llamada como una tupla de la
forma *argumento;

por ejemplo:

In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [ ]:

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 37/43
8/9/2020 class_1_numerical_methods

Sympy

El módulo SymPy es una librería escrita en Python para realizar cálculo simbólico que se ha convertido en una
alternativa muy eficiente a otros CAS (Computer Algebraic System) como pueden ser Maple o Mathematica. En
estas notas usaremos la versión 1.1.1.

Variables simbólicas

A diferencia de lo recomendado en capítulos anteriores en referencia a la importación masiva de módulos, es


habitual importar el módulo SymPy de forma masiva:

In [ ]: import math

In [ ]: (sqrt(2) + sqrt(8)).evalf()

In [ ]: from sympy import *

Una de las características sobresalientes de SymPy es la espléndida impresión de las respuestas,


especialmente en el entorno Jupyter Notebook.

Para activar este tipo de salidas hemos de ejecutar la función

In [ ]: init_printing()

De este modo si ahora escribimos,

In [ ]: (sqrt(2) + sqrt(8))

lo que obtenemos es una respuesta exacta de la operación introducida (no una aproximación real, como
ocurriría si empleáramos el módulo math), y además perfectamente formateada usando MathML.

Pero sin duda, la potencia del cálculo simbólico reside en el manejo de variables simbólicas, que nos permite
manipular cualquier expresión matemática.

Usaremos la función symbols para definir variables simbólicas y la notación matemática habitual para escribir
cualquier expresión.

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 38/43
8/9/2020 class_1_numerical_methods

In [ ]: x,y,z = symbols('x y z')

In [ ]: exp = x + y**2 + z**3

In [ ]: exp

La función symbols admite como parámetro una cadena de caracteres separada por espacios o comas y asigna
cada una de ellas a una variable.

Así, en la entrada anterior se han creado tres variables simbólicas x, y, z asociadas a las expresiones x, y y z .

Es importante señalar que las variables asociadas nada tienen que ver con el nombre asignado.

In [ ]: a,b,c,d = symbols('alpha, x_1, a, hola' )

In [ ]: a,b,c,d

En el ejemplo anterior hemos asignado la variable simbólica a a la expresión α , la cual es interpretada por
SymPy mediante su correspondiente símbolo griego.

Del mismo modo, la variable b representa a la expresión x1, mientras que c se ha asignado a a, lo cual es
confuso, pero válido.

Por último, la variable simbólica d hace referencia a una expresión con un nombre arbitrario.

Obviamente se recomienda asignar a cada expresión una variable que la represente de forma precisa sin crear
confusión.

También es importante señalar que son las variables simbólicas, esto es, la salida de la función symbols, las
que debemos manipular a la hora de realizar los cálculos:

In [ ]: c**2

In [ ]: alpha + 1

El argumento de la función symbols admite cierta flexibilidad para poder definir un número arbitrario de variables
simbólicas. Por ejemplo, podemos obtener una colección de variables definiendo

In [ ]: a = symbols('a1:10')

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 39/43
8/9/2020 class_1_numerical_methods

In [ ]: a

En el entorno Jupyter, si en lugar de a escribimos print(a) no obtenemos la salida formateada con MathML sino
en formato habitual, lo cual puede ser un engorro si queremos imprimir varias salidas bien formateadas en una
misma celda.

Si en lugar de print usamos display obtendremos la salida deseada.

In [ ]:

In [ ]:

In [ ]:

In [ ]:

In [ ]:

DataFrame

DataFrame is the widely used data structure of pandas.

Note that, Series are used to work with one dimensional array, whereas DataFrame can be used with two
dimensional arrays.

DataFrame has two different index i.e. column-index and row-index.

The most common way to create a DataFrame is by using the dictionary of equal-length list as shown below.

Further, all the spreadsheets and text files are read as DataFrame, therefore it is very important data structure of
pandas.

Además, todas las hojas de cálculo y archivos de texto se leen como DataFrame, por lo tanto, es muy
importante la estructura de datos de pandas.

Overview

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 40/43
8/9/2020 class_1_numerical_methods

Visión general

In this chapter, various functionalities of pandas are shown with examples, which are explained in later chapters
as well.

En este capítulo, se muestran varias funcionalidades de los pandas con ejemplos, que también se explican en
capítulos posteriores.

Note: CSV files can be downloaded from below link,


https://bitbucket.org/pythondsp/pandasguide/downloads/
(https://bitbucket.org/pythondsp/pandasguide/downloads/)

Nota: los archivos CSV se pueden descargar desde el siguiente enlace,


https://bitbucket.org/pythondsp/pandasguide/downloads/
(https://bitbucket.org/pythondsp/pandasguide/downloads/)

Reading files

Lectura de archivos

In this section, two data files are used i.e. ‘titles.csv’ and ‘cast.csv’.

En esta sección, se utilizan dos archivos de datos, es decir, "títulos.csv" y "cast.csv".

The ‘titles.csv’ file contains the list of movies with the releasing year; whereas ‘cast.csv’ file has five columns
which store the title of movie, releasing year, star-casts, type(actor/actress), characters and ratings for actors, as
shown below,

El archivo "títulos.csv" contiene la lista de películas con el año de estreno; mientras que el archivo "cast.csv"
tiene cinco columnas que almacenan el título de la película, año de estreno, elenco de estrellas, tipo (actor /
actriz), personajes y calificaciones de los actores, como se muestra a continuación,

In [ ]: casts = pd.read_csv('cast.csv', index_col = None)

In [ ]: casts.head()

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 41/43
8/9/2020 class_1_numerical_methods

In [ ]: titles = pd.read_csv('titles.csv',index_col = None)

In [ ]: titles.tail()

In [ ]:

In [ ]:

Como trabajar en el celular con teclado y mouse

https://www.youtube.com/watch?v=26g37x0vAUs&ab_channel=MIOSTV (https://www.youtube.com/watch?
v=26g37x0vAUs&ab_channel=MIOSTV) https://www.youtube.com/watch?
v=ApdFcbqqpGY&ab_channel=MundoAndroidMania (https://www.youtube.com/watch?
v=ApdFcbqqpGY&ab_channel=MundoAndroidMania)

Comprar también un Hub Usb 4 puertos, para poder conectar un mouse al celular.

Para instalar el tablero o pizarra

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 42/43
8/9/2020 class_1_numerical_methods

Valla Edit y luego a Edit Notebook Metadata

"rise": { "enable_chalkboard": true}

Cada cuaderno debe tener la metadata de RISE

In [37]: x = symbols('x')

In [38]: x*x

Out[38]: x
2

In [ ]:

file:///C:/Users/Usuario/Downloads/class_1_numerical_methods.html 43/43

You might also like