使用gnuplot将椭圆拟合到数据

问题描述

我需要根据实验室使用万用表收集的数据绘制两个电极之间的等电位线图,我有一个(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  -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):

这些点不是接近椭圆,而是在双曲线上。 任何一种拟合方法都会导致不良结果,如果您想将椭圆拟合到双曲线,甚至近似于椭圆。

enter image description here

如果物理现象明确暗示该曲线是椭圆,则可以将椭圆拟合到数据。但是,不要为实验点和椭圆之间的大偏差感到惊讶。必须接受它,或者使用更准确,更大量的测量再试一次。

有关信息:

上面使用的fittig方法对椭圆,双曲线和抛物线有效。它适用于任意数量的点(超过四个)。这样就可以查看那些曲线中的哪一条最适合最佳拟合。请参见https://fr.scribd.com/doc/14819165/Regressions-coniques-quadriques-circulaire-spherique中的第16页。以上表示法与本文中的表示法一致。