kitnone, делюсь очень старым и позабытым опытом, так что не взыщите, если советы покажутся тривиальными. Возможно кто-то из активно действующих специалистов найдет время дать больше. Из учебных материалов, мне в свое время показалось очень внятным описание прогонки в книге Р.П. Федоренко "Введение в вычислительную физику".
Корректно ли она составлена?
Позволительно ли
![$f^{n}_{k,l}A^{n}_{k,l}$ $f^{n}_{k,l}A^{n}_{k,l}$](https://dxdy-01.korotkov.co.uk/f/8/3/5/8356ce10c7276638667bd1872376c5ed82.png)
держать в первом слое? Или лучше раскинуть на оба или, только на второй? Исходил из того что раз
![$A^{n}$ $A^{n}$](https://dxdy-01.korotkov.co.uk/f/4/a/5/4a59b6b10641e6b18e023a8e3784244c82.png)
используется на первой половинке то лучше туда отправить и все слагаемые, содержащие это.
Вы решаете уравнение Шредингера, или параболическое волновое уравнение (PWE; в этом случае
![$t$ $t$](https://dxdy-01.korotkov.co.uk/f/4/f/4/4f4f4e395762a3af4575de74c019ebb582.png)
имеет смысл третьей пространственной координаты, а
![$fA$ $fA$](https://dxdy-03.korotkov.co.uk/f/a/7/b/a7bacab29e70ad44209ea7219d7aed2282.png)
- наличие оптически плотной среды). Для ответа на вопросы хорошо ли делать так или этак, в целом есть два пути: 1. доказывать устойчивость схемы и оценивать зависимость величины невязки от различных параметров или 2. экспериментально подбирать параметры схемы на близких к Вашей задаче вариантах, имеющих точное решение (+ полезно сверяться с физическим смыслом задачи, что не полезли какие-то численные артефакты - тут обычно крайне полезна визуализация). Первый вариант теоретически нагружен (это непросто), во втором сможете получить правдоподобные результаты, но без теоретического обоснования. Из общих рукомахательных соображений "размазывание"
![$f$ $f$](https://dxdy-02.korotkov.co.uk/f/1/9/0/190083ef7a1625fbc75f243cffb9c96d82.png)
между двумя слоями выглядит симпатичнее, а то Вы сейчас по сути на одном слое решаете неоднородную задачу, а на другом однородную - вряд ли это положительно влияет на устойчивость/невязку схемы (и Вам же это еще с граничными условиями сопрягать, всякие отражения от границ чувствительны к ммм чересчур простым вариантам схемы). Пробуйте, смотрите, что получается именно в Вашей задаче (т.е. я бы рекомендовал второй подход). Тоже из старинных воспоминаний: хорошую устойчивость и медленный рост невязки обеспечивают энергетические (интегральные) подходы: как определяется энергия в Вашей схеме, сколько-куда ее должно втекать-вытекать и т.п. - это может дать неочевидные с ходу малые поправки к коэффициентам схемы, повышающие устойчивость и уменьшающие невязку разностной схемы.
А как
![$f^{n}_{k,l}$ $f^{n}_{k,l}$](https://dxdy-01.korotkov.co.uk/f/4/a/7/4a7a37cef1ab51f549265e5d7751898782.png)
включить в это матричное уравнение? Закинуть в матрицу М на главную диагональ? Тогда получается на каждой(!) итерации необходимо переопределять матрицу? Или отдельно складывать как столбец какой-нибудь?
Да, на главную диагональ, а куда же деваться
![Smile :-)](./images/smilies/icon_smile.gif)
Если вы работаете с каким-нибудь матпакетом, там как правило масса эффективных алгоритмов работы с разреженными матрицами (sparse matrices). Если же реализуете прогонку руками, тоже наличие неоднородности
![$fA$ $fA$](https://dxdy-03.korotkov.co.uk/f/a/7/b/a7bacab29e70ad44209ea7219d7aed2282.png)
не должно вызывать проблем (кроме, может быть, случаев, когда
![$f$ $f$](https://dxdy-02.korotkov.co.uk/f/1/9/0/190083ef7a1625fbc75f243cffb9c96d82.png)
имеет разрывы/резкие границы - здесь тоже требуется аккуратность при построении схемы, чтоб не нахватать численных артефактов)