Jak poprawić dokładność metody różnic skończonych w celu znalezienia systemu eigens pojedynczej liniowej ODE


11

Próbuję rozwiązać równanie typu:

(2x2f(x))ψ(x)=λψ(x)

Gdzie f(x) ma prosty biegun o wartości 0 , dla najmniejszych N wartości własnych i wektorów własnych. Warunki brzegowe to: ψ(0)=0 i ψ(R)=0 , a ja patrzę tylko na funkcję ponad (0,R] .

Jeśli jednak zastosuję bardzo prostą, równomiernie rozłożoną metodę różnic skończonych, Najmniejsza wartość własna jest bardzo niedokładna (czasami istnieje „fałszywa” wartość własna, która jest o kilka rzędów wielkości bardziej ujemna niż ta, o której wiem, że powinna tam być, rzeczywista „pierwsza wartość własna” staje się drugą, ale nadal jest słaba).

Co wpływa na dokładność takiego schematu różnic skończonych? Zakładam, że przyczyną jest problem osobliwości i że nierównomiernie rozmieszczona siatka znacznie poprawiłaby sytuację, czy są jakieś dokumenty, które mogą wskazać mi dobrą, nierównomierną metodę różnic skończonych? Ale może schemat różnicy wyższego rzędu poprawiłby go bardziej? Jak decydujesz (czy to po prostu „spróbuj obu i zobacz”)

uwaga: mój schemat różnic skończonych jest symetryczny trójkątny, gdzie 3 przekątne to:

(12Δ2,1Δ2f(x),12Δ2)

Δ


1Δ2f(x)

Odpowiedzi:


6

Jeśli chcesz zwiększyć dokładność schematu różnic skończonych, zawsze możesz spróbować zwiększyć stopień swojego szablonu. Jednak w punktach w jednakowej odległości może to prowadzić do niestabilności numerycznej. Aby uniknąć tych problemów i nadal uzyskać wysoką dokładność, sugerowałbym stosowanie metod spektralnych .

Jeśli twój problem ma naprawione bieguny, możesz spróbować obejść je, dzieląc domenę i rozwiązując dwa połączone problemy.

chebguif(x)

chebguiu(x)u(x)x=λu[1,1]

Używanie <code> chebgui </code> do obliczenia wartości własnych i trybów własnych prostego równania różniczkowego drugiego rzędu.

Aktualizacja

Jeśli chcesz rozwiązać ten problem bez zbytniego angażowania się w Chebfun, wszystkie szczegóły powinny znaleźć się w rozdziale 9 książki Nicka Trefethena „ Metody spektralne w Matlabie ”.


Zredagowałem swój oryginalny post, aby wyjaśnić, że tak naprawdę nie patrzę na biegun, tylko bardzo blisko niego. Dzięki za informację, będę musiał sprawdzić chebfun.
Andrew Spott

3
Głosowałeś bez komentarza? Proszę, z korzyścią dla wszystkich, czy mógłbyś wskazać, w jaki sposób można poprawić tę odpowiedź?
Pedro

0

Jednym ze sposobów szybkiego ulepszenia (choć prawdopodobnie nie znacznie lepszego) jest rozważenie podobieństwa między stosowanymi metodami różnic skończonych najniższego rzędu i metodą elementów skończonych najniższego rzędu. Jeśli obliczysz macierz trójkątną, którą uzyskasz dzięki zastosowaniu funkcji kształtu liniowego elementu skończonego w 1d, to dyskretyzacja drugich pochodnych będzie wyglądać dokładnie tak samo (do współczynnika ale otrzymasz inny termin na to, co wychodzi . Nie wiem, jak wygląda w twoim przypadku, ale gdzie teraz używasz , zamiast tego będzie to coś w rodzaju gdzieΔxf(x)ψ(x)f(x)f(xi)xi1xi+1f(x)φi(x)φi(x)jest funkcją kapelusza, która osiąga wartość szczytową przy . Jeśli jest wystarczająco proste, możesz dokładnie obliczyć tę całkę i dostarczy ona dokładniejszą macierz, której musisz znaleźć wartość własną.xif(x)

Oczywiście, jeśli już robisz elementy skończone, równie dobrze możesz zainwestować w użycie elementów wyższego rzędu, które również nie są o wiele trudniejsze na 1d.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.