首页 > 解决方案 > python中`curvefit()`模块背后的理论

问题描述

考虑我有以下数据:

0.000000000000000000e+00 4.698409927534825670e-01
1.052631578947368363e+00 8.864688755521996200e+00
2.105263157894736725e+00 1.554529316011567630e+01
3.157894736842105310e+00 9.767558170900922931e+00
4.210526315789473450e+00 2.670221074763470881e+01

现在,我想用这些数据做一些统计分析。

%pylab inline
# Loads numpty
my_data = loadtxt("numbers.dat")
dataxaxis = my_data[:,0]
datayaxis = my_data[:,1]

我知道我将数据存储为变量,因此将第一列作为 x 轴的 xdata,将第二列作为 y 轴的 y 数据。

我正在学习curvefit()类似于polyfit()寻找最佳拟合线(LOBF)梯度和截距的函数。

我明白首先我必须定义直线存在的函数y = mx+c

这就是我感到困惑的地方。
根据讲师的说法,我需要将 xdata 作为参数,还要将梯度和截距定义为参数:

def straightline(dataxaxis, m, c):
    "Returns values of y according to y = mx + c"
    return m*dataxaxis + c

后来我可以这样调用该curvefit()函数:

lineinfo = curve_fit(line, dataxaxis, datayaxis)
lineparams = lineinfo[0]
m = lineparams[0]
c = lineparams[1]

给出了相应的值。

但是,当我将该函数straightline作为 中的第一个参数调用时curve_fit,我没有传递任何有关的信息dataxaxis或任何有关的信息mc但它仍然计算梯度和截距以返回矩阵。

这怎么可能?

标签: pythonjupyter-notebook

解决方案


推荐阅读