007 8 8 4 1 1.1 ( ) (partial differential equation) (ordinary differential equation) 1 dy = f(, y) (1) 1 1 y() (1) y() (, y) 1
dy = sin cos y cos () y () 1 y = sin 1 + c 1 e sin (3) 1 1 5 y() () y() y( 0 ) = y 0 y 1 1. (1) d (1) y = f(, y) (4) i y y i+1 y i+1 = y( i + ) = y i + y = y i + f( i, y i ) (5) 0, y 0 ( 1, y 1 ), (, y ), ( 3, y 3 ),... (5) y i+1 y i f( i, y i ) 1 1
1 y 0-1 0 4 6 8 10 1: dy = sin cos y cos 1 y 0-1 0 4 6 8 10 : 3
3 ( ) i i+1 y i+1 y i i i+1 3: ( i, y i ) ( i+1, y i+1 ).1 dy = f(, y) y(a) = b (6) y = y() i y i+1 = y( i + ) = y( i ) + dy + 1 d y =i =i + 1 6 (6) d 3 y =i 3 3 +... (7) y i+1 = y i + f( i, y i ) + O( ) (8) 4
y i+1 = y i + f( i, y i ) (9) (5) 1 y i+1 y i = f( i, y i ) dy = f(, y) i+1 = i + y(a) = b 0 = a y 0 = b { yi+1 = y i + f( i, y i ) i+1 = i + (10) (11) ( 0, y 0 ) ( 1, y 1 ), (, y ), (a, b) for while ( ) i y i [i] y[i] [0]=a; y[0]=b; = for( ){ [i+1]=[i]+; y[i+1]=y[i]+f([i],y[i])*; } 4 O( n+1 ) n n 5
y() 0 1 4 4: y y. 1..1 1 h y( 0 + h) = y( 0 ) + y ( 0 )h + 1 y ( 0 )h + O(h 3 ) (1) y = y( 0 + h) y( 0 ) = y ( 0 )h + 1 y ( 0 )h + O(h 3 ) (13) 6
(13) y y 1 α, β y = h{αy ( 0 ) + βy ( 0 + h)} (14) α, β (13) 0 y = (α + β)y ( 0 )h + βy ( 0 )h + O(h 3 ) (15) (13) α + β = 1, β = 1/ α = 1 β = 1 (6) k 1 = hf( n, y n ) k = hf( n + h, y n + k 1 ) y n+1 = y n + 1 (k 1 + k ) (16) (17) 5 (17)? α β + h y ( + h) (17) f( n + h, y n + k 1 ) (17) 3 y n+1 = y n + 1 (k 1 + k ) = y n + h {f( n, y n ) + f( n + h, y n + hf( n, y n ))} = y n + h { f( n, y n ) + f( n, y n ) + f h + f } y f( n, y n )h + O(h ) = y n + f( n, y n )h + 1 { f + f } y f( n, y n ) h + O(h 3 ) = y n + dy h + 1 d y h + O(h 3 ) (18) 7
y() 同じ傾き 0 1 4 5: y y (7) 3 3 d 3 y 3 = d ( d ) y 3 = d ( f + f y f ) ( = f + f dy ) y + f y + f dy y f + f ( f y + f y ( = f + f ) y f + f y + f y f f + f ( f y + f ) y f = f + f f y + f y f + f ( f y + f ) y f ( = + f ) f + f ( y y + f ) f y 3 (19) d y = d «dy = d f (f(, y)) = dd + f dy y = f + f y f ) dy (19) 8
3 (18) d f( n + h, y n + hf( n, y n )) dh = d f( n + h, y n + F h) dh = d ( f dh + f ) y F = f + f y F + f y F + f y F = f + f y f + f y f + f y f ( = + f ) f y (0) 3 (19) 3 (0) 3 3.. (14) 0 y = h{αy ( 0 ) + βy ( 0 + h )} (1) y = (α + β)y ( 0 )h + β y ( 0 )h + O(h 3 ) () (13) { α = 0 β = 1 (3) k 1 = hf( n, y n ) k = hf( n + h, y n + k 1 ) y n+1 = y n + k (4) 6 9
(18) y n+1 = y n + k = y n + hf( n + h, y n + hf( n, y n ) ) { = y n + h f( n, y n ) + f h + f y f( n, y n ) h } + O(h ) = y n + f( n, y n )h + 1 { f + f } y f( n, y n ) h + O(h 3 ) = y n + dy h + 1 d y h + O(h 3 ) (7) 3 (0) h 1 (5) d f( n + h, y n + hf(n,yn) ) dh = 1 ( 4 + f ) f (6) y (19) 3 y() 同じ傾き 0 1 4 6: y y 10
.3 4 4 5, 6, 7, 4 5 4 4 4 4 4 Bulirsch-Store [1] 4 (7) 7 4 k 1 = hf( n, y n ) k = hf( n + h, y n + k 1 ) k 3 = hf( n + h, y n + k ) k 4 = hf( n + h, y n + k 3 ) (7) y n+1 = y n + 1 6 (k 1 + k + k 3 + k 4 ) 11
y() 1 3 4 0 1 7: 4 y y 4 3 3.1 4 1 1 1 1 d ( y = f, y, dy ) (, y, dy/) 3 y dy/ 1 { Y0 () = y() Y 1 () = y () (8) (9) 1
(8) dy 0 = Y 1 dy 1 = f(, Y 0, Y 1 ) 1 1 4 k 1 = hy 1 n l 1 = hf( n, Y 0 n, Y 1 n ) ( k = h Y 1 n + l ) 1 l = hf( n + h, Y 0 n + k 1, Y 1 n + l 1 ) (30) ( k 3 = h Y 1 n + l ) l 3 = hf( n + h, Y 0 n + k, Y 1 n + l ) (31) k 4 = h (Y 1 n + l 3 ) l 4 = hf( n + h, Y 0 n + k 3, Y 1 n + l 3 ) Y 0 n+1 = Y 0 n + 1 6 (k 1 + k + k 3 + k 4 ) Y 1 n+1 = Y 1 n + 1 6 (l 1 + l + l 3 + l 4 ) y() Y 0 i Y 1 i 4 h [1] 13
[1] Willam H. Press et al. NUMERICAL RECIPES in C [ ]., 1996. 14