【发布时间】:2015-07-31 15:45:26
【问题描述】:
当使用scipy.optimize中的curve_fit在python中拟合一些数据时,首先定义拟合函数(例如二阶多项式)如下:
def f(x, a, b): return a*x**2+b*x- 然后进行拟合
popt, pcov = curve_fit(f,x,y)
但现在的问题是,如何定义第 1 点中的函数。如果函数包含积分(或离散和),例如:
仍然给出了 x 和 f(x) 的实验数据,所以第 2 点会是相似的,我想一旦我可以在 python 中定义 f(x)。顺便说一句,我忘了说这里假设 g(t) 有一个众所周知的形式,并且包含拟合参数,即多项式示例中给出的参数,如 a 和 b。任何帮助深表感谢。这个问题真的应该是一个通用的问题,帖子中使用的函数只是随机示例。
【问题讨论】:
-
显而易见的答案是:您需要一种方法来评估该积分,要么通过找到封闭形式的解,要么通过使用数值求积。对此没有通用的解决方案。
-
@cfh 哦,我明白了,这是真的,但如果它没有任何封闭形式的解决方案,那么数值求积究竟意味着什么?不是假设所有参数都应该知道吗?
-
是的,但是在调用
f时,您知道所有参数,因为它们是作为参数传递的。 -
在您展示的简单多项式示例中不完全一样吗?有两个参数,
a和b,您试图拟合它们,但您在公式a*x**2+b*x中使用它们。 -
@cfh 当然可以,但在那个例子中我不必进行数值积分,所以我不必在拟合之前知道 a 和 b。但是按照你的“首先评估积分”的建议,我必须在拟合之前知道 a 和 b (以数字方式进行积分),我没有......
标签: python scipy integral data-fitting