微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何获得半对数曲线以正确拟合数据?

如何解决如何获得半对数曲线以正确拟合数据?

我试图在 y 轴上的半对数图上拟合一些数据。我的Python代码如下:

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

x1 = [1,2,3,4,5,6,8,9,11,13,14,15,16]
y1 = [18,12,7,1,1]
y = y1
x = x1

def s_plot(x,m,c):
    return np.power(10,(x*m+c))
pars,cov = curve_fit(f=s_plot,xdata=x,ydata=y,p0=[1,1 ])

在绘制数据和拟合曲线时,我得到一条直线而不是半对数图,如下所示。

如何获得合适的半对数曲线拟合?

current output with straight line

解决方法

结果 curve_fit 在数学上是正确的。您的代码也没有任何问题。看看下面的两张图片: enter image description here

如果将上面的图与此图进行比较: enter image description here

对于拟合:x值越大,越接近于零(渐近线为零) 对于实际数据:它保持不变为 1。

虽然在正常缩放下绘图拟合看起来完全正确(因为无论如何差异),但对数缩放的情况并非如此(这正是使用的要点和目的对数刻度,以查明差异)。

所以基本上如果你想有一个更“合适”的拟合,拟合函数本身就需要改进。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。