数値計算法I 第10回 連立微分方程式 2006年度 九州工業大学工学部電気電子工学コース用講義資料 講師:趙孟佑 [email protected] 1 高階微分方程式 • m階の常微分方程式 m 2 m1 d y dy d y d y f (t, y, , 2 ,L m1 ) m dt dt dt dt これを連立微分方程式に直して、ルンゲ・クッタ法 で解く。 特に2階微分方程式は多くの物理現象で使う。 例:LCR回路 2 高階微分方程式 • m階の常微分方程式 m 2 m1 d y dy d y d y f (t, y, , 2 ,L m1 ) m dt dt dt dt z1 (t) y(t),z2 (t) y(t),L ,zm (t) y(m1) (t) とおくと、 dz1 dz2 dzm1 dzm (m1) y z2 , y z3,L , y zm , y(m) dt dt dt dt である。 3 連立微分方程式 dmy dy d 2 y d m1y f (t, y, , 2 ,L m1 ) m dt dt dt dt を解くことは、下の1階連立微分方程式を解くに等しい dz1 dt z2 dz2 z3 dt M dz m1 zm dt dzm (m) y f (t, z1, z2 , z3,L , zm ) dt 4 連立微分方程式 dy1 dt f1 (t, y1, y2 ,L , ym ) dy2 f2 (t, y1, y2 ,L , ym ) dt M dy m1 fm1 (t, y1, y2 ,L , ym ) dt dym dt fm (t, y1, y2 ,L , ym ) t=t0での初期条件は y1 (t0 ) b1, y2 (t0 ) b2 ,L , ym1 (t0 ) bm1, ym (t0 ) bm 5 連立微分方程式の例 交流電界中に置かれた電子の速度: dv e E0 sint dt me 電子の座標x(t)は dx v dt よって、t=t0での初期状態をx(t0)=x0,v(t0)=v0として、 dx dt v dv e E0 sint me dt を解いてx(t),v(t)を求める。 6 2階連立微分方程式のルンゲ・クッタ法による解法 dy dt f (t, y, z) dz g(t, y, z) dt t ti で y yi ,z zi とする。 t=ti+1=ti+hでの値、yi+1,zi+1は次式で与えられる。 h y y i1 i 6 k1 2k2 2k3 k4 zi1 zi h l1 2l2 2l3 l4 6 7 2階連立微分方程式のルンゲ・クッタ法による解法 k1 f (ti , yi , zi ) l g(t , y , z ) i i i 1 h h h k f (t , y k , z l1 ) i i 1 i 2 2 2 2 l2 g(ti h , yi h k1, zi h l1 ) 2 2 2 k3 f (ti h , yi h k2 , zi h l2 ) 2 2 2 h h h l g(t , y k , z l2 ) 3 i i 2 i 2 2 2 k4 f (ti h, yi hk3, zi hl3 ) l g(t h, y hk , z hl ) i i 3 i 3 4 8 2階常微分方程式の例 d2 x dx 3 2x 0 2 dt dt 初期条件はt=0で、x=0,dx/dt=-1 1階の連立微分方程式に直す。 dx dt y dy 3y 2x dt 初期条件はt=0で、x=0,y=-1 刻み幅h=0.2でt=0から1.0まで計算 x(t) e2t et 9 2階常微分方程式の例 解析解は t 0.00000000 0.20000000 0.40000000 0.60000000 0.80000000 1.00000000 d2 x dx 3 2x 0 2 dt dt x(t) e2t et xi(t) 0.00000000 -0.14833333 -0.22088811 -0.24751482 -0.24734177 -0.23246922 解析解 誤差 0.00000000 0.00000000 -0.14841071 0.00007737 -0.22099108 0.00010297 -0.24761742 0.00010260 -0.24743245 0.00009068 -0.23254416 0.00007493 10 2階常微分方程式の例 implicit real*8 (a-h,o-z) parameter(nmax=100000) dimension t(nmax),x(nmax),y(nmax) real*8 k1,k2,k3,k4 real*8 l1,l2,l3,l4 c c h=0.2d0 n=1.0d0/h t(1)=0 x(1)=0 y(1)=-1 do i=1,n t1=t(i) x1=x(i) y1=y(i) k1=f(t1,x1,y1) l1=g(t1,x1,y1) c t2=t(i)+h/2 x2=x(i)+h/2*k1 y2=y(i)+h/2*l1 k2=f(t2,x2,y2) l2=g(t2,x2,y2) c t3=t(i)+h/2 x3=x(i)+h/2*k2 y3=y(i)+h/2*l2 k3=f(t3,x3,y3) l3=g(t3,x3,y3) t4=t(i)+h x4=x(i)+h*k3 y4=y(i)+h*l3 k4=f(t4,x4,y4) l4=g(t4,x4,y4) function f(t,x,y) implicit real*8 (a-h,o-z) f=y return end c function g(t,x,y) implicit real*8 (a-h,o-z) g=-2*x-3*y return end c x(i+1)=x(i)+(k1+2*k2+2*k3+k4)/6*h y(i+1)=y(i)+(l1+2*l2+2*l3+l4)/6*h t(i+1)=t(i)+h end do do i=1,n+1 sol=dexp(-2*t(i))-dexp(-t(i)) write(6,100)t(i),x(i),sol,dabs(x(i)-sol) end do 100 format(4(1x,f15.8)) stop end c 11
© Copyright 2024 ExpyDoc