前提・実現したいこと
プログラム内の関数s1からの戻り値の値を(-0.3)乗しようとした時に
s1からの戻り値が0の時にエラーが出るので,新しく関数avoid_erroを作り,関数avoid_erroの中で条件分岐をして0のマイナスのべき乗を避けるためにプログラムを組んでいます.
発生している問題・エラーメッセージ
関数s1からの戻り値が-0.001なので,関数avoid_erroからの戻り値は
-0.001^(-0.3) = -7.943282347242818になるはずなのですが,
avoid_erro関数からの戻り値がnanになってしまいます.
PS C:\Users\□□\Desktop\○○> python error-sample.py 関数s1からの戻り値 -0.001 error-sample.py:36: RuntimeWarning: invalid value encountered in double_scalars return erro**(η-1) 関数avoid_erroの戻り値 nan -7.943282347242818
該当のソースコード
python
1import numpy as np 2 3 4c1 = 1 5c2 = 0.05 6 7η = 0.7 8 9def s1(x1,x2,t): 10 return c1*(x1-0.02*np.sin(t))+c2*(x2-0.02*np.cos(t)) 11 12def avoid_erro(x1, x2, t): 13 erro = s1(x1, x2, t) 14 print("関数s1からの戻り値", erro) 15 if(erro == 0): 16 return 0 17 else: 18 #print(erro**(η-1)) 19 return erro**(η-1) 20 21print("関数avoid_erroの戻り値",avoid_erro(0, 0, 0)) 22print(-0.001**(η-1))
試したこと
printを使ってどこで値が変わっているのかを確かめましたがわかりませんでした
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー