【问题标题】:Get the inverse function of a polyfit in numpy在numpy中获取polyfit的反函数
【发布时间】:2017-06-29 23:09:12
【问题描述】:

我通过以下方式将二阶多项式拟合到多个 x/y 点:

poly  = np.polyfit(x, y, 2)

如何在 python 中反转这个函数,以获得对应于特定 y 值的两个 x 值?

【问题讨论】:

标签: python numpy polynomials


【解决方案1】:

按照沃伦的回答

    p = np.poly1d(m1)
    print(p)
    y0 = returns[sr.argmax()]
    x0 = p(y0)
    #x0 = p((p - y0).roots)
    print(x0)
    print(y0)

【讨论】:

    【解决方案2】:

    这是一个示例,说明如何组合您的 poly 我的回答是Inverse function of numpy.polyval()

    首先是一些数据:

    In [44]: x
    Out[44]: array([0, 1, 2, 3, 4, 5, 6, 7])
    
    In [45]: y
    Out[45]: array([ 9,  4,  0, -1, -1,  4,  8, 16])
    

    用多项式拟合数据:

    In [46]: poly = np.polyfit(x, y, 2)
    

    找出多项式的值y0

    In [47]: y0 = 4
    

    为此,创建一个poly1d 对象:

    In [48]: p = np.poly1d(poly)
    

    并找到p - y0的根源:

    In [49]: (p - y0).roots
    Out[49]: array([ 5.21787721,  0.90644711])
    

    检查:

    In [54]: x0 = (p - y0).roots
    
    In [55]: p(x0)
    Out[55]: array([ 4.,  4.])
    

    【讨论】:

    • 我不明白这个答案。你想在 4 处求逆值,结果是 2 个值??
    【解决方案3】:

    np.polyfit 返回最佳拟合多项式的系数,首先是最高的。因此您的poly 包含c2, c1, c0,您必须解决

    .      2
    .   c x + c x + c  = y
    .    2     1     0
    

    可以在很多地方找到解决方案,例如here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-04
      • 1970-01-01
      • 2018-11-24
      • 2021-07-24
      • 1970-01-01
      • 2017-02-01
      • 1970-01-01
      • 2018-07-05
      相关资源
      最近更新 更多