内弹道计算程序
龙格库塔法计算固体火箭发动机内弹道
!计?算?星?型³装痢?药?的?几?何?尺?寸?!参?数簓符?号?说μ明¶!-----------------------------------------------------------------------------------!n表括?示?星?角?数簓,num表括?示?将?推?进?剂®沿?肉╝厚?方?向´分?为a几?等台?分?,m表括?示?选?择?压1力 值μ大洙?小?!d表括?示?外猘径?,len表括?示?长¤度¯,thet表括?示?星?边?夹D角?,epsilon表括?示?角?度¯系μ数簓!r表括?示?过y度¯圆2弧?半?径?,r1表括?示?星?角?圆2弧?半?径?,R0表括?示?通 ?用?气?体?常£数簓!l表括?示?药?柱·的?特?征¶长¤度¯,y0表括?示?初?始?特?征¶参?数簓,y1表括?示?燃?尽?特?征¶参?数簓!I0表括?示?总哩?冲?,F表括?示?推?力 ,Poc表括?示?燃?烧?室酣?的?工¤作痢?压1力!Isp表括?示?比括?冲?,density_p表括?示?密¹度¯,k表括?示?比括?热¯?比括?rspeed表括?示?燃?速·,?pn表括?示?压1力 指?数簓!mpeff表括?示?有瓺效§装痢?药?量?,Cf表括?示?推?力 系μ数簓,Ctz表括?示?特?征¶速·度¯,At表括?示?喉³部?面?积y,a表括?示?燃?速·系μ数簓!S表括?示?平?均·燃?烧?面?积y,e1表括?示?平?均·肉╝厚?,epsilon1表括?示?减?面?比括?epsilon2表括?示?增?面?比括?!foresmax表括?示?前©段?最?大洙?相对?周¹边?长¤,backsmax表括?示?后µ段?最?大洙?相对?周¹边?长¤!smin表括?示?最?小?相对?周¹边?长¤,thet1表括?示?周¹边?长¤取?得?最?小?值μ时骸?的?星?边?夹D角?!Ap表括?示?初?始?通 ?气?面?积y,J表括?示?初?始?通 ?气?参?量?,eta表括?示?装痢?填?系μ数簓,Af表括?示?剩骸?药?面?积y,etaf表括?示?剩骸?药?系μ数簓!de表括?示?每?一?份 肉╝厚?的?长¤度¯,Sa表括?示?燃?烧?面?积y数簓组哩?Apa表括?示?通 ?气?面?积y数簓组哩?!------------------------------------------------------------------------------------program mainimplicit nonereal(kind=8),parameter :: Pi=3.14integer :: n,num,i,mreal(kind=8) :: d,len,thet,epsilon,r,r1real(kind=8) :: l,y0,y1real(kind=8) :: I0,F,Poc,Pe,R0real(kind=8) :: Isp,density_p,k,rspeed,Pnreal(kind=8) :: mpeff,Cf,Ctz,At,areal(kind=8) :: S,e1,epsilon1,epsilon2real(kind=8) :: foresmax,backsmax,smin,thet1real(kind=8) :: Ap,J,eta,Af,etafreal(kind=8) :: error,dereal(kind=8),allocatable :: Sa(:),Apa(:)!读®入?所·需¯要癮所·用?参?数簓值μopen(3,file="design_parameter.dat")read(3,*) I0 !总哩?冲?read(3,*) F !推?力read(3,*) Poc !燃?烧?室酣?压1力read(3,*) Isp !比括?冲?read(3,*) density_p !推?进?剂®的?密¹度¯read(3,*) k !比括?热¯?比括?read(3,*) a !燃?速·系μ数簓read(3,*) Ctz !读®取?特?征¶速·度¯Ctzread(3,*) Pn !压1力 指?数簓read(3,*) Pe !读®取?喷?管¹出?口¸的?压1力 Peread(3,*) R0 !读®取?通 ?用?气?体?常£数簓R0read(3,*) d,r !读®取?装痢?药?直ª径?d和³过y度¯圆2弧?半?径?rread(3,*) epsilon2 !读®取?增?面?比括╡psilon2read(3,*) r1 !读®取?星?角?圆2弧?半?径?r1read(3,*) thet1 !试?取?周¹边?长¤取?得?最?小?值μ时骸?的?星?边?夹D角?thet1read(3,*) thet !试?取?初?始?时骸?的?星?边?夹D角?thetread(3,*) n !读®取?星?角?数簓n(辍?,4,5,6,7,8)?read(3,*) epsilon !试?取?角?度¯系μ数簓epsilonread(3,*) num !读®取?等台?分?肉╝厚?的?等台?分?数簓numread(3,*) m !m=1表括?示?最?小?压1力 给?定¨,m=2表括?示?最?大洙?压1力 给?定¨,m=0表括?示?平?均·压1力 给?定¨close(3)allocate(Sa(0:num),Apa(0:num))!根·据Y规?定¨的?总哩?冲?计?算?有瓺效§装痢?药?量?mpeffmpeff=1.02*I0/Isp!计?算?推?力 系μ数簓和³喉³部?面?积yCf=sqrt(k)*(2/(k+1))**((k+1)/(k-1)/2)*sqrt(2*k*(1-(Pe/Poc)**((k-1)/k))/(k-1))At=F/Cf/(Poc*101325.0)!计?算?平?均·肉╝厚?e1和³计?算?特?征¶长¤度¯和³平?均·燃?烧?面?积yS!若?给?定¨的?是?最?大洙?压1力 则´需¯根·据Y增?面?比括?计?算?最?小?燃?面?再·计?算?平?均·燃?面?值μ!y1一?般?取?值μ在¸1附?近¹,(0.8-1.2)if(m==0) then!平?均·压1力 给?定¨S=At*(Poc*101325.0)**(1-Pn)/(Ctz*density_p*a)e1=mpeff/(density_p*S)else if(m==1) then!最?小?压1力 给?定¨S=At*(Poc*101325.0)**(1-Pn)/(Ctz*density_p*a)S=(epsilon2+1.0)*S/2.0e1=mpeff/(density_p*S)else!最?大洙?压1力 给?定¨S=At*(Poc*101325.0)**(1-Pn)/(Ctz*density_p*a)S=(1.0/epsilon2+1.0)*S/2.0e1=mpeff/(density_p*S)end ifl=d/2-e1-ry0=r/ly1=(e1+r)/l!根·据Yepsilon2选?择?角?度¯系μ数簓epsilon!计?算?取?得?最?小?周¹长¤时骸?的?thet1do while(.true.)error=thet1/2+cotan(thet1/2)-Pi/n-Pi/2if(error>=0.0001) thenthet1=thet1+0.00001else if(error<=-0.0001) thenthet1=thet1-0.00001elseexitend ifend do!计?算?角?度¯系μ数簓epsilon的?准?确º?值μdo while(.true.)backsmax=2*n*((1-epsilon)*Pi/n+y1*(Pi/n+asin(sin(epsilon*Pi/n)/y1))) smin=2*n*(sin(epsilon*Pi/n)/sin(thet1/2)+(1-epsilon)*Pi/n) if(backSmax/Smin>epsilon2) thenepsilon=epsilon+0.001elseexitend ifend do!根·据Y减?面?比括╡psilon1,?计?算?thetepsilon1=1/epsilon2foresmax=smin/epsilon1do while(.true.)error=2*n*(sin(epsilon*Pi/n)/sin(thet/2)+(1-epsilon)*Pi/n+&(r1+r)*(Pi/n+Pi/2-thet/2-cos(thet/2)/sin(thet/2))/l)-foresmax if(error>=0.0001) thenthet=thet+0.00001else if(error<=-0.0001) thenthet=thet-0.00001elseexitend do!计?算?初?始?通 ?气?面?积y,?通 ?气?参?量?,?装痢?填?系μ数簓,药?柱·长¤度¯Ap=(n*((1-epsilon)*Pi/n+sin(epsilon*Pi/n)*(cos(epsilon*Pi/n)-&sin(epsilon*Pi/n)*cotan(thet/2)))+2*n*r*(sin(epsilon*Pi/n)/sin(thet/2)+&(1-epsilon)*Pi/n)/l+n*r**2*(Pi/n+Pi/2-thet/2-cotan(thet/2))/l**2+&n*r1**2*(thet/2+cotan(thet/2)-Pi/2)/l**2)*l**2J=At/Apeta=4*(Pi*d**2/4-Ap)/(Pi*d**2)Af=(epsilon*Pi*(1+y1)**2-n*(sin(epsilon*Pi/n)*(sqrt(y1**2-sin(epsilon*Pi/n)**2)+& cos(epsilon*Pi/n)))-n*y1**2*(epsilon*Pi/n+asin(sin(epsilon*Pi/n)/y1)))*l**2etaf=4*Af/(pi*d**2)len=mpeff/density_p/(Pi*d**2/4-Ap-Af)!计?算?推?进?剂®的?燃?面?变?化ˉ规?律°并¢输?出?结®果?de=e1/numopen(10,file="export_burnS.dat")open(20,file="export_Ap.dat")do i=0,num,1if((i*de)<=r1) thenSa(i)=2*n*(sin(epsilon*Pi/n)/sin(thet/2)+(1-epsilon)*Pi/n+&(r1+r)*(Pi/n+Pi/2-thet/2-cotan(thet/2))/l-(r1-i*de)*Pi/n/l)*l*len Apa(i)=(n*((1-epsilon)*Pi/n+sin(epsilon*Pi/n)*(cos(epsilon*Pi/n)-sin(epsilon*Pi/n)* cotan(thet/2)))+&2*n*(r+i*de)*(sin(epsilon*Pi/n)/sin(thet/2)+(1-epsilon)*Pi/n)/l+&n*(r+i*de)**2*(Pi/n+Pi/2-thet/2-cotan(thet/2))/l**2+n*(r1-i*de)**2*(thet/2+cotan(thet/2 )-Pi/2)/l**2)*l**2else if((i*de)>r1.and.(i*de)<=(l*sin(epsilon*Pi/n)/cos(thet/2)-r)) thenSa(i)=2*n*(sin(epsilon*Pi/n)/sin(thet/2)+(1-epsilon)*Pi/n+&(i*de+r)*(Pi/n+Pi/2-thet/2-cotan(thet/2))/l)*l*lenApa(i)=(n*((1-epsilon)*Pi/n+sin(epsilon*Pi/n)*(cos(epsilon*Pi/n)-sin(epsilon*Pi/n)* cotan(thet/2)))+&2*n*(r+i*de)*(sin(epsilon*Pi/n)/sin(thet/2)+(1-epsilon)*Pi/n)/l+&n*(r+i*de)**2*(Pi/n+Pi/2-thet/2-cotan(thet/2))/l**2)*l**2else if((i*de)>(l*sin(epsilon*Pi/n)/cos(thet/2)-r).and.(i*de)<=e1) thenSa(i)=2*n*((1-epsilon)*Pi/n+(r+i*de)*(Pi/n+asin(l*sin(epsilon*Pi/n)/(i*de+r)))/l)*l *lenApa(i)=n*((1-epsilon)*Pi*(1+(r+i*de)/l)**2/n+sin(epsilon*Pi/n)*(sqrt((r+i*de)**2/l* *2-&sin(epsilon*Pi/n)**2)+cos(epsilon*Pi/n))+(r+i*de)**2*(epsilon*Pi/n+&asin(l*sin(epsilon*Pi/n)/(r+i*de)))/l**2)*l**2write(10,"(f10.5,2X,f15.5)") i*de,Sa(i)write(20,"(f10.5,2X,f15.5)") i*de,Apa(i)end doclose(10)close(20)!调獭?用?子哩?程²序´计?算?装痢?药?内¸弹獭?道台?曲¸线?callinternal_ballistics0(d,len,e1,n,thet,epsilon,r,r1,l,a,pn,Ctz,At,k,density_p,mpeff,Isp) !输?出?星?型³装痢?药?的?几?何?参?数簓open(30,file="export_star_geometry.dat")write(30,"(A6,f11.5,A2)") "mpeff=",mpeff,"Kg"write(30,"(A2,f8.5,A2)") "D=",d,"m"write(30,"(A2,f8.5,A2)") "L=",len,"m"write(30,"(A2,I2)") "n=",nwrite(30,"(A3,f8.5)") "θ¯=",thetwrite(30,"(A3,f7.5)") "ε?=",epsilonwrite(30,"(A2,f7.5,A2)") "r=",r,"m"write(30,"(A3,f7.5,A2)") "r1=",r1,"m"write(30,"(A3,f8.5,A2)") "e1=",e1,"m"write(30,"(A3,f10.5,A2)") "Ap=",Ap,"㎡O"write(30,"(A2,f10.5)") "J=",Jwrite(30,"(A3,f7.5)") "η?=",etawrite(30,"(A3,f10.5,A2)") "Af=",Af,"㎡O"write(30,"(A4,f10.5)") "η?f=",etafwrite(30,"(A2,f10.5)") "l=",lwrite(30,"(A3,f10.5)") "y0=",y0write(30,"(A3,f10.5)") "y1=",y1close(30)stopend!该?子哩?程²序´用?于 ?计?算?零?维?变?截?面?燃?烧?装痢?药?的?内¸弹獭?道台?!利?用?龙ⅷ?格?-库a塔t法ぁ?计?算?内¸弹獭?道台?曲¸线?!可°用?于 ?计?算?侵?蚀骸?燃?烧?效§应畖下?的?内¸弹獭?道台?曲¸线?!--------------------------------------------------------------------------!d外猘径?,len长¤度¯,e1平?均·肉╝厚?,n星?角?数簓,thet星?边?夹D角?,epsilon角?度¯系μ数簓!r过y度¯圆2弧?半?径?,r1星?角?圆2弧?半?径?和³l特?征¶尺?寸?,key表括?示?是?否?考?虑?侵?蚀骸?燃?烧?!density_p推?进?剂®的?密¹度¯,k比括?热¯?比括?ga系μ数簓,C特?征¶速·度¯,mpeff药?柱·质±量?!a速·度¯系μ数簓,pn压1强?指?数簓,At喉³部?面?积y,Pc燃?烧?室酣?的?设Θ?计?压1力 ,Isp表括?示?理え?论?比括?冲?!dt时骸?间?步?长¤,e燃?层?厚?度¯,time时骸?间?,Sa同?一?时骸?刻²轴®向´的?各¶节¸点?的?燃?面?,Apa通 ?气?面?积y!Poc各¶节¸点?的?压1力 ,Pe喷?管¹出?口¸压1力 ,P_I压1力 冲?量?,ep侵?蚀骸?比括?!P_av平?均·压1力 ,F_av平?均·推?力 ,I0总哩?冲?,Im重?量?比括?冲?Iv体?积y比括?冲?,Cf推?力 系μ数簓!--------------------------------------------------------------------------subroutineinternal_ballistics0(d,len,e1,n,thet,epsilon,r,r1,l,a,pn,Ctz,At,k,density_p,mpeff,Isp)implicit nonereal,parameter::Pi=3.14integer :: n,keyreal(kind=8),intent(in) :: d,len,e1,thet,epsilon,r,r1,lreal(kind=8),intent(in) :: density_p,k,Ctz,mpeff,Ispreal(kind=8) :: a,pn,At,dt,e,time,Sa,Apa,Poc,Pe,P_I,F real(kind=8) :: ep,P_av,F_av,I0,Im,Iv,Cf,gareal(kind=8) :: f1,f2,f3,f4Pe=101325.0P_I=0.0!药?柱·的?能¹量?特?性?参?量?读®入?open(3,file="inter_parameter.dat")read(3,*) keyread(3,*) dtread(3,*) Pocclose(3)!计?算?点?火e压1强?时骸?的?推?力 值μPoc=Poc*101325.0ga=sqrt(k)*(2/(k+1))**((k+1)/(k-1)/2)Cf=ga*sqrt(2*k*(1-(Pe/Poc)**((k-1)/k))/(k-1))F=Cf*Poc*Ate=0.0time=0.0open(10,file="export_Poc.dat")open(20,file="export_F.dat")write(10,"(f8.5,2X,f10.5)") time,Poc/101325.0write(20,"(f8.5,2X,f15.5)") time,Fdo while(.true.)!计?算?燃?面?和³通 ?气?面?积yif(e<=r1) thenSa=2*n*(sin(epsilon*Pi/n)/sin(thet/2)+(1-epsilon)*Pi/n+&(r1+r)*(Pi/n+Pi/2-thet/2-cotan(thet/2))/l-(r1-e)*Pi/n/l)*l*len Apa=(n*((1-epsilon)*Pi/n+sin(epsilon*Pi/n)*(cos(epsilon*Pi/n)-&sin(epsilon*Pi/n)*cotan(thet/2)))+2*n*(r+e)*(sin(epsilon*Pi/n)/&sin(thet/2)+(1-epsilon)*Pi/n)/l+n*(r+e)**2*(Pi/n+Pi/2-thet/2-&cotan(thet/2))/l**2+n*(r1-e)**2*(thet/2+cotan(thet/2)-Pi/2)/l**2)*l**2else if(e>r1.and.e<=(l*sin(epsilon*Pi/n)/cos(thet/2)-r)) thenSa=2*n*(sin(epsilon*Pi/n)/sin(thet/2)+(1-epsilon)*Pi/n+&(e+r)*(Pi/n+Pi/2-thet/2-cotan(thet/2))/l)*l*lenApa=(n*((1-epsilon)*Pi/n+sin(epsilon*Pi/n)*(cos(epsilon*Pi/n)-&sin(epsilon*Pi/n)*cotan(thet/2)))+2*n*(r+e)*(sin(epsilon*Pi/n)/&sin(thet/2)+(1-epsilon)*Pi/n)/l+n*(r+e)**2*(Pi/n+Pi/2-thet/2-cotan(thet/2))/l**2)*l**2 else if(e>(l*sin(epsilon*Pi/n)/cos(thet/2)-r).and.e<=e1) thenSa=2*n*((1-epsilon)*Pi/n+(r+e)*(Pi/n+asin(l*sin(epsilon*Pi/n)/(e+r)))/l)*l*len Apa=n*((1-epsilon)*Pi*(1+(r+e)/l)**2/n+sin(epsilon*Pi/n)*(sqrt((r+e)**2/l**2-& sin(epsilon*Pi/n)**2)+cos(epsilon*Pi/n))+(r+e)**2*&(epsilon*Pi/n+asin(l*sin(epsilon*Pi/n)/(r+e)))/l**2)*l**2elseSa=0.0end if!计?算?侵?蚀骸?比括?if(key==1) thenif(Sa/Apa<=72.9) thenep=1.0elseep=1.3128-1.3249e-2*Sa/Apa+1.5527e-4*(Sa/Apa)**2-4.3868e-7*(Sa/Apa)**3end ifelseep=1.0end if!采°用?4阶¬的?龙ⅷ?格?库a塔t法ぁ?计?算?f1=ga**2*Ctz**2*(density_p*Sa*ep*a*Poc**pn-Poc*At/Ctz)/(Apa*len)f2=ga**2*Ctz**2*(density_p*Sa*ep*a*(Poc+dt*f1/2)**pn-(Poc+dt*f1/2)*At/Ctz)/(Apa*len )f3=ga**2*Ctz**2*(density_p*Sa*ep*a*(Poc+dt*f2/2)**pn-(Poc+dt*f2/2)*At/Ctz)/(Apa*len )f4=ga**2*Ctz**2*(density_p*Sa*ep*a*(Poc+dt*f3)**pn-(Poc+dt*f3)*At/Ctz)/(Apa*len) Poc=Poc+dt*(f1+2.0*f2+2.0*f3+f4)/6.0Cf=ga*sqrt(2*k*(1-(Pe/Poc)**((k-1)/k))/(k-1))F=Cf*Poc*Attime=time+dte=e+dt*ep*a*Poc**pnif(e>e1.and.Poc<101325.0) exitwrite(10,"(f8.5,2X,f10.5)") time,Poc/101325.0write(20,"(f8.5,2X,f15.5)") time,FP_I=P_I+Poc*dtend doclose(10)close(20)!循-环«结®束?P_av=P_I/timeCf=ga*sqrt(2*k*(1-(Pe/P_av)**((k-1)/k))/(k-1))F_av=Cf*P_av*AtI0=F_av*timeIm=I0/mpeff/9.81Iv=I0/(Apa*len)!输?出?固²体?火e箭y发ぁ?动ˉ机¸的?工¤作痢?参?数簓值μopen(30,file="export_propellant.dat")write(30,"('平?均·压1力 p_av=',f9.5)") p_av/101325.0write(30,"('平?均·推?力 F_av=',f10.5,1X,'KN')") F_av/1000.0 write(30,"('总哩?冲?I0=',f10.5,1X,'KN.s')") I0/1000.0write(30,"('重?量?比括?冲?Im=',f10.5,1X,'s')") Imwrite(30,"('体?积y比括?冲?Iv=',f10.5,1X,'KN.s/m3')") Iv/1000.0 write(30,"('工¤作痢?时骸?间?time=',f8.5,1X,'s')") timeclose(30)returnend subroutine。
第2章内弹道部分-part4内弹道解法(一)
( Z 0 x) ( Z 0 x) 2
2 ; 0 1 2Z0 ,并记 K1 0 由 0 Z0 Z0
则
0 K1 x x 2
由三式得:
S 2 I k2 Spdl pdV m v d v xdx m
⑴
S 2 I k2 2 由四式得: p(V V ) f x 2 m
⑵
内弹道的解法
⑴除以⑵得
dV Bxdx V V B x 2 2
⑶
S 2 I k2 由该方程可以得到 V ( x) 。令 B ,这是将各种装填条件综合在一起的无因次 f m
V V0 或 V V0
p
美国的马耶—哈特模型及英国的 RD—38 模型都采用这种简化方法。 ⑷ 燃气生成函数采用两项式 Z (1 Z ) 且其系数满足 (1 ) 1 ,故独立的系数只有一个 。
内弹道的解法
⑸ 恒温假设
mv 2 将④式改写为 p(V V ) f ,式中 f f (1 ) ,因为体现膛内温度 2 f
比较一阶变系数常微分方程
⑷
dV p( x)V Q( x) 0 ,可知上述方程正是这种类型,所以 dx
原则上是可以解的,但实际求解时计算比较麻烦,所以一般用近似解来近似代替。一种 方法是俄罗斯谢烈柏梁可夫最先采用的,将 V 在积分时取为常数 即
V V
V V
0
2
内弹道的解法
dp xm 应满足的方程,然后令 0 ,就可以求出 dt m
xm
K1 B(1 ) 2 1 pm 1 ( ) p f
内弹道 龙格库塔 计算 matlab
内弹道是指射程较短的导弹或火箭弹在飞行过程中受到大气阻力和重力等作用的飞行轨迹。
内弹道理论研究的是导弹或火箭弹在发射后到离开大气层再进入大气层末时的飞行过程。
内弹道包括导弹或火箭弹在发射后的加速、稳定、制导、飞行以及飞行过程中的动力学性能仿真等诸多内容。
内弹道有着复杂的飞行特性和动力学方程,在实际工程中需要进行准确的计算和仿真。
内弹道的计算中,龙格库塔(Runge-Kutta)法是一种常用的数值积分方法,在求解微分方程等领域有着广泛的应用。
龙格库塔法是由数学家奥特翁格(C. W. Runge)和马丁庫塔(M. W. J. Kutta)于1900年提出的,用于求解常微分方程初值问题,其优点是精度较高,适用范围广。
在内弹道计算中,可以利用龙格库塔法对导弹或火箭弹的飞行轨迹进行数值模拟和计算,得到较为准确的飞行轨迹数据。
在实际工程中,为了方便进行内弹道的计算,可以使用Matlab等数学建模和仿真软件。
Matlab是一种常用的科学计算软件,具有强大的数值计算和仿真功能,可以用于内弹道计算中的龙格库塔法数值模拟。
在Matlab中,可以编写相应的程序,利用龙格库塔法对导弹或火箭弹的飞行过程进行仿真和计算,得到准确的飞行轨迹和动力学性能数据。
内弹道计算是导弹或火箭弹研究设计中的重要内容,龙格库塔法是一种常用的数值积分方法,Matlab是一种常用的科学计算软件,它们的应用能够有效地进行内弹道的计算和仿真,为导弹或火箭弹的研制提供重要的技术支持。
随着技术的不断发展,内弹道计算已经成为导弹或火箭弹研究设计中不可或缺的一部分。
在内弹道计算中,龙格库塔法是一种常用的数值积分方法,可以对导弹或火箭弹的飞行轨迹进行数值模拟和计算,提供准确的飞行轨迹数据。
而Matlab作为一种强大的科学计算软件,对于内弹道的计算和仿真也有着重要的应用价值。
在实际工程中,使用Matlab编写程序,利用龙格库塔法对导弹或火箭弹的飞行轨迹进行数值模拟和计算,将为导弹或火箭弹的研制提供重要的技术支持。
MATLAB零维内弹道
实验三固体火箭发动机零维内弹道计算M文件:function dy=neidandao(t,y);dy=zeros(4,1);rou=y(1);p=y(2);Vc=y(3);e=y(4);d0=0.016;h0=0.08;D0=0.03;rougr=1750;k=1.17;R=300;Tp=3200;b=0.002411;n=0.315;At=pi*16*10^(-6);fai=0.95;ka=0.98;r=b*(p/1.013/10^5)^n;gama=(2/(k+1))^((k+1)/(2*(k-1)))*sqrt(k);c=sqrt(R*Tp)/gama;if e<=(D0-d0)/2Ab=pi*(d0+2*e)*h0;else Ab=0;enddy(1)=(1/Vc)*((rougr-rou)*Ab*r-(fai*p*At)/(c*sqrt(ka)));dy(2)=(1/Vc)*(rougr*Ab*r*k*R*ka*Tp-(fai*p*p*At*k)/(rou*c*sqrt(ka))-p*Ab*r); dy(3)=Ab*r;dy(4)=r;end主程序:>> [t,y]=ode45('neidandao',[0:0.00001:1.5],[1.29;101300;pi*0.008*0.008*0.08;0]); >> plot(t,y(:,2))P-t 曲线00.51 1.500.511.522.536初始段P-t 曲线00.0050.010.015024681012145燃烧终了段P-t 曲线实验总结这次实验是我们对所学课程即固体火箭发动机零维内弹道计算以及MATLAB 软件的一次练习。
通过这次实验,我了解了常微分方程组数值解法的一般过程,掌握了用MATLAB 软件的具体实现方法,得到了零维内弹道压强曲线,完成了实验的要求。
在MATLAB 中,实现常微分方程组数值解法的是ode 函数(在本实验中用的是ode45),它不需要用户自己编程,使用起来比较简单,总体来说这次实验也完成的比较顺利。
火炮内弹道求解与计算
火炮内弹道求解与计算
火炮内弹道是指火炮射击时炮弹在火炮内的运动轨迹。
要解决火炮内弹道问题,需要考虑炮弹在炮管内的运动特性,以及发射药燃烧产生的气体对炮弹的推动力。
本文将从炮弹的运动方程入手,分析火炮内弹道的解法并进行计算。
炮弹的运动方程可以表示为:
ma = F - mg - fd - fL
其中m是炮弹的质量,a是炮弹在炮管内的加速度,F是发射药燃烧产生的推动力,g是重力加速度,fd是炮弹在炮管内受到的阻力,fL是炮弹在炮管内受到的气体偏转力。
在火炮运动方程中,炮弹在炮管内的加速度a是常量,可以通过测量炮弹的初速度和射程得到。
炮弹的初速度可以通过实验或者计算得到。
发射药燃烧产生的推动力F可以通过推进药的燃烧速率和燃烧产物的排放速度进行计算。
通过实验或者模拟可以得到推进药的燃烧速率和燃烧产物的排放速度。
炮弹在炮管内受到的阻力fd可以通过火炮内管壁的摩擦力和火药燃烧产生的气体对炮弹的阻力进行计算。
火炮内管壁的摩擦力可以由实验和数学模型得到。
火药燃烧产生的气体对炮弹的阻力可以通过实验和气体动力学模型计算。
炮弹在炮管内受到的气体偏转力fL可以通过气体对炮弹的作用力和炮弹的偏转角度进行计算。
气体对炮弹的作用力可以由实验和气体动力学模型得到。
炮弹的偏转角度可以由实验或者数学模型计算。
通过解决火炮内弹道问题,可以得到炮弹的运动轨迹和射程。
在实际应用中,可以通过对火炮内弹道进行数值模拟和优化计算,提高火炮的射击精度和射程。
弹道计算程序
弹道计算程序弹道计算程序的基本原理是根据弹道学的基本公式和物理原理,计算弹道飞行过程中的各种参数,如飞行时间、发射角度、发射速度、最大高度等。
以下是一个简单的弹道计算程序的示例:```pythonimport mathdef calculate_ballistic(angle, velocity):# 计算弹道参数g = 9.8 # 重力加速度radians = math.radians(angle) # 将角度转换为弧度time_of_flight = 2 * velocity * math.sin(radians) / g # 弹道飞行时间max_height = (velocity ** 2) * (math.sin(radians) ** 2) / (2 * g) # 最大高度range = velocity ** 2 * math.sin(2 * radians) / g # 射程# 输出计算结果print("发射角度:{} 度".format(angle))print("发射速度:{} 米/秒".format(velocity))print("飞行时间:{} 秒".format(time_of_flight))print("最大高度:{} 米".format(max_height))print("射程:{} 米".format(range))# 调用计算函数calculate_ballistic(45, 100)```该程序使用了数学库math来进行数学计算。
其中,calculate_ballistic函数接受发射角度和发射速度作为参数,然后根据弹道学公式计算飞行时间、最大高度和射程,并将结果输出。
在示例中,调用calculate_ballistic(45, 100)来计算发射角度为45度,发射速度为100米/秒时的弹道参数。
MATLAB内弹道程序 - 毕设专用!!!
内弹道及枪膛合力Matlab程序clear;close all;format longd=0.0127;S=0.82*0.0127^2;V0=2.04e-5;l_0=V0/S;lg=0.924;f=1000000;alpha=0.001;w=0.017;rou=1600;theta=0.2;phi=1.45;chi=0.79825;lamda=0.1387;mu=-0.043956;e1=0.00052/2;u1=7.5991e-10;Is=e1/u1;chi_s=1.2645;lamda_s=-0.31322;zk=1.4434;%Ik=447000;m=0.048;p0=30e6;delta=800;psi0=(1/delta-1/rou)/(f/p0+alpha-1/rou); sigma0=sqrt(1+4*lamda*psi0/chi);z0=2*psi0/chi/(sigma0+1);%(sigma0-1)/2/lamda; %====赋予初值====%v(1)=0;l(1)=0;p(1)=p0;z(1)=z0;psi(1)=psi0;lpsi(1)=l_0*(1-delta/rou-(alpha-1/rou)*delta*psi(1));t(1)=0;h=0.000001;for i=1:100000z1=p(i)/Is;v1=S*p(i)/m/phi;l1=v(i);psi1=(z(i)>=0&z(i)<=1).*(chi+2*chi*z(i)*lamda+3*chi*mu*z(i)^2)*z1 +(z(i)>1&z(i)<zk).*(chi_s*z1+2*chi_s*z1*lamda_s*z(i))+(z(i)>zk).*0;lpsi1=-l_0*(alpha-1/rou)*delta*psi1;p1=((f*w/S+p(i)*l_0*delta*(alpha-1/rou))*psi1-theta*phi*m*v1*v(i)/S-p(i )*l1)/(l(i)+lpsi(i));z2=(p(i)+h*p1/2)/Is;v2=S*(p(i)+h*p1/2)/m/phi;l2=v(i)+h*v1/2;psi2=(z(i)>=0&z(i)<=1).*(chi*z2+2*chi*(z(i)+h*z1/2)*lamda*z2+3*chi*mu*z 2*(z(i)+h*z1/2)^2)+(z(i)>1&z(i)<=zk).*(chi_s*z2+2*chi_s*z2*lamda_s*(z(i )+h*z1/2))+(z(i)>zk).*0;lpsi2=-l_0*(alpha-1/rou)*delta*psi2;p2=((f*w/S+(p(i)+h*p1/2)*l_0*delta*(alpha-1/rou))*psi2-theta*phi*m*v2*( v(i)+h*v1/2)/S-(p(i)+h*p1/2)*l2)/((l(i)+h*l1/2)+(lpsi(i)+h*lpsi1/2));z3=(p(i)+h*p2/2)/Is;v3=S*(p(i)+h*p2/2)/m/phi;l3=v(i)+h*v2/2;psi3=(z(i)>=0&z(i)<=1).*(chi*z3+2*chi*(z(i)+h*z2/2)*lamda*z3+3*chi*mu*z 3*(z(i)+h*z2/2)^2)+(z(i)>1&z(i)<zk).*(chi_s*z3+2*chi_s*z3*lamda_s*(z(i) +h*z2/2))+(z(i)>zk).*0;lpsi3=-l_0*(alpha-1/rou)*delta*psi3;p3=((f*w/S+(p(i)+h*p2/2)*l_0*delta*(alpha-1/rou))*psi3-theta*phi*m*v3*( v(i)+h*v2/2)/S-(p(i)+h*p2/2)*l3)/((l(i)+h*l2/2)+(lpsi(i)+h*lpsi2/2));z4=(p(i)+h*p3)/Is;l4=v(i)+h*v3;v4=S*(p(i)+h*p3)/m/phi;psi4=(z(i)>=0&z(i)<=1).*(chi*z4+2*chi*(z(i)+h*z3)*lamda*z4+3*chi*mu*z4* (z(i)+h*z3)^2)+(z(i)>1&z(i)<zk).*(chi_s*z4+2*chi_s*z4*lamda_s*(z(i)+h*z 3))+(z(i)>=zk).*0;lpsi4=-l_0*(alpha-1/rou)*delta*psi4;p4=((f*w/S+(p(i)+h*p3)*l_0*delta*(alpha-1/rou))*psi1-theta*phi*m*v1*v(i )/S-(p(i)+h*p3)*l4)/((l(i)+h*l3)+(lpsi(i)+h*lpsi3));z(i+1)=z(i)+h*(z1+2*z2+2*z3+z4)/6;l(i+1)=l(i)+h*(l1+2*l2+2*l3+l4)/6;v(i+1)=v(i)+h*(v1+2*v2+2*v3+v4)/6;psi(i+1)=psi(i)+h*(psi1+2*psi2+2*psi3+psi4)/6;lpsi(i+1)=lpsi(i)+h*(lpsi1+2*lpsi2+2*lpsi3+lpsi4)/6;p(i+1)=p(i)+h*(p1+2*p2+2*p3+p4)/6;t(i+1)=t(i)+h;if l(i)>=lg;T=i;break;endendfigure(1)plot(t*10^3,p/1e6,'linewidth',1.5);hold ongrid ontitle('\fontsize{12}\bf(t-p曲线)');xlabel('\fontsize{12}\bf时间 t 单位:ms');ylabel('\fontsize{12}\bf膛内压力 p 单位:Mpa');figure(2)plot(t*1e3,v,'linewidth',1.5);grid ontitle('\fontsize{12}\bf(v-t曲线)');xlabel('\fontsize{12}bf时间 t 单位:ms');ylabel('\fontsize{12}\bf弹丸速度 v 单位:m/s');figure(3)plot(l*1e1,v,'linewidth',1.5);grid ontitle('\fontsize{12}\bf(l-v曲线)');xlabel('\fontsize{12}\bf弹丸行程 l 单位:mm');ylabel('\fontsize{12}\bf弹丸速度 v 单位:m/s');figure(4)plot(l*10,p/1e6,'linewidth',1.5);grid ontitle('\fontsize{12}\bf(l-p曲线)');xlabel('\fontsize{12}\bf弹丸行程 l 单位:mm');ylabel('\fontsize{12}\bf膛内压力 p 单位:Mpa');%弹丸膛内时期膛底合力 F_pt 单位:NF_pt=1.34*10^(-4)*p;%后效期膛底合力 F_pt1 单位:Nt1=0.002288:0.000001:0.006537;F_pt1=12231.10*exp(-(t1-0.002288)/0.00107);figure(5)plot(t*10^3,F_pt,t1*10^3,F_pt1,':','linewidth',1.5);legend('F_pt','F_pt1');grid ontitle('\fontsize{12}\bf(t-F_pt曲线)');xlabel('\fontsize{12}\bf时间 t 单位:ms');ylabel('\fontsize{12}\bf膛底合力 F_pt 单位:N');tspan=length(t)/30;tspan=1:ceil(tspan):length(t);tspan(end)=length(t);fprintf('t(ms) p(Mpa) v(m/s) l(dm) z psi ');format short g;Result=[t(tspan)' (p(tspan)/1e6)' v(tspan)' l(tspan)' z(tspan)' psi(tspan)']。
[知识]内弹道计算程序
内弹道计算程序%内弹道计算程序function nddclc;clear;%构造与装填条件------------------------------------S =1.681; %枪(炮)膛横断面积 dm^2q = 10.24; %弹重 kgW_0 = 10.35; %药室容积 dm^3l_g = 62.25; %身管行程 dm%进程的进行条件-------------------------------------P_0 = 45000; %起动压力 kpatheta = 0.25; %火药热力系数K = 1.222; %次要功系数%装填条件--------------------------------------------delta =1.6; %火药密度 kg/dm^3f = 948000; %火药力 kg*dm/kgalpha =1 %余容 dm^3/kgomega = 10.35; %药量 kgV = 0.9627; %烧速指数u =0.0000088; %烧速系数 dm^3/(s*kg)%火药特征(仅适用于多孔火药)-----------------------------e_1 = 0.0088; %厚度(肉厚)/2 dmd_0 = 0.022; %孔道直径 dmD_0 = 0.1364; %药粒直径(梅花形不用管此项) dmc = 1.3 %药粒长度/2 dmn = 7; %孔数flag = 1; %1:圆柱形多孔火药 2:梅花形七孔火药 3:梅花形十四孔火药 4:梅花形十九孔火药%形状函数 ------Flag = [ 1 n 0 D_0 0 0.2956;2 8 65.2968 d_0+4*e_1 d_0+2*e_1 0.1547;8/3 47/3 141.4764 d_0+4*e_1 d_0+2*e_1 0.1547;3 21 195.8903 d_0+4*e_1 d_0+2*e_1 0.1547];F1 = Flag(flag,1);F2 = Flag(flag,2);F3 = Flag(flag,3);F4 = Flag(flag,4);F5 = Flag(flag,5);F6 = Flag(flag,6);Pi_1 = ( F1*F4 + F2*d_0 )/(2*c);Q_1 = ( F3*F5*F5 + F1*F4*F4 - F2*d_0^2 )/( 4*c^2 );beta = e_1/c;chi = ( Q_1 + 2*Pi_1 )*beta/Q_1;lambda = ( n - 1 - 2*Pi_1 )*beta/( Q_1 + 2*Pi_1 );mu = ( 1 - n )*beta^2/( Q_1 + 2*Pi_1 );psi_s = chi*( 1 + lambda + mu );rho = F6*( d_0/2 + e_1 );Z_s = 1 + rho/e_1;chi_s = ( psi_s*Z_s^2 - 1 )/( Z_s^2 - Z_s );lambda_s = psi_s/chi_s - 1;%常数与初值计算-------------------------------------------------------l_0 = W_0/S;Delta = omega/W_0;phi = K + omega/(3*q);v_j = 196*f*omega/(phi*theta*q);v_j = sqrt(v_j);B = 98*(e_1*S)^2/( u*u*f*omega*phi*q );B = B*(f*Delta)^(2-2*V);p_0 = P_0/(f*Delta);psi_0 = (1/Delta - 1/delta)/(f/P_0 + alpha - 1/delta);Z_0 = (sqrt(1+4*psi_0*lambda/chi) - 1)/(2*lambda);C = zeros(1,11);C(1)=chi;C(2)=lambda;C(3)=lambda_s;C(4)=chi_s;C(5)=Z_s;C(12 )=mu;C(6)=theta;C(7)=B;C(8)=V;C(9)=Delta;C(10)=delta;C(11)=alpha;%解算子-------------------------------------------------------------------options = odeset('outputfcn','odeplot');[t,y] = ode45(@ndd_fun,0:100,[Z_0;0;0],options,C);l = y(:,2);l = l*l_0;fl = find(l>=l_g);fl = min(fl);[t,y] = ode45(@ndd_fun,0:0.005:fl,[Z_0;0;0],options,C);Z = y(:,1);l = y(:,2); v = y(:,3);psi = (Z>=0&Z<1).*( chi*Z.*(1 + lambda*Z + mu*Z) ) +... (Z>=1&Z<Z_s).*( chi_s*Z.*(1 + lambda_s*Z) ) +...(Z>=Z_s)*1;l_psi = 1 - (Delta/delta)*(1-psi) - alpha*Delta*psi;p = ( psi - v.*v )./( l + l_psi );p = p*f*Delta/98.0665;v = v*v_j/10;l = l*l_0;t = t*l_0*1000/v_j;fl = find(l>=l_g);fl = min(fl)+1;p(fl:end)=[];v(fl:end)=[];l(fl:end)=[];t(fl:end)=[];subplot(2,2,1);plot(t,p,'linewidth',2);grid on;xlabel('\fontsize{8}\bft (ms)');ylabel('\fontsize{8}\bfp (kg/cm^{2})');title('\fontsize{8}\bfp-t曲线');subplot(2,2,2)plot(t,v,'linewidth',2);grid on;xlabel('\fontsize{8}\bft (ms)');ylabel('\fontsize{8}\bfv (m/s)');title('\fontsize{8}\bfv-t曲线');subplot(2,2,3)plot(l,p,'linewidth',2);grid on;xlabel('\fontsize{8}\bfl (dm)');ylabel('\fontsize{8}\bfp (kg/cm^{2})');title('\fontsize{8}\bfp-l曲线');subplot(2,2,4)plot(l,v,'linewidth',2);grid on;xlabel('\fontsize{8}\bfl (dm)');ylabel('\fontsize{8}\bfv (m/s)');title('\fontsize{8}\bfv-l曲线');tspan = length(t)/20;tspan = 1:ceil(tspan):length(t);tspan(end) = length(t);fprintf(' t(ms) p(kg/cm^2) v(m/s) l(dm)'); format short g;Result = [t(tspan) p(tspan) v(tspan) l(tspan)] format;。
大口径机枪内弹道及导气室压力的计算
大口径机枪内弹道及导气室压力的计算1. 前言大口径机枪是当今最先进的军事武器之一,其弹道精度和射程都在不断提高。
在机枪的设计和制造过程中,数学模型的建立和弹道计算是非常重要的一环。
本文将探讨大口径机枪内弹道及导气室压力的计算方法。
2. 大口径机枪内弹道的计算大口径机枪内弹道的计算需要考虑多种因素,包括弹丸的质量、速度、空气阻力、自旋等。
这些因素都会对弹道轨迹产生影响,因此需要建立数学模型,通过模拟计算得到准确的弹道轨迹。
2.1 弹道轨迹计算模型弹道轨迹计算模型分为两类:解析方法和数值方法。
解析方法是通过数学公式推导得出弹道轨迹方程,可以得到准确的解析解,但适用范围有限,只适用于某些特定情况。
数值方法是通过离散化求解弹道轨迹,在计算机上进行数值仿真,适用范围更广,但是需要计算机进行复杂的运算,速度较慢。
对于大口径机枪内弹道的计算,常用的数值方法是欧拉法和龙格-库塔法。
欧拉法是通过离散化时间对连续的弹道轨迹进行拟合,在每个时间步长内计算弹丸的速度和位置。
龙格-库塔法是欧拉法的高阶拓展,通过更复杂的公式计算弹丸的速度和位置,精度更高。
2.2 弹道轨迹计算流程弹道轨迹计算的流程包括以下步骤:1. 建立弹道轨迹模型,确定算法、时间步长、精度。
2. 输入弹丸初速度、大小、自旋、质量等参数。
3. 计算弹丸的速度和位置,考虑空气阻力、引力等因素。
4. 判断弹丸是否击中目标,如果没有继续计算,直到弹丸击中目标或离开射程。
5. 输出计算结果,包括弹道轨迹、飞行时间、命中点等信息。
2.3 建模与计算工具建模与计算工具包括Mathematica、Matlab、Python等,其中Python是最常用的工具之一,因为Python语言简洁易学,有众多科学计算库和开源工具包。
3. 导气室压力的计算导气室是大口径机枪内的一个重要组成部分,可以提高弹丸的初速度和射程。
导气室压力的计算是确定导气室的设计和参数的关键步骤。
3.1 导气室原理导气室是由枪管和枪膛组成的,当枪管中的火药燃烧产生高温高压气体时,这些气体进入导气室,使其内压力急剧增加,从而产生推动力,使弹丸加速并射出。
内弹道程序
#include"stdio.h"#include"math.h"#include"stdlib.h"#define roup 1600#define w 14.72#define f 950000#define sita 0.2#define alpha 0.001#define u1 1.14*10^-8#define n1 0.8275#define e1 0.000893#define x1 1.06#define lamada -0.0566#define miu 0.0#define m 46#define s 0.01905#define V0 0.020027#define lg 7.3206#define fai 1.12667#define P0 3*10^7#define deda 735#define L0 1.0513#define Vj 1642.38#define B 3.4559#define lgpingjun 6.96double Y[6],Z[4];FILE *fo;int main()//主函数{Y[0]=0,Y[1]=0,Y[2]=0.04296,Y[3]=0,Y[4]=0.0223,Y[5]=0.021,Z[0]=0,Z[1]=0,Z[2]=3*pow(10,7),Z[3]=0; //依次分别给相对时间,相对速度,相对压强,炮弹相对位移,,相对燃烧量//相对燃烧厚度,时间,速度,压强,炮弹位移。
void rk(int n,double h);void result();fo=fopen("output.txt","w");fprintf(fo,"%s"," 相对时间绝对时间炮弹位移速度压强相对燃烧量相对燃烧厚度\n");fprintf(fo," s m m/s pa \n");do{result();rk(6,0.001);}while (Z[3]<lg);//Z[3]表示炮弹位移,截止条件fclose(fo);}//龙格库塔算法void rk(int n,double h){externvoid dery(int n,double dy[],double Y[]);double a[4],old_Y[6],*dy,Y1[6];int i,j;dy =(double*) calloc(n, sizeof(double));a[0]=a[1]=h/2;a[2]=a[3]=h;dery(n,dy,Y);for(i=0;i<n;i++)old_Y[i]=Y[i] ;for(j=0;j<3;j++){for(i=0;i<n;i++){Y1[i]=old_Y[i]+a[j]*dy[i];Y[i]=Y[i]+a[j+1]*dy[i]/3;}dery(n,dy,Y1);}for(i=0;i<n;i++)Y[i]=Y[i]+a[0]*dy[i]/3;free(dy);return;}//右端子式void dery(int n,double dy[],double Y[]){dy[0]=1;if(Y[5]<1 ){dy[4]=x1*(1+2*lamada*Y[5]+3*miu*pow(Y[5],2))*sqrt(sita/(2*B))*pow(Y[2],n1) ;}elseif(Y[5]>=1){dy[4]=0;}if(Y[5]<1){dy[5]=sqrt(sita/(2*B))*pow(Y[2],n1) ;}else{dy[5]=0;}dy[3]=Y[1];dy[1]=sita/2*Y[2];dy[2]=1/(Y[3]+0.541-0.2756*Y[4])*(1+deda*(alpha-1/1600)*Y[2])*dy[4]-(1+sita)/(Y[3]+0.5 41-0.2756*Y[4])*Y[2]*Y[1];Z[0]=L0/Vj*Y[0];Z[1]=Vj*Y[1];Z[2]=f*deda*Y[2];Z[3]=L0*Y[3];return;}//显示结果void result(){staticint i=1;{fprintf(fo,"%13.3f",Y[0]);//相对时间fprintf(fo,"%13.6f",Z[0]);//绝对时间fprintf(fo,"%13.6f",Z[3]);//炮弹位移fprintf(fo,"%13.3f",Z[1]);//速度fprintf(fo,"%20.3f",Z[2]);//压力fprintf(fo,"%13.6f",Y[4]);//相对燃烧量fprintf(fo,"%13.6f",Y[5]);//相对燃烧厚度fprintf(fo,"\n");i++;}return;}。
发射动力系统内弹道优化设计计算
发射动力系统内弹道优化设计计算发射动力系统内弹道优化设计计算发射动力系统内弹道优化设计计算是探索重点任务之一,因为它关系到弹道导航与控制系统的精度和可靠性,直接影响到导弹的打击效果和命中率。
本文将对发射动力系统内弹道优化设计计算进行详细介绍。
一、发射动力系统内弹道发射动力系统内弹道是导弹在离开发射台后到达目标点之前的轨迹。
一般来说,内弹道采用了三段加速法,即在离发射台距离较远的位置采用第一段加速,使导弹进入空气稀薄层中加速追踪目标;在距离目标点较远的位置采用第二段加速;在离目标点较近的位置采用第三段加速,使导弹能够击中目标,实现任意角度的攻击。
二、内弹道优化设计计算内弹道的优化设计计算目的是确定最佳的飞行计划和调整飞行参数,以使导弹能够以最小的时间、最小的燃料消耗和最大的精度击中目标。
(一)导引律选择导引律是导弹内弹道控制系统的核心,选择合适的导引律可以有效提高导弹的命中率和抗干扰性能。
常见的导引律有比例导引律、比例修正导引律、比例-积分导引律和预测导引律等。
在具体设计时需要根据目标类型、干扰环境和系统要求等综合因素进行选择。
(二)控制极点设计内弹道控制极点的设计是使导弹飞行稳定、准确的保证,控制极点对内弹道的稳定性、敏感度和过冲量等指标起到直接的影响。
调节控制极点的位置和数量可以精确控制导弹的动态行为,如响应速度、阻尼比、稳定性和过冲量等参数。
(三)预测法控制预测法控制是一种高级的弹道控制方法,与常规的比例-积分导引律不同的是,它使用预测技术来基于中间目标预测趋势,根据预测结果对导弹控制系统进行修正,使导弹能够更快、更准确地找到目标。
预测法控制可以提高导弹的抗干扰能力和命中率,特别适用于高速飞行和大气干扰条件下的导弹控制。
(四)弹体设计弹体设计是导弹内弹道优化设计的重要环节,它涉及到空气动力学、力学和材料科学等多学科交叉领域。
弹体设计的关键在于降低弹体的阻力和重量,提高弹体的机动性和抗干扰性能。
第2章内弹道部分-part4内弹道解法(二)
全弹道划分 100~200 个点即可。
四 . 内弹道数值解法
⑶ 初值计算
内弹道的解法
1 1 p p0 , 0 0 v0 0 0 , 0 f f / p ( 1 / p )
4 0 1 x 2
Z0
1
⑷ 弹道循环计算 中间最大压力搜索,特征点的判断。 ⑸ 输出
内弹道部分
V 1/V 1/V
`
0
` l
lg l
内弹道部分
内弹道部分
§4 内弹道的解法
装填条件对弹道的影响 为了改进武器的弹道性能,必须了解装填条件对弹道 性能的影响。影响弹道性能的因素诸多,最终体现在最大
压力和初速。而且武器 -弹药系统体现出来的弹道性能不是
单一因素的效果,而是多种因素的综合效果。
装填条件包括:火药的形状、装药量、火药力、火药的
压力全冲量、弹重、药室容积、挤进压力、拔弹力和点火 药量等。
§4 内弹道的解法
内弹道部分
装填条件对弹道的影响 1)火药的形状变化的影响
2)装药量变化的影响
3)火药力变化对各弹道诸元的影响 4)火药压力全冲量对弹道诸元的影响 5) 弹重变化的影响
6) 药室容积变化对弹道诸元的影响 7) 挤进压力变化的影响
'
取为常量时,可以
p( Z ) ,进而给出p 和v 以V 为自变量的表达式: 得出v( Z ) , V (Z ) ,
内弹道部分
§4 内弹道的解法
1 ' B B V f V p 1 1 1 V1 V1 V1
8) 拔弹力变化对弹道诸元的影响 9) 点火药对弹道诸元的影响
通用弹道仿真计算程序
FILE*ftxtfile=NULL;
void fkt();
psi_0=(V0/w-1.0/rho_p)/(power/30000000+alpha-1.0/rho_p);
y0[0]=(sqrt(4*lambda*psi_0/chi+1)-1)/lambda*0.5;
y0[1]=0.0;
}
}
if(y[1]>=l_g)break;
fprintf(ftxtfile,"%f %f %f %f\n",t,y[1],y[2],p);
for(i=1;i<=3;i++)
y0[i-1]=y[i-1];
t0=t;
}
fclose(ftxtfile);
}
{
(*f)[0]=u1*pow(p,index)/e1;
}
else
{
(*f)[0]=0;
}
(*f)[1]=(*y)[2];
(*f)[2]=s*p/(phi*m);
return;
}
main()
{
float y0[3];
int i,k,n;
float y[3],work0[3],work1[3],work2[3],work3[3];
void fkt(float(*y)[],float(*f)[]) {
z_k=1+0.2596*(d*0.5+e1)/e1;
l_0=V0/s;
l_psi=l_0*(1-(w/V0)/rho_p-(w/V0)*(alpha-1/rho_p)*psi);
if((*y)[0]<1)
{
psi=chi*(*y)[0]*(1+lambda*(*y)[0]+mu*(*y)[0]*(*y)[0]);
火炮内弹道求解与计算定稿版
火炮内弹道求解与计算 HUA system office room 【HUA16H-TTMS2A-HUAS8Q8-HUAH1688】火炮内弹道求解与计算摘要:本文结合火炮内弹道基本方程,得出压力、速度与行程、时间的关系式。
并利用了MATLAB的程序对该火炮系统的内弹道过程进行求解。
关键词:内弹道基本方程;MATLAB;1.火炮内弹道诸元火炮内弹道诸元数据如下表所示:炮膛断面积S药室容积V0弹丸全行程I g弹丸质量m装药质量ωdm2dm3dm kg kg0.8187.9247.4815.6 5.5火药参数如下表所示:F燃气比热比k 管状火药长2a管状火药厚δ2kJ/kg dm3/kg kg/dm31mm mm 9601 1.6 1.2260 1.7协调常量如下表所示:B Ik 挤进压力P01 1 kPa ·s MPa1.602 1.276 1601.9 30其他所需的参数计算:1b 0==δα;301054.6a -⨯==δβ;01.21=++=βαχ;50.01--=++++=βααββαλ; 2.内弹道基本方程组及其解析解法方程组建立如上,则考虑三个时期分别求解:①前期:考虑为定容燃烧过程,则有条件:MPa p p V V v x 30,0,0,000====== 则有025.011V 00000=-+-=ραρωψp f ,013.0214100=-+=λψχλZ 令99.04100=+=ψχλσ ②第一时期:将前期的参量计算得出之后,代入方程组,解算第一时期的v 、p 值。
考虑ψV 平均法,利用20ψψψψV V V V +==若设x=Z-Z 0 则可得x x m SI v k 3.658==ϕ,ψψθψωθψωl l x B S f V V x B f p +-=+-=2222 ③第二时期:考虑第二时期无火药燃烧,则有: 设极限速度66.162812=-=mk f v j ϕω)( )1()(122111j k k k j v v l l l l v v -++-=-,ll v v S f P j +-⋅=1221ω 利用①~③可得各个时期的p-l ,v-l 曲线。
《火箭发动机》 7 内弹道
机正常和稳定的工作,使推进剂的化学能充分转化为热能,要求燃 烧室压强必须高于推进剂完全燃烧的临界压强;从结构设计方面来 看,燃烧室是一个主要承受内压的部件,在进行各组件和药柱的强 度计算前,必须先确定燃烧室中可能出现的最大压强,其值的大 小,直接影响对燃烧室的强度要求和结构重量。 由此可见,在发动机设计过程中,首先确定推进剂成分,装药 几何尺寸和喷管喉径。计算出燃烧室压强随时间空变化的曲线;然 后求得发动机的推力随时间的变化规律和有关发动机的其它性能参 数以及进行发动机壳体结构设计和强度计算;最后,确定发动机设 计性能。有时,为达到总体设计要求,要反复多次地进行装药和喷 管几何尺寸的设计以及内弹道计算,以求得发动机的最佳设计。 总之,内弹道计算的任务是在确定推进剂成分、装药几何尺 寸、工作环境温度、喷管喉部直径等条件下,计算燃烧室压强随时 间的变化规律。
对于一定面喉比的发动机来讲,推进剂性能特性是影响平衡压强 的主要因素。例如,特征速度C*主要反映推进剂的能量特性;推进剂 密度ρp反映燃烧同样体积的装药产生燃烧产物的多少;燃速系数a和 压强指数n都反映燃速的快慢,因而亦反映燃烧产物的秒生成量。因此, 在推进剂生产过程中要严格控制成分和质量比例,尽可能避免装药内 部在化学组成和密度上的差异,以免使平衡压强的散布较大。 由于推进剂燃速特性随初温的变化而变化,因此,在实际工作中, 初温也是影响发动机平衡压强的另一主要因素。 推进剂燃速受初温的影响是很显著的,初温高时,燃速高,平衡 压强增大,工作时间缩短;初温低时,燃速低,压强降低,工作时间 长。压强的这种变化必然引起推力产生相应的变化。这种随着季节环 境温度的不同而产生的推力变化,对导弹的总体性能有很大的影响。 因此,在发动机设计阶段,必须预计在各种可能的环境温度下燃烧室 平衡压强的变化。
火炮内弹道计算手册
火炮内弹道计算手册
火炮内弹道计算手册是用来计算火炮发射弹道的手册,帮助火炮操作员确定炮弹的飞行轨迹和命中目标的准确性。
以下是一些可能包括在火炮内弹道计算手册中的内容:
1. 弹道基本概念和定义 - 包括弹道的定义、轨迹、射程和可用
的弹道修正参数等。
2. 弹道元素 - 包括炮弹质量、初始速度、发射角度、大气条件、射程等。
3. 飞行轨迹计算方法和公式 - 包括抛射物运动和强迫子弹运动
的基本公式,以及如何计算炮弹的弹道。
4. 弹道修正参数 - 包括风向修正、补偿器修正、温度修正、气
压修正等,以及如何根据环境条件对弹道进行修正。
5. 命中目标计算 - 包括在给定环境条件下,如何计算炮弹对不
同目标的命中准度和所需修正。
6. 误差和不确定性分析 - 包括对弹道计算中可能存在的误差和
不确定性进行分析,以及如何进行误差修正和优化。
7. 弹药数据表 - 包括不同类型炮弹的参数表,如炮弹重量、速度、射程等。
8. 计算示例和练习 - 包括一些具体的计算示例和练习题,帮助
操作员熟悉弹道计算方法和应用。
最后,火炮内弹道计算手册还可能包括一些常见问题和故障排除指南,以帮助操作员解决在弹道计算中可能遇到的问题。
内弹道编程
1、单一装药模型通常采用的内弹道模型是多孔火药的情况,即⎪⎪⎪⎪⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎧-=+==⎪⎩⎪⎨⎧≥<=⎪⎩⎪⎨⎧≥<≤+<++=21122)(d d d d )(0)(d d )(1)1()1()1()1(mv f l l Sp p m S t v vt l Z Z Z Z p e u t Z Z Z Z Z Z Z Z Z Z Z k k nk k s s ϕθωψϕλχμλχψψ (3-61)其中⎥⎥⎦⎤⎢⎢⎣⎡---=ψ∆ραρ∆ψ)1(10p p l l ,0V ω∆=,S V l 00= 221kk k s s Z Z Z --=ψχ,1-=s s s χψλ,)1(μλχψ++=s ,11e e Z k ρ+= 内弹道求解步骤一般可按以下步骤进行:1. 输入已知数据(1) 火炮构造及弹丸诸元:S 、0V 、g l 、m ;(2) 装药条件:f 、α、ω、p ρ、θ、1u 、n 、1e 、χ、λ、μ、ρ;(3) 初始条件:0p ;(4) 计算次要功计算系数的参数:K 、b ;(5) 计算步长:h通常全弹道过程划分为100~200点即可,可作为确定步长的参考。
在程序调试时,可按所选步长、21步长等进行计算,根据不同步长对结果的影响大小及所需的计算精度,就可获得合理步长的实际经验。
2. 常量计算起始计算需要确定的常量有m b K ωϕ+=,0V ω∆=,S V l 00=,0l l l g g =,m f v j θϕω2=,)1(221212)(n f u m f e S B -∆=ωϕ 3. 初值计算初始值有00=t ,00=,00=v ,∆=f p p 00 p pp ραρ∆ψ1100-+-=,0041ψχλσ+=,λσ2100-=Z 其中,0Z 是用)(Z ψ的两项式时的近似计算式。
若)(Z ψ是三项式时,可求解三次方程)(00Z f =ψ来确定0Z 。
《火箭发动机》 7 内弹道 共21页PPT资料
在上面的分析中,认为燃烧室是一个充满高压燃烧气体的容器, 不考虑燃气的流动和燃烧室内的压强分布,室内各点的压强都相等。 这样,整个燃烧室压强同时随时间变化,与该点的位置坐标x无关,这 就是所谓“零维”的压强变化。对于燃气流速很小的燃烧室来说,压 强计算可以看作是一个“零维”问题来处理。但是,对装填密度较大 的侧面燃烧装药,燃气在通道中的流动沿轴向产生很大的速度,因此, 压强沿轴向有显著的变化。这种情况下,必须考虑压强在燃烧室中的 分布,应作为“一维”问题来进行压强计算。
由发动机实验所测得的 燃烧室压强一时间曲线可见, 燃烧室压强的变化有三个阶 段,如右图所示:
1.发动机起动阶段(上升段) 这包括点火和压强建立过程。首先 依靠点火装置中点火药点燃并燃烧生成的高温气体充满燃烧室,一方 面使燃烧室压强上升到点火压强;另一方面加热推进剂表面,点燃主 装药,这就是点火过程。当主装药全面点燃后,燃气质量生成量迅速 增大,并在瞬时超过喷管的质量流量,使燃烧室的压强迅速增加,同 时又促使喷管流量的增加,不断地与燃气生成量趋于相对平衡。最后, 燃烧室压强达到其相对稳定值,这个相对稳定值的压强称为工作压强。 这个压强建立的过程即称为发动机启动阶段。对一般发动机来说,这 个过程在几十毫秒内完成。
第七章 固体火箭发动机的内弹道计算
一、内弹道计算的任务 二、燃烧室压强的变化 三、零维内弹道计算的微分方程 四、平衡压强及其影响因素 五、燃烧室压强—时间曲线的简化计算
内弹道解算程序
附录程序#define _CRT_SECURE_NO_DEPRECATE#include <>#include <iostream>#include <>#include <>#include <>#include <iomanip>//C head file#include <>#include <>#include <string>#include <fstream>using namespace std;/*初始参数*///////////燃烧室内参数//火药燃烧的参数#define U1 //燃速系#define an //燃速指数#define omga //装药质量#define am //弹丸质量#define f 980000 //火药力#define F1 //阻力系数#define STA //(k-1)#define DP 1600 //火药装填密度#define ALF //火药燃气余容double PG=30e6 ; //挤进压力//火药参数(单基9/7)#define HE1 //第二种火药半弧厚#define HD0 //第二种火药内孔直径#define HD2C 12e-2 //第二种火药火药长//火药形状特征量Π1、Q1、βdouble XHT,XHQ,XHB;//double XHB;//碎粒燃烧结束时的Zb,火药形状参数χ、λ和μdouble Zb0,CI,ALM,AMU;//碎粒燃烧阶段的形状参数χs、λsdouble CIS,ALMS;//////////火炮参数#define V0#define omga2 //第一种药质量#define f2 980000 //第一种药火药力#define DP2 1600 //第一种药密度#define ALF2 1e-3 //第一种药余容//火药参数(选用杆状药)#define HE12 //火药半弧厚#define HD02 //内孔直径#define HD2C2 //火药长//#define f2 980000double Z2,PSI2,dZ2,Zb2,Zm2;double DLT2;//火药形状参数χ、λ和μdouble CI2,ALM2,AMU2;double XHB2;#define pi //圆周率#define atm //大气压#define h 1e-7 //步长int i,i0,j,k,ii;//次要功系数、身管截面积,燃烧室当量长度double FI,s,L0;//火药的装填密度double DLT;double aaa;double NST,HIB;//火药燃烧时间double TIME,TIMm,TIMb;//PTDD:膛底压力double PTDD;//弹后空间平均压力、弹底压力double P,PD;double PSI,ZJSN;//double PSI2;double PV,LPSI;long NN;//弹丸运动距离(不大于身管长度)double L,Lb,Lm,dL;//弹丸速度double v,vm,vb,dv;int nn;//////////////微分过程参数double a1[6];double Z,dZ,Zb,Zm;void ranshaoshi();void chushitiaojian();void ranshao_0();void ranshao_1();void thy();void main(){FILE *outhy;ranshaoshi();NST=5;HIB=NST*h;outhy=fopen("","w");fprintf(outhy,"omga(kg)\tFI\tDLT\n");fprintf(outhy,"%f\t%f\t%f\n",omga,FI,DLT*1e-3);fprintf(outhy,"t(ms)\tZ\tψ\tZ2\tψ2\tPTDD(MPa)\tP(MPa)\tPD(MPa)\tv (m/s)\tLψ(m)\tL(m)\n");//初始燃烧时条件P=5e6;TIME=0;chushitiaojian();ranshao_0();while(L<={thy();fprintf(outhy,"%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\n",TIME*1e3,Z,PSI,Z2,PSI2,PTDD*1e-6,P*1e-6,PD*1e-6,v,LPSI,L);}fclose(outhy);printf("FI is %f\n",FI);printf("v is %f\n",v);printf("Finished!");getchar();}void ranshaoshi(){FI=;s=;L0=V0/s;DLT=omga/V0;DLT2=omga2/V0;//////9/7多孔药Zb0=1+*(1+HD0/2/HE1);XHT=((3*HD0+8*HE1)+7*HD0)/HD2C;XHQ=(pow((3*HD0+8*HE1),2)-7*HD0*HD0)/(HD2C*HD2C);XHB=2*HE1/HD2C;CI=(2*XHT+XHQ)/XHQ*XHB;ALM=(6-2*XHT)/(2*XHT+XHQ)*XHB;AMU=-1*6/(2*XHT+XHQ)*XHB*XHB;CIS=(1-CI*(1+ALM+AMU)*Zb0*Zb0)/Zb0/(1-Zb0);ALMS=CI*(1+ALM+AMU)/CIS-1;////////杆状药XHB2=2*HE12/HD2C2;CI2=1+XHB2;ALM2=-1*XHB2/(1+XHB2);AMU2=0;}void chushitiaojian(){double segma,segma2;PSI=(1/DLT-1/DP)/(f/P+ALF-1/DP);segma=sqrt(1+4*ALM/CI*PSI);Z=2*PSI/CI/(1+segma);PSI2=(1/DLT2-1/DP)/(f2/P+ALF-1/DP); segma2=sqrt(1+4*ALM2/CI2*PSI2);Z2=2*PSI2/CI2/(1+segma2);}void thy(){a1[1]=*HIB;a1[2]=a1[1];a1[3]=HIB;a1[4]=HIB;a1[5]=a1[1];Zm=Z;Zb=Z;Zm2=Z2;Zb2=Z2;Lm=L;Lb=L;vm=v;vb=v;TIMm=TIME;TIMb=TIME;for (j=1; j<5; j++){ranshao_1();Z=Zm+a1[j]*dZ;Zb=Zb+a1[j+1]*dZ/3;Z2=Zm2+a1[j]*dZ2;Zb2=Zb2+a1[j+1]*dZ2/3;L=Lm+a1[j]*dL;Lb=Lb+a1[j+1]*dL/3;v=vm+a1[j]*dv;vb=vb+a1[j+1]*dv/3;TIME=TIMm+a1[j];TIMb=TIMb+a1[j+1]/3;if (j==4){Z=Zb;Z2=Zb2;L=Lb;v=vb;TIME=TIMb;}ranshao_0();}}void ranshao_0(){PSI=1;//主体燃烧阶段if (Z<1){PSI=CI*Z*(1+ALM*Z+AMU*Z*Z);}//碎粒燃烧阶段if (Z>=1 && Z<=Zb0){PSI=CIS*Z*(1+ALMS*Z);}if (Z2<1){PSI2=CI2*Z2*(1+ALM2*Z2+AMU2*Z2*Z2);}LPSI=L0*(1-DLT/DP*(1-PSI)-DLT2/DP2*(1-PSI2)-ALF*DLT*PSI-ALF2*DLT2*PSI2); PV=f*omga*PSI+f2*omga2*PSI2-STA*FI*am*v*v/2;P=PV/(s*(L+LPSI));PTDD=P*(1+(omga+omga2+/(2*F1*am))/FI;}void ranshao_1(){dZ=0;if (Z<Zb0){dZ=U1*pow(P,an)/pow(1e6,an)/HE1/100;}dZ2=0;if (Z2<1){dZ2=U1*pow(P,an)/pow(1e6,an)/HE12/100; }dL=v;dv=0;PD=P*F1/FI;if (PD>PG){dv=s*P/(FI*am);nn=1;}if(nn==1){dv=s*P/(FI*am);}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%=========================================
%常数与初值计算-----------------------------------------------------------------
l_0=W0/A;
内弹道计算程序.txt始终相信,这世间,相爱的原因有很多,但分开的理由只有一个--爱的还不够。人生有四个存折:健康 情感 事业和金钱。如果健康消失了,其他的存折都会过期。 %59nian130
A=0.87; %枪(炮)膛横断面积A dm^2
G=19;%33.4; %弹重 kg
aa=max(px);
M=find(px==aa);
Pm=[tt(M)*l_0*1000/v_j lx(M)*l_0 vx(M)*v_j/10 px(M)*f*Delta/100 pt(M) pd(M) psi(M) Z(M)];
%ll=length(tt);
ran=find(Z>=1);
options = odeset('outputfcn','odeplot');
[tt,y] = ode45(@ndd_fun,0:100,[Z_0;0;0],options,C);
l = y(:,2);
l = l*l_0;
fl = find(l>=l_g);
fl = min(fl);
[tt,y] = ode45(@ndd_fun,0:0.005:fl,[Z_0;0;0],options,C);
W0=2.04; %药室容积 dm^3
l_g=25.0; %身管行程 dm
P_0 =30000; %起动压力 kpa
fai1=1.02; %次要功系数
K=1.03; %运动阻力系数φ1
theta =0.2; %火药热力系数
Result = [t(tspan) p(tspan) v(tspan) l(tspan)]
format;
ylabel('\fontsize{8}\bfp (kg/cm^{2})');
title('\fontsize{8}\bft-p曲线');
subplot(2,2,2)
plot(t,v,'linewidth',2);
grid on;
xlabel('\fontsize{8}\bft (ms)');
psij=[tt(jie)*l_0*1000/v_j lx(jie)*l_0 vx(jie)*v_j/10 px(jie)*f*Delta/100 pt(jie) pd(jie) psi(jie) Z(jie)];
pg=[tt(end)*l_0*1000/v_j lx(end)*l_0 vx(end)*v_j/10 px(end)*f*Delta/100 pt(end) pd(end) psi(end) Z(end)];
chi=1.00716; %第一种装药形状特征量χ1
chi_s=0; %第一种装药分裂点形状特征量χ1s
mu=0; %第一种装药形状特征量μ1
et1=1.14*10^-2; %第一种装药药厚δ01
d1=2.5*10^-2; %第一种装药火药内径d1
C = zeros(1,12);
C(1)=chi;C(2)=lambda;C(3)=lambda_s;C(4)=chi_s;C(5)=Z_s;%
C(6)=theta;C(7)=B;C(8)=n1;C(9)=Delta;C(10)=delta;C(11)=alpha;C(12)=mu;
C;
y0=[Z_0;0;0;psi_0];
%=========================================
f=950000; %火药力 kg*dm/kg
alpha=1; %余容 dm
%==================================
ome=2.2;%12.9; %第一种装药量 kg
u1=5.0024*10^-5; %第一种装药烧速系数 dm^3/(s*kg)
n1=0.82; %第一种装药的压力指数n1
lambda=-0.0071; %第一种装药形状特征量λ1
lambda_s=0; %第一种装药分裂点形状特征量λ1s
title('\fontsize{8}\bfl-p曲线');
subplot(2,2,4)
plot(l,v,'linewidth',2);
grid on;
xlabel('\fontsize{8}\bfl (dm)');
ylabel('\fontsize{8}\bfv (m/s)');
title('\fontsize{8}\bfl-v曲线');
Z = y(:,1);lx = y(:,2); vx = y(:,3);
psi = (Z>=0&Z<1).*( chi*Z.*(1 + lambda*Z + mu*Z) ) +...%%%%%%%%%
(Z>=1&Z<Z_s).*( chi_s*Z.*(1 + lambda_s*Z) ) +...
(Z>=Z_s)*1;
l_psi = 1 - (Delta/delta)*(1-psi) - alpha*Delta*psi;
px = ( psi - vx.*vx )./( lx + l_psi );
p = px*f*Delta/100;
v = vx*v_j/10;
l = lx*l_0;
tspan = length(t)/20;
tspan = 1:ceil(tspan):length(t);
tspan(end) = length(t);
fprintf(' t(ms) p(kg/cm^2) v(m/s) l(dm)');
format short g;
Ry1=[Zf;psij;pg;Pm];
Ry2=[tt*l_0*1000/v_j lx*l_0 vx*v_j/10 px*f*Delta/100 pt pd psi Z];
subplot(2,2,1);
plot(t,p,'linewidth',2);
grid on;
xlabel('\fontsize{8}\bft (ms)');
ran=min(ran);
Zf=[tt(ran)*l_0*1000/v_j lx(ran)*l_0 vx(ran)*v_j/10 px(ran)*f*Delta/100 pt(ran) pd(ran) psi(ran) Z(ran)];
jie=find(psi>=1);
jie=min(jie);
p_0=P_0/(f*Delta);
psi_0=(1/Delta - 1/delta)/(f/P_0 + alpha - 1/delta);
Z_0=(sqrt(1+4*psi_0*lambda/chi) - 1)/(2*lambda);
%解算子-----------------------------------------------------------------------
Delta=ome/W0;
phi=K + ome/(3*G);
v_j=196*f*ome/(phi*theta*G);
v_j=sqrt(v_j);
B = 98*(et1*A)^2/( u1*u1*f*ome*phi*G );
B=B*(f*Delta)^(2-2*n1);
Z_s=1+Ro1*(d1/2+et1)/et1;
t = tt*l_0*1000/v_j;
fl = find(l>=l_g);
fl = min(fl)+1;
p(fl:end)=[];v(fl:end)=[];l(fl:end)=[];t(fl:end)=[];
pd=px*f*Delta/100/(1+ome/3/fai1/G);
pt=pd*(1+ome/2/fai1/G);
ylabel('\fontsize{8}\bfv (m/s)');
title('\fontsize{8}\bft-v曲线');
subplot(2,2,3)
plot(l,p,'linewidth',2);
grid on;
xlabel('\fontsize{8}\bfl (dm)');
ylabel('\fontsize{8}\bfp (kg/cm^{2})');