1.2 Curvas polares con Python



Referencia: Steward 10.3 p660

La gráfica de una ecuación polar r=f(θ), o de manera más general F(r, θ)=0, consiste de todos los puntos P que tienen al menos una representación polar (r, u) cuyas coordenadas satisfacen la ecuación.

1. Ejemplo - Cardioide

Curvas Polares cardioide gráfica

Referencia: Steward 10.3 ejemplo 7 p660

Realice la gráfica para la curva

r = 1 + \sin(\theta)

1.1 Desarrollo analítico.

Los valores de la función tienen como punto de partida la unidad. para θ =0, el valor de r es 1. Otros puntos de referencia pueden ser θ=π/2, r= 2.

El intervalo para la gráfica se puede considerar en el intervalo [0,2π].

Por relación con otros temas como frecuencia angular, también se puede usar la letra ω como variable para el ángulo.



1.2 Algoritmo en Python

Se desarrolla de forma semejante a los ejercicios para las variables x, y.

# Ejercicio 7 Steward 10.3 p662
# Curvas polares
import numpy as np

# INGRESO
fw = lambda w: 1+ np.sin(w)
a = 0
b = 2*np.pi
muestras = 9
titulo = 'Curvas Polares - Cardiode'
verdecimales = 4
# suavizar la curva
muestras_graf = 6*muestras+1

# PROCEDIMIENTO
wi = np.linspace(a,b,muestras)
fi = fw(wi)

# SALIDA
print(titulo)
print('i,,wi,fi]')
for i in range(0,muestras,1):
    print(i,[wi[i],fi[i]])

con lo que se tiene como resultado la tabla de valores r,w:

Curvas Polares - Cardiode
i,[wi,fi]
0 [0.0, 1.0]
1 [0.7853981633974483, 1.7071067811865475]
2 [1.5707963267948966, 2.0]
3 [2.356194490192345, 1.7071067811865475]
4 [3.141592653589793, 1.0000000000000002]
5 [3.9269908169872414, 0.29289321881345254]
6 [4.71238898038469, 0.0]
7 [5.497787143782138, 0.2928932188134523]
8 [6.283185307179586, 0.9999999999999998]


1.3 Gráfica con Python para curvas polares

Se extiende el significado de las coordenadas polares (r, θ) al caso en que r es negativa estando de acuerdo en que, si los puntos (-r, θ) y (r, θ) están sobre la misma recta que pasa por O y a la misma distancia |r| desde O, pero en lados opuestos de O. Si r&gt;0, el punto (r, θ) está en el mismo cuadrante que θ; si r<θ, está en el cuadrante sobre el lado opuesto del polo. Observe que (-r, θ) representa el mismo punto que (r, θ+π).

Por lo que para el trazado de la gráfica se revisan los valores de r para en caso de ser negativos proceder a actualizar el valor de θ. Se usa la función polar_revisar(r,w) antes de proceder a realizar la gráfica,

# GRAFICA Polares--------------
import matplotlib.pyplot as plt

wk = np.linspace(a,b,muestras_graf)
fk = fw(wk)
dw = wk[1]-wk[0]

def polar_revisar(r,w):
    ''' (radio,ángulo), revisa que r sea siempre positivo,
    Si r es negativo, w=w+pi
    ''' 
    if len(r)==len(w):
        for i in range(0,len(r),1):
            if r[i]<0:
                r[i]= np.abs(r[i])
                w[i]= w[i]+np.pi
    else:
        print("los tamaños de r y w no coinciden")
    return(r,w)

# revisa radios negativos y corrige
fk,wk = polar_revisar(fk,wk)
fj,wj = polar_revisar(fi,wi)

fig_polar  = plt.figure()
graf_polar = fig_polar.add_subplot(111,projection='polar')

graf_polar.plot(wk,fk,label='f(w)') # suave
graf_polar.plot(wj,fj,'o',label='[wi,fi]') # muestras

# etiquetas
for i in range(0,muestras,1):
    if muestras<=10: # etiquetas de tiempo
        graf_polar.annotate('w='+str(np.round(wj[i],verdecimales)),
                     xy=[wj[i],fj[i]],
                     xytext=[wj[i],fj[i]])
    if muestras<=10 and i<muestras: # etiqueta direccion
        graf_polar.annotate("", xytext=(wj[i], fj[i]),
                     xy=(wj[i]+dw,fw(wj[i]+dw)),
                     arrowprops=dict(arrowstyle="->"))

# entorno de grafica
# actualiza etiquetas de gráfico polar
etiquetas = ['0', r'$\pi$/4', r'$\pi$/2',r'3$\pi$/4',
             r'$\pi$',r'5$\pi$/4',r'3$\pi$/2',r'7$\pi$/4']
dtheta = int(360/len(etiquetas))
lines, labels = plt.thetagrids(range(0, 360,dtheta),
                               etiquetas)
graf_polar.set_xlabel('w')
#graf_polar.set_ylabel('f(r,w)\n')
graf_polar.set_title(titulo)
graf_polar.legend()
plt.tight_layout()
plt.show()


2. Ejemplo - Rosa de cuatro hojas

Referencia: Steward 10.3 ejemplo 7 p660

Realice la gráfica para la curva

r = \cos(2\theta)

para el ejercicio considere el intervalo de w entre [0,2π] y actualice el algoritmo del ejercicio anterior para obtener los siguientes resultados:

Curvas Polares - Rosa cuatro hojas
i,[wi,fi]
0 [0.0, 1.0]
1 [0.7853981633974483, 6.123233995736766e-17]
2 [1.5707963267948966, -1.0]
3 [2.356194490192345, -1.8369701987210297e-16]
4 [3.141592653589793, 1.0]
5 [3.9269908169872414, 3.061616997868383e-16]
6 [4.71238898038469, -1.0]
7 [5.497787143782138, -4.286263797015736e-16]
8 [6.283185307179586, 1.0]
Curvas Polares rosa cuatro hojas gráfica con Python



Unidades FP