Instabilidad mientras NDS resuelve una ecuación de onda

Estoy tratando de usarNDSolve para resolver ecuaciones de onda para verificar si es más fácil y / o más rápido usarlo en lugar de mis antiguas características eq. implementación del método.

Estoy obteniendo mucha inestabilidad que no obtengo con el método de características, y dado que estas son ecuaciones simples, me pregunto qué está mal ... (con suerte, no el aspecto físico del problema ...)

ans = Flatten@NDSolve[{
u[t, x]*D[d[t, x], x] + d[t, x]*D[u[t, x], x] + D[d[t, x], t] == 0,
D[d[t, x], x] + u[t, x]/9.8*D[u[t, x], x] + 
 1/9.8*D[u[t, x], t] + 0.0001 u[t, x]*Abs[u[t, x]] == 0,
u[0, x] == 0,
d[0, x] == 3 + x/1000*1,
u[t, 0] == 0,
u[t, 1000] == 0
},
d, {t, 0, 1000}, {x, 0, 1000}, DependentVariables -> {u, d}
]

Animate[Plot[(d /. ans)[t, x], {x, 0, 1000}, 
        PlotRange -> {{0, 1000}, {0, 6}}], {t, 0, 1000}
]

¿Alguien me puede ayudar

EDITAR

He colocado elNDSolve solución (siguiendo la edición de JxB) con mi solución de características, juntas en la misma animación. Coinciden lo suficientemente cerca, con la excepción de las oscilaciones rápidas iniciales. Con el tiempo, tienden a comenzar a desincronizarse, pero creo que esto probablemente se deba a una pequeña simplificación que debemos admitir al deducir las características.

Rojo:NDsolve; Azul: método de características "manuales";

press F5 (actualiza tu navegador), para reiniciar la animación desdet=0.

(la escala xx es el número de puntos que utilicé con mi método "manual", donde cada punto representa 20 unidades deNDSolve / escala física)

Jugando conNDSolve muestreo de cuadrícula, genera efectos de oscilación completamente diferentes. ¿Alguien tiene o conoce una técnica para garantizar una integración adecuada?

Respuestas a la pregunta(1)

Su respuesta a la pregunta