Diferenciacion Numerica - Facultad de Ciencias Fisicas

Transcripción

Diferenciacion Numerica - Facultad de Ciencias Fisicas
Diferenciacion Numerica
Justo Rojas
Laboratorio de Simulación Computacional de Materiales
Facultad de Ciencias Fı́sicas
Universidad Nacional Mayor de San Marcos
Abril 17, 2012
Curso de Análisis Numérico, Semestre 2012-I
Justo Rojas (LSCM)
AN2012-P4
Abril 17, 2012
1 / 14
Introducción
En fı́sica con frecuencia es necesario
estimar las derivadas de
R
diferentes ordenes o integrales f (x)dx de la función f (x) o de una
tabla de datos.
Cuando no posible realizarlo analı́ticamente se recurre a los métodos
numéricos.
La diferenciación numérica consiste en encontrar el valor numérico de
la derivada de la función f (x) en un punto dado
Algunos esquemas simples de derivación numérica se puede obtener a
partir del desarrollo de una función en serie de Taylor,
f (x + h) = f (x) + hf 0 (x) +
Justo Rojas (LSCM)
AN2012-P4
h2 00
h3
f (x) + f 000 (x) +
2!
3!
Abril 17, 2012
(1)
2 / 14
Esquemas de diferenciación numérica simples
Primera aproximación de la primera derivada D de la función f (x),
usando 2 puntos,
f 0 (x) =
∆fk
f (x + h) − f (x)
+ O[h] ≡
+ 0[h]
h
h
(2)
Utilizando el esquema centrado mediante 2 puntos separados
f (x + h) − f (x − h)
+ 0[h2 ]
2h
Primera aproximación de la segunda derivada
f 0 (x) =
f 00 (x) =
Justo Rojas (LSCM)
(3)
f (x + h) + f (x − h) − 2f (x)
+ 0[h4 ]
h2
AN2012-P4
Abril 17, 2012
3 / 14
Aproximación con esquemas simples
Una forma de evaluar numéricamente la derivada de una función, por
ejemplo mediante la formula(2) consiste en evaluar el cociente con
valores de h cada vez menores hasta que la sucesión deje de variar
significativamente.
En la tabla siguiente se muestra los valores estimados de la primera
derivada de la función f (x) = arctan(x) en el punto x=1.3456783 y el
error calculado como la diferencia entre el valor estimado y el valor
1
exacto (f 0 (x) = 1+x
2 ) para diferentes valores de h.
Justo Rojas (LSCM)
AN2012-P4
Abril 17, 2012
4 / 14
Tabla:
h
valor_est
error
-----------------------------------0.10E+01
0.236098
-0.12E+00
0.10E+00
0.339380
-0.16E-01
0.10E-01
0.354065
-0.17E-02
0.10E-02
0.355616
-0.15E-03
0.10E-03
0.355990
0.23E-03
0.10E-04
0.359128
0.34E-02
0.10E-05
0.313022
-0.43E-01
0.10E-06
0.149983
-0.21E+00
0.10E-07
1.499833
0.11E+01
Justo Rojas (LSCM)
AN2012-P4
Abril 17, 2012
5 / 14
Aproximación con esquemas simples
Justo Rojas (LSCM)
AN2012-P4
Abril 17, 2012
6 / 14
Estimacion de la derivada de sin(x) en x=0.5
Usando esquemas (2) y ye2 con (??)
h
ye1
err1
ye2
err2
------------------------------------------------------------.100E+01 .5180694570 -.3595131049
.7384602671 -.1391222948
.100E+00 .8521695035 -.0254130584
.8761207332 -.0014618287
.100E-01 .8751701291 -.0024124328
.8775675862 -.0000149757
.100E-02 .8773316694 -.0002508925
.8775768989 -.0000056630
.100E-03 .8774894005 -.0000931614
.8775479661 -.0000345958
.100E-04 .8772785720 -.0003039899
.8774317655 -.0001507964
.100E-05 .8751702874 -.0024122745
.8763765445 -.0012060174
.100E-06 1.0030990528 .1255164909
.9403408193
.0627582574
Justo Rojas (LSCM)
AN2012-P4
Abril 17, 2012
7 / 14
Influencia de errores
Notar que inicialmente el error disminuye pero luego empieza a crecer
descontroladamente
Este comportamiento se observa en ambos esquemas
Se observa que con el esquema centrado se obtiene mejor resultado
con menos iteraciones
Cual es el problema?
Se puede comprender invocando el error de truncamiento y en parte
error de redondeo
Mientras que el disminuye se reduce en factor de 100 con la
disminución de h en 10 veces
Justo Rojas (LSCM)
AN2012-P4
Abril 17, 2012
8 / 14
Otros casos
Sin hacer iteraciones como averiguar el valor de h óptimo?
Una de las formas: si se quiere una precision con 6 decimales
00
1
−6
| f (ξ)h
2 | ≤ 2hn ≤ 10
6 − n = log 2 de donde n = 5
Otro caso representativo se puede notar al estimar numéricamente la
derivada de la función f (x) = sen(1,1π/x), por ejemplo en el punto
x=0.1 y con h=0.01
f 0 (x = 0,1) = (sen
Justo Rojas (LSCM)
1,1π
1,1π
sen10π − sen11π
− sen
)/0,01 =
=0
0,11
0,1
0,01
AN2012-P4
Abril 17, 2012
9 / 14
Caso general usando diferencias finitas
El problema inverso a la aproximación de funciones mediante la serie
de Taylor consiste en: dada la función f (x) para valores
equiespaciados de la variable x, estimar las derivadas de la función.
Para el caso general, sean los
D=
d
d2
dn
; D2 = 2 ; Dn = n
dx
dx
dx
los operadores diferenciales finitos de ordenes 1,2 . . . n.
Justo Rojas (LSCM)
AN2012-P4
Abril 17, 2012
10 / 14
Caso general usando diferencias finitas
Aplicando a la formula (1) el operador de DF de desplazamiento E y los
operadores diferenciales finitos
Efk = (1 + hD +
h2 2 h3 3
D + D + ...)fk
2!
3!
se tiene:
E = e hD
(4)
La relación entre D y ∆ , obtenemos teniendo en cuenta que E = ∆ + 1
hD = ln(∆ + 1) = ∆ −
de donde
D=
Justo Rojas (LSCM)
∆2 ∆3 ∆4
+
−
+ ...
2
3
4
1
∆2 ∆3 ∆4
[∆ −
+
−
+ ...]
h
2
3
4
AN2012-P4
(5)
Abril 17, 2012
11 / 14
Caso general usando diferencias finitas
El operador diferencial hacia adelante de segundo orden
D2 =
1 2
11
5
[∆ − ∆3 + ∆4 − ∆5 + ...]
2
h
12
6
(6)
De una manera análoga se obtienen las relaciones entre D y ∆, D y δ
1
∇2 ∇3
[∇ +
+
+ ...]
h
2
3
(7)
11
1 2
[∇ + ∇3 + ∇4 + ...]
2
h
12
(8)
1
δ3
δ5
[δ −
+
− ...]
h
24 640
(9)
1
1
1
[µδ − µδ 3 + µδ 5 − ...]
h
6
30
(10)
D=
D2 =
D=
D=
Justo Rojas (LSCM)
AN2012-P4
Abril 17, 2012
12 / 14
Ilustracion de diferentes Esquemas
Figura: Ilustración de diferenciación numérica.
Justo Rojas (LSCM)
AN2012-P4
Abril 17, 2012
13 / 14
Ilustración de diferentes esquemas
Fórmulas para la estimación de la primera derivada de la función f (x)
utilizando los esquemas de diferencias finitas hacia adelante FFD de
(forward finite diference)
Diferencias finitas hacia atras BFD
Diferencias finitas centrada CDF ,
limitados a solo el primer termino
Esquema de derivada hacia adelante
dfk
fk+1 − fk
1
= Dfk =
+ 0[h]; 0[h] = − hf 00
dx
h
2
Justo Rojas (LSCM)
AN2012-P4
Abril 17, 2012
(11)
14 / 14
Esquema de derivada hacia atras
dfk
fk − fk−1
= Dfk =
+ 0[h]
dx
h
(12)
Esquema de derivada centrada
fk+1 − fk−1
dfk
= Dfk =
+ 0[h2 ]
dx
2h
(13)
Ejemplo2 Valores estimados de la primera derivada de la función
√
f (x) = x evaluado en el punto x = 10,0 mediante las fórmulas (??, ?? ,
??). El valor exacto de f 0 (x = 10) es 0.158113
Justo Rojas (LSCM)
AN2012-P4
Abril 17, 2012
15 / 14
Cuadro: Errores de derivación numérica utilizando diferentes esquemas
Esquema
Adelante
Atras
Centrada
Adelante
Atras
Centrada
Justo Rojas (LSCM)
h
1
1
1
0.1
0.1
0.1
Estimado
0.154347
0.162277
0.158312
0.157720
0.158511
0.158115
AN2012-P4
Error
-0.003766
-0.00416
-0.00019
-0.000393
-0.000398
-0.000002
Abril 17, 2012
16 / 14
Figura: Ilustración de los diferentes Esquemas.
Justo Rojas (LSCM)
AN2012-P4
Abril 17, 2012
17 / 14
Listado del programa simple en F90 que calcula la tabla de diferencias
finitas y las derivadas mediante esquemas numéricos.
! Estimacion de las derivadas a partir de una tabla
PROGRAM difnum
IMPLICIT NONE
! ==============================================
! seccion de declaraciones de variables
REAL,DIMENSION(50,50)::F
!matriz principal
REAL(8)::pdf1,pdf2,pdf3,h
!esquemas
INTEGER
::m,i,j,k,nm
! m -numero de puntos; nm = m-1 maximo orden
CHARACTER(20)::name
CHARACTER(50)::titulo=’Diferenciacion numerica’
! ================================================
Justo Rojas (LSCM)
AN2012-P4
Abril 17, 2012
18 / 14
PRINT*,titulo
h=2.0
PRINT*,’nombre de archivo con los datos?’
READ*,name
OPEN(unit=8,file=name,action=’read’,status=’old’)
print*,’numero de puntos
a utilizar?’
read*,m
! Lectura de datos del archivo
DO i=1,m
READ(8,fmt=*)(F(i,j),j=1,2)
ENDDO
CLOSE(8)
PRINT*,’=============================================’
PRINT*,’datos leidos ’
PRINT*,’
I
X(I)
f(I)’
DO i=1,m
WRITE(*,20)i,F(i,1:2)
ENDDO
Justo Rojas (LSCM)
AN2012-P4
Abril 17, 2012
19 / 14
! CALCULO DE LAS DIFERENCIAS
nm=m-1
DO k=3,m+1
j=nm+3-k
DO i=1,j
F(i,k)=F(i+1,k-1)-F(i,k-1)
ENDDO
ENDDO
PRINT*,’TABLA DE DIFERENCIAS’
PRINT*,’ I
X(I) f(I)
D1
D2
D3
D4
D5
D
print*,’-----------------------------------------------------DO i=1,m
j=m+2-i
WRITE(*,50) i,F(i,1:j)
ENDDO
print*,’-----------------------------------------------------20 FORMAT(1X,I4,2F9.5)
50 FORMAT (1X,I4,8F9.5)
! =========================================
Justo Rojas (LSCM)
AN2012-P4
Abril 17, 2012
20 / 14
Salida
TABLA DE DIFERENCIAS
I
X(I)
f(I)
D1
D2
D3
D4
------------------------------------------------------------1 1.00000 1.00000 -0.50000 0.33333 -0.24999 0.19998 -0
2 3.00000 0.50000 -0.16667 0.08334 -0.05001 0.03335 -0
3 5.00000 0.33333 -0.08333 0.03333 -0.01666 0.00951
4 7.00000 0.25000 -0.05000 0.01667 -0.00715
5 9.00000 0.20000 -0.03333 0.00952
6 11.00000 0.16667 -0.02381
7 13.00000 0.14286
------------------------------------------------------------Derivadas para I=2
f_21= -8.333499729633331E-002
f_22= -0.104169994592667
f_23= -0.112504991392295
Justo Rojas (LSCM)
AN2012-P4
Abril 17, 2012
21 / 14

Documentos relacionados