如何利用scipy curve_fit求解已知参数值的方程

gt0wga4j  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(169)

我尝试使用scipy curve_fit来求解一个方程,以获得一些未知参数的估计值。我有自变量(x)和因变量(y)以及一个已知的参数(e),现在我需要找到a,b,c和d的估计值。
我使用了下面的代码,并不确定a,B,c和d是否是使用这种方法的“正确”估计值。

import pandas as pd
import numpy as np
from scipy.optimize import curve_fit

np.random.seed(0)

x = np.random.randint(0, 100, 100) # known independent variable
y = np.random.randint(0, 100, 100) # known dependent variable
e = np.random.randint(0, 100, 100) # know parameter 

def cubic(x, a, b, c, d, e ):
    return a * x**3 + b * x**2 + c * x + d + e

(a, b, c, d, e), _ = curve_fit(cubic, x, y)

print((a, b, c, d ))
(0.00010514483118750917, -0.00810393624233341, -0.10316706291775657, -24200081.18055175)
u5rb5r59

u5rb5r591#

创建一个只接受a, b, c, d并传入固定值e的函数:

(a, b, c, d), _ = curve_fit(lambda x, a, b, c, d: cubic(x, a, b, c, d, e), x, y)

通过使用*args和一个初始猜测,可以使事情更明确一些:

def func(*args):
    return cubic(*args, e)
(a, b, c, d), _ = curve_fit(func, x, y, p0=np.zeros(4))

相关问题