使用gnuplot将椭圆拟合到数据
我需要画一张两个电极之间的等电位线的图表,基于实验室用万用表收集的数据,我有一个(x,y)坐标的集合,除以在其中测得的电压 电压为3,07 V的点使用gnuplot将椭圆拟合到数据,gnuplot,ellipse,data-fitting,Gnuplot,Ellipse,Data Fitting,我需要画一张两个电极之间的等电位线的图表,基于实验室用万用表收集的数据,我有一个(x,y)坐标的集合,除以在其中测得的电压 电压为3,07 V的点 2.0 0.0 2.3 2.0 3.1 3.9 2.3 -2.0 3.1 -4.0 电压为3.93 v的点 0.0 0.0 0.1 1.9 0.2 2.9 0.1 -1.0 0.2 -2.0 电压为4.98 V的点 -2.0 0.0 -2.3 2.0 -2.4 2.9 -2.3 -2.0 -2.5
2.0 0.0
2.3 2.0
3.1 3.9
2.3 -2.0
3.1 -4.0
电压为3.93 v的点
0.0 0.0
0.1 1.9
0.2 2.9
0.1 -1.0
0.2 -2.0
电压为4.98 V的点
-2.0 0.0
-2.3 2.0
-2.4 2.9
-2.3 -2.0
-2.5 -3.0
我曾尝试以参数形式编写省略号,并使用“fit”命令拟合椭圆,但结果很糟糕
set grid
set parametric
set trange [0:2*pi]
fx(t)=a*cos(t)+k
fy(t)=b*sin(t)+h
fit fx(t) '3,07.txt' via a,k
fit fy(t) '3,07.txt' via b,h
plot fx(t),fy(t) notitle ls 7, '3,07.txt' notitle
我认为这与“拟合”算法如何使用最小二乘法有关,因为它接近y而不是x。我说得对吗
我也试着用椭圆的一般方程来拟合它
set grid
f(x, y) = x*x + c1*y*y + d1*x + e1*y + f1
fit f(x, y) '3,07.txt' u 1:2:(0) via ,c1,d1,e1,f1
set contour
set view map
unset surface
set cntrparam levels discrete 0
set isosamples 1000,1000
set table 'contour 1.txt'
splot f(x, y)
set xr [-60:60]
set yr [-60:60]
unset table
unset contour
plot \
'contour 1.txt' lw 2 lc rgb 'red', \
'3,07.txt' w p ps 1.5 lc rgb 'black'
但是结果更糟了,有人知道我还应该尝试什么吗?很容易理解为什么结果不好。例如,考虑第一个数据(情况3.07V): 这些点不接近椭圆,但它们位于双曲线上如果要将椭圆拟合成双曲线,即使是近似拟合,任何拟合方法都会导致糟糕的结果 如果物理现象最终暗示曲线是椭圆,那么当然可以将椭圆拟合到数据中。但是不要对实验点和椭圆之间的大偏差感到惊讶。人们必须接受它,或者用更精确和更多的测量值再试一次 有关信息:
上述拟合方法适用于椭圆、双曲线和抛物线。它适用于任意数量的点(超过四个)。这样可以查看哪一条曲线适合最佳拟合。请参阅中的第16页。上述符号与本文中的符号一致。很容易理解为什么会得到不好的结果。例如,考虑第一个数据(情况3.07V): 这些点不接近椭圆,但它们位于双曲线上如果要将椭圆拟合成双曲线,即使是近似拟合,任何拟合方法都会导致糟糕的结果 如果物理现象最终暗示曲线是椭圆,那么当然可以将椭圆拟合到数据中。但是不要对实验点和椭圆之间的大偏差感到惊讶。人们必须接受它,或者用更精确和更多的测量值再试一次 有关信息: 上述拟合方法适用于椭圆、双曲线和抛物线。它适用于任意数量的点(超过四个)。这样可以查看哪一条曲线适合最佳拟合。请参阅中的第16页。上述符号与本文中的符号一致