web-dev-qa-db-ja.com

RuntimeWarning:arccosで無効な値が検出されました

Pythonを使用するのは初めてですが、かなりうまくやっています。以下に示すエラーが発生し続け、値が正しく、記載されていると信じているので、問題が正確に何であるかわかりません。問題は正確にあると思いますか?私はt = 0からt = PMまでグラフ化しようとしていますが、以下に表示される式は角度arccosです。

このarccosエラーのトラブルシューティングをオンラインで見つけることができませんでした。実行中Python 3.5。

import numpy as np
import matplotlib
from matplotlib import pyplot
from __future__ import division

rE = 1.50*(10**11)
rM = 3.84*(10**8)
PE = 3.16*(10**7)
PM = 2.36*(10**6)

t = np.linspace(0, PM, 200)

# anaconda/lib/python3.5/site-packages/ipykernel/__main__.py:1: RuntimeWarning: invalid value encountered in arccos
y = 0.5*(np.arccos(2*(np.pi)*t*((1/PM)-(1/PE))+90))
8
Ali R.

単純化すると

_np.arccos(90)
_

(これは、arccosに渡される配列の最初の要素です)、同じ警告が表示されます

何故ですか? arccos()は、cos(x) = 90xを解こうとします。ただし、そのような値は、 arccosの可能なドメイン外 _[-1,1]_であるため、意味がありません。

また、少なくとも最近のバージョンのnumpyでは、この計算はnanを返すことに注意してください。

_>>> import numpy as np
>>> b = np.arccos(90)
__main__:1: RuntimeWarning: invalid value encountered in arccos
>>> b
nan
_
8
Ami Tavory

np.arccos()関数は、-1から1までの値のみを取ることができます。

参照: https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.arccos.html

4
ramblinknight