円の場合は中心対称なので、普通の最小二乗法のような y の値の差の2乗でなく、半径の2乗の差の総和をゼロとする方法が良いと思います数学的には適切ではないかもしれませんが、実験データをモデルに当てはめるような目的なら問題ないと思います。乱数で値をばらつかせた100組のデータで実際計算してみましたが、うまくフィッティングできました。
当てはめる円の方程式を
( x - x0 )^2 + ( y - y0 )^2 = r^2
としたとき、n個のデータ組( xi, yi )に対する半径の2乗の差の総和
S = Σ{ r^2 - ( xi - x0 )^2 - ( yi - y0 )^2 } --- (1)
がゼロとなる x0, y0, r の値は
x0 = ( Σxi )/n
y0 = ( Σyi )/n
r = = √{ ( Σxi^2 + Σyi^2 )/n - ( x0^2 + y0^2 ) }
になります( x0, y0 はそれぞれ xi, yi の単なる加算平均になります)。
(x0, y0, r の計算方法)
x0 と y0 を変化させたとき S が最小となるのは
∂S/∂x0 = -2*Σ ( xi - x0 ) = -2*( Σxi - Σx0 ) = -2*( Σxi - n*x0 ) = 0
∂S/∂y0 = -2*Σ ( yi - y0 ) = -2*( Σyi - Σy0 ) = -2*( Σyi - n*y0 ) = 0
となるときなので
x0 = ( Σxi )/n、y0 = ( Σyi )/n --- (2)
一方、式(1)を展開すれば
S = Σ{ r^2 - ( xi - x0 )^2 - ( yi - y0 )^2 }
= n*r^2 -Σxi^2 -Σyi^2 + 2*x0*Σxi + 2*y0*Σyi - n*( x0^2 + y0^2 )
なので、これがゼロとなるためには
r = √[ { Σxi^2 +Σyi^2 - 2*x0*Σxi - 2*y0*Σyi + n*( x0^2 + y0^2 ) }/n ]
でなければなりません。
式(2)から
Σxi = n*x0、Σyi = n*y0
なので
r = √[ { Σxi^2 +Σyi^2 - n*( x0^2 + y0^2 ) }/n ]
= √{ ( Σxi^2 + Σyi^2 )/n - ( x0^2 + y0^2 ) }