gpt4 book ai didi

python - 固定峰抛物线拟合

转载 作者:行者123 更新时间:2023-12-04 07:24:19 25 4
gpt4 key购买 nike

我有一组数据并想对其进行抛物线拟合。这已经适用于 numpy 的 polyfit 函数,如下所示:

fit = np.polyfit(X, y, 2)
formula = np.poly1d(fit)
现在我希望抛物线的峰值在固定的 x 值,并且仍然尽可能使用这个固定的峰值进行拟合。有没有办法做到这一点?
根据我的数据,我知道抛物线将始终向下开放。

最佳答案

我认为这是一个相当困难的问题,因为二阶多项式 (ax^2 + bx + c) 的峰值的 x 坐标总是位于 x = -b/2a 中。
您可以做的一件事是删除 b 项,并在拟合多项式时将其偏移所需的峰值 x 值,如下面的代码。请注意,我使用了 scipy.optimize.curve_fit以适应自定义功能 func .

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

# generating a parabola with noise
np.random.seed(42)
x = np.linspace(-10, 10, 100)
y = 10 -(x-2)**2 + np.random.normal(0, 5, x.shape)

# function to fit
def func(x, a, c):
return a*x**2 + c

# desired x peak value
x_peak = 2

popt, pcov = curve_fit(func, x - x_peak, y)

y_fit = func(x - x_peak, *popt)

# plotting
plt.plot(x, y, 'k.')
plt.plot(x, y_fit)
plt.axvline(x_peak)
plt.show()
输出图像:
enter image description here

关于python - 固定峰抛物线拟合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68303663/

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