changelog shortlog tags changeset files revisions annotate raw

doc/report.tex

changeset 113: bc94df402ff0
parent:c6dada80954a
child:3d877a5c33fc
author: Dmitry Dzhus <mail@sphinx.net.ru>
date: Fri Nov 16 19:08:52 2007 +0300 (13 months ago)
permissions: -rw-r--r--
description: Updated report to comply with source code changes introduced in rev 110.
1\documentclass{article}
2\usepackage[utf8x]{inputenc}
3\usepackage[english,russian]{babel}
4\usepackage{mflogo}
5\usepackage{listings}
6
7\lstdefinelanguage[guile]{Scheme}
8 {morekeywords={define,let,map,lambda,if,cond,or,and,else},
9 morecomment=[l]{;},
10 morestring=[b]{"}}
11\lstset{mathescape=true}
12\lstset{language=[guile]Scheme}
13%\lstset{numbers=left,stepnumber=10,numberblanklines=false}
14\lstset{basicstyle=\footnotesize}
15\lstset{frame=tb,frameround=ffff}
16\lstset{breaklines=true,breakautoindent=true}
17
18\newcommand{\filename}[1]{\texttt{#1}}
19\newcommand{\procname}[1]{\texttt{#1}}
20\newcommand{\includeplot}[2]{\begin{figure}[hb]
21 \centering
22 \includegraphics{#1__#2-plot.mps}
23 \caption{График $u(x)$ для функции преломления \eqref{#2-initial-data}}
24\end{figure}}
25\renewcommand{\epsilon}{\varepsilon}
26\renewcommand{\phi}{\varphi}
27\providecommand{\abs}[1]{\left \lvert{#1}\right \rvert}
28\providecommand{\op}[1]{\mathrm{#1}}
29\providecommand{\comp}{\circ}
30
31\usepackage{amsmath,amssymb}
32
33\usepackage{graphics}
34
35\DeclareGraphicsExtensions{.mps,.pdf,.eps}
36\DeclareGraphicsRule{.scm-plot.mps}{mps}{*}{}
37\DeclareGraphicsRule{.scm-all-plots.mps}{mps}{*}{}
38
39\numberwithin{equation}{section}
40
41\begin{document}
42
43\author{Дмитрий Джус}
44\title{Курсовая работа по теме\\ «Обыкновенные дифференциальные уравнения»}
45\maketitle
46\thispagestyle{empty}
47
48\clearpage
49\tableofcontents
50
51\clearpage
52\part{Постановка задачи}
53
54\section{Математический аспект}
55
56Настоящая курсовая работа посвящена построению приближённого решения
57краевой задачи для дифференциального уравнения вида
58
59\begin{equation}\label{deq}
60 \frac{d^2 u}{dx^2} + n(x) u(x) = 0
61\end{equation}
62
63По условию, $n(x)$ представляет собой кусочно-непрерывную функцию,
64равную константе $k^2$ на интервалах $(-\infty; 0)$ и $(a; +\infty)$ и
65непрерывной известной функции на $[0; a]$. На границах $[0; a]$
66решение и его первая производная должны удовлетворять условиям
67сшивания:
68
69\begin{subequations}\label{conds}
70 \begin{align}
71 u(0-0)& = u(0+0)&
72 u'(0-0)& = u'(0+0)&\label{conds-left} \\
73 u(a-0)& = u(a+0)&
74 u'(a-0)& = u'(a+0)&\label{conds-right}
75 \end{align}
76\end{subequations}
77
78\section{Физический аспект}
79
80Задача соответствует возбуждения плоского слоя неоднородной
81немагнитной среды электромагнитным полем, вектор электрического поля
82распространяется вдоль оси $x$. $k$ имеет смысл волнового числа в
83однородной части пространства, $n(x)$ — показатель преломления
84неоднородной среды.
85
86Из физических соображений, решение справа от слоя $[0; a]$ должно
87иметь вид $u(x) = Be^{ikx}$, а слева — $u(x) = e^{ikx} +
88Ae^{-ikx}$. Задача состоит в приближённом построении решения внутри
89неоднородного слоя и отыскании комплексных констант $A$ и $B$
90(называемых, соответственно, коэффициентами отражения и прохождения
91электромагнитного поля).
92
93Действительная область значений функции $n(x)$ соответствует
94отсутствию поглощения энергии в среде, так что критерием правильности
95полученных приближённых значений служит энергетическое тождество:
96
97\begin{equation}\label{energy}
98 \abs{A}^2 + \abs{B}^2 = 1
99\end{equation}
100
101\clearpage
102\part{Решение}
103
104\section{Общие замечания}
105
106Предлагаемые к реализации в курсовой работае приближённые методы были
107описаны на алгоритмическом языке Scheme (простом и строго
108функциональном диалекте Лиспа).
109
110\section{Решение методом построения фундаментальной матрицы}
111
112\subsection{Описание}
113
114Дифференциальное уравнение второго порядка \eqref{deq} можно представить
115в матричной форме, введя $v(x) = \frac{du}{dx}$:
116
117\begin{equation}\label{mdeq}
118 \frac{d}{dx}
119 \begin{pmatrix}
120 u(x) \\
121 v(x)
122 \end{pmatrix}
123 = \begin{pmatrix}
124 0 & 1 \\
125 -n(x) & 0
126 \end{pmatrix}
127 \begin{pmatrix}
128 u(x) \\
129 v(x)
130 \end{pmatrix}
131\end{equation}
132
133Решение системы \eqref{mdeq} с матрицей $A(x) = \bigl( \begin{smallmatrix} 0
134 & 1 \\ -n(x) & 0 \end{smallmatrix} \bigr)$ можно найти в общем виде, если
135построена фундаментальная матрица $\Omega(x)$:
136
137\begin{equation}\label{fm}
138\Omega(x) = \begin{pmatrix}
139 \omega_{11}(x) & \omega_{12}(x) \\
140 \omega_{21}(x) & \omega_{22}(x)
141\end{pmatrix}
142\end{equation}
143
144$\Omega(x)$ является решением следующей матричной задачи Коши:
145
146\begin{equation}\label{fmeq}
147 \frac{d}{dx} \Omega(x) = A(x) \Omega(x)
148\end{equation}
149
150с условием $\Omega(0) = \bigl( \begin{smallmatrix} 1& 0\\ 0&
151 1\end{smallmatrix} \bigr)$.
152
153Решение \eqref{mdeq} для $\forall x \in [0; a]$ записывается в виде
154
155\begin{equation}\label{fmsolution}
156\begin{pmatrix}
157 u(x) \\
158 v(x)
159\end{pmatrix} =
160\begin{pmatrix}
161 \omega_{11}(x) & \omega_{12}(x) \\
162 \omega_{21}(x) & \omega_{22}(x)
163\end{pmatrix}
164\begin{pmatrix}
165 1 + A \\
166 ik(1 - A)
167\end{pmatrix}
168\end{equation}
169
170Использование краевых условий \eqref{conds} позволяет получить
171следующую линейную алгебраическую систему относительно неизвестных $A$
172и $B$:
173
174\begin{equation}\label{abeq}
175 \begin{split}
176 (\omega_{11}(a) - \omega_{12}(a) ik) A - e^{ika} B &= -ik
177 \omega_{12}(a) - \omega_{11}(a) \\
178 (\omega_{21}(a) - \omega_{22}(a) ik) A - ike^{ika} B &= -ik
179 \omega_{22}(a) - \omega_{21}(a)
180 \end{split}
181\end{equation}
182
183Нахождение значений компонентов матрицы $\Omega$ на правом конце $[0;
184a]$, таким образом, позволит получить искомые значения $A$ и $B$.
185
186Для поиска фундаментальной матрицы в точках $[0; a]$ предлагается
187использование следующего численного метода, основанного на приближении
188функции $n(x)$ кусочно-постоянной, то есть замене неоднородной среды
189на плоско-слоистую с большим числом однородных слоёв.
190
191Рассматриваемый интервал разбивается на $N$ интервалов точками
192$x_i = \frac{a}{N}i$, $i = 1 \dotso N$, в середине каждого из
193которых берётся точка $\overline{x_i} = \frac{a}{N}(i+\frac{i}{2})$. В
194данной точке функция $n(x)$ аппроксимируется ступенчатой функцией
195$\overline{n}(x) = n(\overline{x_i})$, так что \eqref{mdeq} обращается
196в систему с постоянной матрицей $A_i = \bigl(
197\begin{smallmatrix}0& 1 \\ -\overline{n}(x)& 0 \end{smallmatrix}
198\bigr)$. Тогда на каждом интервале $[x_i; x_{i+1}]$ решение
199\eqref{fmeq} может быть найдено явно в виде матричной экпоненты:
200
201\[
202\Omega_i(x) = e^{A_i (x - x_i)}
203\]
204
205При этом, значения фундаментальной матрицы $\Omega_N(x_{i+1})$ на
206правом конце $[x_i; x_{i+1}]$ служат начальным условием задачи Коши на
207$[x_{i+1}; x_{i+2}]$, так что для каждой точки $\hat{x} \in [x_i;
208x_{i+1}]$ фундаментальная матрица \eqref{fm} имеет вид:
209
210\begin{equation}\label{fmx}
211 \Omega_N(\hat{x}) = e^{A_i(\hat{x}-x_i)} e^{A_{i-1}(x_i-x_{i-1})} \dotsm e^{A_0(x_1-x_0)}
212\end{equation}
213
214На правом конце интервала $[0; a]$ приближённая фундаментальная
215матрица записывается в виде:
216
217\begin{equation}\label{fma}
218 \Omega_N(a) = e^{A_{N-1}(x_N-x_{N-1})} e^{A_{N-2}(x_{N-1}-x_{N-2})} \dotsm e^{A_0(x_1-x_0)}
219\end{equation}
220
221Для нахождения матричной экспоненты используется формула Тейлора:
222
223\begin{equation}\label{matrix-exp}
224\begin{split}
225 e^{A_i(x-x_i)} \approx E +& \frac{1}{1!}{A_i(x-x_i)} +
226 \frac{1}{2!}{A_i^2(x-x_i)^2}\\
227 +& \frac{1}{3!}{A_i^3(x-x_i)^3} + \frac{1}{4!}{A_i^4(x-x_i)^4}
228\end{split}
229\end{equation}
230
231После построения фундаментальной матрицы в $a$ коэффициенты $A$ и $B$
232находятся из \eqref{abeq} с использованием полученных компонент
233$\omega_{ij}^N(a)$.
234
235Решение на каждом отрезке разбиения $[0; a]$ находится из
236\eqref{fmsolution} с использование найденного $A$ и последовательности
237приближений фундаментальной матрицы на $[x_i; x_{i+1}]$ для $\forall
238i$.
239
240\clearpage
241\subsection{Реализация}
242
243Описание основных процедур, необходимых для реализации метода,
244находится в файле \filename{fundmatrix-solution.scm} (его полное содержание
245приведено на странице \pageref{fundmatrix-solution.scm-full-listing}).
246
247В исходном тексте программы активно используются последовательные
248определения функций в терминах друг друга.
249
250Так, основной вычислительный процесс метода — построение приближений
251фундаментальной матрицы — выражен в функции
252\procname{build-fundamentals}:
253
254\input{build-fundamentals__fundmatrix-solution.scm-tag-listing}
255
256\procname{build-fundamentals} представляет последовательность вычислений
257фундаментальной матрицы на интервалах $[x_i; x_{i+1}]$ в виде частного
258случая функции \procname{evolve-sequence}, возвращающей
259последовательность $a_{s_1}, \dotsc, a_{s_n}$, где $a_{s_k} =
260f(a_{s_{k-1}}, s_{k-1})$
261(см. с. \pageref{shared.scm-full-listing}). Из определения
262\procname{build-fundamentals} видно, что роль $s_k$ выполняют точки $x_i
263= \frac{a}{N}i$ с $i = 1 \dotso N$, а $a_{s_{k-1}}$ — приближение
264фундаментальной матрицы на предыдущем отрезке (на первом шаге
265$\Omega_N$ приближается единичной матрицей). Комбинируются же эти
266значения при помощи матричного умножения, как следует из \eqref{fmx}.
267
268Функция \procname{variable-matrix} возвращает матрицу $A$ системы
269\eqref{mdeq} для заданной по условию функции $n(x)$:
270
271\input{variable-matrix__fundmatrix-solution.scm-tag-listing}
272
273Возвращённая матрица потом используется в \procname{build-fundamentals}.
274
275В \procname{build-fundamentals} используется и функция
276\procname{matrix-exp}, вычисляющая матричную
277экспоненту $f(x, y, z) = e^{A(x)(y-z)}$ путём разложения в ряд Тейлора
278\eqref{matrix-exp} с использованием схемы Горнера:
279
280\input{matrix-exp__matrices.scm-tag-listing}
281
282В этой функции последовательность коэффициентов матричного многочлена
283$\frac{1}{0!}, \frac{1}{1!}, \frac{1}{2!}, \dotsc$ генерируется
284функцией \procname{exp-series-coefficients},
285выраженной в терминах вышеупомянутой \procname{evolve-sequence}.
286
287Вычисление матричной экспоненты в каждой точке выражено через
288функцию высшего порядка \procname{general-horner-eval}, представляющую
289собой обобщённую схему Горнера:
290
291\input{general-horner-eval__shared.scm-tag-listing}
292
293\procname{general-horner-eval}, в свою очередь, является частным случаем
294функции высшего порядка \procname{fold-right}, реализующей свёртку
295последовательности справа налево.
296
297После построения последовательности фундаментальных матриц
298осуществляется поиск коэффициентов $A, B$ путём решения системы
299\eqref{abeq} с помощью метода Гаусса\nocite{bahvalov01} (его исходный код приведён на
300странице \pageref{gauss.scm-full-listing}):
301
302\input{find-A-B__fundmatrix-solution.scm-tag-listing}
303
304С использованием найденного коэффициента $A$ и приближений из
305\procname{build-fundamentals} в функции
306\procname{approximate-solution} согласно \eqref{fmsolution}
307рассчитывается и приближённое решение исходного уравнения \eqref{deq}
308внутри неоднородного слоя:
309
310\input{approximate-solution__fundmatrix-solution.scm-tag-listing}
311
312Функция высшего порядка \procname{iterative-improve} выражает один из
313подходов к решению вычислительных задач: улучшать начальное решение
314при помощи заданной «функции улучшения» до тех пор, пока его не можно
315будет считать «хорошим» в смысле заданной функции оценки решения:
316
317\input{iterative-improve__shared.scm-tag-listing}
318
319Так, в данном методе процедура построения фундаментальных матриц
320повторяется до тех пор, пока вычисляемые коэффициенты отражения и
321прохождения не будут удовлетворять \eqref{energy}:
322
323\input{get-solution__fundmatrix-solution.scm-tag-listing}
324
325Интересно, что второй метод решения поставленной задачи, о котором
326рассказано далее, также определяет сходную функцию
327\procname{make-solution} в виде частного случая
328\procname{iterative-improve}.
329
330Функцией улучшения является двукратное увеличение числа отрезков
331разбиения интервала $[0;a]$ с последующим построением фундаментальных
332матриц, решения и нахождения $A$, $B$, а проверка «качества»
333полученного решения осуществляется при помощи предиката
334\procname{energy-conserves?}:
335
336\input{energy-conserves?__shared.scm-tag-listing}
337
338\clearpage
339
340\subsection{Исходные данные}
341\input{statement.scm-initial-data}
342
343В терминах Scheme она задаётся следующим образом:
344
345\input{f__statement.scm-tag-listing}
346
347\subsection{Результаты}
348
349\input{fundmatrix__statement.scm-results}
350
351\includeplot{fundmatrix}{statement.scm}
352
353\clearpage
354
355\subsubsection{Результат вычислений с альтернативным набором исходных данных}
356
357Метод построения фундаментальных матриц применим в задачах с более
358сложными выражениями для $n(x)$ (но требуется, чтобы $n(x)$ была
359непрерывной внутри $[0;a]$). Далее представлены результаты работы
360с иными, нежели в предыдущем разделе, данными.
361
362\input{exo-statement.scm-initial-data}
363
364\input{fundmatrix__exo-statement.scm-results}
365
366\includeplot{fundmatrix}{exo-statement.scm}
367
368\clearpage
369
370\section{Решение методом последовательных приближений}
371
372\subsection{Описание}
373
374Уравнение \eqref{deq} можно переписать в следующем виде:
375
376\begin{equation}\label{ndeq}
377\frac{d^2u}{dx^2} + k^2 u(x) = (k^2 - n(x)) u(x)
378\end{equation}
379
380Где $k^2$ — значение функции вне интервала $[0; a]$.
381
382Для такого уравнения известна функция Грина:
383
384\[
385G(x, t) = \frac{e^{ik\abs{x-t}}}{2ik}
386\]
387
388Так что решение \eqref{ndeq} выписывается в таком виде:
389
390\[
391u(x) = \int \limits_{-\infty}^{+\infty} {\frac{e^{ik\abs{x-t}}}{2ik} (k^2-n(t))
392 u(t) dt}
393\]
394
395В силу свойств функции $n(x)$, при $x < 0$ и $x > a$ имеем $(k^2 -
396n(x)) \equiv 0$, так что несобственный интеграл можно заменить на
397интеграл в конечных пределах от $0$ до $a$:
398
399\[
400u(x) = \int \limits_{0}^{a} {\frac{e^{ik\abs{x-t}}}{2ik} (k^2-n(t))
401 u(t) dt}
402\]
403
404Кроме того, если раскрыть модуль в показателе $e$ для $x<0$ и $x>a$,
405то станет ясно, что выписанное решение содержит волны, уходящие в
406$+\infty$ и $-\infty$. Так как постановка задачи содержит волну
407$e^{ikx}$, приходящую из минус бесконечности, полное поле во всей
408области от $-\infty$ до $+\infty$ имеет следующий вид:
409
410\begin{equation}\label{inteq}
411u(x) = \int \limits_{0}^{a} {\frac{e^{ik\abs{x-t}}}{2ik} (k^2-n(t))
412 u(t) dt} + e^{ikx}
413\end{equation}
414
415Сокращённо это интегральное уравнение Фредгольма второго рода
416записывается в таком виде:
417
418\begin{equation}\label{inteq-short}
419u = \op{A}u + f
420\end{equation}
421
422Где $\op{A}$ — интегральный оператор $\int_{0}^{a}
423{\frac{e^{ik\abs{x-t}}}{2ik} (k^2-n(t)) u(t) dt}$, который действует на
424функцию $u(x)$.
425
426При $x < 0$ решение имеет вид:
427
428\[
429u(x) = \frac{e^{-ikx}}{2ik} \int \limits_{0}^{a} {e^{ikt} (k^2-n(t))
430 u(t) dt} + e^{ikx}
431\]
432
433Откуда можно получить выражение для коэффициента $A$:
434
435\begin{equation}\label{int-A}
436 A = \frac{1}{2ik} \int \limits_{0}^{a} {e^{ikt} (k^2-n(t)) u(t) dt}
437\end{equation}
438
439Аналогично получается следующее выражение и для коэффициента $B$:
440
441\begin{equation}\label{int-B}
442 B = \frac{1}{2ik} \int \limits_{0}^{a} {e^{-ikt} (k^2-n(t)) u(t) dt} + 1
443\end{equation}
444
445Построение решения $u(x)$ производится при помощи метода
446последовательных приближений\nocite{polyanin03}. Решение
447\eqref{inteq-short} представим в таком виде:
448
449\[
450u = u_0 + u_1 + u_2 + \dotsb
451\]
452
453Его подстановка в \eqref{inteq-short} даёт следующее:
454
455\[
456 u_0 + u_1 + u_2 + \dotsb = \op{A}u_0 + \op{A}u_1 +
457 \op{A}u_2 + \dotsb + f
458\]
459
460Если положить $u_0=f, u_1=\op{A}u_0, \dotsc, u_{n+1}=\op{A} u_n$, то
461таким выбором последовательных приближений это уравнение будет
462тождественно удовлетворено.
463
464После нахождения $u(x)$ коэффициенты $A$ и $B$ вычисляются из
465\eqref{int-A} и \eqref{int-B}, соответственно.
466
467\clearpage
468\subsection{Реализация}
469
470Для обеспечения работы программы с широким диапазоном исходных данных
471— различных функций $n(x)$ — интегрирование \eqref{inteq}
472осуществлялось \emph{численно} по формуле Симпсона.
473
474Подинтегральная функция зависит от двух переменных $x$, $t$, а
475интегрирование производится по $t$. Используемая функция
476\procname{integrate} возвращает $g(x) = \int_a^b{f(x, t) dt}$,
477применяя формулу Симпсона так:
478
479\begin{equation}\label{simpson}
480 \begin{split}
481 \int \limits_a^b {f(x, t) dt} = \frac{h}{3}
482 (f(x, a) + 4 (f(x, t_1) + f(x, t_3) + \dotsb + f(x, t_{n-1})) + \\
483 + 2 (f(x, t_2) + f(x, t_4) + \dotsb + f(x, t_{n-2})) + f(x, b))
484 \end{split}
485\end{equation}
486
487Здесь $n = 2k, k \in \mathbb{Z},\ h = (b-a)/n,\ t_k = a+kh$.
488
489\procname{integrate} осуществляет интегрирование функции, переданной
490ей в качестве параметра, по второму её аргументу:
491
492\input{integrate__iterative-solution.scm-tag-listing}
493
494Функция \procname{integrate} выражает идею интегрирования функции двух
495переменных в общем виде. Для вычисления \eqref{inteq} требуется
496использовать приближение функции $u(x)$ и данную по условию функцию
497$n(x)$ в выражении $f(x,t) = e^{ik|x-t|}(k^2-n(t))u(t)$, которое и
498будет интегрироваться (постоянный множитель $1/2ik$ выносится из под
499интеграла). Требуемое сопоставление выполняет функция
500\procname{green-transform}:
501
502\input{green-transform__iterative-solution.scm-tag-listing}
503
504Причём эта функция представлена в виде частного случая более общей
505процедуры \procname{green-subtransform}, выполняющей преобразование
506своих трёх аргументов-функций $u(t), n(t), g(x, t)$ в функцию двух
507аргументов $f(x,t) = e^{ik \cdot g(x, t)}(k^2-n(t))u(t)$:
508
509\input{green-subtransform__iterative-solution.scm-tag-listing}
510
511Тогда при $g(x, t) \equiv \abs{x-t}$ получим подинтегральную функцию
512из \eqref{inteq}, а при $g(x, t) \equiv -t$ — из выражения для
513коэффициента $B$ \eqref{int-B}.
514
515Функция \procname{green-integrate}, используя описанные
516\procname{green-transform} и \procname{integrate}, выполняет
517интегрирование \eqref{inteq}, принимая функции $u(x), n(x)$ и правый
518край отрезка $a$ в качестве аргументов. В сущности,
519\procname{green-integrate} представляет в терминах Scheme оператор
520$\op{A}$ из \eqref{inteq-short}:
521
522\input{green-integrate__iterative-solution.scm-tag-listing}
523
524В этой функции также осуществляется деление результата интегрирования
525на константу $2ik$.
526
527Стоит заметить, что процедура \procname{integrate} (и, следовательно,
528\procname{green-integrate}) возвращает не число, а
529\emph{функцию}. Вычисление значения этой функции в любой точке $x_0$
530порождает свёртку интервала $[0; a]$ в эту точку. Таким образом,
531последовательное применение \procname{green-integrate} порождает
532функцию, вычисление значения которой породит последовательность
533вложенных свёрток на интервале $[0; a]$.
534
535\subsubsection{Применимость метода}
536\label{iter-converge}
537
538Сходимость ряда последовательных приближений $u = u_0 + \op{A} u_0 +
539\op{A}^2 u_0 \dotsb$ обеспечивается наличием константы $1/2ik$
540перед интегралом \eqref{inteq}, если данные $a, n(x), k$ таковы, что
541для $M=\max(k^2-n(x_0))$ выполняется:
542
543\begin{equation}\label{iter-converge-cond}
544 \frac{Ma}{2k}<1
545\end{equation}
546
547В случаях, когда исходные данные не удовлетворяют этому условию, ряд
548приближений разойдётся и получить решение не удастся, в то время как
549при помощи фундаментальных матриц за приемлемое время решаются
550уравнения в системах, где \eqref{iter-converge-cond} не выполняется.
551
552Исходные данные (функция $n(x)$), предлагаемые к использованию в
553настоящей курсовой работе, специально подобраны таким образом, чтобы
554\eqref{iter-converge-cond} заведомо выполнялись.
555
556\subsubsection{Эффективность реализации}
557
558Высокий уровень применяемой абстракции и простота реализации метода
559негативным образом сказываются на эффективности: создаваемая
560последовательным действием \procname{green-integrate} композиция
561свёрток — функция, вычисление которой в каждой точке требует большого
562количества операций.
563
564Сложность \procname{iterative-solve} по элементарным операциям
565\procname{integrate} экспоненциально растёт с увеличением числа
566применений оператора $\op{A}$ к начальному приближению.
567
568При $u_k(x) = \underbrace{\op{A} \comp \dotsb \comp \op{A}}_k\ \comp\ u_0(x)$ для
569вычисления значения $u_k(x_0)$ \emph{в любой точке} $x_0$ потребуется
570выполнение $m^k$ операций, где $m$ — постоянное число элементарных
571операций сложения, умножения в процедуре \procname{integrate},
572зависящее от количества разбиений для интегрирования функции на $[0;
573a]$).
574
575Учитывая построение \emph{последовательных} приближений, то есть
576последовательное вычисление $A \comp e^{ikx},\ A \comp A \comp
577e^{ikx},\ A \comp A \comp A \comp e^{ikx},\dotsc$, количество
578выполняемых операций таково, что описываемый подход к реализации
579метода очевидно не может реально применяться на практике в расчётных
580задачах в силу низкой эффективности.
581
582\subsubsection{Другие подходы к реализации метода}
583
584\paragraph{Символьное интегрирование}
585
586Интеграл \eqref{inteq} может быть вычислен по формуле
587Ньютона-Лейбница, если известна первообразная подинтегральной
588функции. Её поиск в явном виде составляет задачу символьного
589неопределённого интегрирования.
590
591Интегрирование элементарных функций и их простых сочетний является
592решаемой алгоритмически задачей, которая, однако, не является
593тривиальной (по причинам, в большей степени относящейся к общим
594сложностям представления алгебраических выражений на
595компьютере). Сложные выражения под знаком интеграла приводят к
596непростым заменам, преобразованиям и приёмам. Интеграл может и не
597браться в явном виде.
598
599Символьное интегрирование потенциально даёт значительно большие
600преимущества, чем численное, но сравнительно сложнее в
601реализации. Описанная же ранее численная реализация метода
602последовательных приближений представляет собой почти дословный
603перевод словесного описания в термины Лиспа.
604
605\paragraph{Использование готового выражения первообразной}
606
607Первообразная $e^{ik\abs{x-t}}(k^2-n(t))u(t)$ по $t$ может быть
608получена сторонними средствами — в другой программе или вручную (что
609является единственным универсальным и наиболее гибким методом
610интегрирования). По затратам на количество операций, выполняемых на
611стороне описываемой в настоящей работе программы, этот подход наиболее
612эффективен, поскольку сводит задачу нахождения интеграла к совсем
613элементарным операциям.
614
615\clearpage
616\subsection{Результаты}
617
618Исходные данные к задаче приведены в разделе
619\ref{statement.scm-initial-data} на странице
620\pageref{statement.scm-initial-data}.
621
622\input{iterative__statement.scm-results}
623
624\includeplot{iterative}{statement.scm}
625
626\clearpage
627\section{Решение методом коллокации}
628\subsection{Описание}
629Рассмотрим данное по условию дифференциальное уравнение \eqref{deq}:
630
631\begin{equation}\label{inteq-eps}
632 \epsilon [u(x)] = u'' + n(x) u(x) = 0
633\end{equation}
634
635Будем искать его решение в виде
636
637\begin{equation}\label{colloc-approx}
638 U_n(x) = \phi_0(x) + \sum_{m=1}^n{C_m \phi_m(x)}
639\end{equation}
640
641Здесь $\phi_m(x)$ — система линейно независимых \emph{базисных}
642функций. Подставив \eqref{colloc-approx} в \eqref{inteq-eps}, получим
643невязку $\epsilon [U_n(x)]$:
644
645\[
646\epsilon[U_n(x)]=\left [\phi_0(x)+\sum_{m=1}^n{C_m \phi_m(x)} \right
647]''+
648n(x){\left [\phi_0(x)+\sum_{m=1}^n{C_m \phi_m(x)} \right ]}
649\]
650
651или
652
653\begin{equation}\label{colloc-eps}
654\epsilon[U_n(x)]=\psi_0(x)+\sum_{m=1}^n{C_m \psi_m(x)}
655\end{equation}
656
657где
658
659\begin{align*}
660\psi_0(x)& =\phi_0''(x) + n(x) \phi_0(x) \\
661\psi_m(x)& =\phi_m''(x) + n(x) \phi_m(x)
662\end{align*}
663
664Метод коллокации предполагает поиск значений $C_m$ таких, что
665\eqref{inteq-eps} обращается в 0 в заданной системе из $n$ \emph{точек
666 коллокации} $0 \leq x_1 < \dotsb < x_n \leq a$ принадлежащих
667рассматриваемому отрезку $[0;a]$:
668
669\begin{equation}
670 \epsilon[U_n(x_j)] = 0,\qquad j = 1 \dotso n
671\end{equation}
672
673Используя \eqref{inteq-eps} получаем систему из $n$ линейных уравнений
674для определения значений $C_m$:
675
676\begin{equation}\label{colloc-system}
677 \sum_{m=1}^n{C_m\psi_m(x_j)} = -\psi_0(x_j),\qquad j = 1 \dotso n
678\end{equation}
679
680В случае совместности \eqref{colloc-system} найденные коэффициенты
681$C_m$ используются в выражении для приближённого решения
682\eqref{colloc-approx}.
683
684\subsubsection{О выборе системы базисных функций}
685В уравнении \eqref{colloc-eps} члены $\psi_0(x)$ и $\psi_m(x)$
686разделены не случайно: при выборе системы $\phi_k$ (а значит и
687$\psi_k$) требуется учитывать набор краевых условий \eqref{conds}.
688
689Метод коллокации требует от первой базисной функции $\phi_0(x)$
690удовлетворения набору неоднородных краевых условий \eqref{conds}, а от
691$\phi_m(x),\ m>0$ — удовлетворения соответствующим однородным краевым
692условиями.
693
694\subsection{Реализация}
695