6 votos

Encontrar el centro aproximado de una circunferencia que pasa por más de tres puntos

Considere n punto $(x_1,y_1), (x_2,y_2),\ldots, (x_n,y_n)$ . Para $n = 3$ es fácil encontrar el centro del círculo que pasa por los tres puntos. Quería encontrar el centro aproximado de la circunferencia que pasa por más de tres puntos.

La solicitud es la siguiente. Tengo círculos en una hoja de metal. Puedo sondear diferentes puntos del círculo para obtener sus coordenadas. Al sondear tres puntos en cada círculo puedo predecir las coordenadas del centro. Pero quería mejorar la precisión de la predicción. Una búsqueda en Google revela sólo el centro del paso por tres puntos.

Edición 1: En respuesta a Hoda En cuanto al comentario del Sr. G., añado que las mediciones relacionadas con los puntos del círculo tienen errores. El objetivo es minimizar el error en la posición del centro sondeando más puntos del círculo.

7voto

ILIV Puntos 421

En la web se pueden encontrar varios métodos de ajuste del cerco. La mayoría de ellos son iterativos. Un método sencillo, sin proceso de prueba y error, se describe en las páginas 12-13 del documento "Régressions coniques, quadriques, circulaire, ..." : http://www.scribd.com/JJacquelin/documents No es necesario leer la parte teórica escrita en francés. Basta con aplicar las fórmulas (1), (2) y (3) que permiten calcular muy fácilmente las coordenadas del centro y el radio del círculo ajustado. En la página 15 se ofrece un ejemplo numérico.

2voto

Recordando la ecuación del círculo con centro $(h,k)$ y el radio $r$

$$ (x-h)^2+(y-k)^2 = r^2 .$$

La ecuación anterior tiene tres incógnitas que se pueden determinar de forma única sabiendo que tres puntos se encuentran en la circunferencia. Sin embargo, si se tienen más de tres puntos, puede ser necesario recurrir al método de los mínimos cuadrados. Véase técnica relacionada .

2voto

mjqxxxx Puntos 22955

Suponiendo que los errores se distribuyen normalmente, una estimación de máxima verosimilitud para los parámetros del círculo $(x_0, y_0, r)$ es la que minimiza la suma de las distancias al cuadrado del círculo: $$ SS(x_0,y_0,r)=\sum_{i=1}^{n}\left(\sqrt{(x_i-x_0)^2 + (y_i-y_0)^2}-r\right)^2. $$ Tomando la derivada con respecto a $r$ da $$ 0=\frac{\partial}{\partial r}SS(x_0,y_0,r)=-2\left(\sum_{i=1}^{n}\sqrt{(x_i-x_0)^2+(y_i-y_0)^2}-nr\right), $$ así que $$ r^{*}=\frac{1}{n}\sum_{i=1}^{n}\sqrt{(x_i-x_0)^2+(y_i-y_0)^2}. $$ Una búsqueda numérica de coordenadas $(x_0,y_0)$ que minimizan $SS(x_0,y_0,r^*)$ debería ser relativamente sencillo.

2voto

Claude Leibovici Puntos 54392

La respuesta dada por mjqxxxx es muy interesante. Lo que muestra es que el problema se puede reducir a $x_0$ y $y_0$ desde $r$ es eliminado. Manteniendo la misma función objetivo que la que propuso, basta con utilizar el método Newton-Raphson para calcular los valores de $x_0$ y $y_0$ para los que las derivadas se cancelan. $$\frac{\partial}{\partial x_0}SS(x_0,y_0,r)=0$$ $$\frac{\partial}{\partial y_0}SS(x_0,y_0,r)=0$$

Como supongo que tienes estimaciones "razonables" de las variables, la convergencia será bastante fácil. Incluso podrías ser perezoso y utilizar derivadas numéricas para calcular el jacobiano del sistema.

He aplicado el método utilizando seis puntos de datos : $(2.5,6.5), (2.0,8.5), (4.0,11.5), (7.5,11.0), (9.0,9.0), (8.0,6.5)$ .
Los cálculos se resuelven en tres iteraciones y el círculo es tal que $r=3.41031$ , $x_0=5.39989$ , $y_0=8.42763$ .

Si se aplica a los mismos datos el método propuesto por JJacquelin, se llega directamente a $r=3.41287$ , $x_0=5.40887$ , $y_0=8.42447$ . Este método es de lejos superior a lo que propuse ya que es un método directo y explícito que sólo requiere el cálculo de unas cuantas sumas sobre las coordenadas de los puntos de datos.

2voto

Claude Leibovici Puntos 54392

Introduciendo un sesgo, considere las ecuaciones $$F_i=(X-x_i)^2+(Y-y_i)^2-r^2=0$$ Puedes escribir $$F_j-F_i=2(x_i-x_j) X+2(y_i-y_j)Y=(x_i^2+y_i^2)-(x_j^2+y_j^2)$$ Esto es idéntico a lo que escribió Steven Taschuk.

Generar todas las ecuaciones para $(i=1,2,\cdots,n-1)$ , $(j=i+1,i+2,\cdots,n)$ . Esto creará $\frac{n(n-1)}2$ ecuaciones y definiendo los regresores se enfrenta básicamente al problema de un ajuste por mínimos cuadrados (sin intercepción) y el cálculo es inmediato (el uso de la matriz facilitará mucho el problema). Así tendrás muy buenas estimaciones de las coordenadas del centro y la regresión no lineal completa convergerá en un par de iteraciones ya que al promediar todas las $F_i$ 's, tiene una buena estimación de $r^2$ entonces $r$ .

Aplicado a los puntos de datos que utilicé en mi respuesta anterior, este procedimiento conduce a $X=5.40887$ , $Y=8.42447$ . El radio medio es $r=3.41043$ .

Ahora, cualquier procedimiento resolverá en un par de iteraciones a $$\begin{array}{clclclclc} \text{} & \text{Estimate} & \text{Standard Error} & \text{Confidence Interval} \\ X & 5.39989 & 0.0928415 & \{5.10443,5.69535\} \\ Y & 8.42763 & 0.128379 & \{8.01907,8.83619\} \\ r & 3.41031 & 0.0760165 & \{3.16839, 3.65223\} \\ \end{array}$$

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X