gpt4 book ai didi

python - 具有自适应参数的 numpy.polyfit

转载 作者:太空狗 更新时间:2023-10-30 02:31:47 25 4
gpt4 key购买 nike

关于此:polynomial equation parameters我得到平方函数的 3 个参数 y = a*x² + b*x + c 现在我只想得到描述我的平方函数的 first 参数函数 y = a*x²。换句话说:我想设置 b=c=0 并获取 a 的适配参数。如果我理解正确,polyfit 无法执行此操作。

最佳答案

这可以通过 numpy.linalg.lstsq 来完成.为了解释如何使用它,最简单的方法可能是展示如何“手动”执行标准的二阶 polyfit。假设您有测量向量 xy,您首先构建一个所谓的 design matrix M 像这样:

M = np.column_stack((x**2, x, np.ones_like(x)))

之后,您可以使用 lstsq 获得常用系数作为方程 M * k = y 的最小二乘解,如下所示:

k, _, _, _ = np.linalg.lstsq(M, y)

其中 k 是具有常用系数的列向量 [a, b, c]。请注意,lstsq 返回一些其他参数,您可以忽略这些参数。这是一个非常强大的技巧,它允许您将 y 拟合到您放入设计矩阵中的列的任何线性组合。它可以用于例如对于 z = a * x + b * y 类型的 2D 拟合(参见例如 this example ,我在 Matlab 中使用了相同的技巧),或者像您的问题中那样缺少系数的 polyfits。

在您的情况下,设计矩阵只是一个包含 x**2 的列。快速示例:

import numpy as np
import matplotlib.pylab as plt

# generate some noisy data
x = np.arange(1000)
y = 0.0001234 * x**2 + 3*np.random.randn(len(x))

# do fit
M = np.column_stack((x**2,)) # construct design matrix
k, _, _, _ = np.linalg.lstsq(M, y) # least-square fit of M * k = y

# quick plot
plt.plot(x, y, '.', x, k*x**2, 'r', linewidth=3)
plt.legend(('measurement', 'fit'), loc=2)
plt.title('best fit: y = {:.8f} * x**2'.format(k[0]))
plt.show()

结果: enter image description here

关于python - 具有自适应参数的 numpy.polyfit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22126229/

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