如何在Gnuplot中绘制复杂方程

时间:2016-03-11 10:40:10

标签: gnuplot data-fitting

我有一个类似的等式:

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"

但这不能正常工作,有人可以告诉我在这里犯了什么错误。

plot I obtained, (x,y) plot 谢谢

1 个答案:

答案 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函数。

没有你的数据,我无法测试,但我相信它会给你你想要的东西。