使用 gnuplot 将椭圆拟合到数据
Fitting ellipse to data using 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):
这些点不靠近椭圆,而是在双曲线上。 任何拟合方法 如果想要将椭圆拟合到双曲线,即使是近似的,也会导致不好的结果。
如果物理现象明确表明曲线是椭圆,当然可以用椭圆拟合数据。但是不要对实验点和椭圆之间的巨大偏差感到惊讶。要么接受,要么用更准确、更多的测量再试一次。
参考资料:
上面使用的fittig方法对椭圆、双曲线、抛物线都有效。它适用于任意数量的点(多于四个)。这允许查看这些曲线中的哪一条最适合。请参阅 https://fr.scribd.com/doc/14819165/Regressions-coniques-quadriques-circulaire-spherique 中的第 16 页。以上符号与本文符号一致
我需要根据在实验室使用万用表收集的数据绘制两个电极之间的等电位线图,我有一组 (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):
这些点不靠近椭圆,而是在双曲线上。 任何拟合方法 如果想要将椭圆拟合到双曲线,即使是近似的,也会导致不好的结果。
如果物理现象明确表明曲线是椭圆,当然可以用椭圆拟合数据。但是不要对实验点和椭圆之间的巨大偏差感到惊讶。要么接受,要么用更准确、更多的测量再试一次。
参考资料:
上面使用的fittig方法对椭圆、双曲线、抛物线都有效。它适用于任意数量的点(多于四个)。这允许查看这些曲线中的哪一条最适合。请参阅 https://fr.scribd.com/doc/14819165/Regressions-coniques-quadriques-circulaire-spherique 中的第 16 页。以上符号与本文符号一致