【发布时间】:2018-10-20 22:04:18
【问题描述】:
我正在尝试使用用于非线性函数的 LMFIT 库将函数拟合到 Python 中的某些数据。这很容易,但我想知道是否有办法限制拟合值的某些属性。
例如,在下面的代码中,我拟合我的数据以优化值 A、B 和 C。但我还希望 A 与 B 的比率为 pi/4 乘以某个整数。有没有办法施加这种限制?
from lmfit import Model
import numpy
from numpy import cos, sin, pi, linspace
上传数据:
data = numpy.genfromtxt('data')
axis = numpy.genfromtxt('axis')
定义函数:
def func(x, A, B, C):
return (A*cos(x)*cos(x) + B*sin(x)*sin(x) + 2*C*sin(x)*cos(x))**2
我必须对我的参数进行初步猜测:
a = 0.009
b = 0.3
c = 0.3
然后创建一个模型来适应我的功能:
func_model = Model(func)
用初始猜测(A = a,B = b,C = c)将函数拟合到输入数据:
result = func_model.fit(data, x=axis, A = a, B = b, C = c)
fitted_vals = result.best_values #dictionary structure
Afit = fitted_vals['A']
Bfit = fitted_vals['B']
Cfit = fitted_vals['C']
如何确定 Afit 与 Bfit 的比值是 pi/4 乘以某个整数?
如果不可能,是否有人知道具有此功能的软件?
【问题讨论】:
标签: python data-fitting model-fitting lmfit