【问题标题】:polynomial fitting in a semilogy plot in pythonpython中符号图中的多项式拟合
【发布时间】:2018-03-30 10:05:10
【问题描述】:

我正在尝试让多项式适合我的数据。目前,我正在使用 numpy 的 polyfit 来获得对数日志图中的最佳拟合。但我的目标是让数据适合符号图。我的代码如下所示:

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

l = [ 0.006,   0.01,    0.014,   0.024,   0.0346,  0.049,   0.0535,  0.0736,  0.11  ]
f = [5.3375903383330048, 60.531976422513054, 89.111502526131474, 47.132498501584969, 17.447001214543118, 5.2583622688081455, 3.7779565652126865, 1.0621247249682186, 0.1922152085619766]


logx = np.log(l)
logy = np.log(f)
coeffs = np.polyfit(logx,logy,deg=3)
poly = np.poly1d(coeffs)
yfit = lambda x: np.exp(poly(np.log(x)))
plt.loglog(l,yfit(l), ':')




plt.loglog(l,f, 'o')
plt.show()

如果您建议我必须进行哪些更改以获得符号学最佳拟合曲线,我将不胜感激。另外如果python中还有其他包,也请注明。

【问题讨论】:

  • 当我在获取日志之前查看原始数据的散点图时,在我看来,第一个数据点似乎是一个可能的强异常值。记录日志可能会掩盖这一点,值得快速检查以验证此数据点的值。
  • 这是一个原始的观察数据,在符号图中看起来完全符合预期。这个 loglog 情节没有揭示其真正的意义,这就是为什么我需要一个符号学拟合

标签: python numpy curve-fitting


【解决方案1】:

我认为是这样的。

# log sacle    
x2 = np.linspace(np.min(l), np.max(l), 1000)
y2log = poly(np.log(x2))
plt.loglog(x2,np.exp(y2log), ':')

plt.loglog(l,f, 'o')
plt.show()

【讨论】:

    猜你喜欢
    • 2021-03-04
    • 2019-10-22
    • 2021-06-17
    • 1970-01-01
    • 2020-11-17
    • 2012-08-05
    • 2016-07-04
    • 2014-07-12
    • 1970-01-01
    相关资源
    最近更新 更多