擅长:python、mysql、java
<p>fit_模型似乎无法调整数据</p>
<p>我将使fit_模型完美地拟合第一个数据点(0.5,0.40168),并使指数<code>(1 + np.exp((a - x)/b))</code>随着x <code>(1 + np.exp((a + x)/b))</code>的增加而增加,因此fit_模型随着x的减少而减少,与输入数据相同</p>
<pre><code>from numpy import array
import numpy as np
xa= array([0.5, 0.53, 0.56, 0.59, 0.62, 0.65, 0.68, 0.7, 0.72, 0.74,
0.76, 0.78, 0.8, 0.82], dtype=object)
ya= array([0.40168, 0.40103999999999995, 0.40027999999999997, 0.39936,
0.39828, 0.397, 0.39544, 0.39424000000000003, 0.39292, 0.39144, 0.38976, 0.38788, 0.38580000000000003, 0.38348], dtype=object)
from scipy.optimize import curve_fit
def fit_model(x, a, b):
return (1 + np.exp((a + xa[0])/b))/(1 + np.exp((a + x)/b)) + (ya[0] - 1)
popt_an, pcov_an = curve_fit(fit_model, xa, ya, maxfev=100000)
</code></pre>
<p>我得到的解决方案是:</p>
<pre><code>a = -1.47015573
b = 0.17030011
yp = array([0.40168 , 0.40103595, 0.40026891, 0.39935567, 0.39826869,
0.39697541, 0.3954374 , 0.39425403, 0.39292656, 0.39143789,
0.38976906, 0.38789897, 0.38580429, 0.38345918])
</code></pre>