Python 最小二乘曲线拟合

Python 最小二乘曲线拟合,python,scipy,least-squares,Python,Scipy,Least Squares,我有一组距离x=c*r/rs array([ 0.09317335, 0.1863467 , 0.27952006, 0.37269341, 0.46586676, 0.55904011, 0.65221346, 0.74538682, 0.83856017, 0.93173352, 1.02490687, 1.11808022, 1.21125357, 1.30442693, 1.39760028, 1.49077363

我有一组距离x=c*r/rs

 array([ 0.09317335,  0.1863467 ,  0.27952006,  0.37269341,  0.46586676,
        0.55904011,  0.65221346,  0.74538682,  0.83856017,  0.93173352,
        1.02490687,  1.11808022,  1.21125357,  1.30442693,  1.39760028,
        1.49077363,  1.58394698,  1.67712033,  1.77029369,  1.86346704])
数字密度(sigma)
阵列([9.56085037e+14,5.13431506e+14,3.26960286e+14,
2.27865084e+14、1.68325130e+14、1.29590176e+14、,
1.02918831e+14、8.37487042e+13、6.94971037e+13、,
5.86086377e+13、5.00994710e+13、4.33218850e+13、,
3.78349864e+13、3.33300619e+13、2.95856349e+13、,
2.64394232e+13、2.37702922e+13、2.14863249e+13、,
1.95167455e+13、1.78063354e+13])

我已经绘制出了下面的图表。这是一个对数图

我有一个函数


根据理论,这应该符合我的图表。我不知道如何使用
scipy.opt.leastsquare
来使用函数和拟合图形。要拟合的参数是
c
rs
选项1:使用scipy.optimize.curve\u拟合


选项2:编写自己的函数以输出R2或sse,然后使用scipy.optimize最小化此函数。我总是用这种方法来解决复杂的问题,并推荐SLSQP和L-BFGS-B的算法。

用图表和公式写出来的很棒的文章。你的模型函数没有参数,只有一个常数因子,你想拟合什么,只是因子???@Nabla实际上,x=c*r/rs,其中c和rs是我需要拟合的参数这可能是您@srivatsan的一个良好起点,但如果您只有
x
Sigma(x)
,则您无法拟合参数
c
,因为
Sigma(x)
不依赖于它。如果
delta_c
rho_c
为常数,则只能拟合
r_s
。另外,您还可以编写
Sigma(x)
作为一个普通的python函数,您可以在不同的条件下使用
if