0
私は次のような問題について質問があります。python:true_divideで無効な値が見つかりました - しかしどこですか?
私は、次の簡単な関数をプロットしたい:
F(X)=変数x_1 * X_2 /(X_1^2 + X_2^2)
をX & yは、あなたがゼロで割るだろうゼロであるので、私はこのケースを防ぐために、例外を追加した場合:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
def f(x1, x2):
return np.where(np.logical_and(x1==0,x2==0),
0,
x1*x2/(x1*x1+x2*x2))
n = 3
x = y = np.linspace(-5,5,n)
xv, yv = np.meshgrid(x, y)
z = f(xv,yv)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(xv,yv,z)
plt.show()
私の図は、プロットしたものであると私は私の解決策を点検した場合、正しいとも思われます。私は、コードを実行した場合しかし、私は、除算エラーが発生します。
RuntimeWarning: invalid value encountered in true_divide
私は手動ですでにnp.where機能をテストし、それが本当のようX_1 = X_2 = 0の値を返します。それはうまくいくようです。
誰もがこの警告の原因を知っていますか?
のような低いレベルでコードを作成するだけです。あなたのコードはうまく動作し、グラフをプロットします – MaxU
'np.where()'への引数はすべて*評価されているので、そのように使用してもエラーは解消されません。 –
@ WarrenWeckesser私があなたを正しく理解していれば、x1 = x2 /(x1 * x1 + x2 * x2) 'もx1 = x2 = 0に対して評価されます。これを解決するにはnp.where()よりも良い方法を知っていますか? –