22 de mar. de 2015

Geometría Analítica con Sympy (triángulos).

A continuación se tiene los artículos sobre sympy tratados anteriorente:


En este artículo se explicará las instrucciones de geometría analítica para el caso del triángulo.

A continuación el código del script:

#!/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)

T = Triangle(P1, P2, P3) ; #Se crea el triangulo con los puntos p1,p2 y p3

print (T.area); #Se calcula el area del triangulo

print (T.angles); #Angulos del triangulo

print (T.sides);#Lados del triangulo

print (T.perimeter);#Perimetro

print (T.is_right())  ; #triangulo recto?

print (T.is_equilateral());#triangulo equilatero?

print (T.is_isosceles());#triangulo isosceles?

print (T.is_scalene());#triangulo escaleno?

print (T.altitudes);#Altitudes

print (T.orthocenter) ;#Intercepcion de las altitudes

print (T.bisectors()) ;#bisector

print (T.incenter) ;#en centro

print (T.incircle); #en circulo

print (T.inradius); #en radio

print (T.medians); #medianas

print (T.centroid);#intercepcion de las medianas

print (T.circumcenter); #intercepcion de bisectores perpendiculares

print (T.circumcircle)

print (T.circumradius)

print (T.medial)

C1 = Circle(P1, 3);#se crea un circulo con centro en P1 y radio 3.

print (T.intersection(C1));#intercepcion del triangulo con el circulo c1

print (T.distance(T.circumcenter)); #minima distancia desde un punto a otro de un segmento

print (T.is_similar(Triangle(P1, P2, P4)));# si dos triangulos son similares?




A continuación se muestra la salida del script:

-11/2
{Point(2, -1): acos(3*sqrt(130)/130), Point(0, 0): acos(2*sqrt(5)/25), Point(3, 4): acos(23*sqrt(26)/130)}
[Segment(Point(0, 0), Point(3, 4)), Segment(Point(2, -1), Point(3, 4)), Segment(Point(0, 0), Point(2, -1))]
sqrt(5) + 5 + sqrt(26)
False
False
False
True
{Point(2, -1): Segment(Point(6/25, 8/25), Point(2, -1)), Point(0, 0): Segment(Point(0, 0), Point(55/26, -11/26)), Point(3, 4): Segment(Point(4/5, -2/5), Point(3, 4))}
Point(10/11, -2/11)
{Point(2, -1): Segment(Point(3*sqrt(5)/(sqrt(5) + sqrt(26)), 4*sqrt(5)/(sqrt(5) + sqrt(26))), Point(2, -1)), Point(0, 0): Segment(Point(0, 0), Point(sqrt(5)/4 + 7/4, -9/4 + 5*sqrt(5)/4)), Point(3, 4): Segment(Point(-50 + 10*sqrt(26), -5*sqrt(26) + 25), Point(3, 4))}
Point((3*sqrt(5) + 10)/(sqrt(5) + 5 + sqrt(26)), (-5 + 4*sqrt(5))/(sqrt(5) + 5 + sqrt(26)))
Circle(Point((3*sqrt(5) + 10)/(sqrt(5) + 5 + sqrt(26)), (-5 + 4*sqrt(5))/(sqrt(5) + 5 + sqrt(26))), -11/(sqrt(5) + 5 + sqrt(26)))
-11/(sqrt(5) + 5 + sqrt(26))
{Point(2, -1): Segment(Point(3/2, 2), Point(2, -1)), Point(0, 0): Segment(Point(0, 0), Point(5/2, 3/2)), Point(3, 4): Segment(Point(1, -1/2), Point(3, 4))}
Point(5/3, 1)
Point(45/22, 35/22)
Circle(Point(45/22, 35/22), 5*sqrt(130)/22)
5*sqrt(130)/22
Triangle(Point(3/2, 2), Point(5/2, 3/2), Point(1, -1/2))
[Point(9/5, 12/5), Point(sqrt(113)/26 + 55/26, -11/26 + 5*sqrt(113)/26)]
sqrt(26)/11
False

El código del script anterior lo pueden ver en el siguiente enlace en bitbucket.org.

También se puede usar notebook (ipython notebook), el archivo que se utilizó se puede descargar en el enlace.

A continuación se muestra una figura de la ejecución del notebook:




2 de mar. de 2015

Geometría Analítica con Sympy (circulos)

A continuación se tiene los artículos sobre sympy tratados anteriorente:


En este artículo se explicará las instrucciones de geometría analítica para el caso del circulo.

A continuación el código del script:
#!/usr/bin/env python
from sympy.geometry import *; #Se importa geometry de sympy
#SE crean los puntos P1,P2,P3 y P4
P1 = Point(0, 0)
P2 = Point(3, 4)
P3 = Point(2, -1)
P4 = Point(-1, 5)
L1 = Line(P1, P2); #linea 1 a partir de los puntos 1 y 2
L2 = L1.perpendicular_line(P3);#linea 2 perpendicular a la linea 1 y contenga al punto 3.
C1 = Circle(P1, 3);#se crea un circulo con centro en P1 y radio 3.
C2 = Circle(P2, P3, P4); #Se crea un circulo que contenta los puntos P1,P2 y P3
print (C2.area); #Area del circulo 2
print (C1.area);#Area del circulo 1
print (C2.radius); #Radio del circulo 2
print (C2.equation());#Ecuacion del circulo 2
print (C2.center);#Centro del circulo 2
print (C2.circumference);#Circunferencia del circulo 2
print (C2.intersection(C1)); #Intercepcion entre el circulo 2 y circulo 1
S1 = Segment(P1, P2);#segmento 1 a partir de los puntos 1 y 2
print (C2.intersection(S1));#Intercepcion entre el circulo 2 y el segmento 1
print (C2.is_tangent(L2));#La recta 2 es tangente al circulo 2?
print (C1.tangent_lines(P4)); #Cuales son las rectas tangentes  al circulo 1 con el punto 4



El resultado de la ejecución del script es el siguiente: 
1105*pi/98
9*pi
sqrt(2210)/14
(x - 5/14)**2 + (y - 27/14)**2 - 1105/98
Point(5/14, 27/14)
sqrt(2210)*pi/7
[Point(55/754 + 27*sqrt(6665)/754, -5*sqrt(6665)/754 + 297/754), Point(-27*sqrt(6665)/754 + 55/754, 297/754 + 5*sqrt(6665)/754)]
[Point(3, 4)]
False
[Line(Point(-1, 5), Point(-9/26 + 15*sqrt(17)/26, 3*sqrt(17)/26 + 45/26)), Line(Point(-1, 5), Point(-15*sqrt(17)/26 - 9/26, -3*sqrt(17)/26 + 45/26))]


A continuación se muestra una imagen del proceso de ejecución de ipython notebook:







23 de feb. de 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 de feb. de 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:

AddThis