还剩16页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
计算机仿真(龙格库塔方法)的软件VB设计与实现Dima0To10AsSingleb0To10AsSinglec0To10AsSingled0To10AsSingleDime0To10AsSingleh0To10AsSinglep0To10AsSingleq0To10AsSingleDimnlAsByten2AsBytenl表示的是y的阶数n2表示的是输入函数的阶数DimiAsIntegerDimf0To2000AsSinglefm=y也就是各个时刻的y值DimX00To12AsSingleXl0To12AsSingleDimdtAsSingleuAsSingledt为采样周期u为输入DimqlAsSingleplAsSinglehlAsSingleelAsSingleDimb00To10AsSinglebn-4To10AsSingleDimmAsInteger*dt*dt*dt/24*bnl-1*bOO*uEndIffm=XllFori=1TonlX0i=XliNextm=m+1LoopUntilm=2000彳盾环计算2000次ElseFori=n2+1To10b0i=0NextFori=0Tonl-1bni=bOi+bOnl*aiNextm=1DoFori=1TonlXli=X0i+dt*X0i+1+dt*dt/2*X0i+2+dt*dt*dt/6*X0i+3+dt*dt*dt*dt/24*X0i+4+hnl-i*bnnl-1+pnl-i*bnnl-2+qnl-i*bnnl-3*uNextFori=1TonlXli=Xli+enl-i*X0l+hnl-i*X02+pnl-i*X03+qnl-i*X04+dt*bnnl-i+dt*dt/2*bnnl-1-i+dt*dt*dt/6*bnnl-2-i+dt*dt*dt*dt/24*bnnl-3-i*uNextfm=XllFori=1TonlX0i=XliNextm二m+1LoopUntilm=2000EndIfmax=flForm=2To1999IfAbsfmAbsmaxThenmax=fmEndIfNextPicturel.CIsPicturel.Scale-20*dt
1.2*max-2022*dtz-
0.05*maxPicturel.Line00-2002*dtz0Picturel.Line00-
01.18*maxPicturel.Line2002*dt0-1960*dtz-
0.025*maxPicturel.Line2002*dt0-1960*dtz
0.025*maxPicturel.Line
01.18*max-10*dtz
1.1*maxPicturel.Line
01.18*max--10*dt
1.1*maxElsePicturel.CIsPicturel.Scale-5*dt
0.2*Absmax-2002*dt
1.2*maxPicturel.Line00-2002*dt0Picturel.Line00-
01.2*maxPicturel.Line2002*dt0-1900*dtz
0.1*maxPicturel.Line
01.2*max-50*dt
1.1*maxEndIfForm=2To1999Picturel.Linem-1*dtfm-l-m*dtfmvbRedNextIff1999-f
18000.00001ThenPicturel.Line0/1999-2000*dtf1999Picturel.CurrentX=0Picturel.CurrentY=f1999+
0.1*maxPicturel.Printnyoo=f1999EndIfPicturel.Line0f1999-2000*dtzf1999Picturel.CurrentX=0Picturel.CurrentY=f1999+
0.1*maxPicturel.Printnyco=fQ999ElsePicturel.Line00-2000*dtu*2000*dtEndIfEndSubPrivateSubCombo3_ClickText
4.Visible=TrueLabell
2.Visible=TrueIfCombo
3.Listindex=0ThenLabel
5.Caption=”请输入阶跃信号u的系数”ElseLabel
5.Caption=”请输入斜坡信号u的系数”EndIfEndSubPrivateSubdtxnzb_ClickDimyOOAsSingleDimthigemaAsSingleDimtsAsSingleDimessAsSingleIfCombo
3.Listindex=0ThenyOO=f1999thigema=max-yOOm=2000Dom=m-1LoopUntilAbsfm-yOO=
0.05*yOOts=m*dtess=u-yOOFramel.Visible=TrueLabel
6.Caption=超调量thigemaLabel
7.Caption=调整时间ts:”tsLabel
8.Caption=稳态误差ess:essElseFramel.Visible=TrueLabel
6.Caption二稳态误差ess:u*1999*dt-f1999/u*1999*dtn%EndIfEndSubDimmaxAsSinglePrivateSubCombol_Clicknl=Combol.Listindex+1nl表示的是y的阶数Fori=nl+1To8Textli.Visible=FalseLabelli.Visible=FalseLabel9i.Visible=FalseNextFori=0TonlTextli.Visible=TrueLabelli.Visible=TrueLabel9i.Visible=TrueCombo
2.ClearCombo
2.Text=”请选择输出u的最大阶数”Fori=0TonlCombo
2.AddItemi邛介NextEndSubPrivateSubCombo2_Click的状况CallMsgBoxC请选择阶数!”48”未选择阶数”ExitSubEndIfFori=0To12设XO的初值都是0且i大于8这一点很重要!X0i=0NextFori=0Tonl-1ai=-ValTextli.Text/ValTextlnl.Text匕ibicidi等等都是计算的中间变量NextFori=0Ton2bOi=ValText2i.Text/ValTextlnl.TextNextIfCombo
3.Listindex=1Thennl=nl+1Fori=nl-1To1Step-1ai=ai-1Nexta0=0EndIfFori=-4To-1bni=0Nextb0=a0*anl-1Fori=1Tonl-1bi=ai-1+ai*anl-1Nextc0=a0*bnl-1ci=bi-1+ai*bnl-1Nextd0=a0*cnl-1Fori=1Tonl-1di=ci-1+ai*cnl-1NextFori=0Tonl-1ei=dt*ai+dt*dt/2*bi+dt*dt*dt/6*ci+dt*dt*dt*dt/24*dihi=dt*dt/2*ai+dt*dt*dt/6*bi+dt*dt*dt*dt/24*cipi=dt*dt*dt/6*ai+dt*dt*dt*dt/24*biqi=dt*dt*dt*dt/24*aiNextn2为0和不为0的公式是不一样的,表示输入函数u为n2阶bOO=VaiText
20.Text/ValTextlnl.Textm=1Doql=0:pl=0:hl=0:el=0Fori=0Tonl-1这些个也是中间变量ql=ql+qi*X0i+1pl=pl+pi*X0i+1hl=hl+hi*X0i+1el=el+ei*X0i+1NextFori=1TonlXli=X0i+dt*X0i+1+dt*dt/2*X0i+2+dt*dt*dt/6*X0i+3+dt*dt*dt*dt/24*X0i+4NextXlnl=Xlnl+el+dt+dt*dt/2*anl-1+dt*dt*dt/6*bnl-1+dt*dt*dt*dt/24*cnl-1*bOO*uIfnl=4ThenXlnl-3=Xlnl-3+ql+dt*dt*dt*dt/24*bOO*uXlnl-2=Xlnl-2+pl+dt*dt*dt/6+dt*dt*dt*dt/24*anl-1*bOO*uXlnl-1=Xlnl-1+hl+dt*dt/2+dt*dt*dt/6*anl-1+dt*dt*dt*dt/24*bnl-1*bOO*uElselfnl=3ThenXlnl-2=Xlnl-2+pl+dt*dt*dt/6+dt*dt*dt*dt/24*anl-1*bOO*uXlnl-1=Xlnl-1+hl+dt*dt/2+dt*dt*dt/6*anl-1+dt*dt*dt*dt/24*bnl-1*bOO*uElselfnl=2ThenXlnl-1=Xlnl-l+hl+dt*dt/2+dt*dt*dt/6*anl-1+dt。