{"id":1860,"date":"2017-08-08T09:25:30","date_gmt":"2017-08-08T14:25:30","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/matg1013\/?p=1860"},"modified":"2026-03-13T02:49:31","modified_gmt":"2026-03-13T07:49:31","slug":"diferenciacion-numerica","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/mn-u05\/diferenciacion-numerica\/","title":{"rendered":"5.7 Diferenciaci\u00f3n num\u00e9rica"},"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=\"#concepto\">Diferencias Divididas<\/a><\/p>\n\n\n\n<p><a href=\"#difdivadelante\">hacia adelante<\/a><\/p>\n\n\n\n<p><a href=\"#difdivcentradas\">centradas<\/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<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"concepto\">1. Diferencias Divididas<\/h2>\n\n\n\n<p><strong>Referencia<\/strong>: Chapra 23.1 p668, Rodr\u00edguez 8.2 p324<\/p>\n\n\n\n<p>La diferenciaci\u00f3n num\u00e9rica aproxima la derivada f'(x) utilizando muestras x<sub>i<\/sub> alrededor del punto de inter\u00e9s que se encuentran a distancia <strong>h<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/08\/difnumerica_ani.gif\" alt=\"diferenciaci\u00f3n num\u00e9rica gr\u00e1fico animado\" class=\"wp-image-13663\" \/><\/figure>\n\n\n\n<p>Se pueden generar f\u00f3rmulas por diferencias divididas de alta exactitud tomando t\u00e9rminos adicionales en la expansi\u00f3n de la serie de Taylor. Como referencia, el polinomio de Taylor muestra una aproximaci\u00f3n de una funci\u00f3n <strong>f<\/strong>(<strong>x<\/strong>) em el punto x<sub>0<\/sub>:<\/p>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> P_{n}(x) = f(x_0)+\\frac{f'(x_0)}{1!} (x-x_0) +<\/span>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> + \\frac{f''(x_0)}{2!}(x-x_0)^2 + ... <\/span>\n\n\n\n<p>de donde se obtiene la aproximaci\u00f3n de las derivadas, al seleccionar la cantidad de t\u00e9rminos y despejar, como se mostrar\u00e1 a continuaci\u00f3n.<\/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=\"#concepto\">Diferencias Divididas<\/a><\/p>\n\n\n\n<p><a href=\"#difdivadelante\">hacia adelante<\/a><\/p>\n\n\n\n<p><a href=\"#difdivcentradas\">centradas<\/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<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"difdivadelante\">2. Primera Derivada con Diferencias divididas hacia adelante<\/h2>\n\n\n\n<p>Una aproximaci\u00f3n a primera derivada, usa los primeros dos t\u00e9rminos del polinomio de Taylor alrededor de <strong>x<\/strong><sub>i<\/sub> en para un punto a la derecha <strong>x<\/strong><sub>i+1<\/sub> a una distancia <strong>h<\/strong> = <strong>x<\/strong><sub>i+1<\/sub>-<strong>x<\/strong><sub>i<\/sub><\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"381\" height=\"157\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/08\/diferenciacionadelante01.png\" alt=\"diferenciaci\u00f3n num\u00e9rica hacia adelante 01\" class=\"wp-image-13664\" \/><\/figure>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\"> f(x_{i+1}) = f(x_i)+\\frac{f'(x_i)}{1!} (h) + \\frac{f''(x_i)}{2!}(h)^2 + ...<\/span>\n\n\n\n<p>se puede simplificar en un polinomio de grado uno y un t\u00e9rmino de error:<\/p>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\">f_{i+1} = f_i + (h)f'_i + O(h^2) ... <\/span>\n\n\n\n<p>Despejando la expresi\u00f3n para f'<sub>i<\/sub><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\">f'_i = \\frac{f_{i+1}-f_i}{h} = \\frac{\\Delta f_i}{h}<\/span>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p>La expresi\u00f3n tambi\u00e9n es la primera diferencia finita dividida con un error del orden <strong>O<\/strong>(<strong>h<\/strong>). (tema usado en interpolaci\u00f3n).<\/p>\n\n\n\n<p>Revise que el t\u00e9rmino de la expresi\u00f3n queda <strong>O<\/strong>(<strong>h<\/strong><sup>2<\/sup>)\/h con lo que se disminuye el exponente en uno.<\/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=\"#concepto\">Diferencias Divididas<\/a><\/p>\n\n\n\n<p><a href=\"#difdivadelante\">hacia adelante<\/a><\/p>\n\n\n\n<p><a href=\"#difdivcentradas\">centradas<\/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<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"difdivcentradas\">3. Primera derivada con diferencias divididas centradas<\/h2>\n\n\n\n<p>Se realiza el mismo procedimiento que el anterior, usando un punto <strong>x<\/strong><sub>i+1<\/sub> y <strong>x<\/strong><sub>i-1<\/sub> alrededor de <strong>x<\/strong><sub>i<\/sub>. En el t\u00e9rmino <strong>x<\/strong><sub>i-1<\/sub> el valor de <strong>h<\/strong> es negativo al invertir el orden de la resta.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"357\" height=\"152\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/08\/diferenciacioncentrada01.png\" alt=\"diferenciaci\u00f3n num\u00e9rica centrada 01\" class=\"wp-image-13665\" \/><\/figure>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\">f_{i+1} = f_i+\\frac{f'_i}{1!}(h) + \\frac{f''_i}{2!}(h)^2 + O(h^3) ...<\/span>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\">f_{i-1} = f_i-\\frac{f'_i}{1!}(h) + \\frac{f''_i}{2!}(h)^2 <\/span>\n\n\n\n<p>restando la ecuaciones se tiene que<\/p>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\">f_{i+1} - f_{i-1} = (h)f'_i +(h)f'_i <\/span>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\">f_{i+1} - f_{i-1} = 2h f'_i <\/span>\n\n\n\n<p>La expresi\u00f3n de primera derivada usando un punto antes y otro despu\u00e9s del punto central queda como:<\/p>\n\n\n\n<span class=\"wp-katex-eq katex-display\" data-display=\"true\">f'_i = \\frac{f_{i+1} - f_{i-1}}{2h} <\/span>\n\n\n\n<p>con un error del orden <strong>O<\/strong>(<strong>h<\/strong><sup>2<\/sup>)<\/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=\"#concepto\">Diferencias Divididas<\/a><\/p>\n\n\n\n<p><a href=\"#difdivadelante\">hacia adelante<\/a><\/p>\n\n\n\n<p><a href=\"#difdivcentradas\">centradas<\/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<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"algoritmo\">4. Algoritmo en Python<\/h2>\n\n\n\n<p>Compara las diferencias divididas hacia adelante, centro y atr\u00e1s.<\/p>\n\n\n\n<p>El punto xk para la derivada se encuentra en la posici\u00f3n&nbsp;<strong>i<\/strong>&nbsp;, de d\u00f3nde se toman para el c\u00e1lculo los puntos xi&nbsp;&nbsp;hacia la izquierda o derecha .<\/p>\n\n\n\n<p>Se requieren al menos 2 tramos para usar las f\u00f3rmulas, para disponer de un valor de h dentro del intervalo.<\/p>\n\n\n\n<p>Para observar el error en la gr\u00e1fica, se incorpora f'(x) obtenida de forma anal\u00edtica como referencia en el ejercicio.<\/p>\n\n\n\n<p>El resultado del algoritmo es:<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>diferenciaci\u00f3n num\u00e9rica:\nen xk: 1.5 \t, h: 0.5\n   tramos: 4\n&#091;  dfx\/dx,  valor,  error]\n&#091;'df_anal\u00edtica', 0.4938606479864909, 0]\n&#091;'df_atras', 0.7604117685484817, 0.2665511205619908]\n&#091;'df_centro', 0.4444697684399397, -0.04939087954655119]\n&#091;'df_adelante', 0.12852776833139767, -0.3653328796550932]<\/code><\/pre>\n\n\n\n<p>Instrucciones en Python<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# Diferenciaci\u00f3n Num\u00e9rica - 1ra Derivada\n# Compara con diferenciaci\u00f3n num\u00e9rica\nimport numpy as np\n\n# INGRESO\nfx = lambda x: np.sqrt(x)*np.sin(x)\ndfx = lambda x: np.sin(x)\/(2*np.sqrt(x))+ np.sqrt(x)*np.cos(x)\nxk = 1.5 # punto derivada\n\na = 1  # intervalo de observaci\u00f3n\nb = 3\ntramos = 64 # &gt;=2, al menos 2 tramos \n\n# PROCEDIMIENTO\n# revisa valores, Tarea: incluir en algoritmo\ncond1 = a&lt;b\ncond2 = a&lt;xk and xk&lt;b\ncond3 = tramos&gt;=2\nif not(cond1):\n    print('a&gt;b, no es ascendente')\nif not(cond2):\n    print('ak fuera de intervalo &#x5B;a,b]')\nif not(cond3):\n    print('tramos deben ser al menos 2')\n    \n# tramo menor hacia atras y adelante\ndx_atras = abs(xk-a) # xk hacia atras intervalo\ndx_adelante = abs(xk-b) # xk hacia frente intervalo\ndx_min = min(dx_atras,dx_adelante)\n\nh_tramo = (b-a)\/tramos\nh = min(h_tramo,dx_min)\n\nxi_atras = np.sort(np.arange(xk,a-h\/2,-h))\nxi_adelante = np.arange(xk,b+h\/2,h)\nxi = np.concatenate((xi_atras,xi_adelante&#x5B;1:]),axis=0)\n\ni = len(xi_atras)-1\n# puntos de muestras\nfi = fx(xi)\ntabla = &#x5B;] # tangentes a xi&#x5B;i]\n\n# derivada anal\u00edtica, como referencia\ndfi = dfx(xi&#x5B;i])\npx = lambda x: fi&#x5B;i] + dfi*(x-xi&#x5B;i])\npxi = px(xi)\ntabla.append(&#x5B;'df_anal\u00edtica',dfi,0,pxi,px])\n\n# hacia Atras, diferencias divididas\ndf1_atras = (fi&#x5B;i]-fi&#x5B;i-1])\/h\npx = lambda x: fi&#x5B;i] + df1_atras*(x-xi&#x5B;i])\npxi = px(xi)\nerrado = df1_atras - dfi\ntabla.append(&#x5B;'df_atras',df1_atras,errado,pxi,px])\n\n# Centro, diferencias divididas\ndf1_centro = (fi&#x5B;i+1]-fi&#x5B;i-1])\/(2*h)\npx = lambda x: fi&#x5B;i] + df1_centro*(x-xi&#x5B;i])\npxi = px(xi)\nerrado = df1_centro - dfi\ntabla.append(&#x5B;'df_centro',df1_centro,errado,pxi,px])\n\n# hacia Adelante, diferencias divididas\ndf1_adelante = (fi&#x5B;i+1]-fi&#x5B;i])\/h\npx = lambda x: fi&#x5B;i] + df1_adelante*(x-xi&#x5B;i])\npxi = px(xi)\nerrado = df1_adelante - dfi\ntabla.append(&#x5B;'df_adelante',df1_adelante,errado,pxi,px])\n\n# SALIDA\nprint('diferenciaci\u00f3n num\u00e9rica:')\nprint('en xk:',xk,'\\t, h:',h,)\nprint('   tramos:', tramos)\nprint('&#x5B;  dfx\/dx,  valor,  error]')\nfor unadifdiv in tabla:\n    print(unadifdiv&#x5B;0:3])\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=\"#concepto\">Diferencias Divididas<\/a><\/p>\n\n\n\n<p><a href=\"#difdivadelante\">hacia adelante<\/a><\/p>\n\n\n\n<p><a href=\"#difdivcentradas\">centradas<\/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<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"grafica\">5. Gr\u00e1ficas en Python<\/h2>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2017\/08\/difnumerica02.png\" alt=\"diferenciaci\u00f3n num\u00e9rica 02\" class=\"wp-image-13666\" \/><\/figure>\n\n\n\n<p>Se complementa el algoritmo anterior con las siguientes instrucciones.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# GRAFICA  --------------\nimport matplotlib.pyplot as plt\ntxt = 'Diferenciaci\u00f3n Num\u00e9rica'\ntxt = txt + ', xi:'+str(xk)\ntxt = txt + ', tramos:'+str(tramos)\ntitulo = txt + ', h:'+str(h)\n\n# fx suave aumentando muestras\nmuestrasfxSuave = tramos*10 + 1\nxk = np.linspace(a,b,muestrasfxSuave)\nfk = fx(xk)\n\n# Graficar f(x), puntos\nplt.ylim(min(fk),max(fk)*1.5)\nplt.plot(xk,fk, label ='f(x)',linestyle='dotted')\nif tramos&lt;64:\n    plt.plot(xi,fi, 'o') # muestras\n\nfor unadifdiv in tabla: # tangentes a xi&#x5B;i]\n    linea = 'dashed'\n    if unadifdiv&#x5B;0]=='df_anal\u00edtica':\n        linea = 'solid'\n    plt.plot(xi,unadifdiv&#x5B;3],label=unadifdiv&#x5B;0],\n             linestyle=linea)\n\nplt.plot(xi&#x5B;i],fi&#x5B;i],'ro') # punto i observado\n\nplt.xlabel('xi')\nplt.ylabel('f(xi)')\nplt.title(titulo)\nplt.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=\"#concepto\">Diferencias Divididas<\/a><\/p>\n\n\n\n<p><a href=\"#difdivadelante\">hacia adelante<\/a><\/p>\n\n\n\n<p><a href=\"#difdivcentradas\">centradas<\/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<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">6.Segundas derivadas<\/h2>\n\n\n\n<p>Al continuar con el procedimiento mostrado se pueden obtener las f\u00f3rmulas para segundas derivadas, las que se resumen en las tablas de F\u00f3rmulas de diferenciaci\u00f3n por diferencias divididas.<\/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=\"#concepto\">Diferencias Divididas<\/a><\/p>\n\n\n\n<p><a href=\"#difdivadelante\">hacia adelante<\/a><\/p>\n\n\n\n<p><a href=\"#difdivcentradas\">centradas<\/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<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n","protected":false},"excerpt":{"rendered":"<p>Diferencias Divididas hacia adelante centradas algoritmo gr\u00e1fica 1. Diferencias Divididas Referencia: Chapra 23.1 p668, Rodr\u00edguez 8.2 p324 La diferenciaci\u00f3n num\u00e9rica aproxima la derivada f'(x) utilizando muestras xi alrededor del punto de inter\u00e9s que se encuentran a distancia h. Se pueden generar f\u00f3rmulas por diferencias divididas de alta exactitud tomando t\u00e9rminos adicionales en la expansi\u00f3n de [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"wp-custom-template-entrada-mn-unidades","format":"standard","meta":{"footnotes":""},"categories":[39],"tags":[],"class_list":["post-1860","post","type-post","status-publish","format-standard","hentry","category-mn-u05"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1860","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=1860"}],"version-history":[{"count":8,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1860\/revisions"}],"predecessor-version":[{"id":22889,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1860\/revisions\/22889"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=1860"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=1860"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=1860"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}