1、第八章 RLC电路与常微分方程的解法 8.1 RC电路与常微分方程的欧拉解法RC电路:K 2 1 R C 先把开关K接通“1”端,电容C充满电后再把开关K接通“2”端,则这时电容C放电过程满足方程:即电容C上的电量是时间t的函数,满足以上微分方程.0dQQRdtC如果设:=RC,t=0时刻电容所带电量为Q0 则有:考虑数值微分问题:已知:求f(x)在xn 点的导数.可以:或:0(0),0dQQdtQQ t 11()()()nnnnnf xf xfxxx11()()()nnnnnf xf xfxxx123,.x xx123(),(),(),.f xf xf x微分方程化为一般形式:把时间t等间隔
2、离散化:其中:做如下近似:由方程得:000(,)(),dQf Q tdtQ tQ tt012,.t t t10,ttt202,.ttt 11()()()nnnnt tnnQ tQ tdQQ tdttt11()()(),)nnnnnnQ tQ tf Q tttt即:记:w则得到解微分方程的欧拉法递推公式:对于RC电路:令1()()(),)nnnnQ tQ tf Q ttt11()nnQ tQ()nnQ tQ10000(,)(),.nnnnQQf Q ttQQ ttt100(0),0.nnnQQQtQQt01,10,1QRCt 得到:方程的解析解:100101,0.nnnQQQQt0()tQ tQ
3、 e微分方程化为一般形式微分方程化为一般形式:把时间把时间 t 等间隔离散化等间隔离散化:其中其中:欧拉欧拉(Euler)差分公式差分公式:由方程得由方程得:000(,)(),dQf Q tdtQ tQ tt012,.t t t10,ttt202,.ttt 1()()nnnnt tt tQ tQ tdQQdttt1()()(),)nnnnQ tQ tf Q ttt即即:记记:w则得到解微分方程的欧拉法递推公式则得到解微分方程的欧拉法递推公式:对于对于RC电路电路:例如:例如:1()()(),)nnnnQ tQ tf Q ttt11()nnQ tQ()nnQ tQ10000(,)(),.nnnn
4、QQf Q ttQQ ttt100(0),0.nnnQQQtQQt01,10,1QRCt 得到得到:100101,0.nnnQQQQt rc(1,6,1,10);01234560.50.550.60.650.70.750.80.850.90.951欧拉法也可解释为欧拉法也可解释为Q(t)在在tn处的泰勒展开处的泰勒展开:取线性部分取线性部分:欧拉方法的截断误差欧拉方法的截断误差:21()()()()2nnnnQ ttQ tQ ttQ tt 1()()()nnnQ tQ tQ tt2()()OtOt局部:整体:例:写出解如下一阶常微分方程的欧拉公式:得:2(0)1,0,0.1,dyxydxyyx
5、x 10020.11,0.nnnnnxyyyyyx 8.2 RLC电路和改进的欧拉近似法RLC 电路图:L R C Va K 根据基尔霍夫定律:由于:RLCaVVVV,RLCdIQVIR VLVdtC得:由于:所有:欧拉法:把二阶微分方程化成一阶微分方程组:22ad QdQQLRVdtdtC00000,(),()1()adQIdtttI tI Q tQdIQVIRdtLCdQIdtadIQLIRVdtC其中t是自变量,Q和I随着t的改变而改变.1100000()(),(),nnnnnnanQQtIQtIIVI RLCII tQQ tttfunction Q,I,tt=rlc(Q0,I0,con
6、,T,dt)%RLC电路欧拉解法Q(1)=Q0;I(1)=I0;R=con(1);L=con(2);C=con(3);V=con(4);tt=0:dt:T;for n=1:length(tt)-1 Q(n+1)=Q(n)+dt*I(n);I(n+1)=I(n)+dt*(V-R*I(n)-Q(n)/C)/L;endplot(tt,Q,r,tt,I,b);rlc(1,0,1,1,1,5,15,0.1);051015-10123456 rlc(1,0,1,5,1,5,50,0.1);05101520253035404550-10123456782.向后的欧拉方法方法分为两步:预估:(一步)校正:00
7、000,(),()1()adQIdtttI tI Q tQdIQVIRdtLC0101()nnnnnnanQQtIQtIIVI RLC01100111()nnnnnnanQQtIQtIIVIRLC或者(k+1步)校正:1111111111111(),kknnnkkknnnankknnnnQQtIQtIIVIRLCQQIIfunction Q,I,tt=rlc1(Q0,I0,con,T,dt)%RLC电路向后欧拉解法Q(1)=Q0;I(1)=I0;R=con(1);L=con(2);C=con(3);V=con(4);tt=0:dt:T;for n=1:length(tt)-1 Q1=Q(n)+
8、dt*I(n);I1=I(n)+dt*(V-R*I(n)-Q(n)/C)/L;Q(n+1)=Q(n)+dt*I1;I(n+1)=I(n)+dt*(V-R*I1-Q1/C)/L;endplot(tt,Q,r-,tt,I,b-);rlc1(1,0,1,1,1,5,15,0.1);hold on rlc(1,0,1,1,1,5,15,0.1);051015-101234563.改进的欧拉法方法分两步:预估:(一步)校正:00000,(),()1()adQIdtttI tI Q tQdIQVIRdtLC0101()nnnnnnanQQtIQtIIVI RLC01100111()2()()()22nnn
9、nnnnnnnaIIQQtIIQQtIIVRLC或(k+1步)校正:1111111111111()2()()()22,kknnnnkkknnnnnnakknnnnIIQQtIIQQtIIVRLCQQIIfunction Q,I,tt=rlc2(Q0,I0,con,T,dt)%RLC电路改进欧拉解法Q(1)=Q0;I(1)=I0;R=con(1);L=con(2);C=con(3);V=con(4);tt=0:dt:T;for n=1:length(tt)-1 Q1=Q(n)+dt*I(n);I1=I(n)+dt*(V-R*I(n)-Q(n)/C)/L;Q(n+1)=Q(n)+dt*(I1+I(
10、n)/2;I(n+1)=I(n)+dt*(V-R*(I1+I(n)/2-(Q1+Q(n)/2/C)/L;endplot(tt,Q,r:,tt,I,b:);051015-10123456RC电路:向后的欧拉法:预估:校正:改进的欧拉法:预估:校正:0(0),0dQQdtQQ t 01nnnQQQt011nnnQQQt01nnnQQQt011()2nnnnQQQQtfunction Q1,Q2,Q3,tt=rc3(Q0,T,dt,tao)%RC电路欧拉解法电路欧拉解法Q1(1)=Q0;Q2(1)=Q0;Q3(1)=Q0;tt=0:dt:T;for n=1:length(tt)-1 Q1(n+1)=
11、Q1(n)-dt*Q1(n)/tao;endfor n=1:length(tt)-1 Q=Q2(n)-dt*Q2(n)/tao;Q2(n+1)=Q2(n)-dt*Q/tao;endfor n=1:length(tt)-1 Q=Q3(n)-dt*Q3(n)/tao;Q3(n+1)=Q3(n)-dt*(Q+Q3(n)/2/tao;endQa=Q0*exp(-tt/tao);plot(tt,Qa,b,tt,Q1,r-,tt,Q2,r-,tt,Q3,r:);rc3(1,6,1,10)01234560.50.550.60.650.70.750.80.850.90.951一般微分方程:向后的欧拉法:改进的
12、欧拉法:000(,)(),dQf Q tdtQ tQ tt010111000(,)(,)(),nnnnnnnnQQtf Q tQQtf QtQQ ttt010111000(,)(,)(,)2(),nnnnnnnnnnQQtf Q tf Q tf QtQQtQQ ttt 8.3 龙格-库塔(R-K)方法对于微分方程:根据微分中值定理:即:000(,)(),dQf Q tdtQ tQ tt111()()(),nnnnnnQ tQ tQt ttt111()()()(),nnnnnnQ tQ ttt Qt t11(),),nnnnQQtf Qt t Q(t)tn tn+1 用tn处Q(t)的导数代替处
13、导数 f(,Q(),则为欧拉法:用tn+1处Q(t)的导数的估计值代替处导数 f(,Q(),则为向后的欧拉法:1(,)nnnnQQtf Q t即:用tn和tn+1处Q(t)的导数的估计值的平均代替处导数 f(,Q(),则为改进的欧拉法:若取多点处斜率(即导数)的加权平均会使误差更小,称为龙格-库塔法010111(,)(,)nnnnnnnnQQtf Q tQQtf Qt010111(,)(,)(,)2nnnnnnnnnnQQtf Q tf Q tf QtQQt最常用的四阶龙格-库塔法:1123412132413(22)6(,)(,)22(,)22(,)nnnnnnnnnntQQkkkkkf t
14、Qttkf tQkttkf tQkkf tQtk000(,)(),dQf Q tdtQ tQ tt例1:求解方程:梯形法:四阶龙格-库塔法:(0)1dyydxy01011021,1,0nnnnnnnyyx yyyyyxyxx 有:1123412132430(22)6221,1,0nnnnnnxyykkkkkyxkykxkykkyxkyxx function y1,y2,xx=rk1(y0,X,dx)%矩形法和四阶龙格矩形法和四阶龙格-库塔法库塔法y1(1)=y0;y2(1)=y0;xx=0:dx:X;for n=1:length(xx)-1 y=y1(n)+dx*y1(n);y1(n+1)=y
15、1(n)+dx*(y1(n)+y)/2;endfor n=1:length(xx)-1 k1=y2(n);k2=y2(n)+dx*k1/2;k3=y2(n)+dx*k2/2;k4=y2(n)+dx*k3;y2(n+1)=y2(n)+dx*(k1+2*k2+2*k3+k4)/6;endy=exp(xx);plot(xx,y,b,xx,y1,r-,xx,y2,r:);rk1(1,5,1);00.511.522.533.544.55050100150例2:四阶的龙格-库塔公式1)0(2yyxyy2.0h3342231121432112.0)2.0(22.01.0)1.0(21.01.0)1.0(21
16、.02)22(31.0kyxkykkyxkykkyxkykyxykkkkkyynnnnnnnnnnnnnn例3:四阶的龙格-库塔公式0)0(20314sin622iitdtdi)(20)001.0(314sin622)5.0(20)0005.0(314sin622)5.0(20)0005.0(314sin62220314sin622)22(6001.0342312143211kitkkitkkitkitkkkkkyinnnnnnnnnn微分方程组:(,)(,)dxf x y tdtdyg x y tdt龙格-库塔公式:112341123411211211322322(22)6(22)6(,);
17、(,)(,);(,)222222(,);(,22222nnnnnnnnnnnnnnnnnnnnnntxxkkkktyyllllkf xy tlg xy tttttttkf xk yl tlg xk yl ttttttkf xkyl tlg xkyl t43314331)2(,);(,)nnnnnntkf xtkytl tlg xtkytl t例4:求解阻尼振动方程首先把它转化为一阶微分方程组:22d xdxmckxdtdt 1()dxvdtdvcvkxdtm四阶龙格-库塔公式:112341123411212113232243433(22)6(22)61;()1;()()2221;()()222
18、1;()()nnnnnnnnnnnnnnnntxxkkkktvvllllkv lcvkxmtttkvl lc vlk xkmtttkvl lc vlk xkmkvtk lc vtlk xtkmm0010,10,2,10,0,0kcxvtfunction x,v,tt=rk2(m,k,c,x0,v0,T,dt)%四阶龙格-库塔法x(1)=x0;v(1)=v0;tt=0:dt:T;for n=1:length(tt)-1 k1=v(n);l1=-(c*v(n)+k*x(n)/m;k2=v(n)+dt*l1/2;l2=-(c*(v(n)+dt*l1/2)+k*(x(n)+dt*k1/2)/m;k3=
19、v(n)+dt*k2/2;l3=-(c*(v(n)+dt*l2/2)+k*(x(n)+dt*k2/2)/m;k4=v(n)+dt*k3;l4=-(c*(v(n)+dt*l3)+k*(x(n)+dt*k3)/m;x(n+1)=x(n)+dt*(k1+2*k2+2*k3+k4)/6;v(n+1)=v(n)+dt*(l1+2*l2+2*l3+l4)/6;endplot(tt,x);h=line(Color,1 0 0,Marker,.,MarkerSize,20,EraseMode,xor);for i=1:length(tt)set(h,Xdata,tt(i),Ydata,x(i);pause(dt);end x,v,tt=rk2(10,10,2,10,0,50,0.02);h=line(Color,1 0 0,Marker,.,MarkerSize,30,EraseMode,xor);for i=1:length(tt)set(h,Xdata,x(i),Ydata,0),axis(-10,10,-2,2),grid on;pause(0.02);end