{"id":23235,"date":"2026-03-02T13:06:58","date_gmt":"2026-03-02T18:06:58","guid":{"rendered":"https:\/\/blog.espol.edu.ec\/algoritmos101\/?p=23235"},"modified":"2026-04-10T12:28:27","modified_gmt":"2026-04-10T17:28:27","slug":"curvas-polares","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/cv-unidades\/curvas-polares\/","title":{"rendered":"1.2 Curvas polares con Python"},"content":{"rendered":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#cardioide\">Cardioide<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#rosa4hojas\">Rosa cuatro hojas<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p><strong>Referencia<\/strong>: Steward 10.3  p660<\/p>\n\n\n\n<p>La gr\u00e1fica de una ecuaci\u00f3n polar r=f(\u03b8), o de manera m\u00e1s general F(r, \u03b8)=0, consiste de todos los puntos P que tienen al menos una representaci\u00f3n polar (r, u) cuyas coordenadas satisfacen la ecuaci\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"cardioide\">1. Ejemplo - Cardioide<\/h2>\n\n\n\n<figure class=\"wp-block-image alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"415\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2026\/03\/CurvasPolares01_cardioide.gif\" alt=\"Curvas Polares cardioide gr\u00e1fica\" class=\"wp-image-23239\" \/><\/figure>\n\n\n\n<p><strong>Referencia<\/strong>: Steward 10.3  ejemplo 7 p660<\/p>\n\n\n\n<p>Realice la gr\u00e1fica para la curva<\/p>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> r = 1 + \\sin(\\theta)<\/span>\n\n\n\n<h3 class=\"wp-block-heading\">1.1 Desarrollo anal\u00edtico.<\/h3>\n\n\n\n<p>Los valores de la funci\u00f3n tienen como punto de partida la unidad. para \u03b8 =0, el valor de r es 1. Otros puntos de referencia pueden ser \u03b8=\u03c0\/2, r= 2. <\/p>\n\n\n\n<p>El intervalo para la gr\u00e1fica se puede considerar en el intervalo [0,2\u03c0].<\/p>\n\n\n\n<p>Por relaci\u00f3n con otros temas como frecuencia angular, tambi\u00e9n se puede usar la letra \u03c9 como variable para el \u00e1ngulo.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#cardioide\">Cardioide<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#rosa4hojas\">Rosa cuatro hojas<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"algoritmo\">1.2 Algoritmo en Python<\/h3>\n\n\n\n<p>Se desarrolla de forma semejante a los ejercicios para las variables x, y.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Ejercicio 7 Steward 10.3 p662\n# Curvas polares\nimport numpy as np\n\n# INGRESO\nfw = lambda w: 1+ np.sin(w)\na = 0\nb = 2*np.pi\nmuestras = 9\ntitulo = 'Curvas Polares - Cardiode'\nverdecimales = 4\n# suavizar la curva\nmuestras_graf = 6*muestras+1\n\n# PROCEDIMIENTO\nwi = np.linspace(a,b,muestras)\nfi = fw(wi)\n\n# SALIDA\nprint(titulo)\nprint('i,,wi,fi]')\nfor i in range(0,muestras,1):\n    print(i,&#x5B;wi&#x5B;i],fi&#x5B;i]])\n<\/pre><\/div>\n\n\n<p>con lo que se tiene como resultado la tabla de valores r,w:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Curvas Polares - Cardiode\ni,&#091;wi,fi]\n0 &#091;0.0, 1.0]\n1 &#091;0.7853981633974483, 1.7071067811865475]\n2 &#091;1.5707963267948966, 2.0]\n3 &#091;2.356194490192345, 1.7071067811865475]\n4 &#091;3.141592653589793, 1.0000000000000002]\n5 &#091;3.9269908169872414, 0.29289321881345254]\n6 &#091;4.71238898038469, 0.0]\n7 &#091;5.497787143782138, 0.2928932188134523]\n8 &#091;6.283185307179586, 0.9999999999999998]<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#cardioide\">Cardioide<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#rosa4hojas\">Rosa cuatro hojas<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"grafica\">1.3 Gr\u00e1fica con Python para curvas polares<\/h3>\n\n\n\n<p>Se extiende el significado de las coordenadas polares (r, \u03b8) al caso en que r es negativa estando de acuerdo en que, si los puntos (-r, \u03b8) y (r, \u03b8) est\u00e1n sobre la misma recta que pasa por O y a la misma distancia |r| desde O, pero en lados opuestos de O. Si r&amp;gt;0, el punto (r, \u03b8) est\u00e1 en el mismo cuadrante que \u03b8; si r&lt;\u03b8, est\u00e1 en el cuadrante sobre el lado opuesto del polo. Observe que (-r, \u03b8) representa el mismo punto que (r, \u03b8+\u03c0).<\/p>\n\n\n\n<p>Por lo que para el trazado de la gr\u00e1fica se revisan los valores de r para en caso de ser negativos proceder a actualizar el valor de \u03b8. Se usa la funci\u00f3n polar_revisar(r,w) antes de proceder a realizar la gr\u00e1fica,<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# GRAFICA Polares--------------\nimport matplotlib.pyplot as plt\n\nwk = np.linspace(a,b,muestras_graf)\nfk = fw(wk)\ndw = wk&#x5B;1]-wk&#x5B;0]\n\ndef polar_revisar(r,w):\n    ''' (radio,\u00e1ngulo), revisa que r sea siempre positivo,\n    Si r es negativo, w=w+pi\n    ''' \n    if len(r)==len(w):\n        for i in range(0,len(r),1):\n            if r&#x5B;i]&lt;0:\n                r&#x5B;i]= np.abs(r&#x5B;i])\n                w&#x5B;i]= w&#x5B;i]+np.pi\n    else:\n        print(&quot;los tama\u00f1os de r y w no coinciden&quot;)\n    return(r,w)\n\n# revisa radios negativos y corrige\nfk,wk = polar_revisar(fk,wk)\nfj,wj = polar_revisar(fi,wi)\n\nfig_polar  = plt.figure()\ngraf_polar = fig_polar.add_subplot(111,projection='polar')\n\ngraf_polar.plot(wk,fk,label='f(w)') # suave\ngraf_polar.plot(wj,fj,'o',label='&#x5B;wi,fi]') # muestras\n\n# etiquetas\nfor i in range(0,muestras,1):\n    if muestras&lt;=10: # etiquetas de tiempo\n        graf_polar.annotate('w='+str(np.round(wj&#x5B;i],verdecimales)),\n                     xy=&#x5B;wj&#x5B;i],fj&#x5B;i]],\n                     xytext=&#x5B;wj&#x5B;i],fj&#x5B;i]])\n    if muestras&lt;=10 and i&lt;muestras: # etiqueta direccion\n        graf_polar.annotate(&quot;&quot;, xytext=(wj&#x5B;i], fj&#x5B;i]),\n                     xy=(wj&#x5B;i]+dw,fw(wj&#x5B;i]+dw)),\n                     arrowprops=dict(arrowstyle=&quot;-&gt;&quot;))\n\n# entorno de grafica\n# actualiza etiquetas de gr\u00e1fico polar\netiquetas = &#x5B;'0', r'$\\pi$\/4', r'$\\pi$\/2',r'3$\\pi$\/4',\n             r'$\\pi$',r'5$\\pi$\/4',r'3$\\pi$\/2',r'7$\\pi$\/4']\ndtheta = int(360\/len(etiquetas))\nlines, labels = plt.thetagrids(range(0, 360,dtheta),\n                               etiquetas)\ngraf_polar.set_xlabel('w')\n#graf_polar.set_ylabel('f(r,w)\\n')\ngraf_polar.set_title(titulo)\ngraf_polar.legend()\nplt.tight_layout()\nplt.show()\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#cardioide\">Cardioide<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#rosa4hojas\">Rosa cuatro hojas<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"rosa4hojas\">2. Ejemplo - Rosa de cuatro hojas<\/h2>\n\n\n\n<p><strong>Referencia<\/strong>: Steward 10.3 ejemplo 7 p660<\/p>\n\n\n\n<p>Realice la gr\u00e1fica para la curva<\/p>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> r = \\cos(2\\theta)<\/span>\n\n\n\n<p>para el ejercicio considere el intervalo de w entre [0,2\u03c0] y actualice el algoritmo del ejercicio anterior para obtener los siguientes resultados:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Curvas Polares - Rosa cuatro hojas\ni,&#091;wi,fi]\n0 &#091;0.0, 1.0]\n1 &#091;0.7853981633974483, 6.123233995736766e-17]\n2 &#091;1.5707963267948966, -1.0]\n3 &#091;2.356194490192345, -1.8369701987210297e-16]\n4 &#091;3.141592653589793, 1.0]\n5 &#091;3.9269908169872414, 3.061616997868383e-16]\n6 &#091;4.71238898038469, -1.0]\n7 &#091;5.497787143782138, -4.286263797015736e-16]\n8 &#091;6.283185307179586, 1.0]<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"462\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2026\/03\/CurvasPolares02_rosa4hojas.gif\" alt=\"Curvas Polares rosa cuatro hojas gr\u00e1fica con Python\" class=\"wp-image-23241\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#cardioide\">Cardioide<\/a><\/p>\n\n\n\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#grafica\">gr\u00e1fica<\/a><\/p>\n\n\n\n<p><a href=\"#rosa4hojas\">Rosa cuatro hojas<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n","protected":false},"excerpt":{"rendered":"<p>Cardioide algoritmo gr\u00e1fica Rosa cuatro hojas Referencia: Steward 10.3 p660 La gr\u00e1fica de una ecuaci\u00f3n polar r=f(\u03b8), o de manera m\u00e1s general F(r, \u03b8)=0, consiste de todos los puntos P que tienen al menos una representaci\u00f3n polar (r, u) cuyas coordenadas satisfacen la ecuaci\u00f3n. 1. Ejemplo - Cardioide Referencia: Steward 10.3 ejemplo 7 p660 Realice [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"wp-custom-template-entrada-fp-unidades","format":"standard","meta":{"footnotes":""},"categories":[238],"tags":[],"class_list":["post-23235","post","type-post","status-publish","format-standard","hentry","category-cv-unidades"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/23235","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/comments?post=23235"}],"version-history":[{"count":6,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/23235\/revisions"}],"predecessor-version":[{"id":23243,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/23235\/revisions\/23243"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=23235"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=23235"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=23235"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}