【问题标题】:Fitting exponential function in GNUPLOT在 GNUPLOT 中拟合指数函数
【发布时间】:2021-11-30 11:06:36
【问题描述】:

我在拟合指数函数时遇到问题 f(x)= Aexp(-bx)sin(2pi*x/T + phi) + S

data

它一直是一条直线,然后我尝试给它一些 A、b、T、phi、S 的值,它变得更接近数据但仍然很糟糕

【问题讨论】:

  • 欢迎来到 StackOverflow!无法访问数据。请在 StackOverflow 中提供数据。

标签: gnuplot exponential data-fitting


【解决方案1】:

多维拟合非常重要,算法经常在这一点上失败。尝试通过给出更好的初始猜测来帮助算法。您也可以尝试将变量 1 与 1 进行拟合,例如,首先是平均值 S,然后是周期长度,然后是这 2 个,等等。

还请提供您如何尝试适应该功能以及您使用的 Gnuplot 版本。如果第 3 列由 0 组成,并且您将其作为错误值提供给 Gnuplot v4 中的 fit,则 fit 完全失败。

this given set of data 上,使用错误的猜测,拟合失败。但更好的猜测可能会成功:

f(x)=A*exp(-b*x)*sin(2.*pi*x/T+phi)+S

    A = 40.
    b = 1/500.
    T = 400.
    phi = 1.
    S = 170.

f_bad_guess(x) = 40. * exp(-x/500.) * sin(2.*pi*x/150+3.) + 170.
f_good_guess(x) = 40. * exp(-x/500.) * sin(2.*pi*x/400+1.) + 170.

fit f(x) "data.txt" via A,b,T,phi,S

p "data.txt" t "data", f(x) t "fitted function", f_good_guess(x) t "good initial guess set manually", f_bad_guess(x) t "bad initial guess set manually"

【讨论】:

    【解决方案2】:

    非线性回归演算是从“猜测的”参数初始值开始迭代的。特别是当模型涉及正弦函数时,关键是要从猜测值开始,该值与未知的正确值足够接近。

    您的困难可能是猜测足够好的值(或者软件难以尝试一些足够好的初始值)。

    本文解释了一种非迭代且不需要初始值的非常规方法:https://fr.scribd.com/doc/14674814/Regressions-et-equations-integrales。该方法在本案中的应用如下:

    如果需要更高的准确性,则必须尝试非线性回归(使用可用的软件)。使用上面找到的参数的数值作为初始值会增加良好收敛的机会。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-11
      • 1970-01-01
      • 2014-09-30
      • 2017-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多