前提・実現したいこと
今、スカイダイビングをしたときに高さh[m]から飛び降りてから地上0[m]に達するまでにどのくらいの時間がかかるか(空気抵抗あり)を計算させたいのですが、うまくいきません。この飛び降りてから、地上につくまでにかかる時間は
t = root(m/gk)cosh(exp(hk/m))
で求められます。
また、エラーメッセージに出てくるオーバーフロウというのがよくわかりません。coshでoverflowが起こってしまっているという意味なんでしょうが、coshであふれてしまっている?というのが分かりません。このoverflowというのはどのようにしたら解決するのでしょうか教えていただけると嬉しいです。さらにソースコードの方もおかしなところがあれば指摘していただければ嬉しいです。
発生している問題・エラーメッセージ
RuntimeWarning: overflow encountered in cosh
該当のソースコード
#バンジージャンプやスカイダイビングでの地面までの到達時間 import math import numpy as np np.seterr(divide='ignore', invalid='ignore') #構成要素 m = input("質量を入力してください。単位は[kg]") m = int(m) h = input("高さを入力してください。単位は[m]") h = int(h) g = 9.8 k = 0.24 def func_t(): X = math.sqrt(m / g * k) Y = (h * k) / m t = X * np.cosh(math.exp(Y)) return t func_t()
> RuntimeWarning: overflow encountered in cosh
上記エラーが発生する条件は何でしょうか?
m=70, h=4000の時です
m=70, h=100の時は作動しました。(解があってるのか、わかりませんが)
解決済ではありますが、私の環境では「70、4000」と入力した場合にエラーは出ずに下記出力となりました。ご参考まで。
<ipython-input-1-6fd3c28c7a2b>:20: RuntimeWarning: overflow encountered in cosh
t = X * np.cosh(math.exp(Y))
inf
ありがとうございます!
回答2件
あなたの回答
tips
プレビュー