如何在 Gnuplot 中绘制复杂方程式

How to plot a complex equation in Gnuplot

我有一个这样的等式:

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(*sqrt())) 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"

但这不能正常工作,谁能告诉我这里犯了什么错误。

谢谢

使用您当前的命令,它正在查找 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 函数。

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