Python中6+变量复杂函数的顺序曲线拟合

Python中6+变量复杂函数的顺序曲线拟合,python,recursion,lambda,curve-fitting,sequential,Python,Recursion,Lambda,Curve Fitting,Sequential,我正面临一个重大问题,就是如何将函数与数据相匹配。为了解释这项任务,这里有一个带有早期拟合版本的数据图: 似乎一个人需要至少10个声誉来发布一张照片,所以这里有一个链接到图片。。。 -->此处0中的图片与拟合无关,可以忽略。重要的是只有S曲线及其两侧的两个坡度 我使用python和curve_fit来拟合函数。 我现在要做的是拟合一个如下所示的函数: f(x) = s*g(x) + t*(1-h(x)) 与: 但是因为这个函数总共有10个变量,所以它非常不稳定。 现在我用曲线拟合来拟合它: d

我正面临一个重大问题,就是如何将函数与数据相匹配。为了解释这项任务,这里有一个带有早期拟合版本的数据图:

似乎一个人需要至少10个声誉来发布一张照片,所以这里有一个链接到图片。。。 -->此处0中的图片与拟合无关,可以忽略。重要的是只有S曲线及其两侧的两个坡度

我使用python和curve_fit来拟合函数。 我现在要做的是拟合一个如下所示的函数:

f(x) = s*g(x) + t*(1-h(x))
与:

但是因为这个函数总共有10个变量,所以它非常不稳定。 现在我用曲线拟合来拟合它:

def function(x, a1, a2, b1, b1, m1, m2, n1, n2, s, t):
    g = (m1*x + n1) / (1-10^(a1*x - b1))
    h = (m2*x + n2) / (1-10^(-a2*x - b2))
    f = s*g + t*(1-h)
return f 
...
popt, pcov = curve_fit(function, xdata, ydata, maxfev=100000)
现在,我的实际问题是:是否有可能将这些函数单独拟合? 例如:

1: fit left slope. m1*x + n1
2: fit right slope. m2*x + n2
3: fit g(x) according to the pre-fitted slopes
4: fit h(x) according to the pre-fitted slopes
5: fit f(x) 
输入这个,我只是想到了一些递归,但我不知道如何将一个步骤的预先固定参数传递到下一个步骤,并保持固定,这样每次曲线拟合只需要拟合很少的变量


如果能在这个问题上得到任何帮助,我将不胜感激。也许有人知道一种完全不同的方法,或者任何我可以做得更好的方法。

但是现在当你最终返回你的外汇时,它不是根据方程gx和hx的组合给出了最终拟合曲线吗??如果这是你想要的,你也可以试试看。它确实返回了正确的函数,但是拟合有点不稳定,有8个或10个参数。。。所以我想我可以告诉curve_fit以某种方式修正一些参数,然后只拟合,比如说一次三个。
1: fit left slope. m1*x + n1
2: fit right slope. m2*x + n2
3: fit g(x) according to the pre-fitted slopes
4: fit h(x) according to the pre-fitted slopes
5: fit f(x)