2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 Матричная прогонка по разностной схеме для УЧП
Сообщение06.04.2022, 15:52 


17/02/21
15
Добрый день, есть УЧП, но есть вопрос - как работать с $f(x,y,t)A$?
$iA_t=A_{xx}+A_{yy}+f(x,y,t)A$

К нему составил разностную схему метода покоординатного расщепления, неявная шеститочечная, первый слой вдоль x, второй слой вдоль y:
$i\frac{A^{n+0.5}_{k,l}-A^{n}_{k,l}}{\tau}=\sigma\frac{A^{n+0.5}_{k+1,l}-2A^{n+0.5}_{k,l}+A^{n+0.5}_{k-1,l}}{h^2}+(1-\sigma)\frac{A^{n}_{k+1,l}-2A^{n}_{k,l}+A^{n}_{k-1,l}}{h^2}+f^{n}_{k,l}A^{n}_{k,l}$

$i\frac{A^{n+1}_{k,l}-A^{n+0.5}_{k,l}}{\tau}=\frac{A^{n+1}_{k,l+1}-2A^{n+1}_{k,l}+A^{n+1}_{k,l-1}}{h^2}+(1-\sigma)\frac{A^{n+0.5}_{k,l+1}-2A^{n+0.5}_{k,l}+A^{n+0.5}_{k,l-1}}{h^2}$

Корректно ли она составлена?
Позволительно ли $f^{n}_{k,l}A^{n}_{k,l}$ держать в первом слое? Или лучше раскинуть на оба или, только на второй? Исходил из того что раз $A^{n}$ используется на первой половинке то лучше туда отправить и все слагаемые, содержащие это.

Перегруппировал слои по разным сторонам:
$
\frac{1-\sigma}{h^2}A^{n}_{k+1,l}+(\frac{i}{\tau}-\frac{2(1-\sigma)}{h^2}+f^{n}_{k,l})A^{n}_{k,l}+\frac{1-\sigma}{h^2}A^{n}_{k-1,l}=-\frac{\sigma}{h^2}A^{n+0.5}_{k+1,l}+(\frac{i}{\tau}+\frac{2\sigma}{h^2})A^{n+0.5}_{k,l}-\frac{\sigma}{h^2}A^{n+0.5}_{k-1,l}$
$
\frac{1-\sigma}{h^2}A^{n+0.5}_{k,l+1}+(\frac{i}{\tau}-\frac{2(1-\sigma)}{h^2})A^{n+0.5}_{k,l}+\frac{1-\sigma}{h^2}A^{n+0.5}_{k,l-1}=-\frac{\sigma}{h^2}A^{n+1}_{k,l+1}+(\frac{i}{\tau}+\frac{2\sigma}{h^2})A^{n+1}_{k,l}-\frac{\sigma}{h^2}A^{n+1}_{k,l-1}
$

Подхожу к вопросу - при переходе к самим матрицам не понимаю что делать с $f^{n}_{k,l}A^{n}_{k,l}$ - без нее были бы обычные трехдиагональные матрицы вида
$M=\begin{pmatrix}
  \frac{i}{\tau}-\frac{2(1-\sigma)}{h^2} & \frac{1-\sigma}{h^2} & 0 & 0 & \ldots\\
  \frac{1-\sigma}{h^2}& \frac{i}{\tau}-\frac{2(1-\sigma)}{h^2} & \frac{1-\sigma}{h^2} & 0 & \ldots\\
  0 & \frac{1-\sigma}{h^2}& \frac{i}{\tau}-\frac{2(1-\sigma)}{h^2} &\frac{1-\sigma}{h^2} & \ldots\\
  0 & 0 & \frac{1-\sigma}{h^2}& \frac{i}{\tau}-\frac{2(1-\sigma)}{h^2} & \ddots\\
  \vdots & \vdots & \vdots & \ddots & \ddots
\end{pmatrix}$
$N=\begin{pmatrix}
  \frac{i}{\tau}+\frac{2\sigma}{h^2} & -\frac{\sigma}{h^2} & 0 & 0 & \ldots\\
  -\frac{\sigma}{h^2}& \frac{i}{\tau}+\frac{2\sigma}{h^2} & -\frac{\sigma}{h^2} & 0 & \ldots\\
  0 & -\frac{\sigma}{h^2}& \frac{i}{\tau}+\frac{2\sigma}{h^2} &-\frac{\sigma}{h^2}& \ldots\\
  0 & 0 &-\frac{\sigma}{h^2}& \frac{i}{\tau}+\frac{2\sigma}{h^2} & \ddots\\
  \vdots & \vdots & \vdots & \ddots & \ddots
  \end{pmatrix}$

И решаемое в два этапа матричное уравнение $A^{n+0.5} =  N^{-1}MA^{n} \qquad A^{n+1} =  N^{-1}MA^{n+0.5}$ (которое по первому слою для всех l, по второму слою для всех k).

А как $f^{n}_{k,l}$ включить в это матричное уравнение? Закинуть в матрицу М на главную диагональ? Тогда получается на каждой(!) итерации необходимо переопределять матрицу? Или отдельно складывать как столбец какой-нибудь?

 Профиль  
                  
 
 Re: Матричная прогонка по разностной схеме для УЧП
Сообщение07.04.2022, 14:50 
Аватара пользователя


07/01/16
1612
Аязьма
kitnone, делюсь очень старым и позабытым опытом, так что не взыщите, если советы покажутся тривиальными. Возможно кто-то из активно действующих специалистов найдет время дать больше. Из учебных материалов, мне в свое время показалось очень внятным описание прогонки в книге Р.П. Федоренко "Введение в вычислительную физику".
kitnone в сообщении #1551998 писал(а):
Корректно ли она составлена?
Позволительно ли $f^{n}_{k,l}A^{n}_{k,l}$ держать в первом слое? Или лучше раскинуть на оба или, только на второй? Исходил из того что раз $A^{n}$ используется на первой половинке то лучше туда отправить и все слагаемые, содержащие это.
Вы решаете уравнение Шредингера, или параболическое волновое уравнение (PWE; в этом случае $t$ имеет смысл третьей пространственной координаты, а $fA$ - наличие оптически плотной среды). Для ответа на вопросы хорошо ли делать так или этак, в целом есть два пути: 1. доказывать устойчивость схемы и оценивать зависимость величины невязки от различных параметров или 2. экспериментально подбирать параметры схемы на близких к Вашей задаче вариантах, имеющих точное решение (+ полезно сверяться с физическим смыслом задачи, что не полезли какие-то численные артефакты - тут обычно крайне полезна визуализация). Первый вариант теоретически нагружен (это непросто), во втором сможете получить правдоподобные результаты, но без теоретического обоснования. Из общих рукомахательных соображений "размазывание" $f$ между двумя слоями выглядит симпатичнее, а то Вы сейчас по сути на одном слое решаете неоднородную задачу, а на другом однородную - вряд ли это положительно влияет на устойчивость/невязку схемы (и Вам же это еще с граничными условиями сопрягать, всякие отражения от границ чувствительны к ммм чересчур простым вариантам схемы). Пробуйте, смотрите, что получается именно в Вашей задаче (т.е. я бы рекомендовал второй подход). Тоже из старинных воспоминаний: хорошую устойчивость и медленный рост невязки обеспечивают энергетические (интегральные) подходы: как определяется энергия в Вашей схеме, сколько-куда ее должно втекать-вытекать и т.п. - это может дать неочевидные с ходу малые поправки к коэффициентам схемы, повышающие устойчивость и уменьшающие невязку разностной схемы.
kitnone в сообщении #1551998 писал(а):
А как $f^{n}_{k,l}$ включить в это матричное уравнение? Закинуть в матрицу М на главную диагональ? Тогда получается на каждой(!) итерации необходимо переопределять матрицу? Или отдельно складывать как столбец какой-нибудь?
Да, на главную диагональ, а куда же деваться :-) Если вы работаете с каким-нибудь матпакетом, там как правило масса эффективных алгоритмов работы с разреженными матрицами (sparse matrices). Если же реализуете прогонку руками, тоже наличие неоднородности $fA$ не должно вызывать проблем (кроме, может быть, случаев, когда $f$ имеет разрывы/резкие границы - здесь тоже требуется аккуратность при построении схемы, чтоб не нахватать численных артефактов)

 Профиль  
                  
 
 Re: Матричная прогонка по разностной схеме для УЧП
Сообщение10.04.2022, 03:04 


17/02/21
15
waxtep в сообщении #1552085 писал(а):
kitnone, делюсь очень старым и позабытым опытом


Огромное спасибо, хоть в целом успокоили. Раньше с Шрёдингером работал, правда с одномерным и однородным. С точностью до размерности численное решение двумерной однородной совпадает с численной одномерной (модуль лазерного пучка не изменяется, а вещественная и комплексная составляющие колеблются), а уже одномерная задача решена аналитически - на нестрогое доказательство сойдет)

Насчёт того что одна половинка однородная, а другая - нет -- резонно. Тогда попробую к обеим половинкам прибавить половинки от неоднородности.

Вы упомянули матпакет для матриц, а случаем не знаете есть ли что нибудь для подобных краевых задач? Вроде даже в Maple не встречал что то красивое чтоб аналитику/численное решение получить . А матлабовские приложения крайне не гибкие. Вот и пишу ручками.

А то отдельная проблема будет когда в качестве f возьму эффект Керра или покельса - типа $f(x,y,t)=|A(x,y,t)|$ или квадрат модуля. Там для решения сопряжённой краевой задачи придётся запоминать решение прямой задачи и с этим всем идти в обратный ход. Ухх.

 Профиль  
                  
 
 Re: Матричная прогонка по разностной схеме для УЧП
Сообщение10.04.2022, 05:38 
Аватара пользователя


07/01/16
1612
Аязьма
kitnone в сообщении #1552273 писал(а):
Тогда попробую к обеим половинкам прибавить половинки от неоднородности.
Давайте, удачи :-) Раз у Вас нелинейная задача, могут быть вообще самые неожиданные сюрпризы, тут только численный эксперимент рулит. У меня в основном были более банальные линейные прямые и немного обратные (оптика, радиоволны), с которыми боролся как Вы пишете ниже.
kitnone в сообщении #1552273 писал(а):
А матлабовские приложения крайне не гибкие. Вот и пишу ручками.
Очень активно пользовался матлабом, шикарная среда для возни с УЧП на мой вкус. Его негибкость можно в значительной степени компенсировать дописыванием/переписыванием его встроенных функций, тот же PDE Toolbox в основном на матлабе и написан, удобно. Для быстрой проверки и экспериментов самое оно; но основные расчетные программы тоже ручками, на, господи прости, дельфях :-)

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group