次の方程式のルートを見つけるために、scipy を使用していくつかのコードを作成しました。
def equation(x, y):
return (x / y) * np.log((a * x / b) + 1.0) - 2.0 * c * c
a、b、および c スカラーを使用します。
長方形のグリッド (Y、形状 300x200 など) に y の値があり、各点の方程式を解く対応する x を見つける必要があります。また、各ポイント (X0、形状 300x 200) での x の値の開始推定値もあります。
現時点では、配列 Y の各項目をループして次のように呼び出すことで、これを解決できました。
for index, value in np.ndenumerate(Y):
result[index] = scipy.optimize.newton(equation, X0[index], args=(value))
# or other scalar solvers like brentq
これは機能しますが、遅すぎてスクリプトをリリースできません。値がグリッド上に編成され、Y および結果の配列に「連続した」値が含まれているという事実を考えると、たとえば、配列の端から中心に向かって徐々に変化するなど、適切な配列指向/多次元の解決方法が必要であると確信しています。その問題は、パフォーマンスを向上させる可能性もあります。
いくつかのオプションを試しましたが、これまでのところ成功していません。何か案が?
どんな助けでも大歓迎です。
ありがとう