文号
t19406
阅读
10364
回复
5
收藏
6
[火箭理论]不成熟的火箭速度计算程序.(原创)
2009/09/01
IP:北京
因为非线性的微分方程,无论是通解,还是数值解本人都不会解,所以本人决定便一个程序来辅助计算.但是由于本人只会C语言,所以只好用C编了一个.至于说,为什么是不成熟的,本人会在下文解释.至于这个程序的用途,本人认为目前并无太大的实际用途,因为仅仅是计算速度,并不是目的,目的是要计算弹道.但是,可以把这看作是计算弹道的基础,因为速度对时间积分,就是位移了.在这基础上,计算弹道,可以说是水到渠成的事.本人把这个不成熟的程序发上来,目的主要是为了寻求高人的指点,如果真的有问题的话,本人不想在错误的路上走的太远.

废话说完,现在介绍理论.(KC不能发公式,老规矩,截图!)
QQ截图未命名.png

因为是用近似值逼近精确值,所以dt应当分的越小约好.但是,本认试了每秒分成一万份,十万份,和一百万份的,发现结果并无差别.本人猜想,这可能是因为双精度数的有效数字位数不够造成的.本人也试过长双精度,但是出现了明显的错误结果.说实话,不怕大家笑话,本人学C的时候,就不会用长双精度,现在亦然...精度不够,是本人说此程序不成熟的原因之一.

第二个不成熟的原因是,我的计算结果,总和一本参考书上的公式的结果存在误差,而且是比较大的.毕竟我这是近似逼精确的暴力方法.本人下一步计划用v-dt和v+dt取平均来抵消误差.

希望高手能给些意见,并且给些鼓励吧,貌似在KC上,我是头一个干这活的...

另附程序代码如下:
#include"stdio.h"
#include"math.h"
main()
{double v=0,m,g=9.8,k,F,tb;
double vv;
long int tk;
printf("[s:9]leace income the value of m(Mass),k(Air resistance coefficient),F(Engine average thrust force),tb(Combustion duration)\nAnd use comma separate.\n");
/*译为:请输入数值:质量,空气阻力系数,发动机平均推力,燃烧时间.并用逗号隔开.*/
scanf("%lf,%lf,%lf,%lf",&m,&k,&F,&tb);
for(tk=1;tk<=10000*tb;tk++)
  {v=v+(F/m-k*v*v/m-g)/10000;
   if(F-m*g-k*v*v<=0)
    break;
  }
printf("\n");
vv=(F*tb-m*g*tb)/sqrt(m*m+k*tb*tb*(F-m*g));
printf("vb1=%llf\nvb2=%llf\n",v,vv);
/*vb1为本计算方法算出的速度值,vb2为参考其他文献的共识算出的速度值.*/
}
+600
科创币
科创网
2009/09/01
鼓励创作实用计算工具。
+1000
科创币
power_rdx
2009/09/01
不错
5
17年4个月前IP:未同步
148563
1楼
有参考价值...
顶顶...
引用
评论
17年4个月前IP:未同步
148591
2楼
要很多地方需要改进
1. 燃烧燃料要减少总质量
2. 空气阻力不是一个系数,而是有1,2,3次项
3. 如果你是垂直发射,g和空气密度随高度的变化也要考虑
4. 地球自转的影响
引用
评论
17年4个月前IP:未同步
148606
3楼
Ls的34项没必要吧?
引用
评论
17年4个月前IP:未同步
148619
4楼
速度变化,雷诺数变化, 空气阻力系数也会跟着变化
但对于粗略计算可以当作常数

真正的问题在于测量阻力系数需要先做一个风洞,或者上CFD
(还有一个办法:把火箭从非常高的楼上扔下来测着地时间)

引用第2楼rc5于2009-09-02 08:55发表的  :
要很多地方需要改进
1. 燃烧燃料要减少总质量
2. 空气阻力不是一个系数,而是有1,2,3次项
3. 如果你是垂直发射,g和空气密度随高度的变化也要考虑
4. 地球自转的影响
+60
科创币
科创网
2009/09/02
鼓励积极参加讨论 希望更 ..
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的