Práctica 5 - Unican.es

Anuncio
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.605310.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
Descargar