1

編集:より具体的には、2 つの変数を持つスカラー関数のゼロの形状をプロットする実用的な方法を探しています。したがって、値は、選択した 2D メッシュ グリッドの解像度まで正確にする必要があるだけです。たとえば、f(x,y) = sqrt(x^2 + y^2) - 4 で円が得られます。

問題は、fsolve がベクトル関数を必要とすることです。

from scipy.optimize import fsolve
def a(x): return sin(x[0]) + cos(x[1])
nodes = fsolve(a,(.1,.2))

動作しません。回避策はありますか?例 def a(x): return [sin(x[0]) + cos(x[1]),0]

ただし、可能なすべてのゼロではなく、1 つのソリューション (array([-1.37079633,0.2])) のみを出力します。

4

1 に答える 1

2

2D 関数とそのゼロの動作を診断したい場合は、値の 2D グリッドを生成し、matplotlib のようなものでプロットする方がはるかに優れていますpcolor。次に、ゼロがどこにあるかを本当に正確に見つける必要がある場合は、どこからfsolve探し始めればよいかがわかります。

原則として、この手順を自動化することは可能かもしれません。たとえば、y の値ごとに 0 がいくつあるかなど、関数について何か知っている場合は、各最小値の周りに fsolve を何回適用する必要があるかがわかります。これは、十分に堅牢であると証明される場合と証明されない場合があります。しかし、任意の非線形関数のすべてのゼロを見つけるための一般的な解はありません。特に多次元の場合はそうです。

于 2012-04-11T08:40:37.093 に答える