PRÁCTICA DERIVACIÓN NUMÉRICA Prácticas Matlab Práctica 5 Objetivos Aproximar numéricamente la derivada de una función a partir de valores conocidos de la función. Comandos de Matlab eps Es el epsilon máquina, su valor es 2^(‐52), redondeando 2.22e-16 Ejemplos resueltos Diferencia progresiva: f ' a f a h f a h 1 Aplicación: Vamos a elegir una sucesión de puntos hn de forma que hn 0 y analizar qué ocurre con Dn f a hn f a hn Tomar f x e x , a 1 y utilizamos hn 10 n para n desde 1 hasta 18. Generar una tabla que muestre los valores de h y los valores de Dn . ¿Qué se observa si h es muy pequeño? Solución: Si los valores de f a hn y f a son muy próximos el valor que devuelve como aproximación es cero. Órdenes Matlab n=1:18; h=10.^(-n); a=1; x=a+h; valorfn=exp(x); PÁGINA 2 MATLAB: DERIVACIÓN NUMÉRICA numerador=valorfn-exp(a); Dn=numerador./h; format long disp([' Incremento Aproximación']) disp([h' numerador' Numerador Dn']) (a) La unidad de destello (flash) de una cámara opera por el almacenamiento de carga en un capacitor y su liberación repentina al disparar la unidad. Los datos de la tabla describen la carga Q que queda en el capacitor (medida en microcoulombios) en el tiempo t (medido en segundos). Use los datos para dibujar la gráfica de esta función y estime la pendiente de la recta tangente en el punto donde t=0.04 2 T Q 0.0 100.0 0.02 81.87 0.04 67.03 0.06 54.88 0.08 44.93 0.10 36.76 (b) Un modelo exponencial para la carga es Q e 4.605310.0055x . La derivada Q’(t) representa la corriente eléctrica que fluye del capacitor hacia el bulbo de la lámpara del destello. Calcula la corriente cuando t=0.04 seg. c) Comparar el resultado con el obtenido en el apartado (a) y rellena la tabla para ver cuál es el porcentaje de error en cada caso: valor aproximado Q ' 0.4 Valor aproximado Q ' 0.4 Dif. Progresiva Dif. Regresiva Dif. Central ¿Con qué diferencia se consigue una aproximación mejor? Solución: 100 MATLAB: PRÁCTICA 5 PÁGINA 3 a) Código Matlab t=[0 0.02 0.04 0.06 0.08 0.1]; q=[100 81.87 67.03 54.88 44.93 36.76]; plot(t,q) %Posición de instante a estudiar en el vector t num=3; num1=num+1; num2=num-1; %Diferencia progresiva disp('Diferencia progresiva') difProgresiva=(q(num1)-q(num))/(t(num1)-t(num)) disp('Diferencia regresiva') difRegresiva=(q(num)-q(num2))/(t(num)-t(num2)) disp('Diferencia central') difCentral=(q(num1)-q(num2))/(t(num1)-t(num2)) b) Código Matlab %Calculo de Q'(t) syms x derivada=subs(diff(exp(4.6053-10.055*x)),t(num)) Nota: Ajuste de datos %Ajuste a una función exponencial coeficientes=polyfit(t,log(q),1) %coeficientes es un vector con los coeficientes de la recta %Si coeficientes=(m n) entonces la recta es log(q)=m*t+n ye=exp(coeficientes(1)*t+coeficientes(2)); plot(t,ye,'g') c) Código Matlab %Comparación diferencias=[difProgresiva difRegresiva difCentral]; porcentaje=abs((diferencias-derivada)/derivada)*100; disp('-------------------------------------') disp('Comparación') titulos=['Progresiva Regresiva Central'] disp([ diferencias ; porcentaje]) Ejercicios propuestos Para un circuito con voltaje E(t) e inductancia L, la primera ley de Kirchhoff expresa la relación 1 E L dI RI dt donde R es la resistencia del circuito, L la inductancia e I la intensidad de corriente. En un circuito en el cual R 0.142 y L 0.98H se ha medido la PÁGINA 4 MATLAB: DERIVACIÓN NUMÉRICA intensidad cada 0.01 segundos en el minuto 1.00 y el 1.10, obteniéndose los valores t I 1.00 3.10 1.01 3.12 1.02 3.14 1.03 3.18 1.04 3.14 1.05 3.18 1.06 3.26 1.07 3.32 1.08 3.18 1.09 3.26 1.10 3.12 Determinar numéricamente el valor aproximado de E(t). APÉNDICE Diferencia progresiva: f ' a f a h f a h Para acotar el error que se comete en esta aproximación hay que tener en cuenta la fórmula de Taylor de grado 1, f a h f a f ' a h R1 Luego f 'a f a h f a R1 h h Como R1 O h2 , entonces el error de truncamiento Error f ' a f a h f a h O h '' R1 f t h con t a , a h Una cota del error podría obtenerse considerando que 2! h MATLAB: PRÁCTICA 5 PÁGINA 5 Si M es una cota de f '' t en a , a h entonces una cota del error es: Error R1 M h h 2! Diferencia regresiva: f ' a f a f a h h Para acotar el error que se comete en esta aproximación hay que tener en cuenta la fórmula de Taylor de grado 1, f a h f a f ' a h R1 Luego f ' a f a f a h R1 h h Teniendo en cuenta que R1 O h2 se tiene que f ' a f a f a h O h h y, en consecuencia, el error de truncamiento Error f ' a f a f a h h R Una cota del error podría obtenerse considerando que 1 h O h f '' t h con t a h, a 2! Si M es una cota de f '' t en a h, a entonces una cota del error es: Error R1 M h h 2! Diferencia central: f ' a f a h f a h 2h Para acotar el error que se comete en esta aproximación hay que tener en cuenta la fórmula de Taylor de grado 2, y las expresiones f a h f a f ' a f '' a 2 h h O h3 1! 2! PÁGINA 6 MATLAB: DERIVACIÓN NUMÉRICA f a h f a f ' a f '' a 2 h h O h3 1! 2! Restando f a h f a h f ' a 2h O h3 es decir, 3 f a h f a h O h f 'a 2h 2h Luego, el error de truncamiento Error f ' a f a h f a h O h2 2h