Próbuję użyć NDSolve
do rozwiązania równania falowego, aby sprawdzić, czy jest łatwiej i/lub szybciej go używać zamiast moje stare cechy charakter. wdrożenie metody.Niestabilność podczas NDSolving równanie falowe
Staje się dużo niestabilności, której nie otrzymuję za pomocą metody charakterystyki, a ponieważ są to proste równania, zastanawiam się, co jest nie tak ... (mam nadzieję, że nie jest to fizyczny aspekt problemu) .)
ans = [email protected][{
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}
]
Czy ktoś może mi pomóc?
EDIT:
umieściłem rozwiązanie NDSolve
(po edycji JxB) ze moim roztwór charakterystyka, razem na tej samej animacji. Pasują do siebie wystarczająco blisko, z wyjątkiem początkowych szybkich oscylacji. Z czasem zaczynają się zdesynchronizować, ale uważam, że jest to prawdopodobnie spowodowane małym uproszczeniem, które musimy przyznać, gdy dedukujemy te cechy.
Czerwony: NDsolve
; Niebieski: metoda "ręczna";
naciśnij F5 (odśwież okno przeglądarki), aby ponownie uruchomić animację z t=0
.
(skala xx jest liczbą punktów, że stosowane w moim „ręcznego” metody, gdzie każda litera oznacza 20 jednostek NDSolve
/skali fizycznej)
Gra z NDSolve
próbek siatki powoduje całkowicie różny wpływ drgań. Czy ktoś ma lub zna technikę zapewniającą właściwą integrację?
Myślę, że dostaniesz więcej odpowiedzi z pytaniem na stronie Math: http://math.stackexchange.com/ –
@dario Dziękuję za sugestię (spróbuję). Ale ponieważ te równania powinny być stabilne, pomyślałem, że jest to raczej kwestia Mathematica, chociaż nie jestem ekspertem w tej dziedzinie ... –
Jeśli podejrzewasz, że skoro nigdy nie korzystałem z Mathematica, wszystko, co mogę zasugerować, to aktualizowanie go do Najnowsza wersja. To może naprawić twój problem, jeśli jest spowodowany przez błąd w Mathematica –