Matlab Math 常微分方程 Cleve morler著 陈文斌(wbchen@fudan.edu.cn) 复旦大学2002
Matlab Math Cleve Morler著 陈文斌(wbchen@fudan.edu.cn) 复旦大学2002 常微分方程
Integrating Differential Equations 微分方程:cv() f(t, y(t ), y(to)=yo 数值解:yny(tn) 步长: 自动确定 积分方程:y(+h)=y(4+。(s)ds 特殊情况:y(t+h)=y(t)+ f(s)ds
Integrating Differential Equatioins 0 0 ( , ( )), ( ) ( ) f t y t y t y dt dy t y y(t ), n 0,1,... n n n n n h t t 1 t h t y(t h) y(t) f (s, y(s))ds t h t 特殊情况: y(t h) y(t) f (s)ds 积分方程: 步长: 自动确定 微分方程: 数值解:
System of equations x(t x(t y(t) x(t) 2(t MATLAB function dot= harmonic(t,y dot=y(2);-y(1) iy= Finline([01;10]*y2,t,’y2);
System of Equations x x(t) ( ) ( ) ( ) x t x t y t ( ) ( ) ( ) ( ) ( ) 1 2 y t y t x t x t y t function ydot = harmonic(t,y) ydot=[y(2); -y(1)] y=inline(‘[0 1;-1 0]*y’ , ’t’ , ’y’);
Two body problem i(t==u(t)/r(t r(t)=()2+v(t v(t)=-v(t)/r(t) () y(t) u(t)/r(t) v(/r()3」 MATLAB function ydot=twobody(t,y) =sqrt(y(1)2+y(2)^2) ydot=y(3)y(4);-y(1)/r^3;-y(2)r^3] %ydot[y(3:4;y(1:2)norm(y(1:2)^3];
Two Body Problem 3 3 ( ) ( ) / ( ) ( ) ( ) / ( ) v t v t r t u t u t r t 2 2 r(t) u(t) v(t) ( ) ( ) ( ) ( ) ( ) v t u t v t u t y t 3 3 ( ) / ( ) ( ) / ( ) ( ) ( ) ( ) v t r t u t r t v t u t y t function ydot =twobody(t,y) r=sqrt(y(1)^2+y(2)^2); ydot=[y(3);y(4);-y(1)/r^3;-y(2)/r^3]; %ydot=[y(3:4;-y(1:2)/norm(y(1:2))^3];
Linearized Differential equations f(t,y)=f(t, y)+a(t-t)+J(-y) at of of f( d|y2()_f2(,n1,…,yn)J av, a yn(t)」Lfn( av, a
Linearized Differential Equations ( , ) ( , ) ( ) ( ) c c c c f t y f t y t t J y y ( , ), ( , ) c c c c t y y f t y J t f ( , ,..., ) ( , ,..., ) ( , ,..., ) ( ) ( ) ( ) 1 2 1 1 1 2 1 n n n n n f t y y f t y y f t y y y t y t y t dt d n n n n n n y f y f y f y f y f y f y f y f y f J 1 2 2 2 2 1 2 1 2 1 1 1 y Jy
Linearized Differential equations J的特征值是A=+k+ivA=dag(xk) J=V∧V aK(t-t kk μk>0解增长 k<0解衰减 vk≠0解振荡
Linearized Differential Equations J的特征值是 k k k i diag( ) k 1 J VV Vx y k k k x x ( ) ( ) ( ) c t t k x t e x t k c k 0 k 0 k 0 解增长 解衰减 解振荡
Linearized Differential equations 01 例 It y e y3(t) 例2:y= y(t)/r(t)3 y2(t)/r()3 0 Viy 00 3/2 3y1y22y2-y1200
Linearized Differential Equations y y 1 0 0 1 3 2 3 1 4 3 ( )/ ( ) ( )/ ( ) ( ) ( ) y t r t y t r t y t y t y 3 2 0 0 2 3 0 0 0 0 0 0 0 0 1 2 1 2 1 2 2 1 2 2 2 2 1 5 5 5 y y y y y y y y r r r J i i r 2 2 1 3/ 2 例1: 例2: it it e e
Single Step Methods Euer方法 n+1 y+hf(tn,ym) t,=t+h MATLAB t=t0; y=yo while t<=tfinal y=y+h*feval(f, t,y) t=tth end 误差:O(h),需要小步长;不能自动确定步长
Single Step Methods Euler 方法 t t h y y hf t y n n n n n n 1 1 ( , ) t=t0; y=y0; while t<=tfinal y = y+h*feval(f,t,y) t=t+h end 误差:O(h),需要小步长;不能自动确定步长
Single step methods midpoint trapezoid S,=f(tn, yn) n 2 h f(t+,y+hs,) t.+ +=S1) 2 =+h +1 1+hS+ 2 t=t+h n+1 t. +h 如果同时用两个方法计算,则在一点得到不同的值, 这样我们可以得到一个误差估计,并用来选取步长 另外,这两个值的外插组合可以得到更精确的结果
Single Step Methods t t h y y hs s h y h s f t s f t y n n n n n n n n 1 1 2 2 1 1 ) 2 , 2 ( ( , ) t t h s s y y h s f t h y hs s f t y n n n n n n n n 1 1 2 1 2 1 1 2 ( , ) ( , ) midpoint trapezoid 如果同时用两个方法计算,则在一点得到不同的值, 这样 我们可以得到一个误差估计,并用来选取步长。 另外,这两个值的外插组合可以得到更精确的结果
Single Step Methods 单步方法:积分思想。 t+h (+h)=y(1)+|f(s,y(s)ds t+h f(,y(s)≈b∑cf(,y),y=? 算法关键:自动确定时间步长h
Single Step Methods 单步方法:积分思想。 t h t y(t h) y(t) f (s, y(s))ds ( , ( )) ( , ), ? i i i i i t h t f s y s ds h c f s y y 算法关键:自动确定时间步长h