gpt4 book ai didi

python非线性最小二乘拟合

转载 作者:太空狗 更新时间:2023-10-29 17:00:37 44 4
gpt4 key购买 nike

就我的问题所涉及的数学而言,我有点超出了我的理解范围,所以对于任何不正确的命名,我深表歉意。

我正在考虑使用 scipy 函数 leastsq,但不确定它是否是正确的函数。我有以下等式:

eq = lambda PLP,p0,l0,kd : 0.5*(-1-((p0+l0)/kd) + np.sqrt(4*(l0/kd)+(((l0-p0)/kd)-1)**2))

除了 kd (PLP,p0,l0),我有所有项的数据(8 组)。我需要通过上述等式的非线性回归找到 kd 的值。从我读过的例子来看,leastsq 似乎不允许输入数据来获得我需要的输出。

谢谢你的帮助

最佳答案

这是如何使用 scipy.optimize.leastsq 的简单示例:

import numpy as np
import scipy.optimize as optimize
import matplotlib.pylab as plt

def func(kd,p0,l0):
return 0.5*(-1-((p0+l0)/kd) + np.sqrt(4*(l0/kd)+(((l0-p0)/kd)-1)**2))

残差 的平方和是我们试图最小化的kd 的函数:

def residuals(kd,p0,l0,PLP):
return PLP - func(kd,p0,l0)

这里我生成了一些随机数据。你会想在这里加载你的真实数据。

N=1000
kd_guess=3.5 # <-- You have to supply a guess for kd
p0 = np.linspace(0,10,N)
l0 = np.linspace(0,10,N)
PLP = func(kd_guess,p0,l0)+(np.random.random(N)-0.5)*0.1

kd,cov,infodict,mesg,ier = optimize.leastsq(
residuals,kd_guess,args=(p0,l0,PLP),full_output=True,warning=True)

print(kd)

产生类似的东西

3.49914274899

这是 optimize.leastsq 找到的 kd 的最佳拟合值。

这里我们使用刚刚找到的 kd 的值生成 PLP 的值:

PLP_fit=func(kd,p0,l0)

下面是 PLPp0 的关系图。蓝线来自数据,红线是最佳拟合曲线。

plt.plot(p0,PLP,'-b',p0,PLP_fit,'-r')
plt.show()

enter image description here

关于python非线性最小二乘拟合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7165201/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com