Я пытаюсь использовать 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}
]
Может ли кто-нибудь помочь мне?
Редактировать:
Я поместил решение NDSVEL
(после редактирования JXB) с помощью моих характеристик, вместе на одной анимации. Они совпадают достаточно близко, за исключением начальных быстрых колебаний. Со временем они стремятся делать десинхронизировать, но я считаю, что это, вероятно, из-за небольшого упрощения, которое мы должны признать при выводе характеристик.
Красный: NDSVELT
; Синий: «Ручной» характеристики метода;
Нажмите F5 (обновить ваш браузер), чтобы перезапустить анимацию из T = 0
.
(Шкала XX - это количество точек, которые я использовал с моим методом «Ручной», где каждая точка представляет 20 единиц / физических масштабов
/ физическая шкала)
Играть с NDSVEL
] выборка сетки, рендует совершенно разные эффекты колебаний. У кого-нибудь есть или знают о технике для обеспечения надлежащей интеграции?