您可以根据 N 定义函数,例如:
fstr(N) = sprintf('f%d(x) = a%d*x**2 + b%d*x + c%d', N, N, N, N)
eval(fstr(1))
这定义了函数f1(x) = a1*x**2 + b1*x + c1
。对于拟合函数,您必须执行相同的操作:
fitstr(N) = sprintf('fit ''filename%d.txt'' f%d(x) via a%d,b%d,c%d', N, N, N, N, N)
然后你首先做所有的配合:
do for [i=0:N] {
eval(fstr(i))
eval(fitstr(i))
}
然后绘制每个数据文件with points
以及相应的拟合with lines
。为了将所有图绘制在一张图中,您必须使用一个plot
命令并用逗号分隔图。
但是为了将拟合和数据分组到键中,您可以使用replot
添加绘图。并且你必须使用macros
为了得到图中正确的函数,eval
在这里不起作用:
set style data points
set style func lines
plot 'filename0.txt' lt 1, f0(x) lt 1
set macros
do for [i=1:N] {
f = sprintf('f%d(x)', i)
replot sprintf('filename%d.txt', i) lt (i+1), @f lt (i+1)
}
只需将所有内容放在一个文件中并使用它运行 gnuplot 即可。