23 feb. 2015

Geometría Analítica con Sympy (rectas)

Continuando con el manejo de geometría analítica de Sympy ahora se explicará el manejo de rectas.

Un resumen de los artículos anteriores: 

En el siguiente enlace encontrarán el archivo notebook del código que se explicará a continuación.

A continuación se muestra el código del script de manejo de rectas.

#!/usr/bin/env python

from sympy.geometry import *



#Creacion de 4 puntos

P1 = Point(0, 0)

P2 = Point(3, 4)

P3 = Point(2, -1)

P4 = Point(-1, 5)



#Creacion de 2 segmentos

S1 = Segment(P1, P2);#segmento 1 a partir de los puntos 1 y 2

S2 = Segment(P3, P4);#Segmento 2 a partir de los puntos 3 y 4



#Se crea 2 rectas

#A partir de los puntos 1 y 2

L1 = Line(P1, P2)

#Se crea la recta 2 que ser perpendicular a la recta 1 y contenga al punto 3

L2 = L1.perpendicular_line(P3)





#Manejo de rectas



print L2.arbitrary_point();#Punto arbitrario de la recta 2 (ecuacion parametrica)

print L2.equation() ;#ecuacion de la recta 2

print L2.contains(P4);#Linea 2 contiene al punto 4?

print L2.distance(P4);#distancia del punto 4 a la recta 2?

print L1.is_parallel(S2);#La recta 1 es paralela al segmento 2?

A continuación el resultado de la ejecución del script:

Point(4*t + 2, -3*t - 1)

3*x + 4*y - 2

False

3

False


A continuación se muestra una imagen de la ejecución del notebook para este artículo:

21 feb. 2015

Geometría Analítica con Sympy (Segmentos)

En los artículos anteriores se trataron los temas de como resolver límites, derivadasintegrales y resolución de sistemas de ecuaciones lineales, ahora se explicará el uso de Sympy en geometría analítica.

Los artículos sobre geometría analítica se basan en un artículo en inglés Computational Geomtry in Python.

En este artículo se explicará el manejo de segmentos.

Se inicia ipython notebook (si desea usar el archivo de este artículo lo puede descargar desde el siguiente enlace).


A continuación se muestra el código del script:

#!/usr/bin/env python



from sympy.geometry import *



#Definicion de puntos

P1 = Point(0, 0)

P2 = Point(3, 4)

P3 = Point(2, -1)

P4 = Point(-1, 5)



#Definicion de segmentos

S1 = Segment(P1, P2)

S2 = Segment(P3, P4)



print Point.is_collinear(P1, P2, P3); #Los puntos son colineales?



print S1.length ; #longitud del segmento 1



print S2.midpoint ;#punto medio del segmento 2



print S1.slope; #Slope del segmento 1



print S1.intersection(S2) ; #Intercepcion entre el Segmento 1 y 2



print Segment.angle_between(S1, S2);#Angulo entre el segmento 1 y 2



print S1.contains(P3);#El segmento  1 contiene a P3?



El resultado de ejecutar el script se muestra a continuación:
False

5

Point(1/2, 2)

4/3

[Point(9/10, 6/5)]

acos(-sqrt(5)/5)

False

La siguiente imagen muestra la ejecución del notebook:


Resolución de sistemas de ecuaciones con Sympy

Hasta ahora se tienen los siguientes artículos sobre el uso de la librería Sympy:
En este caso se explicará el uso de la librería Sympy en la resolución de sistemas de ecuaciones, se utilizará el ejemplo de un artículo anterior (Resolución de sistemas de ecuaciones lineales por descomposición QR usando Numpy).

Se inicia ipython notebook (si desean usar el archivo lo pueden bajar del siguiente enlace): 

A continuación se muestra el código del script:

#!/usr/bin/env python
#Se importa sympy
from sympy import *
#Se define las variables simbolicas x,y,z
x = Symbol('x')
y = Symbol('y')
z= Symbol('z')
#Resolver el sistema de ecuaciones
#3x+9y-10z  =   24
#x-6y+4z      =   -4
#10x-2y+8z  =  20
resultado =solve([3*x+9*y-10*z-24,x-6*y+4*z+4,10*x-2*y+8*z-20],[x,y,z])
print resultado


Al ejecutar el script se obtiene lo siguiente:
{x: 308/103, z: -117/103, y: 42/103}

Se nota que el resultado obtenido es el mismo del artículo ya mencionado.


La imagen de la utilización de notebook se muestra a continuación:

Cálculo de Integrales con Sympy

Contiuando con los artículos sobre la librería Sympy, en los artículos anteriores se toco lo siguiente:




En este artículo se tocará el tema de cálculo de Integrales.

A continuación se ejecuta ipython notebook (si desea cargar el archivo del notebook de este artículo lo puede bajar del siguiente enlace).

El script del tutorial de muestra a continuación:

# coding: utf-8



# In[16]:



#Se importa sympy

from sympy import *

x = Symbol('x')





# In[26]:



diff(5*(x**5)+3*(x**3)-6*x+5,x); #Se calcula la derivada de la funcion 5(x^5)+3(x^3)-6x+5





# In[27]:



integrate(Out[3],x);#Se integra el resultado de la derivada,noten q el resultado es la ecuación de In[3] pero sin el valor constante





# In[19]:



integrate(cos(x)**2+sin(x),x); #Se inte cos(x)**2+sin(x) con respecto a x





# In[20]:



pprint (Integral(cos(x)**2+sin(x),x));#Se muestra la integral de la ecuación anterior





# In[28]:



integrate(Out[27],(x,0,5));#Se calcula el valor de la integral de 0 a 5 de la ecuación de la salida 27 





# In[29]:



integrate(cos(x)**2+sin(x),(x,0,pi));#Se calcula la integral con el rango de 0 a pi





El res

La imagen de la ejecución del notebook se muestra a continuación:

Para una mejor visualización del ejercicio recomiendo ejecutar el notebook del enlace anterior.

Cálculo de derivadas con sympy

En el artículo anterior se explico como calcular límites de funciones, en este artículo se muestra como calcular la derivada.


Se inicia notebook (si desea abrir el archivo que se utilizo para este artículo lo puede encontrar en el siguiente enlace):

$ipython notebook

Puede crear un notebook (o abrir el notebook mencionado en el enlace anterior).

A continuación se muestra el script del calculo de derivadas de 3 funciones diferentes:

#!/usr/bin/env python

# coding: utf-8





#Se importa sympy

from sympy import *





x = Symbol('x')





#Se calcula la derivada de la funcion cos(sin(x^3)) con respecto a x

print diff(cos(sin(x**3)),x)





#Se calcula la derivada de la funcion 5(x^5)+3(x^3)-6x+5

print diff(5*(x**5)+3*(x**3)-6*x+5,x)





#Calcula la derivada ene-sima de x^2+8x-4+sin(2x)

print diff(x**2+8*x-4+sin(2*x),x,2)


Al ejecutar el script se muestra el resultado de la ejecución de los 3 instrucciones print:
-3*x**2*sin(sin(x**3))*cos(x**3)
25*x**4 + 9*x**2 - 6
2*(-2*sin(2*x) + 1)
x,2)

Al ejecutar el script se muestra el resultado de la ejecución de los 3 instrucciones print:
-3*x**2*sin(sin(x**3))*cos(x**3)
25*x**4 + 9*x**2 - 6
2*(-2*sin(2*x) + 1)


A continuación se muestra una imagen del notebook resultante:



A continuación se muestra una imagen del notebook resultante:

Cálculo de límites con la librería sympy

La librería Sympy permite realizar cálculo de límites, derivadas,  integrales entre otras cosas, usando notación simbólica.

La documentación de sympy la pueden revisar en el siguiente enlace.

Para instalar sympy e ipython-notebook en Debian se ejecuta:
apt-get install python-sympy ipython-notebook

En este caso se mostrará como realizar cálculo de límites con sympy.

Se ejecuta un servidor notebook ( en el siguiente enlace encontrarán el archivo usado para este artículo).

$ipython notebook

Se abre el navegador en http://localhost:8888 y se crea un notebook (para los que bajaron el enlace abren el archivo que se menciono anteriormente):

En este caso se usará un script que se llama limites.py:

#!/usr/bin/env python

# coding: utf-8





from sympy import *







#Se define la variable x como simbolica

x = Symbol("x")







#Calculo de limite de (1/x) cuando x tiende a cero

valor = limit(1/x,x,0)

print valor





#Calculo de limite de (1/x) cuando x tiende a infinito

valor = limit(1/x,x,oo)

print valor





#limite de (5x/2x-3) cuando x tiende a infinito.

valor = limit(5*x/(2*x-3),x,oo)

print valor


El resultado de ejecutarlo es el siguiente:

oo
0
5/2
Para el primer caso el resultado es infinito, para el segundo es cero y para el último es 2.5.

A continuación se deja una imagen del uso de ipython notebook:



3 feb. 2015

#MéridaTechMeetup

El día de hoy se realizó el la Facultad de Ingeniería de la ULA el 1er #MéridaTechMeetup.

Realice un par de presentaciones:

  • Desarrollo de aplicaciones multiplataforma con Python y Kivy.
  • Extracción de datos de páginas web con Python (webscraping).



A continuación las presentaciones desde slideshare:



Desarrollo de aplicaciones multiplataforma con python y Kivy from Ernesto Crespo


Gracias por la invitación a los organizadores del evento.