{"id":25739,"date":"2026-09-08T15:10:25","date_gmt":"2026-09-08T20:10:25","guid":{"rendered":"https:\/\/blog.espol.edu.ec\/algoritmos101\/?p=25739"},"modified":"2026-09-09T08:19:49","modified_gmt":"2026-09-09T13:19:49","slug":"s3eva2026paoi_t2-pista-seguidor-linea","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-s3eva30\/s3eva2026paoi_t2-pista-seguidor-linea\/","title":{"rendered":"s3Eva2026PAOI_T2 Pista para veh\u00edculo seguidor de l\u00ednea"},"content":{"rendered":"\n<p><strong>Ejercicio<\/strong>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-3eva30\/3eva2026paoi_t2-pista-seguidor-linea\/\" data-type=\"post\" data-id=\"25696\">3Eva2026PAOI_T2 Pista para veh\u00edculo seguidor de l\u00ednea<\/a><\/p>\n\n\n\n<p>Las ecuaciones y los intervalos del ejercicio son:<\/p>\n\n\n\n<div class=\"wp-block-columns alignwide is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> x(t) = 2\\cos(t) +2 <\/span>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> y(t) = 2\\sin(2t) +2 <\/span>\n\n\n\n<p class=\"has-text-align-center\">Intervalos = [ [0, \u03c0],<br>[ \u03c0, 47\/64(2\u03c0)],<br>[7\/8(2\u03c0), 2\u03c0]]<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2026\/09\/pistaSeguidorLinea01.png\" alt=\"Pista seguidor de l\u00ednea, intervalos\" class=\"wp-image-25700\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-left\">literal a<\/h2>\n\n\n\n<p>Para el planteamiento del ejercicio se selecciona el primer intervalo de tiempo [0, \u03c0]. En el intervalo se seleccionan al menos 3 tramos o 4 muestras para obtener un polinomio de grado 3. Con el algoritmo se podr\u00e1 revisar el resultado en la gr\u00e1fica y observar si es necesario aumentar el n\u00famero de muestras<\/p>\n\n\n\n<p>Solo 2 tramos o 3 muestras para un polinomio de grado 2 ser\u00e1 una par\u00e1bola que no representa el intervalo. Adicionalmente el resultado ser\u00eda una l\u00ednea horizontal al tener valor igual a los extremos en el centro del intervalo.<\/p>\n\n\n\n<p>El tama\u00f1o de paso h = (\u03c0-0)\/3 = \u03c0\/3<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">literal b<\/h2>\n\n\n\n<p>Con lo que se obtienen los valores para interpolar y obtener el polinomio p(x) usando las coordenadas x,y.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>i<\/td><td>0<\/td><td>1<\/td><td>2<\/td><td>3<\/td><\/tr><tr><td>t<\/td><td>0<\/td><td>\u03c0\/3<\/td><td>2\u03c0\/3<\/td><td>\u03c0<\/td><\/tr><tr><td><strong>x(t)<\/strong><\/td><td>4<\/td><td>3<\/td><td>1<\/td><td>0<\/td><\/tr><tr><td><strong>y(t)<\/strong><\/td><td>2<\/td><td>3.732<\/td><td>0.2679<\/td><td>2<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Las expresiones siguiendo el algoritmo para el m\u00e9todo de Lagrange son:<\/p>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> p_3(x) = 2\\frac{(x-3)(x-1)(x-0)}{(4-3)(4-1)(4-0)} <\/span>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> + 3.732\\frac{(x-4)(x-1)(x-0)}{(3-4)(3-1)(3-0)} <\/span>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> + 0.2679\\frac{(x-4)(x-3)(x-0)}{(1-4)(1-3)(1-0)} <\/span>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> + 2\\frac{(x-4)(x-3)(x-1)}{(0-4)(0-3)(0-1)} <\/span>\n\n\n\n<p>La simplificaci\u00f3n de la expresi\u00f3n realizada con sym.expand()<\/p>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\">p_3(x) = 2.0 - 4.61880215351701 x + 3.46410161513775 x^2-0.577350269189626x^3 <\/span>\n\n\n\n<h2 class=\"wp-block-heading\">literal c<\/h2>\n\n\n\n<p>La gr\u00e1fica del polinomio obtenido, junto a la gr\u00e1fica param\u00e9trica x(t),y(t) permite observar el nivel de aproximaci\u00f3n para el grado 3 de polinomio.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2026\/09\/pistaSeguidorLineaTramo01a.png\" alt=\"pista Seguidor Linea Tramo 01 con polinomio grado 3\" class=\"wp-image-25741\" \/><\/figure>\n\n\n\n<p>Los resultados del algoritmo para el ejercicio son:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>    valores de xi:  &#091;4. 3. 1. 0.]\n    valores de yi:  &#091;2.         3.73205081 0.26794919 2.        ]\ndivisores en L&#091;i]:  &#091; 12.  -6.   6. -12.]\n\nInterpolaci\u00f3n Lagrange Pista concurso\n0.166666666666667*x*(x - 3.0)*(x - 1.0) +\n0.0446581987385205*x*(x - 4.0)*(x - 3.0) +\n-0.166666666666667*(x - 4.0)*(x - 3.0)*(x - 1.0) +\n-0.622008467928146*x*(x - 4.0)*(x - 1.0)\n\nPolinomio de Lagrange: \n-0.577350269189626*x**3 + 3.46410161513775*x**2 - 4.61880215351701*x + 2.0\np(x):\n                     3                     2                           \n- 0.577350269189626\u22c5x  + 3.46410161513775\u22c5x  - 4.61880215351701\u22c5x + 2.0<\/code><\/pre>\n\n\n\n<p>Algoritmo en Python<\/p>\n\n\n\n<p>Usando el algoritmo base de la unidad 5 para interpolaci\u00f3n con el m\u00e9todo de Lagrange:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Pista para veh\u00edculo autonomo\nimport numpy as np\nimport sympy as sym\n\n# INGRESO\nfx = lambda t: 2*np.cos(t)+2\nfy = lambda t: 2*np.sin(2*t)+2\nttramo = &#x5B;&#x5B;0,np.pi],&#x5B;np.pi,47\/64*(2*np.pi)],&#x5B;7\/8*(2*np.pi),2*np.pi]]\na = ttramo&#x5B;0]&#x5B;0]\nb = ttramo&#x5B;0]&#x5B;1]\nmuestras = 4\n\n# PROCEDIMIENTO\nti = np.linspace(a,b,muestras)\nxi = fx(ti)\nfi = fy(ti)\n\n# Interpolacion de Lagrange\n# divisoresL solo para mostrar valores denominador\ntitulo = 'Interpolaci\u00f3n Lagrange Pista concurso'\n \n# PROCEDIMIENTO\n# Vectores como arreglo, numeros reales\nxi = np.array(xi,dtype=float)\nfi = np.array(fi,dtype=float)\nn = len(xi)\n \n# Polinomio de Lagrange\nx = sym.Symbol('x')\npolinomio = 0*x   # sym.S.Zero en Sympy\ndivisorL = np.zeros(n, dtype = float)\nfor i in range(0,n,1):\n     \n    # Termino de Lagrange\n    numerador = 1\n    denominador = 1\n    for j  in range(0,n,1):\n        if (j!=i):\n            numerador = numerador*(x-xi&#x5B;j])\n            denominador = denominador*(xi&#x5B;i]-xi&#x5B;j])\n    terminoLi = numerador\/denominador\n \n    polinomio = polinomio + terminoLi*fi&#x5B;i]\n    divisorL&#x5B;i] = denominador\n \npolisimple = polinomio.expand() # simplifica los (x-xi)\npx = sym.lambdify(x,polisimple) # evaluaci\u00f3n num\u00e9rica\n \n# SALIDA\nprint('    valores de xi: ',xi)\nprint('    valores de yi: ',fi)\nprint('divisores en L&#x5B;i]: ',divisorL)\nprint()\nprint(titulo)\n#print(polinomio)\nterminos = sym.Add.make_args(polinomio)\nn_term = len(terminos)\nfor i in range(0,n_term,1):\n    if i&lt;(n_term-1):\n        print(terminos&#x5B;i],'+')\n    else:\n        print(terminos&#x5B;i])\nprint()\nprint('Polinomio de Lagrange: ')\nprint(polisimple)\nprint('p(x):')\nsym.pprint(polisimple)\n\n# Gr\u00e1fica --------------\nimport matplotlib.pyplot as plt\n \nmuestras2 = 4*muestras   # resoluci\u00f3n gr\u00e1fica\n\ntk = np.linspace(a,b,muestras2)\nxf = fx(tk)\nyf = fy(tk)\n\na = np.min(xi)  # intervalo &#x5B;a,b]\nb = np.max(xi)\nxk = np.linspace(a,b,muestras2)\nyk = px(xk)\n\nplt.plot(xi,fi,'o', label = '&#x5B;xi,fi]')\nplt.plot(xk,yk, label = 'p(x)')\nplt.plot(xf,yf, label = '&#x5B;xf,yf]')\nplt.legend()\nplt.xlabel('xi')\nplt.ylabel('fi')\nplt.title(titulo)\nplt.tight_layout()\nplt.show()\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">literal d<\/h2>\n\n\n\n<p>Para determinar la cota de error, ser\u00e1 necesario aumentar el n\u00famero de muestras y calcular el error entre las que no se usan para generar el polinomio. por ejemplo con tama\u00f1o de paso  \u03c0\/6 en t<\/p>\n\n\n\n<figure class=\"wp-block-table alignwide\"><table class=\"has-fixed-layout\"><tbody><tr><td>i<\/td><td>0<\/td><td>1<\/td><td>2<\/td><td>3<\/td><td>4<\/td><td>5<\/td><td>6<\/td><\/tr><tr><td>ti<\/td><td>0<\/td><td>\u03c0\/6<\/td><td>2\u03c0\/6<\/td><td>3\u03c0\/6<\/td><td>4\u03c0\/6<\/td><td>5\u03c0\/6<\/td><td>\u03c0<\/td><\/tr><tr><td>x(t)<\/td><td>4<\/td><td>3.73205081<\/td><td>3<\/td><td>2<\/td><td>1<\/td><td>0.26794919<\/td><td>0<\/td><\/tr><tr><td><strong>y(t)<\/strong><\/td><td>2<\/td><td>3.73205081<\/td><td>3.73205081<\/td><td>2<\/td><td>0.26794919<\/td><td>0.26794919<\/td><td>2<\/td><\/tr><tr><td><strong>p(x)<\/strong><\/td><td>2<\/td><td>3<\/td><td>3.73205081<\/td><td>2<\/td><td>0.26794919<\/td><td>1<\/td><td>2<\/td><\/tr><tr><td>error<\/td><td>0<\/td><td>0.73205081<\/td><td>0<\/td><td>0<\/td><td>0<\/td><td>0.73205081<\/td><td>0<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Los valores de la tabla se pueden obtener como:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>&gt;&gt;&gt; tk = np.linspace(0,np.pi,7)\n&gt;&gt;&gt; tk\narray(&#091;0.        , 0.52359878, 1.04719755, 1.57079633, 2.0943951 ,  2.61799388, 3.14159265])\n\n&gt;&gt;&gt; fy(tk)-px(fx(tk))\narray(&#091; 1.03028697e-13,  7.32050808e-01,  6.12843110e-14,  2.88657986e-14,\n        8.65973959e-15, -7.32050808e-01, -4.44089210e-16])\n\n<strong>Nota<\/strong>: considere los valores de e-12 como casi cero por ser muy peque\u00f1os, de orden de magnitud muy bajo.<\/code><\/pre>\n\n\n\n<p>Considerando el error =max | p(x)-y(t) | = 0.73205081<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">literal e<\/h2>\n\n\n\n<p>Para los siguientes intervalos se cambia la selecci\u00f3n usando solo el \u00edndice de fila de tramo en el algoritmo. Con los resultados es posible comentar y mejorar los resultados cambiando el grado del polinomio para que exista un mejor ajuste a la curva original de la pista.<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>a = ttramo&#091;1]&#091;0]\nb = ttramo&#091;1]&#091;1]\n\n    valores de xi:  &#091;0.         0.23615747 0.88885953 1.80396572]\n    valores de yi:  &#091;2.         3.66293922 3.84775907 2.39018064]\ndivisores en L&#091;i]:  &#091;-0.37867192  0.2416627  -0.53090842  2.58816951]\n\nInterpolaci\u00f3n Lagrange Pista concurso\n15.1572388033053*x*(x - 1.80396571934088)*(x - 0.888859533960796) +\n0.923502358637029*x*(x - 0.888859533960796)*(x - 0.23615747130329) +\n-7.24750058330231*x*(x - 1.80396571934088)*(x - 0.23615747130329) +\n-5.28161682322365*(x - 1.80396571934088)*(x - 0.888859533960796)*(x - 0.23615747130329)\n\nPolinomio de Lagrange: \n3.55162375541638*x**3 - 11.5991928303255*x**2 + 9.58281483750129*x + 2.0\np(x):\n                  3                     2                           \n3.55162375541638\u22c5x  - 11.5991928303255\u22c5x  + 9.58281483750129\u22c5x + 2.0<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2026\/09\/pistaSeguidorLineaTramo02.png\" alt=\"Pista Seguidor Linea Tramo 02\" class=\"wp-image-25743\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>a = ttramo&#091;2]&#091;0]\nb = ttramo&#091;2]&#091;1]\n\n   valores de xi:  &#091;3.41421356 3.73205081 3.93185165 4.        ]\n    valores de yi:  &#091;0.         0.26794919 1.         2.        ]\ndivisores en L&#091;i]:  &#091;-0.09637632  0.01701589 -0.00704821  0.01069663]\n\nInterpolaci\u00f3n Lagrange Pista concurso\n15.7470023202161*(x - 4.0)*(x - 3.93185165257814)*(x - 3.41421356237309) +\n186.974724475551*(x - 3.93185165257814)*(x - 3.73205080756888)*(x - 3.41421356237309) +\n-141.879981884845*(x - 4.0)*(x - 3.73205080756888)*(x - 3.41421356237309)\n\nPolinomio de Lagrange: \n60.8417449109225*x**3 - 668.562419392989*x**2 + 2446.6806568994*x - 2981.59559160881\np(x):\n                  3                     2                                       \n60.8417449109225\u22c5x  - 668.562419392989\u22c5x  + 2446.6806568994\u22c5x - 2981.59559160881<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2026\/09\/pistaSeguidorLineaTramo03.png\" alt=\"pista Seguidor Linea Tramo 03\" class=\"wp-image-25744\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 3Eva2026PAOI_T2 Pista para veh\u00edculo seguidor de l\u00ednea Las ecuaciones y los intervalos del ejercicio son: Intervalos = [ [0, \u03c0],[ \u03c0, 47\/64(2\u03c0)],[7\/8(2\u03c0), 2\u03c0]] literal a Para el planteamiento del ejercicio se selecciona el primer intervalo de tiempo [0, \u03c0]. En el intervalo se seleccionan al menos 3 tramos o 4 muestras para obtener un [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"wp-custom-template-entrada-mn-ejemplo","format":"standard","meta":{"footnotes":""},"categories":[52],"tags":[58,54],"class_list":["post-25739","post","type-post","status-publish","format-standard","hentry","category-mn-s3eva30","tag-ejemplos-python","tag-mnumericos"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/25739","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=25739"}],"version-history":[{"count":3,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/25739\/revisions"}],"predecessor-version":[{"id":25747,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/25739\/revisions\/25747"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=25739"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=25739"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=25739"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}