跳崖计算器总是返回终端速度[重复]。

问题描述 投票:0回答:1

我的程序是为了计算我从悬崖上跳下时的落地速度。

我解了一个微分方程。(空气阻力力与速度的平方成正比。)

dvdt = g (1 - v^2 V_terminal^2)

正负

现在使用这个技巧dvdt = dvdz dzdt = dvdz * v (z = height)

并整合

积分v (1-v^2V_terminal^2) dv = 积分g dz。

给你

(V_terminal^2 2) *ln(1-V_final^2V_terminal^2) = gH。

所以

V_final = V_terminal*(1-e^(-2ghV_terminal^2))^(12)

现在我把它放在程序里,但无论我输入什么高度,出来的都是极限速度。

我到底做错了什么?

      PROGRAM JUMP
      IMPLICIT NONE
      REAL GETV
      REAL V
      REAL H
      REAL HGAPING
C https://en.wikipedia.org/wiki/Gaping_Gill    
      PARAMETER (HGAPING=98.)
      WRITE(6,*) 'EXAMPLE YOU JUMP ',HGAPING,' METRES'
      WRITE(6,*) 'YOU HIT GROUND AT ',GETV(HGAPING),' MPH'
 10   WRITE(6,*) 'HOW HIGH DO I JUMP FROM (METRES)?'
      READ(5,*) H
      WRITE(6,*) 'YOU JUMP FROM ',H,' METRES'
      WRITE (6,*) 'YOU HIT GROUND AT ',GETV(H),' MPH'
      GOTO 10
      END
      FUNCTION GETV(H)
      REAL GETV
      REAL H
      REAL G
C https://en.wikipedia.org/wiki/Standard_gravity      
      PARAMETER (G=9.81)
      REAL VTERMIN
C https://en.wikipedia.org/wiki/Free_fall
      PARAMETER (VTERMIN=53.)
      REAL METPS2MPH
      PARAMETER (METPS2MPH=2.2369363)
      GETV=VTERMIN*SQRT(1.-EXP(-2*G*H/(VTERMIN*VERMIN)))
     1     *METPS2MPH
      END

这里是你期望的,如果它是正确的工作。如果你把一个 数,那么你应该得到大约的极限速度,但如果你输入一个数字,那么你应该得到一个大约的极限速度。小型 那么你应该得到大约SQRT(2*G*H)。两者都通过程序中的比例因子转换为mph。

以下是忽略空气阻力的程序工作版本。

   (1/2) m V_final^2 = m g H  (simple energy equation)
      PROGRAM JUMP
      IMPLICIT NONE
      REAL GETV
      REAL V
      REAL H
      REAL HGAPING
C https://en.wikipedia.org/wiki/Gaping_Gill    
      PARAMETER (HGAPING=98.)
      WRITE(6,*) '*** THIS PROGRAM NEGLECTS AIR RESISTANCE ***'
      WRITE(6,*) 'EXAMPLE YOU JUMP ',HGAPING,' METRES'
      WRITE(6,*) 'YOU HIT GROUND AT ',GETV(HGAPING),' MPH'
 10   WRITE(6,*) 'HOW HIGH DO I JUMP (METRES)?'
      READ(5,*) H
      WRITE(6,*) 'YOU JUMP',H
      WRITE (6,*) 'YOU HIT GROUND AT ',GETV(H),' MPH'
      GOTO 10
      END
      FUNCTION GETV(H)
      REAL GETV
      REAL H
      REAL G
C https://en.wikipedia.org/wiki/Standard_gravity      
      PARAMETER (G=9.81)
      REAL METPS2MPH
      PARAMETER (METPS2MPH=2.2369363)
      GETV=SQRT(2*G*H)
     1     *METPS2MPH
      END

但包括空气阻力在内的计算却出了问题。

fortran calculation
1个回答
1
投票

这是一个扩展的评论,而不是一个答案,但那些小盒子太局限了......通过阻力空气下降的代码包括计算方法

GETV=VTERMIN*SQRT(1.-EXP(-2*G*H/(VTERMIN*VERMIN)))*METPS2MPH

你需要仔细检查这些变量的名称。 你犯的错误是你把 implicit none 而不是在程序外部的函数作用域。

现在,说到一些绝对值得评论的事情:为什么,哦,为什么你写的Fortran像1985年一样? 如果你为教育付费,其中包括教你如何用Fortran编程,那么请你把你的大部分钱要回来,也许可以考虑换一个机构。 如果你自己教自己,扔掉你爷爷的教科书,给自己买一本最近十年左右写的。

© www.soinside.com 2019 - 2024. All rights reserved.