【问题标题】:How to round polynomial coefficients when using the polyfit() function?使用 polyfit() 函数时如何舍入多项式系数?
【发布时间】:2018-03-31 23:32:09
【问题描述】:

我使用polyfit() 函数将多项式拟合到列表data 中的点:

import numpy as np

data = [1,4,5,7,8,11,14,15,16,19]

x = np.arange(0,len(data))
y = np.array(data)
z = np.polyfit(x,y,2)

print (z)
print ("{0}x^2 + {1}x + {2}".format(*z))

输出:

[0.00378788  1.90530303  1.31818182]
0.003787878787878751x^2 + 1.9053030303030298x + 1.3181818181818175

如何使用四舍五入的系数(例如小数点后三位)来拟合点?例如,获取:

[0.004  1.905  1.318]
0.004x^2 + 1.905x + 1.318

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    polyfit 方法中没有用于舍入的选项。 IIUC,你可以在申请polyfit后使用round

    import numpy as np
    
    data = [1,4,5,7,8,11,14,15,16,19]
    
    x = np.arange(0,len(data))
    y = np.array(data)
    z = np.polyfit(x,y,2).round(decimals=3)
    array([0.004, 1.905, 1.318])
    

    对于恰好介于四舍五入的十进制值之间的值,NumPy 舍入到最接近的偶数值。 因此 1.5 和 2.5 舍入到 2.0,- 0.5 和 0.5 舍入到 0.0 等。由于 IEEE 浮点标准 [R9] 中小数部分的不精确表示以及按 10 的幂缩放时引入的错误,结果也可能令人惊讶。 -- 引用自numpy.around

    【讨论】:

    • 谢谢。而上述方法在找到曲线后或在搜索曲线时对系数进行四舍五入?
    • @TomaszPrzemski 拟合后。 np.polyfit(x,y,2).round(decimals=3) 等价于 np.round(np.polyfit(x,y,2), decimals=3)
    猜你喜欢
    • 2020-05-23
    • 2021-07-24
    • 1970-01-01
    • 2010-12-08
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    • 2020-08-31
    相关资源
    最近更新 更多