Нестабильность, в то время как Ndsolving волновое уравнение

Я пытаюсь использовать ndsvolve для решения волновых уравнений, чтобы проверить, будет ли оно проще и / или быстрее использовать его вместо моего старого Характеристики уравнения. Реализация метода.

Я получаю много нестабильности, что я не получаю с методом характеристик, и поскольку это простые уравнения, мне интересно, что не так ... (Надеюсь, не физический аспект проблемы ... )

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}
]

enter image description here

Может ли кто-нибудь помочь мне?

Редактировать:

Я поместил решение NDSVEL (после редактирования JXB) с помощью моих характеристик, вместе на одной анимации. Они совпадают достаточно близко, за исключением начальных быстрых колебаний. Со временем они стремятся делать десинхронизировать, но я считаю, что это, вероятно, из-за небольшого упрощения, которое мы должны признать при выводе характеристик.

simulation

Красный: NDSVELT ; Синий: «Ручной» характеристики метода;

Нажмите F5 (обновить ваш браузер), чтобы перезапустить анимацию из T = 0 .

(Шкала XX - это количество точек, которые я использовал с моим методом «Ручной», где каждая точка представляет 20 единиц / физических масштабов / физическая шкала)

Играть с NDSVEL ] выборка сетки, рендует совершенно разные эффекты колебаний. У кого-нибудь есть или знают о технике для обеспечения надлежащей интеграции?

7
задан P. Fonseca 30 November 2011 в 23:03
поделиться