Próbuję rozwiązać równanie typu:
Gdzie ma prosty biegun o wartości , dla najmniejszych wartości własnych i wektorów własnych. Warunki brzegowe to: i , a ja patrzę tylko na funkcję ponad .
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:
źródło
Odpowiedzi:
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.
chebgui
chebgui
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 ”.
źródło
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Δx f(x)ψ(x) f(x) f(xi) ∫xi+1xi−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ą.xi f(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.
źródło