1. ホーム
  2. python

[解決済み】「RuntimeWarning: divide by zero encountered in double_scalars」を修正する方法

2022-02-04 20:31:21

質問

を行った後 ループ用 を実行したところ、1行でエラーが発生しました。

RuntimeWarning: divide by zero encountered in double_scalars

と別の行で2つのエラーがあります。

RuntimeWarning: divide by zero encountered in double_scalars

{{コード

浮動小数点数の問題かもしれませんが、よく分からないので、皆さんの助けを求めてここに書きました。)

以下はそのコードです。

プレ RuntimeWarning: invalid value encountered in arcsin

先ほど定義した(ループの前) T_max = 0.5 * v_PM(Me) * RTOD DT = (90 - T_max) - np.fix(90 - T_max) n = int(T_max * 2) P = np.zeros((n+1)) T = np.zeros((n+1)) M = np.zeros((n+1)) RR = np.zeros((n+1)) LR = np.zeros((n+1)) SL = np.zeros((n+1)) for m in range(n+1): T[m] = (DT + m) * DTOR func = lambda x: T[m] - v_PM(x) M[m] = brentq(func, 1, Me+1) M[0] = 0 P[m] = TR * np.tan(T[m]) #X-AXIS POINTS P[0] = 0 RR[m] = -TR / P[m] RR[0] = 0 LR[m] = (np.tan(T[m] + np.arcsin(1 / M[m]))) LR[0] = 0 SL[m] = -RR[m] SL[0] = 0 であり、イコールである。

v_PM

前述したように、エラー v_PM = lambda x : (A * np.arctan(np.sqrt(B * (x ** 2 - 1))) - np.arctan(np.sqrt(x ** 2 - 1))) を参照してください。 {{コード

と2つのエラー RuntimeWarning: divide by zero encountered in double_scalars

RR[m] = -TR / P[m] を指します。

{{コード

また、そこに RuntimeWarning: divide by zero encountered in double_scalars と {コード などのように、最初の要素を0としたいからです。

このエラーを忘れてコードを進めればいいのか、それとも何か重大な問題があるのか分かりません。助けてくれてありがとうございます。

解決方法は?

これらは実際のエラーではなく、警告です。 これは、あなたが何かをゼロで割ろうとしているために起こるものです。

すなわち、あなたが設定しているのは RuntimeWarning: invalid value encountered in arcsin で割ると LR[m] = (np.tan(T[m] + np.arcsin(1 / M[m]))) (最初の反復で、ここで P[0] = 0) と同じです。 M[0] = 0.

問題は、最初の値をどうするかだ。

解決策としては、ゼロ値を好きなように初期化して(ループの前に)、ループを開始します。 M[0] = 0 (そのため M[0]). 必要なのはこれだけですか?

しかし、異なる繰り返しで警告が出る場合があります。 m = 0 または P[0]

m=1