Python 最小二乘曲线拟合
我有一组距离x=c*r/rsPython 最小二乘曲线拟合,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
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
。