ここで引用されているように fsolve を使用しようとしています: http://glowingpython.blogspot.gr/2011/05/hot-to-find-intersection-of-two.html、
2 つの曲線の交点を見つけるために。どちらの曲線も、基本的に 2 つの float 配列です。
最初のものは 1 次元配列Pmech ( Pmech(x) )
で、2 つ目は 2 次元配列です。Pair ( Pair(x,y) )
x 軸は両方の配列に共通であるため、すべての y で Pair と Pmech が交差する場所を確認する必要があります。
配列ではなく関数を引数として取るという事実を認識しているfsolve()
ため、この機能を実装するために2つの基本的な関数を作成しました。
def Pmix(x):
return Pmech[x]
def Paera(x,y):
return Pair[x,y]
したがって、上記のリンクで示されているように、findIntersection
関数を実装しました:
def findIntersection(fun1,fun2,x0):
return fsolve(lambda x: (fun1(x) - fun2(x,y) for y in range(1,100)),x0)
しかし、次のエラーが表示されます:
TypeError: float() argument must be a string or a number
Traceback (most recent call last):
File "batteries.py", line 261, in <module>
findIntersection(Pmix,Paera,0)
File "batteries.py", line 238, in findIntersection
fsolve(lambda x: (fun1(x) - fun2(x,y) for y in range(1,100) ),x0)
File "/usr/lib/python2.7/dist-packages/scipy/optimize/minpack.py", line 125, in fsolve
maxfev, ml, mu, epsfcn, factor, diag)
minpack.error: Result from function call is not a proper array of floats.