基本的には、入力が負の場合は1つの値を、正の場合は1つの値を返します。しかし、同時に両方を返すことはありません。返される値は、unknowパラメータ(a & b)を決定するためにscipyからcurve_fit関数に使用されます。関数からの入力値に応じて2つの値のうち1つを返す方法
私は関数内であればループを使用してみましたが、それは次のエラー得られます。ここでは
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はリスト(あなたが 'input'と言う変数)です。あなたは入力リストが正か負かを判断すると思いますか? –
あなたの 'f2'関数に書かれているように間違っていることはありませんが、' x'の単一の値ではなく、 'list'を渡している点が異なります。あなたが 'x = [ - 1,1,1、-1,1]'を渡すと、それがどのように動作すると思いますか? xは正か負か –