2

matplotlib を使用して一般的な 3 次関数で曲線を描きたいと思います。x^3 + y^3 + y^2 + 2xy^2 = 0 のような関数で定義された曲線を描きたいのですが、これは可能ですか?

4

2 に答える 2

4

これを行う明白な方法の 1 つは(x,y)、方程式を数値的に解くことによって、ペアが関係を満たすことを見つけることです。

from scipy import optimize
f=lambda x, y: (x**3+y**3+y**2+2*x*y*y-0)**2
y_range=linspace(-1, 1, 100)
x_range=[optimize.fmin(f,0,args=(y,), disp=0) for y in y_range]
xr=linspace(-1,1)
yr=linspace(-1,1)
X, Y=meshgrid(xr, yr)
Z=f(X, Y)
plt.plot(x_range, y_range, 'k')
plt.contourf(xr, yr, Z, levels=linspace(0,0.001,51), alpha=0.5)
plt.colorbar()

ここに画像の説明を入力

黒い線はあなたが望むものです。等高線は、関数が 0 付近でどのように動作するかを示すoptimize.fmin()ためのものです。ここでは最も効率的なソルバーではありません。単純にしてください。

xまたはの絶対値yが大きい場合は、基本的にプロットx+0.4496y=0しているので、上記のすべてを行う必要はありません。

于 2013-10-18T04:01:56.620 に答える
0

私の 2 セント:
x^3+y^3+y^2+2xy^2=0
y^2=-x^3-y^3-2xy^2
y^2>0 => -x^3-y ^3-2xy^2>0 => x^3+y^3+2xy^2<0 =>
x(x^2+2y^2)+y^3<0 => x(x^2+2y ^2)<-y^3 => (x^2+2y^2)<-y^3/x
0<(x^2+2y^2) => 0<-y^3/x => 0 >y^3/x =>
(x>0 && y<0) || (x<0 && y>0)
グラフは第 2 象限と第 4 象限にまたがります

于 2013-10-17T09:36:31.597 に答える