5

次のコードを使用して、同じ図に 2 つの曲線をプロットしたいと思います。

import sympy as syp


x, y = syp.symbols('x, y')

my_function = syp.exp(-(x-2)**2)*syp.exp(-(y-3)**2) + 2*syp.exp(-(x+1)**2)*syp.exp(-(y-1)**2) 

gradient_1 = syp.diff(my_function, x)
gradient_2 = syp.diff(my_function, y)


curve_1 = syp.plot_implicit(syp.Eq(gradient_1, 0))
curve_2 = syp.plot_implicit(syp.Eq(gradient_2, 0))

私が見ているのは最初のプロットだけですが、可能であればグリッドも含めて、両方の曲線を同じ図に表示したいと考えています。何か案は?

注:matplotlibを使用すると非常に簡単ですが、関数の具体的な例が見つかりませんsyp.plot_implicit

4

3 に答える 3

6

別の、おそらくより効率的な方法は、両方を同時に計算することです。Or

plot_implicit(Or(Eq(gradient_1, 0), Eq(gradient_2, 0)))
于 2013-11-12T22:45:01.740 に答える
3

次の場合に機能する可能性があります。

>>> curve_1.extend(curve_2)
>>> curve_1.show()

ただし、暗黙的なプロットの混合はまだ実装されていない可能性があります。

curve_1curve_2は、sympy が「単一の曲線」、つまりSeriesインスタンスと見なすものではなく、「多数の曲線の集合」、つまりインスタンスであることに注意してくださいPlot

curve_1._backend.figおよび他の_backend属性から matplotlib オブジェクトを抽出することもできます。

結論として、必要なことを行うための優れた API がありますが、おそらくその背後にあるメソッドはまだ完成していません。

于 2013-11-12T15:34:24.710 に答える