5 votos

Cómo encontrar dónde $3$ líneas se cruzan.

Tengo que hacer un ejercicio de programación, pero no consigo entender la parte matemática.

Necesito comprobar si $3$ de $6$ líneas se cruzan en el mismo punto. Me dan la ecuación $ax+by=c$ e introduzco números aleatorios en $a,b,c$ . ¿Cómo podría resolverlo matemáticamente?

Gracias.

4voto

Andrew Puntos 140

Está intentando comprobar el estado de concurrencia de tres líneas; la última fórmula determinante que involucra los coeficientes de sus tres líneas en ese enlace puede ser de ayuda.

Una vez que hayas demostrado que tus tres rectas son concurrentes, toma dos cualesquiera de las tres y resuélvelas como ecuaciones simultáneas (dos ecuaciones en dos incógnitas) para obtener las coordenadas del punto de intersección.

1 votos

Si compruebas la concurrencia de 3 rectas utilizando la fórmula del determinante en el enlace de la respuesta anterior, ten en cuenta que la descripción implica escribir la ecuación de una recta en coordenadas homogéneas. La recta ax + by = c en este entorno sería al + bm - cn = 0. Si exactamente dos de las rectas son paralelas (pero distintas) entonces se tendrá la certeza de que el determinante no será cero. Si las tres rectas son distintas pero las tres paralelas entonces el determinante será cero porque la condición planteada implica concurrencia en el "plano proyectivo real" y tres rectas paralelas "se encuentran" en el infinito.

0 votos

Me refería a la ecuación 9 de ese enlace, pero lo de las tres rectas paralelas "que se cruzan en el infinito" también funciona. :)

0 votos

Gracias por la información. Acabé utilizando este mismo enfoque.

1voto

David HAust Puntos 2696

SUGERENCIA: $\;$ Divide y vencerás . $\:$ Divide las líneas en dos grupos de tres líneas. Calcula los puntos de intersección de cada conjunto (como máximo tres). Si alguno de los conjuntos de intersección tiene cardinalidad uno, ya está. Si no, comprueba si algún punto de intersección de un conjunto se encuentra en alguna línea del otro conjunto. Número total de operaciones: 6 intersecciones de líneas y 6 evaluaciones de líneas.

Nota: si no es necesario que las líneas sean distintas, deberá modificar ligeramente lo anterior.

0 votos

Gracias. Estoy intentando algo diferente y no funciona, así que voy a comprobar tu sugerencia.

0 votos

A mí me parecen 18 "evaluaciones de línea".

0 votos

Sí, lo eran :)

1voto

Tsuyoshi Ito Puntos 1589

El primer paso para escribir un programa es descomponer un problema en pequeñas partes. Yo haría lo siguiente:

  1. Escribe una función que decida si tres rectas dadas se intersecan en un punto. J. Respuesta de M. ofrece material para ello.
  2. Iterar sobre todas las combinaciones de tres líneas de seis.

Si el programa no funciona, pruebe las dos partes por separado. Los programas más pequeños y sencillos son más fáciles de verificar.

1 votos

De acuerdo, la "filosofía Unix" funciona bien en este caso: mantener separadas la prueba de concurrencia y la rutina para tomar tres líneas a la vez.

0 votos

Gracias, eso es exactamente lo que hice. Como sólo necesitaba saber, si hay al menos 3 líneas que se cruzan en un solo punto, este método funcionó bastante bien.

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