• 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Método de aproximación numérica para resolver sistema ecuación cuerda colgante
#1
Lo siento, esto no es realmente álgebra pero no encontré un foro más adecuado. Lo que necesito es un método de aproximación numérica adecuado para resolver el sistema de ecuaciones que se describe a continuación, un método de aproximación numérica que luego puedo implementar en javascript para mí mismo.

Como tal vez sepan por otro tema que publiqué en Calculus recientemente, pero que encontré la respuesta a mí mismo, estoy escribiendo un juego de javascript sobre la suspensión en hilos. 

Ahora, cuando un hilo idealizado de longitud L no está estirado, estará suspendido en un arco entre dos puntos de altura H (altura superior) y K (altura inferior).

Encontré casi toda la información que necesitaba para implementar tal modelo de hilo en esta página: http://www.had2know.com/academics/ca...ing-chain.html

Dice lo siguiente:

La ecuación para el hilo colgante es la siguiente:

y (x) = a + (1/b)cosh (b (x-c))

donde a, b y c son constantes que satisfacen las ecuaciones siguientes:

1. H = a + (ebc + e-bc)/ (2b)
2. K = a + (eb (D-c) + e-b (D-c))/ (2b)
3. L = (eb (D-c) - e-b (D-c) + ebc - e-bc) / (2b)

y como se dijo, conocemos los valores de H, K y L.

Pero desafortunadamente, este sistema de ecuaciones no se puede resolver algebraicamente, pero debe ser resuelto numéricamente. Y sé muy poco sobre los métodos de aproximación numérica. Y no seré capaz de conectar Matlab o algo similar en mi código, pero tendré que escribir en código informático alguna función de aproximación (esperemos que sencilla) yo mismo, apta para resolver este sistema con tres variables desconocidas.

Incluso había una calculadora para esto en la página que enlacé, pero como lo entiendo el código de esa calculadora parece residir en el servidor, así que no puedo simplemente "inspirarme" en el código de esa calculadora...

Comprobé la página de Wikipedia sobre la aproximación numérica, pero era difícil ordenar toda la información.

Entonces, ¿tienes alguna sugerencia de qué método usar aquí? 

Gracias de antemano!
  Responder
#2
Oh, y la constante D es la distancia entre los dos polos de los que cuelga la cuerda, se me olvidó de decir eso...

Estoy comprobando el método de Newton generalizado para sistemas de ecuaciones de n variables ahora, intentando calcular todos los derivados parciales de estas funciones anteriores, para la matriz Jacobi que se necesita. Es mucho trabajo cuando lo haces a mano (y no tengas ningún programa de matemáticas instalado...). Volveré con mis preguntas sobre esto. Tal vez, esto debería haberse publicado en Cálculo, ya que entonces muchos métodos de aproximación aparentemente usan derivados en el proceso...
Por favor, dime si voy por el buen camino hasta ahora...
Con números se puede demostrar cualquier cosa.
  Responder
#3
(06-12-2017, 01:25 PM)rain escribió: Oh, y la constante D es la distancia entre los dos polos de los que cuelga la cuerda, se me olvidó de decir eso...

Y ya nos lo has dicho:
"Ahora, cuando un hilo idealizado de longitud L no se estira, se cuelga." 
en un arco entre dos puntos de altura H (altura superior) y K (altura inferior)."

¿Todo eso significa que H - K = D?

¿Hay un diagrama de esta cosa parecida a ET en algún lugar? Huh
  Responder
#4
(06-12-2017, 01:37 PM)llop escribió:
(06-12-2017, 01:25 PM)rain escribió: Oh, y la constante D es la distancia entre los dos polos de los que cuelga la cuerda, se me olvidó de decir eso...

Y ya nos lo has dicho:
"Ahora, cuando un hilo idealizado de longitud L no se estira, se cuelga." 
en un arco entre dos puntos de altura H (altura superior) y K (altura inferior)."

¿Todo eso significa que H - K = D?

¿Hay un diagrama de esta cosa parecida a ET en algún lugar? Huh

No, D es la distancia a lo largo del eje x entre los polos, mientras que H y K son las alturas (es decir, el valor y) de los polos. Hay un diagrama agradable y un montón de más explicación en el enlace que di en un post anterior.
Con números se puede demostrar cualquier cosa.
  Responder
#5
Thanks.

Entonces, dejemos u = bc y v = bD, entonces las ecuaciones PUEDEN ser mostradas de esta manera:







¿De acuerdo?
  Responder
#6
Um, creo que deberías estar multiplicando, no dividiendo, con 2b en esos lados derechos, ya que los cambiaste de lado... de lo contrario, creo que es correcto. Pero por supuesto que no entiendo lo que está tratando de hacer, ya que dice en la página que he vinculado que no hay solución algebraica? Y la mayoría de los métodos numéricos parece querer las ecuaciones en la forma f (a, b, c) = 0.
Así que entonces lo sería:







Como ya he dicho, empecé intentando implementar el método numérico generalizado de Newton-Raphsons para esto. Necesita una matriz con los derivados parciales de estas tres expresiones de la mano izquierda, para las tres variables[es decir, una matriz de 3x3]. Así que empecé a calcular esos derivados, usando la regla de la cadena y la regla del cociente y esas cosas. Tal vez hay programas que pueden calcular esos derivados para mí. Y luego necesitarás encontrar el inverso de esa matriz de alguna manera. Y usando eso de algún modo, se puede iterar (a mano o por computadora), consiguiendo mejores y mejores resultados para el vector (a, b, c). Pero necesito saber si el método de Newton es una buena opción para esto.
Con números se puede demostrar cualquier cosa.
  Responder
#7
(06-12-2017, 02:36 PM)rain escribió: Um, creo que deberías estar multiplicando, no dividiendo, con 2b en esos lados derechos, ya que los cambiaste de lado... de lo contrario, creo que es correcto. Pero por supuesto que no entiendo lo que está tratando de hacer, ya que dice en la página que he vinculado que no hay solución algebraica?

Correcto ... un simple error de mi parte ...

Todo lo que trato de hacer es ver si puedo ejecutar "loopers" en UBasic (mi lenguaje de programación).

Para el registro(!):
Seno hiperbólico de x = sinh (x) = (e ^ x - e ^ -x) / 2

Coseno hiperbólico de x = cosh (x) = (e ^ x + e ^ -x) / 2
  Responder
#8
Creo que ahora tengo una implementación del método de Newton para 3 funciones variables, pero el problema es que me topo con la limitada precisión del punto flotante de Javascript, por lo que obtengo valores como Infinity y -Infinity y cuando utilizo esos valores más lejos obtengo NaN (Not a Number).

El artículo de Wikipedia sobre el método de Newton (https://es.wikipedia.org/wiki/M%C3%A9todo_de_Newton) dice esto:

Cita:Sistemas no lineales de ecuaciones
k variables, k funciones
Uno también puede usar el método de Newton para resolver sistemas de ecuaciones k (no lineales), lo que equivale a encontrar los ceros de funciones continuamente diferenciables F: Rk? rk. En la formulación dada arriba, uno tiene que entonces multiplicarse con el inverso de la matriz jacobiana k-por-k JF (xn) en vez de dividir por f' (xn).
En lugar de computar realmente lo inverso de esta matriz, uno puede ahorrar tiempo resolviendo el sistema de ecuaciones lineales.
 para el desconocido xn+1 - xn.


La última cosa que quizás sea relevante aquí es que creo que es cuando intento calcular lo inverso de la matriz jacobiana que los números se vuelven demasiado grandes en el proceso. Pero no sé si un solucionador de ecuaciones lineales sería mejor en este aspecto, y si es fácil de implementar o importar.

He probado mis operaciones matriciales por separado, y parecen estar funcionando correctamente, aunque el cálculo inverso sufre de una precisión limitada, por lo que cuando multiplico una matriz con su inversa hay unos números muy pequeños en algunos lugares donde debería ser cero.
Con números se puede demostrar cualquier cosa.
  Responder
#9
Ahora he implementado ("prestado") un solucionador de ecuaciones para tres sistemas de ecuaciones variables tres. Pero cuando lo usé, no encontró ninguna solución a mi sistema de ecuaciones. Entonces descubrí algunos errores en los derivados de la función matricial jacobiana que he creado, y también algunos errores en la función F! Pero ahora creo que ya he resuelto esos errores, pero todavía no tengo ninguna solución con el solucionador de ecuaciones!

Así que por favor comprueba estos si son correctos (yo verifiqué los derivados en la matriz jacobiana con un solucionador de derivados en línea, pero nunca se sabe).

Supongo que nuestras tres ecuaciones pueden ser reescritas en el formulario:


1. e^(bc) + e^(-bc) - 2Hb + 2ab = 0
2. e^(bD-bc) + e^(bc-bD) - 2Kb + 2ab = 0
3. e^(bD-bc) - e^(bc-bD) + e^(bc) - e^(-bc) - 2Lb = 0



Que F (a, b, c) se defina como 

F (a, b, c) = (F1 (a, b, c), F2 (a, b, c), F3 (a, b, c)

donde 

F1 = e^(bc) + e^(-bc) - 2Hb + 2ab
F2 = e^(bD-bc) + e^(bc-bD) - 2Kb + 2ab
F3 = e^(bD-bc) - e^(bc-bD) + e^(bc) - e^(-bc) - 2Lb


Estamos buscando una solución a la ecuación F (a, b, c) = (0,0,0)

En el proceso necesitamos la "matriz jacobiana" de F, que se define como


dF1/da dF1/db dF1/dc
dF2/da dF2/db dF2/dc
dF3/da dF3/db dF3/dc



A medida que lo calculo, obtengo los valores en J para ser:


dF1/da = 2b
dF1/db = ce^(cb) -ce^(-cb) - 2H + 2a
dF1/dc = be^(bc) - be^(-bc)

dF2/da = 2b
dF2/db = (D-c)e^((D-c)b) + (c-D)e^((c-D)b) - 2K + 2a
dF2/dc = be^(bc-bD) - be^(bD-bc)

dF3/da = 0
dF3/db = (D-c)e^((D-c)b) - (c-D)e^((c-D)b) + ce^(cb) + ce^(-cb) - 2L
dF3/dc = -be^(bD-bc) - be^(bc-bD) + be^(bc) + be^(-bc) 


 
Pero aparentemente algo está mal...
Con números se puede demostrar cualquier cosa.
  Responder
#10
El método de Newton (solver básicamente usa este método) es inestable lejos de la solución o en J≈0.

Así que necesitarás hacer una "buena" suposición inicial para poder converger a la solución.
  Responder


Posibles temas similares...
Tema Autor Respuestas Vistas Último mensaje
  [Ayuda] Tengo problemas para simplificar Leonardo 1 336 14-12-2017, 12:25 AM
Último mensaje: Natasha
  Valor de 'k' para una curva y una recta Leonardo 3 269 06-12-2017, 02:31 PM
Último mensaje: Leonardo
  Solución a una ecuación que se resiste cenum 0 895 13-01-2016, 06:54 PM
Último mensaje: cenum
  Resolver este ejercicio hfarias4 0 366 13-01-2016, 04:54 AM
Último mensaje: hfarias4
  ¿Cómo se resuelve esta ecuación? edber004 6 1,654 23-11-2015, 05:25 PM
Último mensaje: edber004
  Como resuelvo este sistema? nkonko 1 453 19-11-2015, 07:24 PM
Último mensaje: A45R
  Ayuda con esta ecuacion urgente porfa Qeiryn 1 301 18-11-2015, 10:41 PM
Último mensaje: A45R
  Resolver T.Rectángulo por Cuadratica hfarias4 1 643 19-09-2015, 08:59 AM
Último mensaje: robinlambada
  Problema propuesto de ecuacion, ayuda please Dieguillo 1 358 29-08-2015, 02:57 PM
Último mensaje: mates01
  Ayuda, con la ecuación del lugar geométrico de una mediatriz. nicolealmeida96 1 611 16-08-2015, 06:02 PM
Último mensaje: ixupi

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)