Autor Tema: Punto de corte de 3 esferas

0 Usuarios y 1 Visitante están viendo este tema.

05 Diciembre, 2017, 12:37 am
Leído 2656 veces

jgomez_fuente

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 7
  • Karma: +0/-0
  • Sexo: Masculino
Muy buenas,
a ver si me podéis ayudar.

Necesito calcular el punto de corte de 3 esferas.
Como premisa se que estas 3 siempre se van a cortar en un punto.

¿Que fórmula matemática habría para hacerlo? Me gustaría hacer un programa que lo calcule.



05 Diciembre, 2017, 01:48 am
Respuesta #1

Ignacio Larrosa

  • Moderador Global
  • Mensajes: 2,401
  • País: es
  • Karma: +0/-0
  • Sexo: Masculino
    • Actividades con GeoGebra
Muy buenas,
a ver si me podéis ayudar.

Necesito calcular el punto de corte de 3 esferas.
Como premisa se que estas 3 siempre se van a cortar en un punto.

¿Que fórmula matemática habría para hacerlo? Me gustaría hacer un programa que lo calcule.


Tienes que resolver el sistema que forman las ecuaciones de las tres esferas. Resolver un sistema de tres ecuaciones de segundo grado en tres variables puede ser realmente complicado en general, pero en este caso las ecuaciones siempre pueden escribirse de forma que los términos cuadráticos tengan el mismo coeficiente, por ejemplo 1. Sean entonces las tres esferas:

\( x^2 + y^2 + z^2 + A_1x + B_1y + C_1z + D_1 = 0 \)
\( x^2 + y^2 + z^2 + A_2x + B_2y + C_2z + D_2 = 0 \)
\( x^2 + y^2 + z^2 + A_3x + B_3y + C_3z + D_3 = 0 \)

Si restas dos pares de ecuaciones, por ejemplo le restas la primera a las otras dos, te va a quedar un sistema lineal de dos ecuaciones con tres incognitas:

\( (A_2-A_1)x + (B_2-B_1)y + (C_2-C_1)z + (D_2-D_1) = 0 \)
\( (A_3-A_1)x + (B_3-B_1)y + (C_3-C_1)z + (D_3-D_1) = 0 \)

Te quedan las ecuaciones de dos planos, que conjuntamente definen una recta. Lo más cómodo será obtener una ecuación paramétrica de esta recta. A continuación hay que sustituir las tres coordenadas en función del parámetro en la ecuación de cualquiera de las circunferencias. Te quedara una ecuación de 2º grado en el parámetro, que tendrá dos soluciones, excepcionalmente una  o ninguna. Para obtener los puntos, si los hay,sustituyes el valor del parámetro en las ecuaciones paramétricas de la recta.

Como digo, normalmente se cortaran las tres simultáneamente en dos puntos o en ninguno; para que se corten en uno solo, una debería pasar por el punto de tangencia de las otras dos.

Saludos,





Daría todo lo que se por la mitad de lo que ignoro (R. Descartes)
O incluso por muchísimo menos ...  (yo)

06 Diciembre, 2017, 11:22 am
Respuesta #2

jgomez_fuente

  • $$\Large \color{#6a84c0}\pi$$
  • Mensajes: 7
  • Karma: +0/-0
  • Sexo: Masculino
UUfff demasiado complicado para implementarlo!!!

Muchísimas gracias.
Voy a crear otro hilo explicando con mas detalle de lo que quiero conseguir.

06 Diciembre, 2017, 11:44 am
Respuesta #3

Ignacio Larrosa

  • Moderador Global
  • Mensajes: 2,401
  • País: es
  • Karma: +0/-0
  • Sexo: Masculino
    • Actividades con GeoGebra
UUfff demasiado complicado para implementarlo!!!

Muchísimas gracias.
Voy a crear otro hilo explicando con mas detalle de lo que quiero conseguir.

Bueno, no se si tanto ... De todas formas, habría más cosas a tener en cuenta, ,lo dicho en el otro mensaje es en el caso de que los centros no estén alineados.

Si los centros estuviesen alineados, los dos planos obtenidos serían paralelos. Si son distintos, no hay intersecciones triples. Si coinciden en uno solo, puede ocurrir que este plano sea exterior, tangente o secante simultáneamente a las tres esferas, con lo que la intersección sería inexistente, constaría de un solo punto (de tangencia de las tres esferas), o sería una circunferencia completa.

Por completar, si dos centros coinciden, están los tres alineados y nos remitimos al párrafo anterior. No habrá intersección triple a menos que aparte del centro coincida el radio, con lo que serían la misma esfera y tendríamos en realidad dos en vez de tres.

Finalmente, si los tres centros coinciden, no hay triple intersección si alguno de los radios es distinto, y la intersección es toda la única esfera si los tres radios son iguales, evidentemente.

Saludos,
Daría todo lo que se por la mitad de lo que ignoro (R. Descartes)
O incluso por muchísimo menos ...  (yo)

06 Diciembre, 2017, 05:43 pm
Respuesta #4

Abdulai

  • Moderador Global
  • Mensajes: 3,044
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
UUfff demasiado complicado para implementarlo!!!

 ???  El "complicado de implementar" es muy relativo.
Si se utiliza un lenguaje general es obvio que si lleva cálculos matriciales se necesitará buscar librerías (o escribirlas) y su manipulación puede no ser muy amigable.
Pero si se utiliza un software orientado como Matlab, la resolución son unas pocas líneas.


Por ejemplo, este tipo de problemas se corresponde con la siguiente ecuación matricial:  \( (X^tX)A + B\,X + C = 0 \)     

con  \( X,A,C \)  matrices de Nx1 , \( X \)  es la incógnita.  Notar que \( X^tX \) es un escalar.
\( B \)  matriz de NxN  invertible.

En Matlab se resuelve haciendo:

Código: [Seleccionar]
% Matrices con los datos. Les puse cualquier valor.
A=[1;1;1];               
B=[2 2 1;-1 2 -3; 1 -1 1];
C=[1;-3;-4];                 
%
% Resolución
X0 = -B\C ; M  =  B\A ;
t  = roots([M.'*M,1+2*X0.'*M,X0.'*X0]);
X  = X0*[1 1] + M*t.' 

Aqui devuelve \( X \)  de Nx2 pues son las dos soluciones.


06 Diciembre, 2017, 06:20 pm
Respuesta #5

Ignacio Larrosa

  • Moderador Global
  • Mensajes: 2,401
  • País: es
  • Karma: +0/-0
  • Sexo: Masculino
    • Actividades con GeoGebra
UUfff demasiado complicado para implementarlo!!!

 ???  El "complicado de implementar" es muy relativo.
Si se utiliza un lenguaje general es obvio que si lleva cálculos matriciales se necesitará buscar librerías (o escribirlas) y su manipulación puede no ser muy amigable.
Pero si se utiliza un software orientado como Matlab, la resolución son unas pocas líneas.


Por ejemplo, este tipo de problemas se corresponde con la siguiente ecuación matricial:  \( (X^tX)A + B\,X + C = 0 \)     

con  \( X,A,C \)  matrices de Nx1 , \( X \)  es la incógnita.  Notar que \( X^tX \) es un escalar.
\( B \)  matriz de NxN  invertible.

En Matlab se resuelve haciendo:

Código: [Seleccionar]
% Matrices con los datos. Les puse cualquier valor.
A=[1;1;1];               
B=[2 2 1;-1 2 -3; 1 -1 1];
C=[1;-3;-4];                 
%
% Resolución
X0 = -B\C ; M  =  B\A ;
t  = roots([M.'*M,1+2*X0.'*M,X0.'*X0]);
X  = X0*[1 1] + M*t.' 

Aqui devuelve \( X \)  de Nx2 pues son las dos soluciones.



DERIVE también lo resuelve, salvo que hay que convencerle de que \( X^tX \) es un escalar, no una matriz cuyo único elemento es una matriz de un solo elemento ... Pero vamos, se resuelve escribiendo directamente \( (x^2 + y^2 + z^2) \) en lugar de \( (X^tX)A \).

El resultado que me da con tus datos eso si, des un poco feo:

\( \left(x = - \displaystyle\frac{6\sqrt[ ]{1041}+230}{241} \wedge y = \displaystyle\frac{2\sqrt[ ]{1041}-325}{241} \wedge z =  \displaystyle\frac{9\sqrt[ ]{1041}-137}{482}\right) \vee \left(x = \displaystyle\frac{6\sqrt[ ]{1041}-230}{241} \wedge y = -\displaystyle\frac{2\sqrt[ ]{1041}+325}{241} \wedge z =  -\displaystyle\frac{9\sqrt[ ]{1041}+137}{482}\right) \)

Eso si, simétricas respecto del punto \( \left(- \displaystyle\frac{230}{241}, -\displaystyle\frac{325}{241}, -\displaystyle\frac{137}{482}\right) \).

Saludos,
Daría todo lo que se por la mitad de lo que ignoro (R. Descartes)
O incluso por muchísimo menos ...  (yo)

06 Diciembre, 2017, 06:53 pm
Respuesta #6

Abdulai

  • Moderador Global
  • Mensajes: 3,044
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
DERIVE también lo resuelve, salvo que hay que convencerle de que \( X^tX \) es un escalar, no una matriz cuyo único elemento es una matriz de un solo elemento ... Pero vamos, se resuelve escribiendo directamente \( (x^2 + y^2 + z^2) \) en lugar de \( (X^tX)A \).

No se qué objeto tiene seguir considerando matriz a  \( X^tX \),  en esos casos yo escribo  \( \left(X^tX\right)\downarrow 1\downarrow 1 \)  ( es (X`X) ctrl B 1 ctrl B 1)

Citar
El resultado que me da con tus datos eso si, des un poco feo:

Es que escribí cualquier valor,  hubiese quedado mas bonito elegir un \( C \)  partiendo de un \( X \) elegante   ;D.


Saludos.