Python 参数拟合

Python 参数拟合,python,parameters,curve-fitting,scipy-optimize,Python,Parameters,Curve Fitting,Scipy Optimize,我编写了以下代码,以便根据提供的最后一行数据拟合下面给出的方程的参数K和c。但是,当将优化返回到方程中时,返回的参数不会给出与方程相同的结果(应该是0.1,但我得到的是0.99)。如何重新调整代码,使其适合参数,使函数基于给定的P和N值范围等于0.1 #import numpy as np #import matplotlib.pyplot as plt from scipy.optimize import curve_fit # this guy will help us fit everyt

我编写了以下代码,以便根据提供的最后一行数据拟合下面给出的方程的参数K和c。但是,当将优化返回到方程中时,返回的参数不会给出与方程相同的结果(应该是0.1,但我得到的是0.99)。如何重新调整代码,使其适合参数,使函数基于给定的P和N值范围等于0.1

#import numpy as np
#import matplotlib.pyplot as plt
from scipy.optimize import curve_fit # this guy will help us fit everything

def func(K, N, P, c):
    return K * N * P**c

# Arrays we want to fit
P_array = [4.9, 3.9, 3.5, 2.6, 2.0]
N_array = [0.4, 0.7, 1.5, 2.8, 7]

#run the curve fitting:
popt, pcov = curve_fit(func, P_array, N_array)

print('our parameter K = {0}, c = {1}'.format(popt[0], popt[1]))
K = popt[0]
c = popt[1]

result = func(K, N_array[0], P_array[0], c)
print('result based on calculated parameters = {0}'.format(result))
    
我们的参数K=0.6543608665770835,c=0.8426663272072936 基于计算参数的结果=0.99880867573


我认为对曲线拟合的一般工作原理存在误解。对于
曲线拟合
,您必须首先正确制定问题。我的意思是,您需要对表单
ydata=func(扩展数据,*params)
有问题,然后确定哪个是
xdata
,哪个是
ydata
,哪个是
params
,另外,如何识别您的
xdata
ydata
,等等的问题是关于SO的主题,更多关于or的主题