OPTICS BY THE NUMBERS
L’Ottica Attraverso i Numeri
Michael Scalora
U.S. Army Research, Development, and Engineering Center
Redstone Arsenal, Alabama, 35898-5000
&
Universita' di Roma "La Sapienza"
Dipartimento di Energetica
Rome, April-May 2004
Integrazioni Numeriche di Equazioni differenziali
di Primo Grado
Soluzione Numeriche di Equazioni Nonlineari:
Predictor-Corrector Algorithm
Ritorniamo alla tipica equazione differenziale
di primo grado che abbiamo gia visto, e risolviamo.
1
dp(t ) dt
p(t )
dp (t )
p (t )
dt
p(t ) p(0)e t
La soluzione puo anche essere espressa cosi:
t
p(t ) p(0) p(t ' )dt '
0
1.0
0.8
p(t)
L’integrale rappresenta
l’area sotto la curva p(t).
Il problema numerico:
come meglio stimarla
0.6
0.4
0.2
0
0
0
t
t
p(t ) p(0) p(t ' )dt '
0
Se ci limitiamo ad
intervalli infinitesimali...
t
p( t ) p(0) p(t ' )dt '
0
If
t 1
La funzione p(t’) puo essere approssimata come una
costante data dal valore all’inizio dell’intervallo...
t
p( t ) p(0) p(0) dt ' p(0) 1 t
0
Dato un punto di partenza t 0 diverso da zero
p(t0 t ) p(t0 ) p(t0 ) t p(t0 ) 1 t
La soluzione approssimata e’…
p(t0 t ) p(t0 ) p(t0 ) t p(t0 ) 1 t
}
…mentre la soluzione esatta e’…
p(t ) p(0)e
p(t0 t ) p(t0 )e
t
2
t 1 t 2 t .... n t
e
p(t0 t ) p(t0 )e
}
Taylor expansion
dell’esponenziale
t ;
2
n
n!
...
t p(t )(1 t 2 t 2 / 2 ...)
0
Il confronto rivela un errore
dato dalla differenza delle
due soluzioni…
t2
2
Error
...
2
p(t0 t ) p(t0 ) p(t0 ) t p(t0 ) 1 t
}
p(t0 t ) p(t0 )e
t p(t )(1 t 2 t 2 / 2 ...)
0
}
Error
2
t
2
1.0
Stimato con un errore
dell’ordine t2, l’integrale e’
l’area del rettangolo.
0.8
p(t0)
0.6
2
...
0.4
0.2
0
0
t
invece rappresenta
la sottostima dell’integrale,
che per funzioni che variano
rapidamente puo essere
notevole.
How can we increase the accuracy of the solution?
t
p(t0 t ) p(t0 ) p(t ' )dt '
0
1.0
p(t0+t)
0.8
0.6
} p(t
p(t0)
0
t ) p(t0 )
0.4
0.2
0
0
t
+
p(t0 t ) p(t0 ) t
p(t0 t ) p(t0 ) p(t0 ) t
2
p(t0 t ) p(t0 ) t
p(t0 t ) p(t0 ) p(t0 ) t
2
♠
♠
p(t0 t ) p(t0 ) p(t0 ) p (t0 t )
t
2
Solve for p(t0+t)…
p(t0 t ) 1 t / 2 p(t0 ) 1 t / 2
1 t / 2
p(t0 t ) p(t0 )
1 t / 2
1 t / 2
p(t0 t ) p(t0 )
1 t / 2
(1 t / 2)1 1 t / 2 2 t 2 / 4 3 t 3 / 4 ...
1 t / 2 1 t / 2
1
1 t
confrontando con la soluzione esatta...
2
t2
2
t3
8
( t 4 )
Taylor expansion
t
t
p (t0 t ) p (t0 )e
p (t0 ) 1 t 2
3
2
2
3
4
( t )
6
t3
Nella gran parte dei casi, una soluzione con un errore
del terzo ordine e’ piu che sufficiente.
Simple example:
Exact solution
dx(t )
x(t )
dt
x(t ) x(0)et
x(t0 t ) x(t0 ) 1 t
x(t0 t ) x(t0 )
1 t / 2
1 t / 2
First order accurate
solution
Second order accurate
solution
dx(t )
x(t )
dt
x(t ) x(0)et
x(t0 t ) x(t0 ) 1 t
1 t / 2
x(t0 t ) x(t0 )
1 t / 2
t=1
First order solution
x(0)=1
Second order solution
1.0
second order solution
exact solution
first order solution
0.8
x(t)
0.6
0.4
0.2
0
0
1
2
3
time
4
5
dx(t )
x(t )
dt
x(t ) x(0)et
x(t0 t ) x(t0 ) 1 t
1 t / 2
x(t0 t ) x(t0 )
1 t / 2
t=0.5
x(0)=1
1.0
second order solution
exact solution
first order solution
0.8
x(t)
0.6
0.4
0.2
0
0
2
4
time
6
dx(t )
x(t )
dt
x(t0 t ) x(t0 ) 1 t
x(t ) x(0)et
1 t / 2
x(t0 t ) x(t0 )
1 t / 2
t=0.25
x(0)=1
1.0
0.8
0.6
0.4
0.2
0
0
2
4
6
dx(t )
x(t )
dt
x(t ) x(0)et
x(t0 t ) x(t0 ) 1 t
First order solution
1 t / 2
x(t0 t ) x(t0 )
1 t / 2
t=0.125
Second order solution
1.0
0.8
0.6
0.4
0.2
0
0
2
4
6
Let’s look at the more generic equation…
t
dx (t )
f [ x (t )]
dt
x(t0 t ) x(t0 ) f [ x(t ' )]dt '
0
f [ x(t0 )] f [ x(t0 t )]
x(t0 t ) x(t0 )
t
2
f [ x(t0 )] f [ x(t0 t )]
2
1.0
f [x(t0+t)]
0.8
0.6
f [x(t0)]
0.4
0.2
0
0
t
f [ x(t0 )] f [ x(t0 t )]
2
.
1.0
0.8
f [x(t0+t)]
0.6
f [x(t0)]
0.4
0.2
0
0
f [ x(t0 )] f [ x(t0 t )]
2
t
…quindi rappresenta un punto
al centro dell’intervallo, che stima
l’area con accuratezza al secondo
ordine
dx (t )
f [( x (t )] x 2 (t )
dt
Example
x(0)
Soluzione esatta… x(t )
1 x(0)t
Risolviamo numericamente…
f [ x(t )] x 2 (t )
f [ x(t0 )] f [ x(t0 t )]
x(t0 t ) x(t0 )
t
2
f [ x(t0 )] x (t0 )
2
f [ x(t0 t )] x 2 (t0 t )
x 2 (t0 ) x 2 (t0 t )
x(t0 t ) x(t0 )
t
2
♠
♠
x (t0 ) x (t0 t )
x(t0 t ) x(t0 )
t
2
2
2
Per semplicita, riscriviamo cosi….
x x0 {x02 x 2 ) t / 2
…e sostituiamo x sul lato destro…
x x0 x x0 {x x ) t / 2
2
0
2
0
2
2
t / 2
2
2
t
2
2
2
2
2 2
x x0 x0 x0 x0 t[ x0 x ]
[ x0 x ] t / 2
4
x x0 x02 x02 x0 t[ x02 x0 2 ] t / 2 ( t 3 )
x x0 x t x t 1 ( t )
2
0
3
0
2
3
Confrontiamo con un’espanzione di Taylor…
x (t0 t ) x (t0 ) x (t0 ) t x (t0 )
x (t ) x 2 (t );
t2
2
( t 3 )...
x (t ) 2 x(t ) x(t ) 2 x 3 (t )
x (t0 t ) x (t0 ) x 2 (t0 ) t x 3 (t0 ) t 2 2 ( t 3 )...
La soluzione e’ accurata al secondo ordine, ma la
procedura non e’ ne conveniente,
(come nel caso di equazioni nonlineari:)
x x0 {x x ) t / 2
2
0
2
o efficiente, se si devono calcolare derivate per
l’espanzione di Taylor:
x (t0 t ) x (t0 ) x (t0 ) t x (t0 )
x (t ) x 2 (t );
t2
2
( t 3 )...
x (t ) 2 x (t ) x (t ) 2 x 3 (t )
Invece, adottiamo il
Predictor-Corrector algorithm
(1) Prediction Step: obtain a First-Order solution at t0+t…
dx(t )
(i )
f [ x(t )]
dt
t
(ii) x(t0 t ) x(t0 ) f [ x(t ' )]dt '
0
(iii ) x predicted (t0 t ) x(t0 ) f [ x(t0 )] t
(2)…and use it to correct (or find) the solution by averaging the
values of the functions at the beginning and at the end of the
interval…
f [ x(t0 )] f [ x predicted (t0 t )]
x(t0 t ) x(t0 )
t
2
f [ x predicted (t0 t )]
1.0
0.8
f [ x(t0 )]
0.6
0.4
0.2
0
0
t
f [ x(t0 )] f [ x predicted (t0 t )]
x(t0 t ) x(t0 )
t
2
dx(t )
f [ x(t )] x(t )
dt
d
f[ ]
dt
x predicted (t0 t ) x(t0 ) f [ x(t0 )] t x (t0 ) x (t0 ) t
f x predicted (t0 t ) f x(t0 ) x(t0 ) t
f [ x(t0 )] f [ x(t0 ) t ]
x(t0 )
x(t0 ) t
x(t0 ) x(t0 ) x(t0 ) t
x(t0 t ) x(t0 )
2
t
x(t0 ) x(t0 ) x(t0 ) t
x(t0 t ) x(t0 )
2
x(t0 t ) x(t0 ) x(t0 ) t x(t0 )
…which is just a Taylor expansion for ANY function
t
t2
2
x(t0 t )
Therefore, the correction step…
f [ x(t0 )] f [ x predicted (t0 t )]
x(t0 t ) x(t0 )
t
2
…always finds a second order accurate (error is of order t3)
solution to the generic differential equation
dx (t )
f [ x (t )]
dt
Back to our example…
dx (t )
f [( x (t )] x 2 (t )
dt
x predicted (t0 t ) x(t0 ) x2 (t0 ) t
2
2
x
(
t
)
x
0
predicted (t0 t )
x (t0 t ) x (t0 )
t
2
x 2 (t ) x(t ) x 2 (t ) t
0
0
0
x(t0 t ) x(t0 )
2
2
t
x(t0 t ) x(t0 ) x 2 (t0 ) t x 3 (t0 ) t 2 ( t 3 )
Predictor-Corrector da una soluzione
accurata al secondo ordine
x(0)
dx (t )
2
x(t )
x (t )
1 x(0)t
dt
2
2
x
(
t
)
x
0
predicted (t0 t )
x (t0 t ) x (t0 )
t
2
t=1.5
1.0
numerical
exact
0.8
x(t)
0.6
0.4
0.2
0
0
10
20
t
30
40
t=0.5
1.0
0.8
x(t)
0.6
0.4
0.2
0
0
10
20
30
40
50
t
t=0.125
1.0
0.8
x(t)
0.6
0.4
0.2
0
0
10
20
30
t
40
50
Sommario
Integrazioni Numeriche di Equazioni differenziali
di Primo Grado
Soluzione Numeriche di Equazioni Nonlineari:
Predictor-Corrector Algorithm
PC method da soluzioni accurate al secondo ordine
cioe l’errore e’ del terzo ordine: basta nella
maggior parte dei casi.