fortran程序求编辑某炮兵阵地,使用大炮向敌人阵地发射炮弹.炮弹的运行轨迹满足方程:f(x)=-0.0000125x2+0.07x-50,计算炮弹能打出的最大高度和最远距离.编写程序实现之.(求平方根可用函数SQRT,如
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/27 15:33:13
fortran程序求编辑某炮兵阵地,使用大炮向敌人阵地发射炮弹.炮弹的运行轨迹满足方程:f(x)=-0.0000125x2+0.07x-50,计算炮弹能打出的最大高度和最远距离.编写程序实现之.(求平方根可用函数SQRT,如
fortran程序求编辑
某炮兵阵地,使用大炮向敌人阵地发射炮弹.炮弹的运行轨迹满足方程:f(x)=-0.0000125x2+0.07x-50,计算炮弹能打出的最大高度和最远距离.编写程序实现之.(求平方根可用函数SQRT,如a=sqrt(4.0)).
fortran程序求编辑某炮兵阵地,使用大炮向敌人阵地发射炮弹.炮弹的运行轨迹满足方程:f(x)=-0.0000125x2+0.07x-50,计算炮弹能打出的最大高度和最远距离.编写程序实现之.(求平方根可用函数SQRT,如
我想本题的关键在于理论的分析.由于炮弹的轨迹为二次曲线方程,因次炮弹在二次曲线对称轴
x=0.07/(2*0.0000125)处上升最大高度.另外炮弹发射时和落地时距地面的高度均为0.因此令f(x)=0求出发射点和落地点的横坐标x1,x2,相减之后(x2-x1),就是导弹前行的最远距离.下面是程序,
程序:
module tool
implicit none
real*8::distance !导弹上升的最大高度
real*8::high !导弹飞行的最远距离
contains
real*8 function f(x)
real*8::x
f=-0.0000125*x**2+0.07*x-50 !导弹飞行曲线的轨道方程
!f=x**2+1
end function
real*8 function binroot(f,x1,x2)!二分法求方程的根(零点)
real*8,external::f
real*8::x1,x2,x0
do while(f(x1)*f(x2)1e-8)
x0=(x1+x2)/2
if(f(x0)*f(x2)1e-8)
xR=xR+10
enddo
x1=binroot(f,xL,x0)
x2=binroot(f,x0,xR)
distance=x2-x1
end subroutine
end module
program main
use tool
implicit none
call solveproblem(f)
write(*,10) high,distance
10 format("导弹上升的最大高度",f/,"导弹前行的最远距离",f)
stop
end