Я пытаюсь найти некоторые ресурсы, которые помогут объяснить, как выбирать граничные условия при использовании методов конечных разностей для решения PDE.
Книги и заметки, к которым у меня сейчас есть доступ, говорят о похожих вещах:
Общие правила, регулирующие стабильность при наличии границ, слишком сложны для вводного текста; они требуют сложных математических механизмов
(А. Изерлес. Первый курс по численному анализу дифференциальных уравнений)
Например, при попытке реализовать двухэтапный метод чехарды для уравнения адвекции:
используя MATLAB
M = 100; N = 100;
mu = 0.5;
c = [mu 0 -mu];
f = @(x)(exp(-100*(x-0.5).^2));
u = zeros (M, N);
x = 1/(M+1) * (1:M);
u(:,1) = f(x);
u(:,2) = f(x + mu/(M+1));
for i = 3:N
hold off;
u(:,i) = conv(u(:,i-1),c,'same') + u(:,i-2);
plot(x, u(:,i));
axis( [ 0 1 0 2] )
drawnow;
end
Решение ведет себя хорошо, пока не достигнет границы, когда оно внезапно начинает вести себя плохо.
Где я могу узнать, как обрабатывать граничные условия, как это?