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

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>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]
