fortran程序求编辑某炮兵阵地,使用大炮向敌人阵地发射炮弹.炮弹的运行轨迹满足方程:f(x)=-0.0000125x2+0.07x-50,计算炮弹能打出的最大高度和最远距离.编写程序实现之.(求平方根可用函数SQRT,如
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/20 18:13:32
![fortran程序求编辑某炮兵阵地,使用大炮向敌人阵地发射炮弹.炮弹的运行轨迹满足方程:f(x)=-0.0000125x2+0.07x-50,计算炮弹能打出的最大高度和最远距离.编写程序实现之.(求平方根可用函数SQRT,如](/uploads/image/z/7983259-43-9.jpg?t=fortran%E7%A8%8B%E5%BA%8F%E6%B1%82%E7%BC%96%E8%BE%91%E6%9F%90%E7%82%AE%E5%85%B5%E9%98%B5%E5%9C%B0%2C%E4%BD%BF%E7%94%A8%E5%A4%A7%E7%82%AE%E5%90%91%E6%95%8C%E4%BA%BA%E9%98%B5%E5%9C%B0%E5%8F%91%E5%B0%84%E7%82%AE%E5%BC%B9.%E7%82%AE%E5%BC%B9%E7%9A%84%E8%BF%90%E8%A1%8C%E8%BD%A8%E8%BF%B9%E6%BB%A1%E8%B6%B3%E6%96%B9%E7%A8%8B%EF%BC%9Af%28x%29%3D-0.0000125x2%2B0.07x-50%2C%E8%AE%A1%E7%AE%97%E7%82%AE%E5%BC%B9%E8%83%BD%E6%89%93%E5%87%BA%E7%9A%84%E6%9C%80%E5%A4%A7%E9%AB%98%E5%BA%A6%E5%92%8C%E6%9C%80%E8%BF%9C%E8%B7%9D%E7%A6%BB.%E7%BC%96%E5%86%99%E7%A8%8B%E5%BA%8F%E5%AE%9E%E7%8E%B0%E4%B9%8B.%EF%BC%88%E6%B1%82%E5%B9%B3%E6%96%B9%E6%A0%B9%E5%8F%AF%E7%94%A8%E5%87%BD%E6%95%B0SQRT%2C%E5%A6%82)
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