Sto cercando di usare fsolve come citato qui: http://glowingpython.blogspot.gr/2011/05/hot-to-find-intersection-of-two.html,Python curve intersezione con fsolve() e argomenti di funzioni utilizzando NumPy
Sulla fine di trovare l'intersezione tra due curve. Entrambe le curve sono fondamentalmente due matrici di galleggianti.
Il primo di questi è un array dimensione Pmech (Pmech(x))
e la seconda è una matrice bidimensionale Pair (Pair(x,y))
La x - asse è comune per entrambe le matrici, quindi quello che voglio fare è per ogni y per vedere dove Coppia e Pmech si intersecano.
Sono consapevole del fatto che fsolve()
prendono come funzioni argomenti, non array che così ho scritto due funzioni di base per implementare questa funzione:
def Pmix(x):
return Pmech[x]
def Paera(x,y):
return Pair[x,y]
Così come dimostrato nel link qui sopra ho implementato la funzione findIntersection
:
def findIntersection(fun1,fun2,x0):
return fsolve(lambda x: (fun1(x) - fun2(x,y) for y in range(1,100)),x0)
ma ottengo il seguente errore:
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.