我一直在尝试将一些参数拟合到曲线上,但我需要对其中一个常量施加约束,我不知道如何使代码确认约束并用正确的值拟合值。我将尝试编写一个简单的示例代码来说明我的问题:
def chi(paras):
mpi=paras[0:32]
cf=paras[32]
chif=0
for i in range(32):
chif+=((fpi-f(mpi,cf))/error)**2
return chif
m=Minuit.from_array_func(chi,parin,parstep,name=parname,errordef=1)
fmin,param=m.migrad(ncall=10000)
print(m.values)
例如,我想要cf<=np.日志(mpi**2)。我试过例如:
if cf<=np.log(mpi**2):
chif+=((fpi-f(mpi,cf))/error)**2
else:
pass
但它没有起作用。在代码中是否有这样的约束?你知道吗
对于这类约束,通常都有简单的参数变换解。 在这种情况下,您可以定义:
参数
s
允许在-np.inf
到np.inf
之间变化,而内部cf
可以在-np.inf
到a = np.log( sum ( mpi**2 ) )
之间变化。要获得cf
及其错误,您需要进行标准错误传播。你知道吗相关问题 更多 >
编程相关推荐