我可以选择为sio.curve_fit添加边界。有没有一种扩展这个边界特性的方法,涉及到参数的函数?换句话说,假设我有一个带有两个或更多未知常数的任意函数。然后也让我们假设我知道所有这些常数的总和小于10。我是否可以实现这个最后的限制?
import numpy as np
import scipy.optimize as sio
def f(x, a, b, c):
return a*x**2 + b*x + c
x = np.linspace(0, 100, 101)
y = 2*x**2 + 3*x + 4
popt, pcov = sio.curve_fit(f, x, y, \
bounds = [(0, 0, 0), (10 - b - c, 10 - a - c, 10 - a - b)]) # a + b + c < 10
现在,这显然会出错,但我认为它有助于表达观点。我是否可以将涉及参数的约束函数并入到曲线拟合中呢?
谢谢!