文号
t19406
阅读
10365
回复
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
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的