Я пытаюсь использовать NDSolve
для решения волновых уравнений, чтобы проверить, проще и/или быстрее использовать его вместо моих старых характеристик eq. осуществление способа.
Я получаю большую нестабильность, которую не получаю с помощью метода характеристик, и поскольку это простые уравнения, интересно, что не так... (надеюсь, не физический аспект проблемы...)
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}
]
Может ли кто-то помочь мне?
EDIT:
Я поместил решение NDSolve
(после редактирования JxB) с моим решением характеристик вместе с одной анимацией. Они совпадают достаточно близко, за исключением начальных быстрых колебаний. Со временем они, как правило, начинают десинхронизировать, но я полагаю, что это, вероятно, связано с небольшим упрощением, которое мы должны признать при выводе характеристик.
Красный: NDsolve
; Синий: метод «ручных» характеристик;
нажмите F5 (обновить браузер), чтобы перезапустить анимацию с t = 0
.
(xx scale - количество точек, которое я использовал с моим «ручным» методом, где каждая точка представляет 20 единицы NDSolve
/физическая шкала)
Воспроизведение с помощью NDSolve
выборки сетки, визуализирует совершенно разные эффекты колебаний. Есть ли у кого-либо метод для обеспечения правильной интеграции?
Есть ли более простой способ указать несколько свойств системы в командной строке для Java-программы, чем иметь несколько операторов -D?
Пытаясь избежать этого:
java -jar -DNAME="myName" -DVERSION="1.0" -DLOCATION="home" program.jar
Я думал, что видел пример, когда кто-то использовал один -D
и некоторые цитируемые последовательности после этого, но я не могу найти пример снова.