Tôi cố gắng để sử dụng fsolve như trích dẫn ở đây: http://glowingpython.blogspot.gr/2011/05/hot-to-find-intersection-of-two.html,Python đường cong giao nhau với fsolve() và đối số chức năng sử dụng NumPy
On để tìm ra ngã tư giữa hai đường cong. Cả hai đường cong cơ bản là hai mảng nổi.
Việc đầu tiên của họ là một mảng một chiều Pmech (Pmech(x))
và thứ hai là một mảng hai chiều Pair (Pair(x,y))
x - trục là chung cho cả hai mảng, vì vậy những gì tôi muốn làm là dành cho tất cả các y để xem nơi Cặp và Pmech cắt nhau.
Tôi nhận thức được thực tế là fsolve()
mất như các đối số chức năng, không phải mảng vì vậy tôi đã viết hai chức năng cơ bản để thực hiện tính năng này:
def Pmix(x):
return Pmech[x]
def Paera(x,y):
return Pair[x,y]
Vì vậy, như thể hiện trong liên kết ở trên tôi thực hiện các findIntersection
chức năng:
def findIntersection(fun1,fun2,x0):
return fsolve(lambda x: (fun1(x) - fun2(x,y) for y in range(1,100)),x0)
nhưng tôi nhận được lỗi sau:
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.