如何解决如何通过拟合包含数值计算整数的函数来优化一组给定数据的参数?
我想拟合一个函数 f(x; k_1,k_2) 其中 f 是一个函数,它包含一个数值计算的整数,参数 k_1 和 k_2,我想针对一组给定的数据进行优化。
下面是函数的定义:
下面是函数 f(x) 对于 k_1 和 k_2 的任意固定值的样子:
def dgdx(g,x):
k_1 = 1e7
k_2 = 10
return k_1*g**(1/2)-k_2*g
g_0 = 1e10
x = np.linspace(0,1,101)
g = odeint(dgdx,g_0,x)
a=10
b=100
f = a*(g)**(1/2)+b
plt.plot(x,f,'-')
我的问题在标题中。为了解决它,我写了下面的代码,但它导致内核死亡:
def dgdx(x,k_1,k_2):
return k_1*(g(x,k_2))**(1/2)-k_2*g(x,k_2)
def g(x,k_2):
return quad(dgdx,args=(k_1,k_2))
def f(x,k_2):
a=10
b=100
return a*(g(x,k_2))**(1/2)+b
x_given = np.linspace(0,101)
y_given = f(x_given,1e7,10)+0.2*np.random.normal(size=len(x_given))
params,extras = curve_fit(f,x_given,y_given)
print("k_1=%g,k_2=%g" % (params[0],params[1]))
plt.plot(x_given,y_given,'o')
plt.plot(x_given,f(x,params[0],params[1]))
def dgdx(x,k_2):
return odeint(dgdx(x,k_2),x)
def f(x,params[1]))
解决方法
库 lmfit 支持拟合 ODE。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。