擅长:python、mysql、java
<p>您可以为参数设置一些合理的界限,例如</p>
<pre><code>def fsigmoid(x, a, b):
return 1.0 / (1.0 + np.exp(-a*(x-b)))
popt, pcov = curve_fit(fsigmoid, xdata, ydata, method='dogbox', bounds=([0., 600.],[0.01, 1200.]))
</code></pre>
<p>我有输出</p>
<pre><code>[7.27380294e-03 1.07431197e+03]
</code></pre>
<p>曲线看起来像</p>
<p><a href="https://i.stack.imgur.com/xUzlK.png" rel="noreferrer"><img src="https://i.stack.imgur.com/xUzlK.png" alt="enter image description here"/></a></p>
<p>(400,0)处的第一个点被删除为无用。你可以加上,虽然结果不会有太大变化。。。</p>
<p>更新</p>
<p>注意,边界设置为([低a,低b],[高a,高b]),所以我要求刻度在[0…0.01]范围内,位置在[600…1200]范围内</p>