You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于三组数据点求解逻辑函数参数L、k、t0的可行性

能否用三个数据点唯一确定Sigmoid函数的参数L、k、t0?

咱们直接拆解这个问题:你手里的是标准的逻辑增长(Sigmoid)函数,三个数据点对应三个未知参数,看起来是「方程数=未知数」的匹配情况,但实际能不能唯一确定参数,得结合函数特性和方程可解性来分析,数值解法的可行性也得具体说清楚。

一、理论上是否存在唯一解?

先把三个数据点代入函数$y = \frac{L}{1+\exp\left(-k(t-t_0)\right)}$,得到三个方程:
$$
\begin{cases}
896.5 = \frac{L}{1+\exp(-k(1-t_0))} \
1814.0 = \frac{L}{1+\exp(-k(2-t_0))} \
1878.5 = \frac{L}{1+\exp(-k(3-t_0))}
\end{cases}
$$

步骤1:方程线性化简化

我们可以通过变量替换和对数变换把非线性方程转化为半线性形式:
令$z_i = k(t_i - t_0) = kt_i - kt_0$,设$a=k$,$b=-kt_0$,则$z_i = at_i + b$。
对原函数变形:
$$1 + e^{-z} = \frac{L}{y} \implies e^{-z} = \frac{L-y}{y} \implies -z = \ln\left(\frac{L-y}{y}\right) \implies z = \ln\left(\frac{y}{L-y}\right)$$

代入三个点后得到:
$$
\begin{cases}
\ln\left(\frac{896.5}{L-896.5}\right) = a + b \
\ln\left(\frac{1814}{L-1814}\right) = 2a + b \
\ln\left(\frac{1878.5}{L-1878.5}\right) = 3a + b
\end{cases}
$$

步骤2:消元得到关于L的方程

用第二个方程减第一个、第三个方程减第二个,消去$b$,得到两个都等于$a$的式子:
$$
\ln\left(\frac{1814(L-896.5)}{896.5(L-1814)}\right) = \ln\left(\frac{1878.5(L-1814)}{1814(L-1878.5)}\right)
$$

去掉对数后交叉相乘,整理成二次多项式方程(两边展开后最高次为二次):
$$1814^2 (L - 896.5)(L - 1878.5) = 896.5 \times 1878.5 (L - 1814)^2$$

步骤3:结合函数意义筛选解

Sigmoid函数中,$L$是$t\to+\infty$时$y$的渐近上限,因此必须满足$L > 1878.5$(三个点中最大的$y$值)。解这个二次方程后,只会有0个、1个或2个符合该条件的实根:

  • 如果只有1个符合条件的$L$,代入后可唯一算出$a$和$b$,进而得到$k=a$、$t_0=-b/a$,此时参数唯一;
  • 如果有2个符合条件的$L$,则对应两组参数解,此时参数不唯一。

通过粗略估算(比如代入$L=1900$验证),可以确定存在符合条件的实根,大概率有唯一解。

二、数值解法是否可行?

完全可行,甚至是解决这类问题的常用手段,推荐两种思路:

  • 非线性优化法:直接把问题转化为最小二乘拟合(即使是三个点的插值问题,也能用拟合思路处理),用牛顿-拉夫逊法、Levenberg-Marquardt法等迭代求解。比如用Python的scipy.optimize.curve_fit,直接传入Sigmoid函数和数据点,就能快速得到参数估计值;
  • 迭代估计法:先利用后两个点接近$L$的特性,给出$L$的初始值(比如1900),代入线性化后的式子算出$a$和$b$,再反过来修正$L$,重复迭代直到收敛。

需要注意的是,第三个点$y=1878.5$已经很接近$L$,此时$k$的估计敏感度会略有下降,但数值解法仍然能给出满足方程的参数值。

内容的提问来源于stack exchange,提问作者Thomas Moore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:35:33