如何在 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 函数。
没有你的数据,我无法测试这个,但我相信它会给你你想要的。
我有一个这样的等式:
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 函数。
没有你的数据,我无法测试这个,但我相信它会给你你想要的。