А.А. Самарский, Е.С. Николаев - Методы решения сеточных уравнений (1978) (1160094), страница 35
Текст из файла (страница 35)
Однако 190 гели положить у(х) = и (х), х~!», и(х) =-О, хЕТ, то уравнения но всех узлах сетки»! будут записываться одинаково: Ли = — ! (х), х б »1, и (х) = О, х Е у. (20) Так как и(х) совпадает с у(х) для хЕ!», то достаточно найти решение задачи (20). Найдем решение задачи (20). Так как функция и(х) обращается в нуль на у, то в силу сказанного выше она может быть представлена в виде разложения по собственным функциям р (1, !) оператора Лапласа »!в-!»в,— 1 и (!', 1) =,'~ ~ и»» 1!»',1 (!) 1»»',! (!), (21) »в = 1 »в = ! что справедливо для 0<1<У„О<)<Л/».
Далее, сеточная функция !(х), заданная на м, также допускает представление »в,— ! л,— ! Р(1, !)=„Х „Х Рм4",(')Й",(!) (22) для 1<1<У! — 1, ! <!<У,— 1, где коэффициенты Фурье !»„ определены в (13). Так как р„(1, 1) = !1»',в (!) р!»" ,(!) есть собственная функция оператора Лапласа, соответствующая собственному зна- чению Х», т. е.
Лр»+)»р»=0, хЕ»1, Л!»',1+ Х~~,",=Х», то после подстановки (21) н (22) в уравнение (20) будем иметь »', - !»в в - ! Ли ~ ~ (Х~»',1+ ).~»',) и»,»,р»!',!(!) р!»,'(!) = »в = !»в = 1 Х -1Х,-1 = — !(' !) = — 1 Х !»,»,14(!) Р»",(!), »в= !»в=! 1<!<Л',— 1, 1<(<У» — 1. Используя ортонормированность собственных функций р (1, !), отсюда получим следующие равенства: Подставляя это выражение в (21), получим для решения задачи (20) следующее представление: 1»вв вв!в!+в!!в!»' ()1 ' (!)' (23) 0 <!< М„О<1<У».
Итак, формулы (13) и (23) дают решение задачи (20). Проанализируем нх с вычислительной точки зрения. При вычислении !9! решения и (Е, У) по формулам (13) и (20), где )<1 (Е, у) = у<а!',~ (Е) р~1',~ (у) и Ха — — Хь',>+ Х1»,, определены в (9), целесообразно ввести три вспомогательйые величины: ф„,(!), фьь и и (Е). Тогда вычислительный процесс можно организовать следующим образом: >>>, — 1 Ь1ЛУ ф, (Е) = ~ у'(Е, У) зуп— у=! 1<й,<М,— 1, 1<<<У,— 1, Л,-1 А,юсв' фжж= Х фы(!) З>П 1У 1= ! 1 < й,<М,— 1, 1 ~~У<1(М! — 1, У,-! Ч вам АЛ~ и,,(Е)= ~ <о ' <,> зуп— ь, = ! Хь', +Х1', 1~<<<У1 — 1, 1<У<,<М1 — 1, ив -1 4 ч ..
!<1«у и(!', у) = —, ~ и (Е) зуп— ьв =! 1<у<У~ — 1, 1~<у<~У~ — 1. (24) (25) (26) (27) Подсчитаем число арифметических действий для алгоритма (24) — (27), предполагая, что величины (Л1',~+ Х1;>) заданы, а суммы (24) — (27) вычисляются с использованием алгоритма быстрого преобразования Фурье, изложенного в и. 2 2 1. Для того чтобы применить указанный алгоритм, нужно предположить, что У, и У, есть степени 2: Л>,=2", У,=2'". Напомним, что суммы вида зо у<ну иу з>ив у=! Й=1,2, „2 — 1, операций сложения и вычитания и Я, = (У,У, — У, — У,) [1оЯ! (У,М,) — 21+ М, 1оя1 У, + У, 1оя! М, — 2 192 вычисляются с затратой <',>.„=(ЗЕ2а — 2) 2" — а+2 операций сложения и вычитания и <;>,=(пу2 — 1) 2" +1 операций умножения, если используется алгоритм из п.
2 2 1. Элементарный подсчет дает следующие затраты арифметических действий для вычисления решения и(Е, у) по формулам (24) — (27): Е, =(У,У,— У,— М,) [31оа, (У,У,) — 81+ (У,+2) 1ой, Лу,+ + (М1+ 2) 1оя! Мг — 8 операций умножения. Если не делать различия между арифме. тическими операциями, то при У,=У,=-У=2" общее число действий для алгоритма (24) — (27) составит Я == (У' — 1,5У) (8 1оя, У вЂ” 10) + 5У+ 41оа., У вЂ” 10. Итак, описанный метод решения задачи (20) может быть реализован с затратой О (У'1од, У) арифметических действий.
Такого типа оценку для числа действий имеет и рассмотренный в главе 1П метод полной редукции. Сравнение этих оценок показывает, что данный алгоритм метода разделения переменных требует примерно в 1,5 раз больше действий, чем метод полной редукции. Отметим, что можно построить алгоритм, аналогичный предложенному выше, и для случая, когда на сторонах прямоугольника задается любая комбинация из краевых условий первого или второго рода и условий периодичности, при которых разностная задача не вырождена. Необходимо лишь подставить в (13) и (23) соответствующие собственные функции и собственные значения, согласовать с типом краевых условий пределы суммирования и использовать соответствующий алгоритм быстрого преобразования Фурье из э 1 для вычисления возникающих при этом сумм.
Оценка числа действий будет такого же вида, как и для рассмотренного выше случая задачи Дирихле. Мы описали простейший вариант метода разделения переменных. Если же требуется решить более общую разностную краевую задачу, например уравнение Пуассона в полярной или цилиндрической системах координат с краевыми условиями, допускающими разделение переменных, то снова можно использовать разложения (21) и (22). Но в этом случае по крайней мере одна из собственных функций р1',~ (1) или р1",'(1) отлична от синуса или косинуса. Это не позволяет воспользоваться алгоритмом быстрого преобразования Фурье при вычислении всех необходимых сумм. Поэтому для таких задач число арифметических действий будет того же порядка, что и в случае непосредственного вычисления сумм без учета вида собственных функций р1,"(1) и р1",(1), т. е.
О (У'). Следовательно, необходимо модифицировать построенный метод, чтобы в случае, когда хотя бы одна из функций р~~",(1) или р)",~(1) есть синус или косинус, число арифметических действий оставалось величиной порядка 0(У'!од,У). Разумеется, что рассмотренные в этом пункте задачи могут быть решены и модифицированным методом, и, как окажется ниже, с меньшим числом арифметических действий. Этот метод — разложения в однократный ряд — будет построен в п. 3. С вычислительной точки зрения он отличается от построенного здесь метода тем, что две суммы из (24) — (27) не вычисляются, а вместо них решается серия краевых задач для трехточечных разностиых уравнений. г А. А, самврским в.
с. инколаев 19$ 3, Разложение в однократный ряд. Вернемся к задаче (20): Ли = — ~ (х), х Е а), и (х) = О, х Е у, Л=Л2+Л„Л„и=и„-,, 22=1, 2. Вудем рассматривать искомую функцию и(х),)=и(), 1) и заданную Г(2, 1) при фиксированном ), 0<)<М, как сеточные функции аргумента 1.
Так как и(2, /) обращается в нуль при /=0 и 1=М„а Г(!', 1) задана для 1<1<Л)2 — 1, то они могут быть представлены в виде сумм по собственным функциям р2( ) (1) разностного оператора Л,: )22- ! и(2, 1)= ~ и),(!)Р2!")(1), О</<М„О<)<М„(29) Ь2= ! )22- ! )(2, 1)= Х )2,(!)Р),~(1), 1(1<М2 — 1, 1<)<М,— 1, (30) Ь2= ! где 122, (1) = [,! — з(п —, й,=1, 2, ..., М,— 1. (3!) )2) .
/ 2 . "222! 2 М2 Подставим выражения (29) и (30) в (28) и учтем равенства Р,',) (О) = Р,",'(М2) = О. В результате получим )22- ! [Л,и2„(!) — Л~~) )ен (!) + ~2, (!)~рьл~) (1) = 0 2; — ! для 1<)<М,— 1, 1<1<М,— 1, а также и2,(0)г и2,(М2)=0, Отсюда, в силу ортогональности системы собственных функций р2)" ,(Д, получим серию краевых задач для определения функций и2,(!'), А,=1, 2, ..., М,— 1: Л2иь,(!) — 1'2,',)и2,(!) = — 12,(!), 1< ! < М,— 1, и2, (0) = и2, (М,) = О. Собственные значения Л2~л) задачи (32) известны )2) ! . Л22! 22 = з2 з)п' т!) 2 Й2= 1, 2, ..., М,— 1, (34) а козффициенты Фурье )», (!) для каждого 1 < ! « . М, — 1 вычисляются по формулам 2)2- ! Г)ь(!)=(), )22,)„-, = Х )2 !" (! !))22",(1), 1<Й2<М2 — 1.
(35) )=! Итак, найденные формулы (29), (31) и (33) — (35) полностью описывают метод решения задачи (20). По формулам (35) на- »н!дятся для 1<1<0! — 1 функции 7»,(!), затемдля 1<Ь»<Л!» — 1 р! шаются задачи (ЗЗ) для определения функций и»,(!), а по формулам (29) вычисляется искомое решение и(!, !). Рассмотрим теперь алгоритм, реализующий указанный метод.
Вместо и», (!) и 7», (!) удобно ввести новые вспомогательные функции о»,(!) и !р»,(!) по формулам и»,(!) =, ' о»,(!), 7»,(!) = — '<9»,(!). (Зб) Р 2!» ~/2!» Подставим (3!) и (Зб) в (29), (33) и (35), учтем, что Ь»!Ч,=1„ и распишем разностный оператор Л! по точкам. В результате получим »»я! ! < Ь,< У,— 1, ! 'р».(')= с'. 7(' !) "п ~» 1< <!Ч вЂ” 1 [ (37) 1=1 — и», (!' — 1) + (2 + Ь', Л » !!) о», (! ) — о», (! + ! ) = Ь', !9», (Е), 2 "' ' .. ». ! 1((!~<У» — 1,! и(!, !)= — ~ о»,(!)зш —,, 1;<Ь» 1' 7 (39) »,=1 где Л»1*,! определено в (34). Суммы (37) и (39), очевидно, следует вычислять, используя алгоритм быстрого дискретного преобразования Фурье, который изложен в п.2 9 1.
Для решения трехточечных краевых задач (38) целесообразно использовать алгоритм прогонки, построенный в 9 1 гл. 11. Для задачи (38) алгоритм прогонки описывается формулами а»»= 1<»<У! — 1, а»=0, !+ ' с» — а. 3 р!+! — — [Ь»<р»,(!)+р!)а!+„1<!'<У! — 1, р»=0, (40) о»,(!) =а!~»о»,(1+1)+8! „1 '! <Ь7! — 1, о»,(Л!!) =О, где с»,=2+Ь»Л»!»! и Ь, = 1„2, ..., Л! — 1. Сравним формулы (37), (39) и (40) с полученными ранее (24) — (27) для метода разложения в двойной ряд. Здесь вместо вычисления двух сумм (25) и (26) мы решаем серию краевых задач (38) методом прогонки (40). Поэтому на вычисление сумм (37) и (39) будет затрачиваться арифметических действий примерно в два раза меньше, чем для алгоритма (24) — (27).