gpt4 book ai didi

python - 如何在Python中进行curve_fit

转载 作者:行者123 更新时间:2023-11-30 23:25:10 25 4
gpt4 key购买 nike

我需要使用 y = x/(a + x) 对一组数据进行曲线拟合,其中 a 是我需要从本次练习中获取的参数。

import numpy as np 
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit

x = [1, 2, 7, 10, 20, 70, 200, 1000]
y = [0, 0, 15.3, 34.6, 49.3, 82.6, 100]
def fit(x, a):
return x/(a+x)
par, con = curve_fit(fit, x, y)
plt.plot(x, fit(x, par[0]))
plt.show()

使用这个我感到有些恶心。甚至根本不适合。

如果我这样尝试:

def fit(x, a, b):
return b*x/(a+x)

我得到了适合,但它没有圆角。这只是直线。我做错了什么?

最佳答案

请注意,您的 xintlist,在 Python 中除法默认为整数除法,这不是你想要的。

因此,进行一些更改即可使其工作,以第二个函数为例,您的第一个函数不会很好地适应,因为当 x->inf: 时它的限制为 1:

def fit(x, a, b):
return b*x*1./(a+x)
A, B=curve_fit(fit, x, y)[0]
plt.plot(x, fit(x, A, B))
plt.plot(x, y, 'r+')
plt.savefig('temp.png')

enter image description here

它是一组直线,因为您仅在这些 x 值处计算 y,以获得曲线:将绘图调用更改为 plt.plot (np.linspace(0,200,100),适合(np.linspace(0,200,100),A,B)) enter image description here

关于python - 如何在Python中进行curve_fit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23113318/

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