嗨,基本上我想返回1值,如果輸入是負值,而另一個輸入值是正值。但不能同時返回。返回的值將用於scipy的curve_fit函數以確定我的未知參數(a & b)。如何根據函數的輸入值返回2個值中的一個
我嘗試使用函數內如果循環,但它提供了以下錯誤:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
這裏是我的代碼:
#Input fitting data
PAP_Applied_H = [-5,5,10]
PAP_Eb_fit = [30.7,31.3,31.6]
#Function Fitting
def f2(x,a,b):
if x<0:
y=a*((1+(x/b))**2)
else:
y=a*((1-(x/b))**2)
return y
params2,extras2 = curve_fit(f2,PAP_Applied_H,PAP_Eb_fit,p0=(1,15))
#Linear Fitting
linefit2 = py.polyfit(PAP_Applied_H,PAP_Eb_fit,1)
l2 = py.poly1d(linefit2)
x_new2 = list(range(-50000,1000,1))
x_line2 = list(range(-3000,3000,1))
y_func2 = f2(x_new2,params2[0],params2[1])
y_line2 = l2(x_line2)
所以我應該如何改變功能「F2 '這樣它會返回我想要的值?任何幫助,將不勝感激。提前致謝。
在函數x是一個列表(你說'輸入'的變量)。那麼你認爲要確定輸入列表是正面的還是負面的? –
你寫的'f2'函數沒有什麼問題,除了你傳遞一個'list',而不是'x'的單個值。你如何期待它通過'x = [ - 1,1,1,-1,1]'來表現? x是正面還是負面? –