I have been trying to curve fit double broken power law.
def sbpl(x,f0,a1,a2,a3,xb1,xb2):
if x[0] < xb1:
F=f0* x**(-a1)
elif xb1 <= x <= xb2:
F=f0* ((xb1)**(a2-a1)) *(x)**(-a2)
else:
F=f0*((xb1)**(a2-a1))*((xb2)**(a3-a2))*(x**(-a3))
return F
x= array([5.5,9.0,17.0,18.0,19.0,43.0,45.0])
y = array([1.14e-03,2.08e-03,3.18e-03,2.53e-03,2.81e-03,1.491e03,1.311e-03])
popt,pcov=optimize.curve_fit(sbpl,x,y,sigma=err,p0=[1.,1.,0.,0.,0.,0.])
but it shows an error.
line 20, in sbpl
elif xb1 <= x <= xb2:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()