{"id":10723,"date":"2025-02-12T09:30:21","date_gmt":"2025-02-12T14:30:21","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/analisisnumerico\/?p=10723"},"modified":"2026-04-05T21:05:40","modified_gmt":"2026-04-06T02:05:40","slug":"s3eva2024paoii_t1-accidente-entre-aeronaves","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-s3eva30\/s3eva2024paoii_t1-accidente-entre-aeronaves\/","title":{"rendered":"s3Eva2024PAOII_T1 Accidente entre aeronaves"},"content":{"rendered":"\n<p><strong>Ejercicio<\/strong>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-3eva30\/3eva2024paoii_t1-accidente-entre-aeronaves\/\" data-type=\"post\" data-id=\"10718\">3Eva2024PAOII_T1 Accidente entre aeronaves<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">literal a<\/h2>\n\n\n\n<p>La distancia entre las aeronaves se determina a partir de las ecuaciones proporcionadas en el enunciado.<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> d = \\sqrt{(x_2-x_1)^2 + (y_2-y_1)^2 + (z_2-z_1)^2}<\/span>\n\n\n\n<p>La ecuaci\u00f3n tambi\u00e9n mantiene la forma y el m\u00ednimo si se utiliza el cuadrado de la distancia:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> D = d^2 = (x_2-x_1)^2 + (y_2-y_1)^2 + (z_2-z_1)^2<\/span>\n\n\n\n<p>Las diferencias de distancia por eje pueden ser convergentes hacia el punto de impacto, dado que se conoce que el accidente ya ocurri\u00f3. Por lo que tambi\u00e9n se pueden revisar las distancias entre ejes en lugar de la distancia total en 3D, simplificando un poco el ejercicio. Observe la gr\u00e1fica proporcionada:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"395\" height=\"339\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2025\/02\/accidenteaereo01.png\" alt=\"accidente a\u00e9reo avi\u00f3n helic\u00f3ptero\" class=\"wp-image-17642\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-table alignwide\"><table><thead><tr><th><strong><em>Avi\u00f3n<\/em><\/strong><\/th><th><strong><em>Helic\u00f3ptero<\/em><\/strong><\/th><th><br>distancia por eje<\/th><\/tr><\/thead><tbody><tr><td>Ax(t) = 5.1<\/td><td>Hx(t) = 0.5t<\/td><td>|0.5t-5.1|<\/td><\/tr><tr><td>Ay(t) = 0.4t<\/td><td>Hy(t) = sin(0.1t)cos(0.7t)+3.7<\/td><td>|sin(0.1t)cos(0.7t) + 3.7-0.4|<\/td><\/tr><tr><td><span class=\"wp-katex-eq\" data-display=\"false\"> Az(t) = 0.5 e^{-0.2t} + 0.3 <\/span><\/td><td>Hz(t) = 0.36<\/td><td>|0.36 - (0.5 e^{-0.2t} + 0.3)|<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> D = (0.5t-5.1)^2 + (sin(0.1t)cos(0.7t)+3.7-0.4t)^2 + (0.36-(0.5 e^{-0.2t} + 0.3))^2<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> dx =0.5t-5.1 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> dy = sin(0.1t)cos(0.7t) + 3.7-0.4 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> dz = 0.36 - (0.5 e^{-0.2t} + 0.3) <\/span>\n\n\n\n<p>Se realiza la gr\u00e1fica para la distancia al cuadrado Di y las distancias por cada eje dxi, dyi, dzi :<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"561\" height=\"427\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2025\/02\/accidenteaereodistanciacuadrado.png\" alt=\"accidente a\u00e9reo distancia cuadrado\" class=\"wp-image-18651\" \/><\/figure>\n\n\n\n<p>Por lo que el resultado tambi\u00e9n se podr\u00eda determinar usando por ejemplo el eje y. La ecuaci\u00f3n a buscar la distancia m\u00ednima, punto de choque o cruce por cero podr\u00eda ser:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> f(t) =dy(t)= sin(0.1t)cos(0.7t) + 3.7-0.4t = 0<\/span>\n\n\n\n<h2 class=\"wp-block-heading\">literal b<\/h2>\n\n\n\n<p>Por la gr\u00e1fica se puede obtener un intervalo de b\u00fasqueda entre [8, 12], que usando solo las distancias en el eje y, se tiene:<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> dy(8) =1.0563<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> dy(12) =-1.5839<\/span>\n\n\n\n<h2 class=\"wp-block-heading\">literal c<\/h2>\n\n\n\n<p>Se pide usar un m\u00e9todo de b\u00fasqueda de ra\u00edces, pudiendo seleccionar Bisecci\u00f3n en el intervalo encontrado en el literal b.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">iteraci\u00f3n 1<\/h4>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> a = 8, b=12 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> c = \\frac{a+b}{2} = \\frac{8+12}{2} = 10 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> f(8) = 1.0563 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> f(10) =sin(0.1(10))cos(0.7(10)) + 3.7-0.4(10) = 0.3343<\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> f(12) = -1.5839 <\/span>\n\n\n\n<p>cambio de signo a la derecha<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> a = 10, b = 12 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> tramo = |12-10| =2 <\/span>\n\n\n\n<h4 class=\"wp-block-heading\">iteraci\u00f3n 2<\/h4>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> a = 10, b=12 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> c = \\frac{10+12}{2} = 11 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> f(11) =sin(0.1(11))cos(0.7(11)) + 3.7-0.4(11) = -0.5633<\/span>\n\n\n\n<p>cambio de signo a la izquierda<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> a = 10, b = 11 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> tramo = |11-10| = 1 <\/span>\n\n\n\n<h4 class=\"wp-block-heading\">iteraci\u00f3n 3<\/h4>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> a = 10, b=11 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> c = \\frac{10+11}{2} = 10.5 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> f(10.5) =sin(0.1(10.5))cos(0.7(10.5)) + 3.7-0.4(10.5) = -0.0811<\/span>\n\n\n\n<p>cambio de signo a la izquierda<\/p>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> a = 10, b = 10.5 <\/span>\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> tramo = |10.5-10| = 0.5 <\/span>\n\n\n\n<h2 class=\"wp-block-heading\">literal d<\/h2>\n\n\n\n<p>La variable independiente en el ejercicio es tiempo 't', que podr\u00eda ser segundos. Si la tolerancia se estima en milisegundos, tolera = 10-3 .<\/p>\n\n\n\n<p>El error se ha calculado en cada iteraci\u00f3n<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">literal e<\/h2>\n\n\n\n<p>El error disminuye en cada iteraci\u00f3n, por lo que el m\u00e9todo converge.<\/p>\n\n\n\n<p>La distancia m\u00ednima entre las aeronaves no tiene que llegar a cero para que se produzca un accidente. Las dimensiones de las aeronaves muestran que se encuentran entre 70m y 4 m, por lo que se estima que debe existir una separaci\u00f3n mayor a 70 metros en cualquiera de los ejes para evitar un accidente. Si las coordenadas se estiman en Km, la tolerancia ser\u00eda de 0.070 Km al considerar m\u00e1s de 70 metros como la distancia segura.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">literal f<\/h2>\n\n\n\n<p>Usando el algoritmo se encuentra la ra\u00edz en:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>i &#091;'a', 'c', 'b'] &#091;'f(a)', 'f(c)', 'f(b)']\n   tramo\n0 &#091;8, 10.0, 12] &#091; 1.0564  0.3344 -1.584 ]\n   2.0\n1 &#091;10.0, 11.0, 12] &#091; 0.3344 -0.5633 -1.584 ]\n   1.0\n2 &#091;10.0, 10.5, 11.0] &#091; 0.3344 -0.0811 -0.5633]\n   0.5\n3 &#091;10.0, 10.25, 10.5] &#091; 0.3344  0.1368 -0.0811]\n   0.25\n4 &#091;10.25, 10.375, 10.5] &#091; 0.1368  0.0302 -0.0811]\n   0.125\n5 &#091;10.375, 10.4375, 10.5] &#091; 0.0302 -0.0249 -0.0811]\n   0.0625\n6 &#091;10.375, 10.40625, 10.4375] &#091; 0.0302  0.0028 -0.0249]\n   0.03125\n7 &#091;10.40625, 10.421875, 10.4375] &#091; 0.0028 -0.011  -0.0249]\n   0.015625\n8 &#091;10.40625, 10.4140625, 10.421875] &#091; 0.0028 -0.0041 -0.011 ]\n   0.0078125\n9 &#091;10.40625, 10.41015625, 10.4140625] &#091; 0.0028 -0.0007 -0.0041]\n   0.00390625\n10 &#091;10.40625, 10.408203125, 10.41015625] &#091; 0.0028  0.001  -0.0007]\n   0.001953125\n11 &#091;10.408203125, 10.4091796875, 10.41015625] &#091; 0.001   0.0002 -0.0007]\n   0.0009765625\nra\u00edz en:  10.4091796875<\/code><\/pre>\n\n\n\n<p>Por lo que las coordenadas de choque entre aeronaves ser\u00e1:<\/p>\n\n\n\n<figure class=\"wp-block-table alignwide\"><table><thead><tr><th><strong><em>Avi\u00f3n<\/em><\/strong><\/th><th><strong><em>Helic\u00f3ptero<\/em><\/strong><\/th><th>distancia por eje<\/th><\/tr><\/thead><tbody><tr><td>Ax(t) = 5.1<\/td><td>Hx(t) = 0.5 (10.40) = 5.2<\/td><td>|5.1-5.2| = 0.1<\/td><\/tr><tr><td>Ay(t) = 0.4(10.4) = 4.16<\/td><td>Hy(t) = sin(0.1(10.40))cos(0.7(10.40))+3.7 = 4.168<\/td><td>|4.16 - 4.168| = 0.008<\/td><\/tr><tr><td><span class=\"wp-katex-eq\" data-display=\"false\"> Az(10.4) = 0.5 e^{-0.2(10.4)} + 0.3 <\/span>\n<p>= 0.3624<\/p>\n<\/td><td>Hz(t) = 0.36<\/td><td>|0.3624 - 0.36|&nbsp; = 0.0024<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Instrucciones en Python para Gr\u00e1fica de distancias<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport sympy as sym\n\n# INGRESO\n# Avi\u00f3n Aterriza\nAx = lambda t: 5.1 + 0*t\nAy = lambda t: 0.4*t\nAz = lambda t: 0.5*np.exp(-0.2*t) + 0.3\n# helic\u00f3ptero\nHx = lambda t: 0.5*t + 0*t\nHy = lambda t: np.sin(0.10*t)*np.cos(0.7*t)+ 3.7\nHz = lambda t: 0.36 + 0*t\n\na = 0\nb = 6\/0.5 # x entre&#x5B;0,6] usando gx(t)= 6\nmuestras = 41\n\n# PROCEDIMIENTO\n# Distancia por ejes\ndx = lambda t: Hx(t) - Ax(t)\ndy = lambda t: Hy(t) - Ay(t)\ndz = lambda t: Hz(t) - Az(t)\n# Distancia 3D\ndistancia2 = lambda t: dx(t)**2 + dy(t)**2 + dz(t)**2\n\n# Simulacion en segmento t=&#x5B;a,b]\nti = np.linspace(a,b,muestras)\ndxi = dx(ti)\ndyi = dy(ti)\ndzi = dz(ti)\n\nDi = distancia2(ti)\n\n# SALIDA\nprint(dy(8))\nprint(dy(12))\n\nplt.plot(ti,Di, label='Di')\nplt.plot(ti,dxi,label='dxi')\nplt.plot(ti,dyi,label='dyi')\nplt.plot(ti,dzi,label='dzi')\nplt.xlabel('ti')\nplt.ylabel('distancia2')\nplt.grid()\nplt.legend()\nplt.show()\n<\/pre><\/div>\n\n\n<p>Instrucciones en Python - Algoritmo Bisecci\u00f3n<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# 3Eva_2024PAOII_T1 Accidente entre aeronaves\n# Algoritmo de Bisecci\u00f3n\n# &#x5B;a,b] se escogen de la gr\u00e1fica de la funci\u00f3n\n# error = tolera\n\nimport numpy as np\nimport matplotlib.pyplot as plt\n\n# Algoritmo de Bisecci\u00f3n\n# &#x5B;a,b] se escogen de la gr\u00e1fica de la funci\u00f3n\n# error = tolera\nimport numpy as np\n\ndef biseccion(fx,a,b,tolera,iteramax = 20, vertabla=False, precision=4):\n    '''\n    Algoritmo de Bisecci\u00f3n\n    Los valores de &#x5B;a,b] son seleccionados\n    desde la gr\u00e1fica de la funci\u00f3n\n    error = tolera\n    '''\n    fa = fx(a)\n    fb = fx(b)\n    tramo = np.abs(b-a)\n    itera = 0\n    cambia = np.sign(fa)*np.sign(fb)\n    if cambia&lt;0: # existe cambio de signo f(a) vs f(b)\n        if vertabla==True:\n            print('m\u00e9todo de Bisecci\u00f3n')\n            print('i', &#x5B;'a','c','b'],&#x5B; 'f(a)', 'f(c)','f(b)'])\n            print('  ','tramo')\n            np.set_printoptions(precision)\n            \n        while (tramo&gt;=tolera and itera&lt;=iteramax):\n            c = (a+b)\/2\n            fc = fx(c)\n            cambia = np.sign(fa)*np.sign(fc)\n            if vertabla==True:\n                print(itera,&#x5B;a,c,b],np.array(&#x5B;fa,fc,fb]))\n            if (cambia&lt;0):\n                b = c\n                fb = fc\n            else:\n                a = c\n                fa = fc\n            tramo = np.abs(b-a)\n            if vertabla==True:\n                print('  ',tramo)\n            itera = itera + 1\n        respuesta = c\n        # Valida respuesta\n        if (itera&gt;=iteramax):\n            respuesta = np.nan\n\n    else: \n        print(' No existe cambio de signo entre f(a) y f(b)')\n        print(' f(a) =',fa,',  f(b) =',fb) \n        respuesta=np.nan\n    return(respuesta)\n\n# INGRESO\nfx = lambda t: np.sin(0.10*t)*np.cos(0.7*t)+ 3.7 - 0.4*t \na = 8\nb = 12\ntolera = 0.001\n\n# PROCEDIMIENTO\nrespuesta = biseccion(fx,a,b,tolera,vertabla=True)\n# SALIDA\nprint('ra\u00edz en: ', respuesta)\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Ejercicio: 3Eva2024PAOII_T1 Accidente entre aeronaves literal a La distancia entre las aeronaves se determina a partir de las ecuaciones proporcionadas en el enunciado. La ecuaci\u00f3n tambi\u00e9n mantiene la forma y el m\u00ednimo si se utiliza el cuadrado de la distancia: Las diferencias de distancia por eje pueden ser convergentes hacia el punto de impacto, dado [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"wp-custom-template-entrada-mn-ejemplo","format":"standard","meta":{"footnotes":""},"categories":[52],"tags":[58,54],"class_list":["post-10723","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\/10723","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=10723"}],"version-history":[{"count":4,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/10723\/revisions"}],"predecessor-version":[{"id":23939,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/10723\/revisions\/23939"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=10723"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=10723"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=10723"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}