我需要进行线性近似。但是它需要在对数范围内。
这是我的gnuplot脚本:
f(x)= a*x+b
fit f(x) "d0.dat" via a,b
set logscale x
set logscale y
plot "d0.dat" with points lt rgb "#ff0000" title "Points", \
f(x) with lines lt rgb "#ff00ff" title "Approximation"
显然,近似是错误的。任何人都可以帮我解决它。我在google中找不到任何东西。
答案 0 :(得分:4)
Gnuplot正确地将您的数据拟合到您提供的功能 - 直线。
问题在于,使用y轴的对数刻度不会缩放数据 - 只是如何绘制数据。
尝试使其符合幂律:
f(x)= a*x**b
fit f(x) "d0.dat" via a,b
set logscale x
set logscale y
plot "d0.dat" with points lt rgb "#ff0000" title "Points", \
f(x) with lines lt rgb "#ff00ff" title "Approximation"
答案 1 :(得分:1)
我实际上建议直接适合logscale:
name
当(几个)大x的值不合适时,差异是明显的。否则成本函数会受到太大影响(因为x和y呈指数增长)。