我正在尝试将函数h=a0L(1-a1L**(-w1)拟合到我的图形中,并找到参数a0、a1和w1。我不明白为什么它不起作用。我不断遇到错误:无法将序列与“numpy.float64”类型的非int相乘。下面是我的代码片段:
L = [8, 16, 32, 64, 128, 256]
Average_height = [12.973731636721096,26.52865044449718,53.85333875018466,108.90761725203599,219.30647736483996,428.833120246036]
def correction(L, a0, a1, w1):
return a0*L*(1-a1*L**(-w1))
popt, pcov = curve_fit(correction, L, Average_height, bounds =([0,0,-10], [10,10,10]))
a0, a1, w1 = popt
print((a0, a1, w1))
plt.plot(L, correction(L, *popt), 'r-')
plt.show()
正如hpaulj已经提到的,您应该使用numpy数组。还有一个逗号,它一定是输入错误,否则,x值和y值的数量就会不同。最后,通常不能将Python幂函数
**
与numpy数组一起使用-为此,有专用的numpy函数np.power。相应地更改代码会导致以下情况:输出
相关问题 更多 >
编程相关推荐