Pregunta

Estoy tratando de utilizar de Mathematica NDSolve [] para calcular una geodésica a lo largo de una esfera utilizando la EDO acoplada:

x" - (x" . x) x = 0

El problema es que sólo puede entrar condiciones iniciales para x (0) y x '(0) y el solucionador está contento con la solución en la que x"= 0. El problema es que mi geodésica sobre la esfera tiene la inicial condición de que x "(0) = x (0), que no tengo idea de cómo decirle a Mathematica. Si añado esto como una condición, que dice que estoy añadiendo Fiel a la lista de condiciones.

Aquí está mi código:

s1 = NDSolve[{x1''[t] - (x1[t] * x1''[t] + x2[t] * x2''[t] + x3[t]*x3''[t]) * x1[t] == 0, x2''[t] -  (x1[t] * x1''[t] + x2[t] * x2''[t] + x3[t]*x3''[t]) * x2[t] == 0, x3''[t] - (x1[t] * x1''[t] + x2[t] * x2''[t] + x3[t]*x3''[t]) * x3[t] == 0, x1[0] == 1, x2[0] == 0, x3[0] == 0, x1'[0] == 0, x2'[0] == 0, x3'[0] == 1} , { x1, x2, x3}, {t, -1, 1}][[1]]

Me gustaría modificar esto para que la aceleración inicial no es cero, pero -x(0).

Gracias

¿Fue útil?

Solución 2

He arreglado este problema a través de un reordenamiento matemática en lugar de abordar mi emisión original:

Let V (t) sea un campo vectorial a lo largo de x (t).

x. V = 0 implica d / dt (x. V) = (x 'V) + (x. V') = 0

Así la ecuación D / dt V = V - '(. V '(. X V') x = V x) +' x sostiene Esto significa que la ecuación geodésica se convierte en:. X" + ( 'x' x) x = 0 y por lo que se puede resolver utilizando las condiciones iniciales que tenía originalmente

Muchas gracias por Janus pasando y señalando los diversos problemas que tenía que incluye código de diseño horrible, he aprendido mucho a través de su re-escritura también.

Otros consejos

Bueno, como dice el mensaje de error - NDSolve sólo acepta las condiciones iniciales para los derivados de órdenes estrictamente menor que el orden máximo que aparece en la EDO
. Tengo la sensación de que esto es más una cuestión de matemáticas. Matemáticamente, {x''[0]=-x0, x[0]==x0}, no define una única solución - que tendría que hacer algo en la línea de {x0.x''[0]==-1, x[0]==x0, x'[0]-x0 x0.x'[0]==v0} para que fuera a trabajar (NDSolve todavía fallar con el mismo error). ¿Se da cuenta usted acaba de conseguir un gran círculo en la esfera unidad, ¿verdad?

Por cierto, aquí es cómo me habría codificado su ejemplo:

x[t_] = Table[Subscript[x, j][t], {j, 3}];
s1 = NDSolve[Flatten[Thread /@ #] &@{
       x''[t] - (x''[t].x[t]) x[t] == {0, 0, 0},
       x[0] == {1, 0, 0}, 
       x'[0] == {0, 0, 1}
     }, x[t], {t, -1, 1}]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top