我有一个类似的等式:
1/sqrt(x) = A*log(y*sqrt(x)) + B
我想使用gnuplot将它与实验中的数据相匹配,在'niku.txt'文件中,它包含我的x和y点数据
在gnuplot中我把它写成:
set xrange [2000 : 900000]
g(x) = A*x + B
fit g(x) 'niku.txt' u 1:(log($1*sqrt($2))) via A, B
1/(g(x)*g(x)) w l ls 5 title "growth"
set logscale x
set format x "10^%T"
plot 'niku.txt' u 1:2 w p ls 3 title "Niku " , \
1/(g(x)*g(x)) w l ls 5 title "karman"
但这不能正常工作,有人可以告诉我在这里犯了什么错误。
答案 0 :(得分:1)
使用当前命令,它会找到A和B的值,以便
A*x + B = log(x*sqrt(y))
您可以使用两个变量的函数
f(x,y) = 1/sqrt(x) - A*log(y*sqrt(x)) - B
然后对于曲线上的一个点,我们应该有f(x,y)= 0,所以我们可以适应这个
fit f(x,y) 'niku.txt' u 1:2:(0) via A,B
现在,如果你真的需要绘制这个,我们需要用x来解决,
y = exp((1/sqrt(x) - B)/A)/sqrt(x)
因此,如果我们让g(x) = exp((1/sqrt(x) - B)/A)/sqrt(x)
,我们可以做
plot 'niku.txt' u 1:2 w p ls 3 title "Niku " , \
g(x) w l ls 5 title "karman"
或者,你也可以适应这个g函数。
没有你的数据,我无法测试,但我相信它会给你你想要的东西。