繁体   English   中英

用scipy的curve_fit同时拟合两个函数

[英]Fitting two functions simultaniously with scipy's curve_fit

假设我已经定义了自变量x两个实值函数和以下形式的一些参数:

  • f(x, parameters)
  • g(x, parameters)

(或者:一个返回实数二元组的函数, (f(x),g(x)) )。

我现在想使用 scipy 的curve_fit将两条曲线同时拟合到两个数据数组fdatagdata ,以及它们相关的错误: fdata-errgdata-err (即找到适合数据的最佳参数)。 这可能吗?

我知道我可以定义一个新函数,它是两个函数及其各自测量值之间差异的总和,但是 python 的最小化函数似乎没有产生或解释错误,这对我的目的非常重要。

我只需要做一些类似的事情,并在没有定义自定义最小二乘函数的情况下找到了替代方法。

一种方法是定义另一个函数 h(x, parameters),它只是 f() 和 g() 的串联。

import numpy as np
def h(x, params):
  fr = f(x, params)
  gr = g(x, params)

  hr = np.hstack(fr, gr)

  return hr

同样,您必须连接 f() 和 g() 的 ydata。

fdata = [..] ## value of ydata of f
gdata = [..] ## value of ydata of g

hdata = np.hstack(fdata, gdata)

同样,xdata 也必须重复。

xdata_new = np.hstack(xdata, xdata)

现在您已准备好调用curve_fit()

import scipy.optimize as optimization

popt, pcov = optimization.curve_fit(f=h, xdata=xdata_new, ydata=ydata)

print(popt)

注意:您可能需要根据您定义 f() 和 g() 的方式更改一些内容。 但基本结构应该成立。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM