Численные методы. Нормированные пространства. Аппроксимация функций и производных. Обыкновенные дифференциальные уравнения
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Министерство образования Республики Беларусь
Учреждение образования
«Полоцкий государственный университет»
Д.Ф. Пастухов, Ю.Ф. Пастухов
ЧИСЛЕННЫЕ МЕТОДЫ.
ЛЕКЦИИ. ЧИСЛЕННЫЙ ПРАКТИКУМ.
Учебное пособие к лекционным и практическим занятиям
для студентов специальности
1-40 01 01 Программное обеспечение информационных технологий
1-98 01 01 Компьютерная безопасность
Новополоцк
ПГУ
2018
УДК 519.6
ББК 22.193
Рецензенты:
А.А. Козлов, кандидат физико-математических наук, доцент,
Заведующий кафедрой высшей математики и дифференциальных
уравнений Полоцкого государственного университета
Пастухов Д.Ф., Пастухов Ю.Ф.
Численные методы.Лекции.Численный практикум: учебное пособие
/Д.Ф. Пастухов, Ю.Ф. Пастухов, - 1 - ое изд., - Новополоцк: ПГУ,
2018. -209 с.
Материал учебного пособия соответствует требованиям Государственного
образовательного стандарта по математике. В книге содержатся основные главы
теории по численным методам для студентов программистов(специальностьпрограммное обеспечение информационных технологий) и численный практикум
по основным разделам курса численные методы.
Для студентов университетов, педагогических вузов, а также для студентов
технических вузов, преподавателей, инженеров, программистов использующих в
своей практической деятельности численные методы.
УДК 519.6
ББК 22.193
© Оформление УО «Полоцкий государственный университет», 2018
2
Оглавление
Предисловие
5
Глава 1.Нормированные пространства. Решение нелинейных уравнений и систем
нелинейных уравнений.
6
Лекция 1.Метрические и нормированные пространства. Нормы чисел, функций, векторов,
матриц. Теорема о неподвижной точке.
6
Лекция 2. Численное решение нелинейных уравнений и систем нелинейных уравнений.
Метод Ньютона. Метод Зейделя.
9
Практическая 1. Численное решение нелинейных уравнений и систем уравнений.
15
Лекция 3. Эффективный поиск точек экстремума и точек перевала гладких функций.
18
Практическая 2. Поиск точек экстремума и точек перевала гладких функций.
25
Глава 2. Аппроксимация функций и производных.
27
Лекция 4. Постановка интерполяционной задачи. Интерполяционный многочлен
Лагранжа.
27
Практическая 3.Интерполяционный многочлен Лагранжа.
31
Лекция 5. Интерполяционный многочлен Ньютона. Конечные и разделённые разности. Их
свойства.
33
Практическая 4.Интерполяционный многочлен Ньютона.
36
Лекция 6. Интерполяционный многочлен Чебышева. Определение. Свойства. Многочлены
наименее уклоняющиеся от нуля.
37
Лекция 7. Интерполяция функций кубическими сплайнами.
41
Практическая 5. Интерполяционный функций кубическими сплайнами.
44
Глава 3. Интерполяция интегралов. Интегральные квадратурные формулы.
50
Лекция 8. Метод неопределённых коэффициентов. Формулы Котесса – Ньютона.
50
Лекция 9. Квадратурные формулы Гаусса.
53
Практическая6. Сравнение порядков погрешности интегральных квадратурных формул.60
Практическая 7. Аппроксимация определённых интегралов.
62
Практическая 8. Аппроксимация двойных интегралов.
65
Практическая 9. Аппроксимация тройных интегралов.
68
Практическая 10. Аппроксимация интегралов в полярной системе координат.
72
Практическая11.Аппроксимация тройных интегралов в сферической системе
координат.
76
Глава 4. Обыкновенные дифференциальные уравнения.
81
Лекция 10. Задача Коши.
81
Лекция 11. Аппроксимация задачи Коши для ОДУ 1 порядка. Погрешность
аппроксимации.
82
Практическая 12. Сравнение порядков погрешности в методах Эйлера, Рунге – Кутты
второго и четвёртого порядков.
85
Лекция 12. Краевые задачи.
Методы построения схем. Метод неопределённых
коэффициентов. Метод Ритца. Метод Галёркина. Интегро-интерполяционный метод.
87
Глава 5. Интегральные уравнения.
93
Лекция 13. Область сходимости интегральных уравнений.
93
Лекция 14. Прямые методы решения интегральных уравнений. Метод Замены интеграла.
Метод замены ядра.
96
Лекция 15. Проекционные методы. Решение интегральных уравнений методом
наименьших квадратов. Метод Петрова – Галёркина. Метод Бубнова – Галёркина. Метод
коллокации.
98
Практическая 13. Численное решение интегральных уравнений.
106
3
Глава 6. Уравнения в частных производных.
112
Лекция 16. Аппроксимация и устойчивость разностных схем для уравнений в частных
производных.
112
Лекция 17. Уравнение теплопроводности.
114
Практическая 14. Решение неявного уравнения теплопроводности методом прогонки. 117
Лекция 18. Волновое уравнение.
123
Практическая 15. Решение волнового уравнения с помощью явной разностной схемы.
Лекция 19. Уравнение Пуассона.
132
Практическая 16. Интегрирование уравнения Пуассона на прямоугольнике на пяти
точечном шаблоне.
136
Практическая 17. Интегрирование уравнения Пуассона на прямоугольнике на девяти
точечном шаблоне.
139
Лекция 20. Согласование порядков аппроксимации дифференциального и граничного
операторов.
Практическая 18. Согласование порядков аппроксимации.
143
Глава 7. Приложения.
Приложение 1.
Оптимальный порядок аппроксимации разностной схемы волнового
уравнения на отрезке.
150
Приложение 2. Аппроксимация уравнения Пуассона на прямоугольнике повышенной
точности.
173
Приложение 3. Аппроксимация двойных и тройных интегралов во внутренних краевых
задачах математической физики.
189
Литература.
208
4
Предисловие
Предлагаемое учебное пособие создано на основе чтения авторами курса лекций
Численные методы в течение ряда лет в Полоцком государственном университете
студентам специальности 1-40 01 01 (Программное обеспечение информационных
технологий). Была выбрана последовательность оглавления, составленная профессором
Бахваловым Н.С. на механико - математическом факультете
Московского
государственного университета. Курс состоит из двух частей – лекционной и
практической. Лекции охватывают основные шесть разделов курса Численные методы для
инженеров – программистов. Большая часть лекционных примеров взята также из
учебного пособия Бахвалова Н.С. Однако есть новые задачи. Например, краевые задачи,
решённые методом Ритца, Галёркина, выведены формулы матричных коэффициентов для
интегральных уравнений для метода коллокации и с помощью них решён пример. Вторая
часть представляет численный практикум, составленный нами на основе работы со
студентами и программы по основным разделам математики, преподаваемых в ПГУ и
численным методам. Мы не разделили по отдельности практическую и лекционную части.
Ядро численного практикума составляет 5 работ, написанных для журнала Вестник
Полоцкого государственного университета по уравнениям в частных производных и
методам оптимизации, затем разбитых на части и упрощённых. Коды программ вставлены
в пособие из работающих программ, неточности возможны только на этапе
конвертирования из doc формата pdf формат.
Авторы прежде всего выражают глубокую признательность и благодарность
кандидату физико-математических наук, заведующему кафедрой высшей математики и
дифференциальных уравнений Полоцкого государственного университета Александру
Александровичу Козлову, настоящему учёному, посвятившему свою жизнь математике, за
обсуждение и прочтение всех статей, вынесенных в приложение и представляющих в
данном издании самостоятельный интерес. Так в приложении доказано несколько
утверждений, связанных с достаточными условиями корректности метода прогонки
системы линейных уравнений с пятидиагональной матрицей, хотя численные методы
алгебры вынесены в самостоятельный на факультете предмет. Пособие можно
использовать в качестве лекционного курса при подготовке к экзамену по численным
методам.
Основная задача работ практикума заключается в проверке идей функционального и
численного анализа на простых тестовых примерах. Работа по времени рассчитана на 2
академических часа, как правило, работы самостоятельны и не зависимы. В то же время
программы и алгоритмы, написанные в приложении, преследуют прежде всего цель
достигнуть высокого порядка точности аппроксимации пусть даже на простых
геометрических областях. В последнее время намечается тенденция использовать в
численном практикуме готовые программные пакеты, например, MATCAD, ANSYS и
другие, в которых фактически отсутствует возможность проверить применимость данного
алгоритма и проверить
соответствие порядка сходимости метода в программе
теоретическому значению порядка. В работе важно получить не конкретное значение
ошибки, а порядок аппроксимации погрешности,х арактеризующий качество
аппроксимации задачи. Можно пользоваться алгоритмом с четвёртым порядком
погрешности, но при написании программы получить всего лишь первый порядок
погрешности. Такая простое несоответствие часто связано с ошибкой в цикле. Студентам
следует научиться определить источник ошибки и приблизить порядок погрешности его
максимальному теоретическому пределу.
5
Можно сказать, что численный анализ вырос, как совокупность методов изучить
законы поведения разности между аналитическим и численным значением различных
математических объектов и методов попытки уменьшить эту разность.
Пастухов Д.Ф., Пастухов Ю.Ф.
6
Глава 1. Нормированные пространства. Решение нелинейных уравнений и систем
нелинейных уравнений
Лекция №1. Метрические и нормированные пространства. Нормы чисел, функций,
векторов, матриц.
Определение 1. Пространство произвольных элементов называется метрическим, если
для любых двух элементов
определена неотрицательная функция
, такая,
что:
1) ( x, y) 0, ( x, y) 0 x y x, y X
2) ( x, y) ( y, x) x, y X
3) ( x, y) ( y, z) ( x, z) x, y, z X
Определение 2. Линейное пространство
произвольных элементов называется
нормированным, если для любых двух элементов
и любого действительного
числа
определена неотрицательная функция ‖ ‖, такая, что:
1) x 0, x 0 x 0 x X
2) x x x X , R
3) x y x y x, y X
Замечание. Нормированным может быть только линейное пространство, так как в нём
определены операции x, x y , а также нулевой элемент линейного пространства.
Определение 3.Пусть R метрическое пространство. Отображение A пространства R в
себя называется сжимающим (или короче сжатием), если существует число 1 , что для
любых элементов x, y R выполняется условие[2]:
( Ax, Ay ) ( x, y)
Тогда n - кратное отображение A , примененное к элементам x, y - образы An x, An y R
находятся на расстоянии
( An x, An y ) ( An 1x, An 1 y ) 2 ( An 2 x, An 2 y ) n ( A0 x, A0 y ) n ( x, y )
(1)
При значениях 1 отображение A
будет непрерывным. Другими словами, для
последовательности элементов xn x; x, xn R : Axn Ax. . Действительно, из условия
( xn , x ) 0 следует условие ( Axn , Ax ) ( xn , x) 0, при n
Сжимающие отображения используют для исследования устойчивости разностных
схем [1,2].
Теорема 1. (принцип сжимающих отображений) А. Н. Колмогоров.
Всякое сжимающее отображение, определенное в полном метрическом пространстве R
имеет одну и только одну неподвижную точку Ax x .
Доказательство. Пусть x0 произвольная точка из R . Обозначим
x1 Ax0 , x2 Ax1, xn Axn 1 An x0 .
Покажем, что последовательность {xn } - фундаментальна. Считаем для определенности
m n:
( xm , xn ) ( xm , xm1 ) ( xm1 , xm2 ) ( xn1 , xn ) ( m1 m1 n ) ( x1 , x0 )
n (1 m n 1 ) ( x1, x0 ) n (1 m n 1 ) ( x1, x0 )
n ( x1, x0 )
1
7
( x1 , x0 )
определяется сжимающим отображением A и начальной
1
n ( x1 , x0 )
0, n .Т.е.
точкой x0 , то оно фиксировано, но
1
(1 )
N ( x1, x0 )
, n, m N ( ) : ( xm , xn ) (0 1)
0 N ( ) 1 log
1
( x1, x0 )
Поскольку число
Что и означает по определению фундаментальность последовательности {xn } .
Обозначим lim xn x . В силу непрерывности оператора A
оператор предельного
n
перехода можно перенести от аргумента функции к самой функции
Ax A( lim xn ) lim Axn lim xn 1 x
n
n
n
Т.е. точка x Ax является неподвижной. Докажем ее единственность от противного.
Пусть x Ax и y Ay :
( x, y ) ( Ax, Ay ) ( x, y ) ( x, y )( 1)
Но положительное число ( x, y ) не может быть меньше себя. Противоречие можно
устранить ( x, y ) 0 Действительно 0 0 0 . Теорема доказана.
Метод простой итерации
Простой итерацией называется рекуррентная последовательность
*
x n 1 x n , x
*
*
x , г де x неподвижна я точка
(2)
Пусть имеется две рекуррентные последовательности
x n 1 x n , y n 1 y n ( x n 1, y n 1 ) y n 1 x n 1 ' xn y n x n ' xn ( xn , y n )
( xn 1, y n 1 ) ( xn , y n ) ' xn ( xn , y n ) ( xn , y n )
Пользуясь теоремой о неподвижной точке, получим достаточное условие сходимости
*
рекуррентной последовательности к неподвижной точке ' x 1 .
Рассмотрим пример.
Построить итерационный процесс вычисления всех корней уравнения методом простой
итерации
f ( x) x 3 3 x 2 1 0
Найдём методом интервалов области локализации корней.
x
-3
-2
-1
sign(F(x))
-1
+1
+1
-1
То есть корни расположены на интервалах [-3,-2],[-1,0],[0,1].
1) x ( x) 3 1 / x 2 xn 1 3 1 / xn 2 ,
1
+1
d
( x) 1 2 / x3 1 x 21 / 3 1
dx
*
последовательность xn 1 3 1 / xn , x0 2 сходится к первому корню x1 2.87938524
2
1 x3
1 xn d
3xn
4
3
xn 1
,
( x) 1
1 3xn xn 1
3
3
3
dx
3 1 xn
Верно для достаточно малых x.
2) x ( x)
2
*
*
1 xn
1 xn
, x0 1, x2 0.6527036 , xn 1
, x0 1, x3 0.532088886
3
3
3
xn 1
3
3
8
Нормы и нормированные пространства.
1)Действительные числа .
2)Векторы x x1,...xn Rn .
a) x C max xi - равномерная норма(норма Чебышева)
i 1, n
1/ 2
1 n
2
b)
x ln
xi
n
l
1
2
n i 1
n
пространство l p с нормой x l n .
1 n
xi , x
n i 1
1/ p
, x
l np
1 n
p
xi
n i 1
, конечномерное
векторное
p
Определение 4. Говорят, что две нормы x 1 , x 2 эквивалентны, если существуют
положительные числа 0 C1 , 0 C2 такие, что C1 x 2 x 1 C2 x 2
Утверждение 1.В конечномерных векторных пространствах l pn все нормы эквивалентны,
причём верно неравенство:
x l n x l n ... x l n ... x C ... n x l n n x l n
1
2
2
2
1
Для определённости, докажем два крайних неравенства
n
n
1 n
1 n
n
n n
x l n xi max xi max xi x C n x l n xi max xi xi x C xi ,
1
1
i 1, n
n i 1
n i 1 i 1, n
n i 1, n
n i 1
i 1, i k
i 1, i k
n x l n x C 0, xk max xi
i 1, n
1
2) Норма функций.
a) равномерно – непрерывная норма (норма Чебышева) f
b) пространство
C
max f ( x)
x[ a , b ]
интегрируемых функций на отрезке со степенью p>1
и нормой
1/ p
1
p
f ( x) dx , p 1
(b a) a
Утверждение 2. Справедливо неравенство
f L f L ... f L ... f C
b
f
Lp
1
2
p
В частности, для функции
1/ 2
1
f ( x) x, a 0, b 1 : f
L1
1/ p
f
Lp
1 p
x dx
0
p
1
xdx f
2
L2
1 2
x dx
0
1/ 3
1
1 3
x dx
3 0
3
1
4
1
1
p 1 p
Доказательство. Покажем справедливость, например, последнего неравенства:
b
1
Lp
(b a) a
3)Нормы матриц
f
p
max f ( x)
1
p
x[ a ,b ]
f ( x) dx
max f ( x) dx
x
[
a
,
b
]
(b a) a
(b a)
b
p
p
b
dx
p
f
C
f
Lp
f
a
1/ 2
2
n
1) A C max ai , j ,2) A 1 max ai , j ,3) A M n max ai , j ,4) A E ai , j
i , j 1
i 1, n
j 1, n
i 1, n
j 1
i 1
H
H
5) A 2 max i , A Axi i xi , A - матрица эрмитово сопряжённая к A .
n
n
i 1, n
9
C
Первые две нормы не имеют специального названия, третья называется максимальной,
четвёртая сферическая, пятая спектральная.
Определение 4. Норма матрицы A называется согласованной с нормой вектора x , если
верно:
Ax A x , x X
A sup
Определение 5. Величина
Ax
x
- называется нормой матрицы подчинённой
данной норме вектора x .
n
Пример. Ax
C
n
n
max ai , j x j max ai , j x j max ai , j max x j A C x C ,
i 1, n
i 1, n
j 1
i 1, n
j 1
j 1
j 1, n
другими словами, матричная норма A C согласована с векторной нормой x C .
AC
Ax
xC
Ax
C
*
x
n
n
i 1,n
j 1
j 1
n
*
AC
, x j sign ai0 , j 1, j 1, n , где i0 : max ai , j ai0 , j , тогда получим
*
C
max ai , j
i 1, n
j 1
1
n
ai0 , j A C . То есть мы показали, что матричная норма A C
j 1
C
является подчинённой к векторной норме x C .
Лекция 2. Численное решение нелинейных уравнений и систем нелинейных
уравнений.
Рассмотрим нелинейное уравнение с однородной правой частью
f ( x) 0
(1)
на интервале (a, b) , содержащем единственный корень уравнения. В случае нескольких
корней необходимо разбить (a, b) на интервалы единственного изменения знака функции,
то есть изолировать корни уравнения по одному на интервал f (a) f (b) 0 .
Будем считать, что начальная точка xi0 итерации находится на изолированном
интервале с единственным корнем xi0 (ai , bi ), f ai f bi 0, i 1, n . В случае сходимости
итерации к корню начальную точку можно располагать слева или справа от корня (можно
выбирать во всех смежных точках интервалов x 0 ai , i 1, n, bn ). Итерационная формула
касательных Ньютона имеет вид:
f xk
x k 1 x k ' k
(2)
f x
10
Рис.1 График функции f x
f xk
Y
X
*
x
x k 1
xk
Корнем уравнения (1) называется точка
*
* *
x (a, b) : f x 0 f ' x 0 . Из рис.1
*
видно, что точка x k 1 расположена ближе к корню x , чем предыдущая итерация x k . Можно
*
предположить, что lim x k x .
k
Из прямоугольного треугольника рис.1 получим
x k 1 x k
f ' x k
f x k
x k 1 x k , откуда
f xk
, k 0,1,2,... , т.е. получена формула касательных Ньютона (2) .
f ' xk
*
*
Введём обозначение x k x k x,x k 1 x k 1 x . Вычтем из обеих частей формулы (2)
*
f xk
k 1
k
решение x , получим x x ' k , k 0,1,2,... .
(3)
f x
Определение 1. Говорят, что числовая последовательность x k сходится к предельному
значению
*
xс
порядком
p 0,
если
существуют
такие
положительные
числа
f '' x
.
C ,С
С 0, h 0, n N такие, что x k h, k N : lim
k 1 p
k
*
x
2 f ' x
Формулы (2) и (3) связаны тождественным преобразованием и, следовательно,
эквивалентны. Справедливо следующее утверждение
*
Теорема 1. Итерационная формула касательных Ньютона (2) при условии, что f ' x 0
сходится со вторым порядком скорости. Имеет место оценка погрешности
*
x k
x k 1 С k 1 x 0
2 ( k 1)
11
Доказательство. Преобразуем формулу(3)
*
''
k 2
f
x
x
*
*
*
3
f x x k
f x f ' x x k
O x k
k
f x
2
x k
x k 1 x k ' k x k *
*
f x
'
k
''
k
f x x
f x x
*
'
k 2
f x 1
O x
*
'
f x
*
f ' ' x x k
*
*
'
k
k 2
''
k 2
f
x
x
1
O
x
f x x
*
*
'
k
k 3
2 f ' x
f x x
O x
2
k
x k
x
*
*
f ' ' x x k
f ' ' x x k
*
*
2
2
f ' x 1 *
O x k
f ' x 1 *
O x k
f ' x
f ' x
*
*
*
*
'' k
'' k
'' k
f '' x x k
f x x
f x x f x x
2
2
2
x k x k 1 * O x k 1 * O x k x k x k 1 * * O x k
2 f ' x
f ' x
2 f ' x
f ' x
*
*
*
''
''
f '' x
f x f x
2
2
O x k 3
(4)
x k * * O x k x k
*
'
'
'
2
f
x
f
x
2
f
x
Из формулы (4) находим порядок скорости сходимости
*
''
f
x
k
x
С, p 2
(5)
lim
2
*
k
'
x k 1
2 f x
Что и требовалось доказать.
*
*
Замечание 1. Формула (5) согласуется с рис.1 f ' ' x 0, f ' x 0,x k 1 0 , т.е.
*
итерация x k 1 находится правее решения x .
Замечание 2. Из формулы (5) следует оценка погрешности
*
''
f
x
2
4
2k
2( k 1)
x k 1 С x k С 2 x k 1 ... С k x1 С k 1 x 0
0 , С
(6)
*
k
'
2 f x
k 1
начальное удаление от решения, x - удаление от решения после k 1 итерации.
*
Замечание 3. При выводе формулы (4) использовалось условие f x 0 , следовательно,
*
итерация (4) сходится не к произвольной точке, а к решению x (удаление x k 1
*
отсчитывается от решения x ).
12
m
*
*
*
*
Замечание 4. Если f ' x 0 для кратного корня x , f ( x ) x x x , x 0, m 2 .
k 1
Сходимость итерации x к нулю не квадратичная, а линейная (с первым порядком).
Доказательство.
x k x k
f x k
x k x k
k
x
m 1
m
k
k '
k
f ' x k
mx k x k x k ' x k m x x x
m
x
x k 1 x k
k
k
x
k
x x 0 m
m x k
x k
Из формулы (7) и определения 1 получим значение предела
x k
1
lim
С , p 1 , т.е. сходимость линейная с первым порядком.
k 1 1
k
m
x
'
k
(7)
Несмотря на потерю скорости сходимости в случае кратного корня можно
предложить модифицированную формулу Ньютона, которая всегда сходится со вторым
порядком.
m
*
*
Имеем f ( x ) x x x , x 0, m 2 .
f ( x)
(8)
f ' ( x)
Для неё составим итерацию аналогичную формуле Ньютона
F x k
x k 1 x k ' k , k 0,1,2,...
(9)
F x
Теорема 2. Итерационные формулы (2) и (9) сходятся к одному и тому же решению, но(9)
Имеет второй порядок сходимости для любого m .
Доказательство.
* m
*
x x x
x x
f ( x)
, то функция F (x )
Поскольку F ( x ) '
*
m 1
m
*
*
f ( x)
m
x x
m x x x x x ' x
Рассмотрим вспомогательную функцию F ( x)
*
имеет тот же самый корень в точке x , что и итерация (2) несмотря на различие функций
F (x ) и f (x ) корень кратности 1 и, следовательно, по теореме 1 имеет второй порядок
сходимости. Для однократного корня можно применить итерацию (2), имеем:
F xk
f xk
1
f xk f ' xk
k
x k 1 x k ' k x k ' k
x
'
k 2
F x
f x f ' xk 2 f xk f ' xk
f
x
f xk f ' xk
2
f ' xk
(10)
Таким образом, мы показали, что итерационная формула (10) сходится к тому же
корню, что и итерация (2), но в отличие от (2) всегда со вторым порядком при любой
кратности корня. Теорема 2 доказана. Формулу (10) называют также модифицированной
формулой Ньютона.
Для функции нескольких переменных формула (2) , решающей одновременно
систему несколько уравнений, другими словами, вектор – уравнение
13
F1 ( x1 , x2 ,... xn ) 0
F ( x , x ,... x ) 0
n
F ( x) 0 2 1 2
...
F2 ( x1 , x2 ,... xn ) 0
А итерация, решающая (11), принимает матричный вид
x k 1 x k F ' x k F x k , k 0,1,2,...
(11)
1
Где
квадратная
(12)
матрица F ' xi
k
Fi k
k
k
k
xi , i, j 1, n, x k x1 , x2 ,... xn ,
x j
называемая
F k
якобианом, очевидно, должна быть невырожденной: det i xi 0 . Иначе,
не
x j
существует матрицы обратной к матрице Якоби в уравнении (12). Действительно, возьмём
*
дифференциал от (11) в окрестности решения – точки x
*
*
*
*
*
*
dF
(
x
1 , x 2 ,... x n ) F1 ( x1 , x 2 ,... x n )dx
1
*
*
*
*
*
*
*
dF2 ( x1 , x 2 ,... x n ) F2 ( x1 , x 2 ,... x n )dx
dF ( x )
...
*
*
*
*
*
*
dFn ( x1 , x 2 ,... x n ) Fn ( x1 , x 2 ,... x n )dx
(13)
*
*
*
dx dx1, dx2 ,..., dxn x1 x1, x2 x2 ,..., xn xn
Формула (13) эквивалентна
1
F *
*
*
dFi ( x ) Fi ( x ) Fi ( x ) Fi ( x ) i x dx j F ( x ) F ' x dx dx F ' x F ( x )
j 1 x j
*
n
*
(14)
*
*
x k 1 ближе к решению x (заменим x на x k 1 ), чем x k из (14),
Учитывая, что итерация
получим x k x k 1 dx F ' x k
1
F ( x k ) x k 1 x k F ' x k F ( x k )
1
(15)
Матричная формула касательных Ньютона (15) кроме невырожденности матрицы
Якоби для получения максимальной скорости сходимости ( p 2 ) требует
дополнительных условий[1] с оценкой погрешности аналогичной формуле (6).
Теорема 3.Пусть a x : x X H a. Пусть при некоторых a, a1, a2 ,0 a,0 a1, a2
Выполняются условия
F ( x)
'
1
H
a1 y Y
при
(16)
F (u1 ) F (u2 ) F ' (u2 )u1 u2 a2 u2 u1
Y
2
H
при u1, u2 a .
x a , y
(17)
Обозначим с a1 a2 , b min a, c 1 . Тогда справедливо утверждение
(О сходимости метода Ньютона). При условиях (16),(17) x 0 a итерационный процесс
Ньютона (15) сходится с оценкой погрешности
xn X
X
c 1 c x 0 X
2n
H
(18)
Отметим, что (18) является многомерным аналогом доказанной нами формулы(6),
(16) обеспечивает невырожденность матрицы Якоби, (17) эквивалентно условию Липшица
для функции F (u ) , кроме того, требуется гладкость функции F (u ) .
14
Однако на практике удобно пользоваться не матричной формулой (15), а формулой
Ньютона – Зейделя(19), требующей знание не n 2 элементов матрицы Якоби, а всего n
элементов (в случае если все её диагональные элементы не вырождены). Это уменьшает
вычислительные затраты (машинное время) и полную ошибку округления.
m 1
F1 ( x1m , x2m ,..., xnm )
m
x
x
,
1
'
1
m
m
m
F
(
x
,
x
,...,
x
)
1 x1
1
2
n
m 1
m
F ( x , x ,..., xnm )
x2m 1 x2m '2 1 m 1 2 m
,
F2 x 2 ( x1 , x2 ,..., xnm )
....
(19)
m 1
m 1
m 1
m
m
x m 1 x m Fi ( x1 , x2 ,..., xi 1 , xi ,..., xn ) ,
i
'
i
Fi xi ( x1m 1 , x2m 1 ,..., xim11 , xim ,..., xnm )
....
m 1
m 1
m 1
m 1
m 1
m
x m 1 x m Fn ( x1 , x2 ,..., xi 1 , xi ,..., xn 1 , xn )
n
'
n
Fn x n ( x1m 1 , x2m 1 ,..., xim11 , xim 1 ,..., xnm11 , xnm )
Для использования формулы Ньютона – Зейделя(19) требуется выполнение условий:
Теорема 4.(достаточные условия применимости формулы Ньютона - Зейделя)
Пусть открытая область A Rn содержит начальную итерацию x10 , x20 ,..., xn0 A и решение
*
* *
x
,
x
,
,...,
x
n A (решение системы уравнений (11)). Функция F ( x ), x A конечного числа
1 2
n переменных:
1) Дважды непрерывно дифференцируема F ( x ) C 2 ( A)
2) Матрица
Fi ( x )
i, j 1, n обладает
x j
Якоби
Fi ( x )
M 1,i
xi
n
j 1, j i
диагональным
преобладанием:
Fi ( x )
, i 1, n, x A
x j
3) Диагональные элементы матрицы Якоби равномерно не вырождены:
Fi ( x )
M 2,i 0, i 1, n, x A где M1,i , M 2,i , i 1, n - некоторые константы.
xi
M 1,i
qi 1, i 1, n .Обозначим q max qi
i 1, n
M 2,i
Тогда система уравнений (6) сходится к единственной стационарной точке(5), по
крайней мере, с первым порядком скорости и имеет место оценка погрешности после m
итераций
(1 q) x 0 qm (1 q)qm
x m x m x
l0 , где l0 x1 x 0 - расстояние между начальными
2
1 q
1 q
итерациями x 0 , x1 , x x1 x1, x2 x2 ,..., xn xn .
Доказательство теоремы 4 дословно повторяет доказанную нами теорему 1 во
второй практической работе (для матрицы Гессе) куда мы делаем ссылку. Кроме
достаточных условий сходимости итерационных формул (2),(19)необходимо получить
условие задания открытой области A Rn , в которую мы будем помещать начальную
15
точку итерации. Для этого воспользуемся формулой простой итерации, которую сведём к
формуле Ньютона – Зейделя. Метод простой итерации пишут в виде формулы:
x k 1 g x k , k 0,1,2,...
(20)
Из формулы (20) получим, полагая непрерывную дифференцируемость функции g (x )
x k 1 x k g x k g x k 1 g ' x k 1 x k x k 1 ,обозначим
y k x k 1 x k , y k 1 x k x k 1, тогда y k g ' x k y k 1 O y k .
2
Возьмём норму от последнего уравнения y k g ' x k y k 1
(21)
Из (21) получаем достаточное условие, наложенное на функцию g (x ) , при котором
отображение (20) будет сжимающим g ' x k 1 q 1, k 1,2,...
(22)
Используем формулу (20), условие (22) для указания области сходимости в итерации (2)
f ' x k f x k f '' x k f x k f '' x k , тогда
f x k
'
k
g
x
1
f ' x k
f ' x k 2
f ' x k 2
2
x k 1 g x k x k
g ' x k
f x k f ' ' x k
f x
'
k
2
q 1, k 1,2,...
(23)
Практическая работа №1. Решение нелинейных уравнений и систем нелинейных
уравнений
Рекомендации к программе
1)Используем формулу (2) для нахождения корней функции 1 переменной и формулу (19)
для поиска корней системы нелинейных уравнений.
2)Приведём пример из задачника по численным методам[2]в качестве теста
x g ( x) e2 x 1, f ( x) x e2 x 1 . Возьмём 2 начальные точки итерации x 01 10, x02 0 .
Воспользуемся формулой (23)
g ' x 2e2 x , g ' 10 2e20 1 - в точке x 01 10 достаточные условия выполнены,
'
g x
k
f x
f x k f '' x k
'
k
2
x e 2 x 1 4e 2 x
1 2e
2x 2
, g ' 10 0.99999998 1
в
точке x 01 10
достаточные условия также выполнены.
3)Запишем программу для корней уравнения функции 1 переменной, число итераций
n 20 , учтём, что каждое выражение, использующее в цикле знак равно, рассматривается
компилятором с новым значением циклической переменной слева от знака равно и со
старым значением циклической переменной справа от знака равно. Это упрощение
позволяет не использовать массивы данных и записывать уравнения максимально
f xk
коротко, например запись формулы x k 1 x k ' k в программе эквивалентна формуле
f x
f x
x x ' .
f x
4)Поскольку найденные корни нелинейных функций зачастую не являются
рациональными числами, или представимыми в виде композиции элементарных функций,
то единственной возможной проверкой их истинности является проверка при подстановке
*
в уравнение f ( x ) : f x 0 .
#include
#include
16
const int n=30;
int main()
{
int i;
double x,y;
x=-10.0;
for(i=0;i<=n;i++)
{
x=x-(-x+exp(2.0*x)-1.0)/(-1.0+2.0*exp(2.0*x));
}
printf("x=%.16lf\n",x);
printf("proverka :f(%lf)=%.16lf\n",x,-1.0-x+exp(2.0*x));
}
Для начальной точки x 01 10 программа возвращает
x=-0.7968121300200202
proverka :f(-0.796812)=0.0000000000000001
Press any key to continue
x g ' (-0.7968121300200202) 2e2 x 2e1.5936 0.203 , т.е. достаточные условия (23)
выполнены от начальной точки x 01 10 до первого корня x=-.7968121300200202.
Для начальной точки x 02 10 программа (n=30)возвращает второй корень
x=0.0000000000000000
proverka :f(0.000000)=-0.0000000000000001
Press any key to continue
Однако, сходимость для второй начальной точки хуже, чем для первой начальной точки,
так как q2 0.99999998 очень близка к 1, поэтому и число итераций больше( n2 30 ), чем
в первом случае( n1 20 ).
Рассмотрим пример с системой нелинейных уравнений[2]:
3
2
x3 y 2 1
F1 ( x, y ) x y 1 0
(24)
3
F2 ( x, y ) xy 3 y 4 0
xy y 4
Составим для приведенной вектор – функции матрицу Якоби
F1 ( x, y ) F1 ( x, y )
3x 2
2y
Fi ( x, y )
x
y
(i, j 1,2)
3
F
(
x
,
y
)
F
(
x
,
y
)
x j
y
3xy 2 1
2
2
x
y
По теореме 4 матрица Якоби имеет диагональное преобладание в точках
1,1, (1,1), (1,1), (1,1) (выполняется первое условие теоремы 4). Которые мы используем
в качестве начальной точки итерации.
Для итерации
F1 ( x, y )
k 1
k
k 1
x3 y 2 1
k
x
x
x x F ' ( x, y )
3x 2
1x
3
y k 1 y k F2 ( x, y )
y k 1 y k xy y 4
'
3xy 2 1
F2 y ( x, y )
запишем программу
#include
#include
int main()
{
17
int i,n;
double x,y;
n=20;
x=-0.5;
y=1.0;
for(i=1;i<=n;i++)
{
x=x-(x*x*x-y*y-1.0)/(3.0*x*x);
y=y-(x*y*y*y-y-4.0)/(3.0*x*y*y-1.0);
}
printf("x=%.16lf y=%.16lf\n",x,y);
printf("proverka :f1(%lf,%lf)=%.16lf,f2(%lf,%lf)=%.16lf\n",x,y,x*x*x-y*y1.0,x,y,x*y*y*y-y-4.0);
}
Для начальной точки x01, y 01 (1,1) после 1 итерации получим x11, y11 (0,4) и,
следовательно, нарушено второе условие теоремы 4 равномерной невырожденности (на
ноль делить нельзя). Поэтому, сохраняя знаки координат, изменим их значения
x 01, y 01 (0.5,1) . Программа возвращает значения
x=1.5020390491806941 y=1.5455686009344596
proverka :f1(1.502039,1.545569)=0.0000000000000071,f2(1.502039,1.545569)=-0.000
0000000000018.
Press any key to continue
Для начальной точки x 02, y 02 (1,1) после 1 итерации получим x12, y12 (0,4) и,
следовательно, нарушено второе условие теоремы 4 равномерной невырожденности.
Поэтому, сохраняя знаки координат, изменим их значения x 02, y 02 (1.5,1) . Программа
возвращает значения
x=1.5020390491807305 y=1.5455686009344458
proverka :f1(1.502039,1.545569)=0.0000000000002953,f2(1.502039,1.545569)=0.0000
000000000000.
Press any key to continue
03
Для начальной точки x , y 03 (1,1) программа возвращает значения
x=1.5020390491806925 y=1.5455686009344602
proverka :f1(1.502039,1.545569)=-0.0000000000000053,f2(1.502039,1.545569)=-0.00
00000000000004
Press any key to continue.
04
Для начальной точки x , y 04 (1,1) программа возвращает значения для n 70
x=1.5020390491807114 y=1.5455686009344531
proverka :f1(1.502039,1.545569)=0.0000000000001439,f2(1.502039,1.545569)=0.0000
000000000000.
Press any key to continue.
Откуда мы заключаем, что система уравнений (24) имеет единственное решение
x=1.5020390491807305 y=1.5455686009344458
Литература
1)Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы. – 6-е изд. –
М.:БИНОМ. Лаборатория знаний.
2)Бахвалов Н.С., Лапин А.В., Чижонков Е.В. Численные методы в задачах и упражнениях:
учебное пособие. – М.:БИНОМ. Лаборатория знаний,2010. – 240 с.
18
Лекция 3. Эффективный поиск точек экстремума и точек перевала гладких
функционалов
Введение. Градиентные методы являются не достаточно эффективными с точки зрения
точности. Действительно, пусть необходимо найти решение с абсолютной точностью
2
103 , а значение функционала в экстремальной точке с точностью порядка 103 106 6 значащими цифрами. Зададим шаг итерации h 0.001 с начальным расстоянием между
первым приближением и стационарной точкой на 100 единиц. Понадобится число
102 / 103 105 итераций (если градиент по модулю 1, иначе точность оценки ещё хуже
или число итераций ещё больше), в то время как можно получить решение и
экстремальное значение гладкого функционала с абсолютной точностью 1015 всего за 30
шагов итерации с тем же начальным удалении от стационарной точки. Число
арифметических операций и ошибка округления пропорциональны размерности цикла.
Одним из эффективных методов численного решения системы уравнений является метод
Зейделя[2]. Даже более эффективным по сравнению с формулой касательных Ньютона (в
случае если метод Зейделя и метод Ньютона применимы одновременно). В матричном
методе Ньютона
нужно вычислить n 2 элементов матрицы Якоби, погрешность
дополнительно увеличивается при отыскании обратной матрицы к матрице Якоби:
1
1
x m1 x m F ' x m * F x m , где F ' x m - матрица обратная к матрице Якоби. Метод
Зейделя использует только диагональные элементы матрицы Якоби, т.е. n элементов.
Поэтому при одинаковом числе итераций в методе Зейделя меньше элементарных
операций и, следовательно, ошибка округления.
Определение 1. Среди двух методов, решающих одну и ту же задачу с одинаковой
точностью при одинаковых начальных условиях, более эффективным назовём тот,
который использует минимальное число элементарных операций(+,-,/,*).
Постановка задачи
Рассмотрим n - мерную
x x1, x2 ,..., xn A Rn задачу на безусловный экстремум
достаточно гладкого функционала f ( x ) C 3 A , т.е. множество функционалов трижды
непрерывно дифференцируемых в открытой области A , имеющих непрерывные частные
производные до 3 – го порядка включительно[1].
f ( x1 , x2 ,..., xn ) extr
(1)
n
3
x1 , x2 ,..., xn A R , f ( x) C A
Для поиска экстремальных точек задачи (1) можно использовать 2 подхода. Первый
заключается в исследовании основного функционала, например, градиентными методами.
Другой подход заключается в использовании необходимых условий экстремума функции
нескольких переменных[1]:
f ' x1 ( x1 , x2 ,..., xn ) F1 ( x1 , x2 ,..., xn ) 0
'
f x 2 ( x1 , x2 ,..., xn ) F2 ( x1 , x2 ,..., xn ) 0
(2)
...
f ' x ( x , x ,..., x ) F ( x , x ,..., x ) 0
n
n
1
2
n
n 1 2
где ( x1, x2 ,..., xn ) - стационарная точка, т.е. решение системы уравнений (2).
Будем решать систему уравнений (2) численно методом простой итерации. Метод
Зейделя для системы уравнений заданных в неявном виде:[2]:
19
F1 x1m 1 , x2m ,..., xnm 0,
m 1
m 1
m
F2 x1 , x2 ,..., xn 0,
(3)
...
F x m 1 , x m 1 ,..., x m 1 , x m 1 0
2
n 1
n
n 1
То есть исходная система (2) сводится к последовательному решению n уравнений
системы (3), каждое из которых
Fi x1m1, x2m1,..., xim1,..., xnm 0 , i 1, n представляет
уравнение с одной неизвестной xim1 переменной, а все остальные переменные при
фиксированной итерации остаются “замороженными”, т.е. постоянными. В этом случае
можно для нахождения i - ой переменной использовать i - ое уравнение с
явным видом итерации – формулу касательных Ньютона для уравнения с одной
неизвестной переменной:
m 1
m
x1 x1
x2m 1 x2m
x m 1 x m
i
i
x m 1 x m
n
n
F1 ( x1m , x2m ,..., xnm )
,
'
F1x1 ( x1m , x2m ,..., xnm )
F2 ( x1m 1 , x2m ,..., xnm )
,
'
F2 x 2 ( x1m 1 , x2m ,..., xnm )
....
....
Fn ( x1m 1 , x2m 1 ,..., xim11 , xim 1 ,..., xnm11 , xnm )
'
Fn x n ( x1m 1 , x2m 1 ,..., xim11 , xim 1 ,..., xnm11 , xnm )
Обозначим вектор x m x1 ,x2 ,...,xn
(4)
Fi ( x1m 1 , x2m 1 ,..., xim11 , xim ,..., xnm )
,
'
Fi xi ( x1m 1 , x2m 1 ,..., xim11 , xim ,..., xnm )
m
m
m
x
m
1
x1, x2m x2 ,..., xnm xn , аналогично:
x m1 x1m1,x2 m1,...,xn m1 x1m1 x1, x2m1 x2 ,..., xnm1 xn
,где вектор ( x1, x2 ,..., xn ) представляет стационарную искомую точку решения системы (2) (5), т.е.:
lim x1m1 lim x1m x1 , f x'1 ( x1 , x2 ,..., xn ) 0,..., lim xnm1 lim xnm xn , f x'n ( x1 , x2 ,..., xn ) 0
m
m
m
m
(5)
''
f xi xi ( x1 , x2 ,..., xn ) 0, i 1, n
f ( x1, x2 ,..., xn ) , учитывая обозначения (5)
Перейдём к старой переменной – функции
f x'i x1m1, x2m1,..., xim1,..., xnm Fi x1m1, x2m1,..., xim1,..., xnm , i 1, n .
m 1
m 1
Вычтем из правой и из левой части (4) каждого i - го уравнения xi , xi xi xi ,
xim xim xi , кроме того, в частных производных f x' , f x'' x переменные с порядком m и
i
m 1 выразим через переменные x , x
m
k
m 1
k
i i
:
xkm1 xk xkm1 , xkm xk xkm , k 1, n
20
m 1
m
x1 x1
x m 1 x m
2
2
m 1
m
xi xi
m 1
m
xn xn
f x'1 ( x1 x1m , x2 x2m ,..., xn xnm )
f x'1' x1 ( x1 x1m , x2 x2m ,..., xn xnm )
,
f x' 2 ( x1 x1m 1 , x2 x2m ,..., xn xnm )
f x' '2 x 2 ( x1 x1m 1 , x2 x2m ,..., xn xnm )
,
....
f x'i ( x1 x1m 1 , x2 x2m 1 ,..., xi 1 xim11 , xi xim ,..., xn xnm )
f x'i' xi ( x1 x1m 1 , x2 x2m 1 ,..., xi 1 xim11 , xi xim ,..., xn xnm )
(6)
,
....
f x' n ( x1 x1m 1 , x2 x2m 1 ,..., xn 1 xnm11 , xn xnm )
f x' 'n x n ( x1 x1m 1 , x2 x2m 1 ,..., xn 1 xnm11 , xn xnm )
Сходимость метода
Теорема 1. (условия сходимости итерации (6)).
Пусть открытая область A Rn содержит
начальную итерацию
x , x ,..., x A и
1
2
n
x1, x2 , ,..., xn A (решение системы уравнений (2)). Функция
стационарную точку
f ( x), x A конечного числа n переменных:
1)Трижды непрерывно дифференцируема f ( x ) C 3 ( A)
2)Матрица вторых частных производных (матрица Гессе) обладает диагональным
преобладанием f
''
xi x j
( x )i, j 1, n : f
''
xi xi
( x ) M 1,i
n
j 1, j i
f x'i' x j ( x ) , i 1, n, x A
3)Диагональные элементы матрицы Гессе равномерно не вырождены:
f x'i' xi ( x ) M 2,i 0, i 1, n, x A где M1,i , M 2,i , i 1, n - некоторые константы.
M 1,i
qi 1, i 1, n .Обозначим q max qi
i 1, n
M 2,i
Тогда система уравнений (6) сходится к единственной стационарной точке(5), по
крайней мере, с первым порядком скорости и имеет место оценка погрешности после m
итераций:
(1 q) x 0 qm (1 q)qm
m
m
где l0 x1 x 0 расстояние
между
x x x
l0 ,
2
1 q
1 q
начальными итерациями x 0 , x1 , x x1 x1, x2 x2 ,..., xn xn .
Доказательство проведём по индукции (достаточность).
Разложим последовательно
f x'i ( x1 x1m1, x2 x2m1,..., xi 1 xim11, xi xim ,..., xn xnm ), i 1, n , входящую в каждое
уравнение системы (6) в ряд Тейлора с центром в стационарной точке, для первого
уравнения имеем:
1) i 1:
21
n
n
2
2
f x'1 ( x1m , x2m ,..., xnm ) f x'1 ( x1 , x2 ,..., xn ) f x'1' x j ( x )x mj O1 x m f x'1' x j ( x )x mj O1 x m в
j 1
j 1
силу справедливости (5). Где x m max x mj , x mj x m , j 1, n , m 0,1,2,... .
(7)
j 1, n
lim
i (x m ) Сi 0, i 1, n .
m
x 0
В силу условий (5),(6),(7) и условия 1) теоремы:
f x'1 ( x1 x1m , x2 x2m ,..., xn xnm )
x1m 1 x1m
f x'1' x1 ( x1 x1m , x2 x2m ,..., xn xnm )
n
x1m
f
j 1
''
x1 x j
2
( x )x mj O 1 x m
f x'1' x1 ( x1 x1m , x2 x2m ,..., xn xnm )
x1m
x1m
f x'1' x1
n
2
f x'1 x f x'1' x j ( x )x mj O 1 x m
j 1
f x'1' x1 ( x1 x1m , x2 x2m ,..., xn xnm )
x1m
( x1 x1m , x2 x2m ,..., xn xnm )
f x'1' x1 ( x1 , x2 ,..., xn )
(В силу условия 1) теоремы) f ( x ) C 3 ( A) :
n
f
''
x1x j
( x )x mj
x1m
2
O x m x1m
''
m
m
f x1x1 ( x1 x , x2 x2 ,..., xn xn )
j 2
m
1
n
1
n
f
''
x1 x1
j 2
m
1
( x1 x , x2 x ,..., xn x )
m
2
m
n
n
x1m 1
f
f
''
x1 x1
''
x1 x j
j 1
( 3)
x1x1x j
( x1 , x2 ,..., xn )x mj
f x'1' x1 ( x1 , x2 ,..., xn )
n
f x'1' x j ( x)x mj
f
x1m x1m
f
f
''
x1 x1
2
O x m
''
x1 x j
( x )x mj
2
O x m
( x1 x , x2 x ,..., xn x )
j2
m
1
m
2
m
n
( x )x mj
2
O x m .
( x1 x , x2 x ,..., xn x )
j 2
m
1
m
2
m
n
Оценим последнее выражение по модулю (в следующей оценке использовано неравенство
треугольника для модуля суммы величин и неравенство (7)):
n
x
m 1
1
f x'1' x j ( x ) x mj
n
x m f x'' x ( x )
2
2
j2
O x m ''
O x m
''
m
m
m
m
m
m
f x x ( x1 x1 , x2 x2 ,..., xn xn )
f x1 x1 ( x1 x1 , x2 x2 ,..., xn xn )
1 1
j2
1 j
Используя условие равномерной невырожденности 3) и условие диагонального
преобладания 2) Т.1:
f x'1' x1 ( x1 x1m , x2 x2m ,..., xn xnm ) M 2,1, x A ; M 1,1
n
j 1, j 1
n
f x'1' x j ( x ) f x'1' x j ( x ) :
j2
M 1,1
x m q1 x m q x m
(8.1)
M 2,1
3) Для произвольного i го уравнение системы (6) продолжим.
По индукции предположим выполнение неравенств xkm1 x m , k 1, i 1 , тогда повторяя
x1m 1 x m
преобразование с i м уравнением системы:
22
i 1
n
2
f x'i ( x1m1 , x2m1 ,..., xim ,..., xnm ) f x'i ( x1 , x2 ,..., xn ) f x'i' x j ( x )x mj1 f x'i' x j ( x )x mj Oi x m
j 1
j i
i 1
n
2
f x'i' x j ( x )x mj 1 f x'i' x j ( x )x mj Oi x m
j 1
j i
x
x
m1
i
m
i
f x'i ( x1 x1m1 ,..., xi1 xim11 , xi xim ,..., xn xnm )
f x''i xi ( x1 x1m1 ,..., xi1 xim11 , xi xim ,..., xn xnm )
i 1
n
2
f x'i' x j ( x )x mj 1 f x'i' x j ( x )x mj O i x m
j 1
j i
f x'i' xi ( x1 x1m 1 ,..., xi 1 xim11 , xi xim ,..., xn xnm )
xim
f x'i' xi ( x1 x1m 1 ,..., xn xnm )
f x'i' xi ( x1 , x2 ,..., xn )
i 1
n
j 1
j i 1
f x''i x j ( x)x mj1 f x''i x j ( x)x mj
f ( x1 x ,..., xn x )
m1
1
''
xi xi
m
n
2
O x m
i 1
1
i 1
f
j 1
''
xi x j
( x )x mj1
n
f
j i 1
''
xi x j
xim
f
j 1
f ( x1 x ,..., xn x )
f
Сокращая промежуточные записи, получим:
m1
1
''
xi xi
m
n
i 1
xim 1 xim xim
f x'i' x j ( x)x mj1
j 1
f x'i' x j ( x )x mj1
j 1
f
''
xi xi
j 1
n
f
j i 1
''
xi x j
( x1 x
m 1
1
n
f
j i 1
''
xi x j
( x )x mj
,..., xn x )
m
n
n
( 3)
xi xi x j
( x )x mj1 f x(i3xi)x j ( x )x mj
2
O x m
j i 1
''
xi xi
f ( x1 , x2 ,..., xn )
''
xi x j
''
xi xi
( x )x mj1
n
f
j i 1
( x1 x
( x )x mj
f x'i' xi ( x1 x1m 1 ,..., xn xnm )
i 1
xim 1
f
i 1
( x )x mj
xim
m1
1
''
xi x j
( x )x mj
,..., xn x )
m
n
2
O x m
2
O x m ,или:
2
O x m
(*)
Обозначение последней формулы отличается от общей нумерации в виду её важности.
Учитывая индуктивное предположение xkm1 x m , k 1, i 1 , получим:
i 1
xim1
f
j 1
( x ) x
''
xi x j
m1
j
n
f
j i 1
''
xi x j
( x ) x
f ( x1 x ,..., xn x )
''
xi xi
xim 1 x m
m1
1
m
n
n
m
j
f x'i' x j ( x ) x mj
2
2
j 1, j i
O x m ''
O x m
m1
m
f x x ( x1 x1 ,..., xn xn )
i i
M 1,i
x m qi x m q x m
M 2, i
(8.2)
Индуктивно доказано справедливость xim 1 x m q x m , i 1, n , поэтому
x m1 max xim1 x m q x m .
i 1, n
Таким образом, сходимость при выполнении условий теоремы доказана.
4) Оценим погрешность метода.
Пусть x m1 x m q x m1 q2 ... x1 qm x 0 qm1 0 ,
m
(9)
23
где x 0 max xi0 max xi0 xi
i 1, n
начальное
i 1, n
1
приближение
стационарной
точки,
начальная точка x 0 x , x20 ,..., xn0 A .
x
x m 1
xm
Рис.1
На практике известны не величины x m1 и x m , а расстояния между последовательными
итерациями x m , x m 1 (рис.1). Из неравенства треугольника получим:
x m x m1 x m x m1 x x m x x m1 x m x m x m1 (1 q) x m ,
учитывая неравенство x m 1 q x m и используя неравенство треугольника, получим
после m итераций:
x m x x m x m1 x m1 x m 2 x m 2 x m 3 ... x m n x m n 1 x m n 1 x ...
x i 1 x i (1 q) x m (1 q) x m 1 (1 q) x m 2 ... (1 q)( x m x m 1 x m 2 ...)
i m
(1 q) x q
m
q
i
(1 q) x 0 q m
1 q
i 0
.
Поскольку x1 q x 0 , запишем неравенство треугольника с избытком и с недостатком,
получим:
(1 q) x 0 x 0 x1 l0 x1 x 0 x 0 x1 (1 q) x 0 .
Окончательно оценка погрешности имеет вид:
(1 q) x 0 q m (1 q)q m
(10)
x m x m x
l .
1 q
1 q2 0
Замечание 1 (необходимость). Условие 2) диагонального преобладания матрицы Гессе
является также и необходимым условием сходимости. Достаточно привести 1 пример с
условием q 1 , в котором итерация (6) расходится:
f x1, x2 x1 x2 3x1x2 , f x1 x1, x2 2 x1 3x2 , f x 2 x1, x2 2 x2 3x1 . Стационарная точка
2
2
x , x (0,0) .
1
f x1 x1 x1, x2 f x 2 x 2 x1, x2 2, f x1 x 2 x1, x2 f x 2 x1 x1, x2 3, q
2
Согласно(*):
m 1
f x1 x 2 x1 , x2 x2m
x m 2 3 x m
m 1
O
x1
2
m
m
x
2
f
x
x
,
x
x
x1 x1 1
1
2
2
1
f x 2 x1 x1 , x2 x1m
2
3
m 1
x2m 1
m
m
x x
x
O
2
1
2
f x 2 x 2 x1 x1m 1 , x2 x2m
3
1.
2
2
9 m 1
x1 O x m
4
2
9 m 1
x2 O x m
4
2
2
m 1 9 m 1
m 9 m 2
x1 x1 O x m
x1 x1 O x m 1
4
4
, m 2,4,6,...
, m 2,4,6,...
x2m 1 9 x2m 1 O x m 2
x2m 9 x2m 2 O x m 1 2
4
4
24
Откуда видно, что во всех чётных и нечётных итерациях каждый раз удаляются от
стационарной точки, т.е. итерация расходится.
Замечание 2. Формула ( * ) выполняется локально, т.е. условия Т.1 должны выполняться
обязательно в окрестности стационарной точки. Так как условия Т.1 выполняются
абсолютно во всей области A Rn , то они выполнены и локально
в точке
x1, x2 , ,..., xn A .
Замечание 3. Определение равномерной невырожденности матрицы приведено в[3]. Оно
обеспечивает взаимно однозначное отображение окрестности стационарной точки и поля
градиента (стационарная точка – особая точка поля градиента) в каждой итерации (6) –
теорема об обратной функции[1]. Если итерация задаётся формулой x m1 Ax m аналогом формулы (*), где A линейный оператор, и A - сжимающее отображение, т.е.
x m1 q x m x m (что обеспечивается условиями 2) и 3) Т.1) , то по теореме о
неподвижной точке в метрических пространствах[4] сжимающее отображение имеет
единственное решение. Таким образом, единственность решения итерации(6) доказана.
M
Замечание 4. Сходимость (6)выполнена даже при разных значениях 1,i qi 1, i 1, n .
M 2,i
Если по всем переменным i 1, n в итерации (6) недиагональные элементы матрицы Гессе
2 f x
0, j, i 1, n, j i . В этом случае скорость сходимости (6) не линейная, а
xi x j
квадратичная.
В качестве экстремальной задачи, решённой численно, рассмотрим[1]:
f ( x1, x2 , x3 ) x12 x22 x32 x1x2 x1 2 x3 extr .
Запишем градиент и матрицу Гесса для функции f ( x1, x2 , x3 ) :
f ( x1, x2 , x3 ) 2 x1 x2 1, 2 x2 x1,2 x3 2 .
2 1 0
2 f x
H i , j ( x1 , x2 , x3 )
1 2 0 . Условия теоремы 1 выполнены:
xi x j
0 2
M 11 1
1
M 21 2
M
1
1 0 1 , M 12 1, M 22 2, q2 12 1 ,
M 22 2
H1,1 2 H1, 2 H1,3 1 0 1 , M 11 1, M 21 2, q1
H 2, 2 2 H 2,1 H 2,3
H 3,3 2 H 3,1 H 3, 2 0 0 0 . M 13 0, M 23 2, q2
M 13
1 1 1
0 1, q max , ,0 .
M 23
2 2 2
Запишем итерацию по формуле (6):
m 1
2 x1m x2m 1,
m
x
x
1
1
2
m
2 x2 x1m1
m 1
m
x
x
2
2
2
m
m 1
2 x3 2
m
1
x3 x3
2
25
Из (10) необходимое число итераций N
x m
ln
l0
N
1 q 2
1 q
ln q
l
ln 0m
x
x m
ln 0
x
1 q
1 q
1 q
1 q 2
17
Выберем x m 1015, x 0 102 N ln 10 * 3
ln 2
ln q
x 0
ln m
x
1 q
1 q
(11)
ln 1 / q
ln 1 / q
(12)
58 итераций.
Практическая работа №2. Поиск точек экстремума и точек перевала гладких
функций
Составим на языке си программу:
#include
#include
double fx1(double x1,double x2, double x3);
double fx2(double x1,double x2, double x3);
double fx3(double x1, double x2, double x3);
double fxx1(double x1, double x2, double x3);
double fxx2(double x1,double x2, double x3);
double fxx3(double x1, double x2, double x3);
int main()
{
int n,i;
double x1,x2,x3;
printf("Galeev - Tihomirov (primer p.169)\n");
n=60;
x1=-100.0;
x2=100.0;
x3=100.0;
for(i=1;i<=n ;i++)
{
x1=x1-fx1(x1,x2,x3)/fxx1(x1,x2,x3);
x2=x2-fx2(x1,x2,x3)/fxx2(x1,x2,x3);
x3=x3-fx3(x1,x2,x3)/fxx3(x1,x2,x3);
}
printf(" x1*x1+x2*x2 +x3*x3-x1*x2+x1-2*x3\n");
printf("x1=%.16lf,x2=%.16lf,x3=%.16lf,extr=%.16lf\n",x1,x2,x3,x1*x1+x2*x2+x3*x3x1*x2+x1-2.0*x3);
}
double fx1(double x1,double x2,double x3)
{
return 2.0*x1-x2+1.0;
}
double fx2(double x1,double x2, double x3)
{
return 2.0*x2-x1;
26
}
double fx3(double x1,double x2,double x3)
{
return 2.0*x3-2.0;
}
double fxx1(double x1, double x2, double x3)
{
return 2.0;
}
double fxx2(double x1,double x2,double x3)
{
return 2.0;
}
double fxx3(double x1,double x2,double x3)
{
return 2.0;
}
Программа возвращает решение задачи и значение функционала:
x1 0.6666666666666666, x2 0.3333333333333333, x3 1.0000000000000000
extr 1.3333333333333330 . Матрица Гессе положительно определена и, следовательно,
2 1
точке x , ,1 локальный
минимум
функции.
Точное
решение
есть
3 3
4
2 1
x , ,1, f x .
3
3 3
Литература
1) Галеев Э.М., Тихомиров В.М. Краткий курс теории экстремальных задач. – Изд. – во
Московского Университета, 1989. – 204с.: ил.
2)Н.С. Бахвалов, Н.П. Жидков, Г.М. Кобельков. Численные методы. – 7 – е изд.:БИНОМ.
Лаборатория знаний,2011. – 636 с. – (Классический университетский учебник).
3)Федоренко Р.П. Введение в вычислительную физику: Учебное пособие для вузов. –
Долгопрудный: Издательский дом “Интеллект”, 2008. – 504с.
4) Колмогоров А.Н., Фомин С.В. Элементы теории функции и функционального анализа.
– М.:1989 – 450 c.
5) Бахвалов Н.С., Лапин А.В., Чижонков Е.В. Численные методы в задачах и
упражнениях: учебное пособие. – М.:БИНОМ. Лаборатория знаний,2010. – 240 с.
27
Глава 2. Интерполяция функций и производных.
Лекция 4. Постановка интерполяционной задачи. Интерполяционный многочлен
Лагранжа.
Рассмотрим задачу интерполяции многочленами наименьшей степени n Pn (x )
функции
y (x ) на произвольной сетке a x0 x1 x2 xn b, принимающей
заданные узловые значения y(a) y0 , y( x1 ) y1, yx2 y2 , yxn yn .Рассмотрим
условия при которых данная задача имеет единственное решение.
Запишем задачу в
виде системы уравнений:
а0 a1 x0 a 2 x02 a n1 x0n 1 a n x0n y 0
2
n 1
n
а0 a1 x1 a 2 x1 a n 1 x1 a n x1 y1
а a x a x 2 a x n 1 a x n y
0
1 2
2 2
n 1 2
n 2
2
а a x a x 2 a x n1 a x n y
1 n 1
2 n 1
n 1 n 1
n n 1
n 1
0
2
n 1
n
а0 a1 xn a 2 xn a n1 xn a n xn y n
1 x0
x02 x0n 1
Или в матричном виде:
2
1
2
2
2
n 1
2
n
n 1
1
n 1
2
n 1
n 1
n 1
n
(1)
x0n
n
1
n
2
n
n 1
n
n
1
x1
x
x
x
1
x2
x
x
x
x
x
x
1 x n 1
a0 y0
a1 y1
a y
2 2
an 1 y n 1
a y
n n
(2)
1 xn
x
x
x
Система n линейных неоднородных уравнений с n
неизвестными разрешима тогда и только тогда, когда det( A) 0 ,в этом случае
матрицы
и
расширенной
матрицы
системы
rang( A) rang( A) n (ранги
совпадают).Обозначим det( A) ( x0 , x1, x2 ,, xn 1, xn ) - Вандермонда определитель:
1
x0
x02
x0n 1
x0n
1
x1
x12
x1n 1
x1n
( x0 , x1 , x2 ,, xn 1 , xn ) 1
x2
x22
x2n 1
x2n
1 xn 1
xn21
xnn11
xnn1
1
xn2
xnn 1
xnn
xn
1
x0 x0
x02 x02
x0n 1 x0n 1
x0n x0n
1
x1 x0
x12 x1 x0
x1n 1 x1n 2 x0
x1n x1n 1 x0
1
x2 x0
x22 x2 x0
x2n 1 x2n 2 x0
x2n x2n 1 x0
xn21 xn 1 x0
xnn11 x0n 2 x0
xnn1 xnn11 x0
xn2 xn x0
xnn 1 xnn 2 x0
xnn xnn 1 x0
1 xn 1 x0
1
xn x0
28
1
1
x1 x0
x x1 x0
x
x
x0
x x1n 1 x0
1
x2 x0
x x2 x0
x
x
x0
x x2n 1 x0
xn21 xn 1 x0
x
x
x0
x
xn2 xn x0
x
x
x0
x xnn 1 x0
1 xn 1 x0
1
2
1
2
2
xn x0
n 1
1
n 1
2
n 1
n 1
n 1
n
n2
1
n2
2
n2
n2
n
n
1
n
2
n
n 1
n
n
xnn11 x0
1
x1
x12
x1n 1
1
x2
x22
x2n 1
x1 x0 x2 x0 xn x0
1 xn 1 xn21 xnn11
1
xnn 1
xn2
xn
x1 x0 x2 x0 xn x0 ( x1 , x2 ,, xn 1 , xn )
( x0 , x1, x2 ,, xn 1, xn ) x1 x0 x2 x0 xn x0 x2 x1 x3 x1 xn x1 xn xn 1
x
n
i
xj
(3)
ni j 0
Таким образом, если все узлы интерполяции xi и x j попарно различны, то
определитель Вандермонда не равен нулю, т.е. интерполяционная задача (1) имеет
единственное решение.
Замечание: Благодаря единственности решения интерполяционной задачи после
приведения подобных слагаемых интерполяционный многочлен будет задан
единственным образом, независимо от метода его построения ( методом Лагранжа или
методом Ньютона или ещё каким – то другим методом).
Интерполяционный многочлен Лагранжа.
Рассмотрим задачу интерполяции многочленами наименьшей степени
функции
y (x ) на
сетке a x1 x2 xn b,
произвольной
Ln (x )
принимающей
заданные узловые значения y(a) y1, yx2 y2 , yxn yn . Данная задача имеет
единственное решение.
Решение поставленной задачи для многочлена наименьшей степени n 1 ,
называемым интерполяционным многочленом Лагранжа, можно указать в явном виде:
n
n
x x j 1, x xi
Ln ( x) yiФi ( x); гдекоординатные функции Фi ( x)
(1)
,
x
x
x
x
i 1
j 1, j i xi x j
k
k
i
n
xi x j
n 1 попарно одинаковых
Действительно, если x xi в произведении
j 1, j i xi x j
множителей в числителе и знаменателе дроби, т.е. Фi ( xi ) 1 . С другой стороны,
n
x x j 0 ,так как j i, но k j 1, n, j i и x x 0 единственный
Фi ( xk ) k
k
k
j 1, j i xi x j
x x
x x её обнуляющий.
n
множитель в числителе дроби
j 1, j i
k
j
i
j
При построении многочлена Лагранжа с помощью формул удобна (экономична) не
исходное определение в виде формулы (1), а рекуррентная интерполяционная формула
Лагранжа:
L1 ( x ) y1 , Ln ( x ) Ln 1 ( x ) yn Ln 1 ( xn )
n 1 ( x )
n 1 ( x n )
(2)
29
n
Где: n ( x ) x xi
i 1
Доказательство формулы (2) проведём по индукции:
1) Пусть формула (2) справедлива для всех многочленов степени не выше чем k
( x)
n 2, k , т.е. Ln ( x ) Ln 1 ( x ) yn Ln 1 ( xn ) n 1
, L ( x ) yi , i 1, n
n 1 ( xn ) n i
( x)
2) n k 1, Lk 1 ( x ) Lk ( x ) yk 1 Lk ( xk ) k
k ( xk )
(x )
Lk 1 ( xi ) Lk ( xi ) yk 1 Lk ( xk ) k i Lk ( xi ) yk 1 Lk ( xk )
L ( x ) yi , i 1, k , по1)
k ( xk 1 )
k ( xk ) k i
Lk 1 ( xk 1 ) Lk ( xk 1 ) yk 1 Lk ( xk 1 )
k ( xk 1 )
Lk ( xk 1 ) yk 1 Lk ( xk 1 ) yk 1
k ( xk 1 )
То есть справедливо Lk 1 ( xi ) yi , i 1, k 1 . Что и требовалось (по теореме единственности
интерполяционной задачи).
Пример:
Построить интерполяционный многочлен Лагранжа при n 3
x1 1, x2 0, x3 1
Воспользуемся формулой (2):
y1 3, y2 2, y3 5
( x)
( x (1))
L1 ( x) y1 3; L2 ( x) y 2 L1 ( x2 ) 1
3 2 3
3 ( x 1) 2 x
1 ( x2 )
0 (1)
( x)
( x (1))( x 0)
4( x 1) x
L3 ( x ) L2 ( x ) y3 L2 ( x3 ) 2
2 x 5 (2 1)
2 x
2 ( x3 )
(1 (1))(1 0)
2
2x2 x 2 .
Ответ: L3 ( x ) 2 x 2 x 2
В силу единственности решения интерполяционной задачи будем рассматривать
интерполяционный многочлен Лагранжа Ln (x ) степени n 1 для интерполяции
неизвестной функции y(x ) .
Теорема
1.(формула
невязки
интерполяционного
многочлена).
Пусть
функция
y( x ) С a, b интерполируется сеткой a x1 x2 ... xn bс узловыми значениями
n
y xi yi , i 1, n . Тогда (a, b) , что для невязки интерполяции справедлива формула:
n
y ( n )
Rn ( x ) Ln ( x ) y ( x )
n ( x ) , где: n ( x ) x xi , x (a, b)
n!
i 1
Доказательство.
Рассмотрим вспомогательную функцию n ( z ) Ln ( z ) y( z ) An ( z )
, где A пока произвольная константа.
В силу постановки задачи интерполяции Ln ( xi ) y( xi ) и n ( xi ) 0, i 1, n Тогда
(3)
n ( xi ) yi yi A * 0 0, i 1, n .
Потребуем подбором константы A , чтобы число x (a, b) было корнем вспомогательной
функции
n ( x) Ln ( x) y( x) An ( x) 0
(4)
30
Таким
образом,
функция
n (z ) имеет n 1 корень,
обозначим
её
корни
xi0 a x1, x2 ,..., xn b, x, i 1, n 1 . По построению n (z ) и по условию теоремы
n ( z ) С ( n ) a, b . По теореме Ролля между каждой парой xi , xi 1 , i 1, n соседних
корней n (z ) существует корень первой производной ' n ( xi1 ) 0, xi1 xi0 , xi01 , i 1, n .
Следовательно, xi1 (a, b), i 1, n . Повторяя рассуждения для второй производной найдутся
( 2) n ( xi2 ) 0, xi2 xi1, xi11 , xi2 (a, b), i 1, n 1 ( n 1 корень). Тогда, для производной
порядка n найдётся ровно 1 корень ( n ) ( xin ) 0, x1n (a, b) . Обозначим x1n (a, b) .
Дифференцируя формулу (3) непосредственно n раз получим:
y ( n ) ( )
( n ) ( ) L( n ) ( ) y ( n ) ( ) An! 0 y ( n ) ( ) An!, A
, ( a, b)
n!
Из формулы (4) получим
y ( n ) ( )
y ( n ) ( )
n ( x ) Ln ( x ) y( x )
n ( x ) 0 Ln ( x ) y( x )
n ( x ), , x (a, b)
n!
n!
Что и требовалось доказать. Отметим, что формула (5) абсолютно точна.
Норма Чебышева погрешности аппроксимации на равномерной сетке.
В силу формулы(5) имеем n ( x) Ln ( x) y ( x)
n
C
x[ a , b ]
Где введено обозначение y ( n )
C
n!
n ( x) , , x (a, b)
max y ( n ) ( )
y (n)
[ a , b ]
C
max n ( x)
n C
x[ a , b ]
n!
n!
- норма Чебышева функции y ( n) ( x), x [a, b] .
max n ( x) max Ln ( x) y( x)
x[ a , b ]
y ( n ) ( )
(5)
(6)
Из формулы(6) видно, что сложность задачи состоит в определении n C .
Сделаем замену переменных и отобразим произвольный отрезок[a,b]
на канонический[-1,1]
ab ba
x
z, z [1,1], x [a, b],1 a,1 b
2
2
ab ba
ba
z zi , i 1, n
xi
zi , zi [1,1], xi [a, b], x xi
2
2
2
n
n
ba
ba
max x xi
max z zi
max n ( z )
x[ a ,b ]
2 z[ 1,1] i1
2 z[ 1,1]
i 1
n
n
C
n
(7)
Рассмотрим погрешность интерполяции на равномерной сетке, в которой соседние
узлы находятся равном расстоянии. Первый случай – два узла:
d ( z )
z1 1, z2 1, 2 ( z ) z 1z 1 z 2 1, 2
0 2 z 0, max 2 ( z ) 2 (0) 1 1
z[ 1,1]
dz
b a y ( 2)
1ba
d 2 y ( x)
1
Тогда с учётом(6),(7) получим 2 C
max
2
C
2 2 x[ a ,b ] dx
8
Второй случай – три равноотстоящих узла:
d ( z )
1
z1 1, z2 0, z3 1, 3 ( z ) z z 2 1 , 3
0 2 z 2 z 2 1 0 z1, 2
dz
3
2
(8)
max 3 ( z ) max 3 ( z1 ) , 3 ( z2 )
z[ 1,1]
2
1 1
2
1
3 3 3 3
31
b a y (3)
1ba
d 3 y ( x) 2
max
3
C
C
x
[
a
,
b
]
3! 2
dx 3 3
72 3
Третий случай – четыре равноотстоящих узла:
1
1
1
d ( z )
10
z1 1, z2 , z3 , z4 1, 4 ( z ) z 2 z 2 1 , 4
0 2 z 2 z 2 0
3
3
9
dz
9
5
1 16 16
z1 0, z2,3
, max 4 ( z ) max 4 ( z1 ) , 4 ( z2,3 ) max ,
3 z[ 1,1]
9 81 81
3
Тогда с учётом(6),(7)получим 3
3
(9)
1 ba
d 4 y( x) 16 b a ( 4)
Тогда с учётом(6),(7) получим 4 C
(10)
y
max
C
4! 2 x[ a ,b ] dx 4 81 1944
Рассмотрим пример[1,3.14.1]. Функция f (x)
приближается интерполяционным
многочленом Лагранжа по n равноотстоящим узлам. Найти наибольшее целое p в оценке
погрешности вида n 10 p для случая
4
1) f ( x)
1
4
cosx sin t dt, x [0,1], a 0, b 1, n 3 .
В данном примере переменная x –
параметр под знаком интеграла. Воспользуемся формулой(9)
b a f (3)
1 ba
d 3 f ( x) 2
max
3
3! 2 x[ a ,b ] dx
3 3
72 3
3
3
C
3
C
1
f ( 3)
72 3
C
df 1
d2 f 1
d3 f 1
2
3
sin x sin t sin tdt , 2 cosx sin t sin t dt ,0 3 sin x sin t sin t dt ,1 x sin t 0
dx 0
dx
0
dx
0
sin t dt 1 cos t d cos t sin1 cos t cos t
0 sin x sin t sin t dt
0
0
0
3
4 sin 1
1
1 4 sin 1
sin 1
, 3 C
f ( 3)
0.0028 10 p p 2 .
C
3
72 3
72 3 3
54 3
Отметим, что более грубая оценка приводит к тому же ответу:
1
3
sin 1
sin 1
3
d3 f
1
3
sin x sin t sin t dt 1, 3
3
0
dx
C
1
f ( 3)
72 3
3
2
C
0
1
0.0080 10 p p 2
72 3
Практическая работа №3. Интерполяционный многочлен Лагранжа.
Для составления алгоритма для программы на с++ удобно пользоваться не
рекуррентной формулой (2), а определением (1) для чего достаточно двух вложенных
цикла.
Рекомендации к программе:
1)Необходимо и достаточно использование библиотек
#include
#include
2)Для исключения переполнения регистров массива добавляем свободную позицию к
размерности массива n 1 используются элементы массива по i 1, n
mx[n 1], my[n 1] . Узлы интерполяции хранятся в массиве mx[n 1], i 1, n . Узловые
значения функции содержатся в массиве my[n 1], i 1, n . В начале программы
заполняются узлы и узловые значения интерполяционного полинома Лагранжа.
2)В качестве теста для программы лабораторной работы №1 рассмотрим задачу
32
x1 1, x2 0, x3 1
y1 1, y 2 0, y3 1
интерполирующей функцию y( x ) | x | по трём узлам
Программа на узлах функции x1 1, x2 0, x3 1 возвращает узловые значения
соответственно:
L(1.000000) 1.000000
L(0.000000) 0.000000
L( 1.000000) 1.000000
Для не узловой интерполяции получим
L(0.500000) 0.250000
Кроме того, интерполяционная формула (1) правильно не только интерполирует
y( x ) | x | , но и экстраполирует данную функцию
L(3.000000) 9.000000 .
Примерный текст программы на языке с++, написанный для Android в среде Cctools ,
может выглядеть следующим образом, для исполняемого exe файла требуются, возможно,
небольшие изменения (адаптация):
#include
#include
int const n=3;
main()
{
int i,j;
double mx[n+1],my[n+1],p,x,sum;
x=1.0;
mx[1]=-1.0;
mx[2]=0.0;
mx[3]=1.0;
my[1]=3.0;
my[2]=2.0;
my[3]=5.0;
sum=0.0;
for(i=1;i<=n;i++)
{
p=1.0;
for(j=1;j<=n;j++)
{
if(!(j==i))
{
p=p*(x-mx[j])/(mx[i]-mx[j]);
}
else
{
p=p;
}
}
sum=sum+my[i]*p;
}
printf("L(%lf)=%lf\n",x,sum);
}
Литература
33
1)Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы. – 6-е изд. –
М.:БИНОМ. Лаборатория знаний.
2)Бахвалов Н.С., Лапин А.В., Чижонков Е.В. Численные методы в задачах и
упражнениях: учебное пособие. – М.:БИНОМ. Лаборатория знаний,2010. – 240 с.
Лекция 5. Интерполяционный многочлен Ньютона. Разделённые и конечные
разности. Их свойства.
Рассмотрим произвольную неравномерную сетку x1, x2 ,... xn , y xi yi , i 1, n называются узловыми значениями функции y(x ) .
Определение 1. Разделённой разностью нулевого порядка функции y(x ) в узле xk
называется узловое значение yk (строится по единственному узлу xk ).
Определение 2. Разделённой разностью k нулевого порядка функции y(x ) по узлам
x1, x2 ,...xk 1 называется отношение:
y x2 ,... xk 1 x1 , x2 ,... xk
xk 1 x1
Аппроксимация функции одним узлом будет: y( x ) y x1
y x1, x2 ,... xk 1
(1)
Рассмотрим разделённую разность первого порядка с одним фиксированным x1 и
y ( x ) y x1
одним произвольным узлом x y x1 , x
,откуда y( x) yx1 x x1 yx1, x
(2)
x x1
Разделённая разность второго порядка с двумя фиксированными и произвольным
y ( x2 , x1 ) y x1, x
узлом x1, x1, x : y x1, x2 , x y x2 , x1 , x
здесь использовано свойство
x x2
неизменности разделённой разности относительно перестановки любой пары аргументов
y ( x) yx1
y ( x2 , x1 ) x x2 yx1 , x2 , x , откуда
x x1
(3)
y( x) yx1 x x1 yx1, x2 x x1 x x2 yx1, x2 , x
Сравнение формул (1),(2), (3) показывает, что приближённую формулу аппроксимации
функции можно получить, отбросив последнее слагаемое с разделённой разностью(в (3)
y x1, x2 , x ) , содержащей свободную переменную x , что эквивалентно в предыдущем
разложении переменную x заменить на следующий узел (в (2) x на x2 ). Поэтому для
yx1 , x
исходной сетки x1, x2 ,... xn получим:
y( x) yx1 x x1 yx1, x2 x x1 x x2 yx1, x2 , x3 ... x x1 x x2 x xn 1 yx1, x2 ,..., xn
Последняя формула носит имя Исаака Ньютона.
Свойства разделённых разностей.
1)Явная формула для разделённой разности:
(4)
34
n 1
yx1 , x2 ,..., xn , xn 1
i 1
yi
n 1
(5)
x x
i
j
j 1, j i
Доказательство проведём по индукции.
y1
y2
y y1
1) n 1, y x1, x2
справедливо
2
x2 x1 x1 x2 x2 x1
разделённой разности
и
следует
из
определения
2) Предположим справедливость формулы (5) для n произвольных узлов для разделённой
разности порядка n 1 , тогда для разделённой разности порядка n для n 1 узла
x1, x2 ,..., xn , xn1 по определению имеем:
n1
n
yx2 ,..., xn , xn1 yx1 , x2 ,..., xn
1
yi
yi
yx1 , x2 ,..., xn , xn1
n
n1
xn1 x1
xn1 x1 i2 x x i1 x x
i j
i j
j 1, j i
j 2 , j i
n1
n
n
yi
yi
y
1
1
yi xi x1 xi xn1
n
n n1
n
n 1
xn1 x1 i2 x x i1 x x xn1 x1 i2
xi x j
xn1 x j
i
j
i j 1
j
1
,
j
i
j
1
,
j
i
j
1
,
j
i
j
2
,
j
i
n
n 1
y1
yi
yn 1
y1
yi
n
n
1
n
1
n
1
n
1
x1 x j i 2 xi x j xn 1 x j x1 x j i 1 xi x j
j 1, j i
j 1, j i
j 1, j i
j 1, j i
j 1, j i
Что и требовалось доказать.
2)Из формулы (5) следует инвариантность разделённой разности относительно замена
любой пары аргументов с индексами k,l, которая использовалась при выводе формулы (3).
n 1
n 1
y
yi
y
y
yx1 , x2 ,...xk ,...xl ,..., xn , xn 1 n 1 i
n 1 k
n 1 l
n 1
i 1
i 1, i k , i l
xi x j
xi x j xk x j xl x j
j 1, j i
n 1
i 1, i k , i l
yi
n 1
n 1
yl
j 1, j i
n 1
yk
x x x x x
i
j 1, j i
j
l
j 1, j l
j
k
xj
j 1, j k
j 1, j l
y x1, x2 ,...xl ,...xk ,..., xn , xn 1
j 1, j k
3)Из формулы (5) следует свойство линейности разделённой разности, действительно:
n 1
n 1
( 5)
y
y
y1 x1, x2 ,..., xn , xn 1 y2 x1, x2 ,..., xn , xn 1 n 1 1i
n 1 2i
i 1
i 1
xi x j
xi x j
j 1, j i
n 1
i 1
y1i y 2i
n 1
x
i
xj
j 1, j i
y1 y 2 x1 , x2 ,..., xn , xn1
j 1, j i
35
Конечные разности. Связь с разделёнными разностями.
Определение. Конечной разностью первого порядка функции
в точке (обозначение
) называется разность
,
Конечной разностью порядка n функции
в точке (обозначение
) называется
разность
(
)
Замечание. Как следует из определения, при постоянном шаге сетки h, конечную
разность можно определить только на равномерной сетке, в отличие от разделённой
разности.
Свойства конечных разностей.
1)Линейность n f1 f 2 n f1 n f 2 .
Доказательство проведём по индукции. Для базы индукции n=1, имеем
f1 f2 f1( x h) f2 ( x h) f1( x) f2 ( x) ( f1( x h) f1( x)) ( f2 ( x h) f2 ( x)) f1 f2
Пусть для произвольного k 1, n 1 : k f1 f 2 k f1 k f 2 . Для k n :
n f1 f 2 n 1f1 f 2 n 1 f1 f 2 n 1 f 1 f 2 n 1 f 1 n 1 f 2
n1f1 n1f 2 n1 f1 n1 f 2 n f1 n f 2 .Доказано.
2)На равномерной сетке верно:
n f x1 hn n! f x1, x2 ,...xn xn 1 , xi 1 xi h, i 1, n .Доказательство проведём по индукции.
Для базы индукции n=1, имеем
f ( x2 ) f ( x1 )
f ( x2 ) f ( x1 )
f h1! f x1, x2 h
h
f ( x2 ) f ( x1 ) - верно.
x2 x1
h
Пусть для произвольного k 1, n 1 : k f hk k! f ( x1,..., xk 1 ) . Для k n :
k 1, n : n f x1 n1 f x1 hn1 n 1! f ( x1 ,..., xn ) hn1 n 1!f ( x1 ,..., xn )
hn 1 n 1! f ( x1 h,..., xn h) f ( x1 ,..., xn ) hn 1 n 1!nh
f ( x2 ,..., xn 1 ) f ( x1,..., xn )
nh
f ( x2 ,..., xn 1 ) f ( x1,..., xn ) hnn! f ( x , x ,..., x , x ) - утверждение доказано.
hn n!
1
2
n
n 1
xn 1 x1
n 1 f x1
Из последней формулы имеем f ( x1,..., xn ) n 1
h n 1!
3)полином Ньютона на равномерной сетке.
Учитывая свойство 2), получим
y( x) yx1 x x1 yx1 , x2 x x1 x x2 yx1, x2 , x3 ... x x1 x x2 x xn1 yx1 , x2 ,..., xn ...
yx1 x x1 x x2 2 yx1
x x1 x x2 x xn1 n1 yx1
y( x) yx1 x x1
...
...
n 1!
h
h
h
2!
h
h
h
x x1
2 yx1
n1 yx1
y( x) yx1 yx1 1
... 1 n 2
...,
n 1!
2!
h
В силу единственности решения интерполяционной задачи будем рассматривать
интерполяционный многочлен Лагранжа Ln (x) степени n 1 для интерполяции
неизвестной функции y(x).
Практическая работа №4. Интерполяционный многочлен Ньютона.
36
Рекомендации для программы:
1) При составлении интерполяционного многочлена Ньютона
воспользоваться формулами (4), (5).
2) Использовать библиотеки
# include stdio.h
# include math.h
3) Использовать 3 вложенных цикла
4) При задании массива выбираем размерность массива на единицу больше
Примерный текст программы приведен ниже:
#include
#include
int const n=3;
main()
{
int i,j,k,i1;
double mx[n+1],my[n+1],p,x,sum,pi,sum1,pr,raz[n+1];
x=-3.0;
mx[1]=-1.0;
mx[2]=0.0;
mx[3]=1.0;
my[1]=1.0;
my[2]=0.0;
my[3]=1.0;
sum=0.0;
sum1=0.0;
pr=1.0;
for(k=1;k<=n;k++)
{
sum=0.0;
for(i=1;i<=k;i++)
{
p=1.0;
for(j=1;j<=k;j++)
{
if(!(j==i))
{
p=p/(mx[i]-mx[j]);
}
else
{
p=p;
}
}
sum=sum+my[i]*p;
}
pi=1.0;
for(i1=1;i1<=k-1;i1++)
{
pi=pi*(x-mx[i1]);
}
sum1=sum1+sum*pi;
}
необходимо
37
printf("P(%lf)=%lf\n",x,sum1);
}
Программа возвращает значения P(3.000000) 9.000000 .
Лекция 6. Интерполяционный многочлен Чебышева.
Определение. Свойства. Многочлены наименее уклоняющиеся от нуля.
1)Рекуррентное соотношение.
Интерполяционный многочлен Чебышева 1 рода(обозначение Tn (x) ) –
T0 ( x) 1, T1 ( x) x, Tn ( x) 2 xTn1 ( x) Tn2 ( x)
(1)
Интерполяционный многочлен Чебышева 2 рода(обозначение U n (x) ) –
U 0 ( x) 1,U1 ( x) 2 x,U n ( x) 2 xU n1 ( x) U n2 ( x)
Пользуясь формулой(1) найдём несколько первых интерполяционных многочленов
Чебышева
T2 ( x) 2 xT1 ( x) T0 ( x) 2 x 2 1, T3 ( x) 2 xT2 ( x) T1 ( x) 4 x3 3x, T4 ( x) 2 xT3 ( x) T2 ( x) 8x 4 8x 2 1
U 2 ( x) 2 xU1 ( x) U 0 ( x) 4 x 2 1, U 3 ( x) 2 xU 2 ( x) U1 ( x) 8x3 4 x, T4 ( x) 2 xT3 ( x) T2 ( x) 16 x 4 12 x 2 1
В дальнейшем мы рассматриваем интерполяционный многочлен Чебышева 1 рода.
Из рекуррентной формулы(1) следует, что многочлены Чебышева 1 и 2 рода имеют
степень равную n.
2)Тригонометрическая форма
Tn ( x) cosn arccos( x), n 0
(2)
Покажем эквивалентность формул (2) и (1). Действительно
Tn ( x) 2 xTn1 ( x) Tn2 ( x) cosn arccos( x) 2 x cosn 1arccos( x) cos(n 2) arccos( x)
y arccos( x), cosny 2 cos y cosn 1y cos(n 2) y cosny cos(n 2) y
cosny cos(n 2) y cos(n 1) y y cos(n 1) y y 2 cos y cos(n 1) y
Если x [1,1], y [0, ] Tn ( x) cosn arccos( x) 1 .
3)Разностное уравнение. Решение рекуррентного уравнения Tn ( x) 2 xTn1 ( x) Tn2 ( x)
ищем в виде Tn ( x) Сn . Тогда подставляя в(1), получим характеристическое уравнение
2 2 x 1 2 2 x 1 0, 1, 2
n
2x 4x2 4
x x2 1
2
n
Tn ( x) C1 x x 2 1 C2 x x 2 1
Последняя формула должна удовлетворять начальным условиям при n=0,1
T ( x) C x x 2 1 0 C x x 2 1 0 C C 1
0
1
2
1
2
2
2
2
T1 ( x) C1 x x 1 C2 x x 1 x C2 C1 x 1 0 C2 C1 1 / 2
n
n
1
(3)
Tn ( x) x x 2 1 x x 2 1
2
4)Многочлены чётного порядка являются чётными функциями, а нечётного порядка
нечётными функциями. Действительно
2k
2k
2k
2k
1
1
T2 k ( x) x x 2 1 x x 2 1 x x 2 1 x x 2 1 T2 k ( x)
2
2
38
2 k 1
2 k 1
1
1 x x 2 1 2 k 1 x x 2 1 2 k T ( x)
T2 k 1 ( x) x x 2 1
x x2 1
2k
2
2
5)Коэффициент в Tn (x) при старшем члене x n равен a0 2n1 .Действительно
n=1, T2 ( x) 2 x 2 1, a0 2 221 . Пусть старший коэффициент в Tn (x) равен a0 2n1
Tn1 ( x) 2 xTn ( x) Tn1 ( x) 2 x 2n1 x n ... 2n2 x n1 ... 2n x n Pn1 ( x)
Свойство доказано методом математической индукции.
6)Нули многочлена Чебышева
Tn ( x) cosn arccos( x) 0, y arccos( x), x cos y, cos(ny) 0 ny
y
2
k , k Z
2k 1
2k
2k 1
, k Z , x [1,1], y [0, ] yk
, k 1,2,..., n xk cos
2n
2n
2n
(4)
7)Точки экстремума многочлена Чебышева.
Tn ( x) cosn arccos( x) 1, n arccos( xk ) k ,0 arccos( xk )
k
k
, xk cos , k 0, n
n
n
k
k
Tn ( xk ) cosn arccos xk cos n arccos cos cosk 1 , k 0, n
(5)
n
8)Определение. Приведенным многочленом Чебышева 1 рода называется многочлен
Tn ( x) Tn ( x)21n 21n cosn arccos( x) x n ... an 21n an 1, x [1,1]
(6)
Старший коэффициент у приведенного многочлена Чебышева первого рода равен 1, как
следует из свойства 5). Нули приведенного многочлена совпадают с нулями многочлена
2k 1
Чебышева. xk cos
, k 1, n .Точки экстремума
2n
k
k
Tn ( xk ) 21n cosn arccos xk 21n cos n arccos cos 21n cosk 21n 1 , k 0, n
n
9)Теорема (Чебышев). Среди всех многочленов степени n на отрезке [-1,1]со старшими
коэффициентами равным единице наименее уклоняются от нуля (т.е. имеют минимальную
равномерную норму) являются приведенные многочлены Чебышева 1 рода.
Доказательство. Проведём от противного.
Требуется доказать, что
1
min max Pn ( x) min max x n a1 x n1 ... an1 x an max Tn ( x) 21n n1
a1 ,a2 ,...an x[ 1,1]
a1 ,a2 ,...an x[ 1,1]
x[ 1,1]
2
Предположим, что существует многочлен Pn ( x) x n a1 x n1 ... an1 x an степени n со
старшим коэффициентом равным единице на отрезке[-1,1] и нормой меньше чем 21n .
Pn ( x)
C
21n . Но тогда и в точках экстремума приведенного многочлена Чебышева также
k
max Pn ( xk ) 21n Tn ( xk ) , xk cos , k 0, n .
x[ 1,1]
n
n1
Рассмотрим разность двух многочленов Q( x) Tn ( x) Pn ( x) b1 x ... Pn1 ( x)
представляющую собой многочлен степени n-1 по построению обоих многочленов с
единичным старшим коэффициентом. Тогда
выполнено неравенство Pn ( xk ) Pn ( x)
C
39
Q( xk ) Tn ( xk ) Pn ( xk ), signQ( xk ) sign Tn ( xk ) Pn ( xk ) sign Tn ( xk ) 1 , k 0, n
Многочлен Q(x) как разность двух многочленов является непрерывной функцией, при
изменении x 1, x 1 знак Q(x) меняется с+1 x0 1 до -1 xn 1 n раз, следовательно, по
теореме Вейерштрасса Q(x) имеет на интервале(-1,1) n корней. Другими словами, Q(x)
это многочлен степени n. Полученное противоречие ( Q(x) не может иметь одновременно
степень n и n-1)доказывает, что Pn ( x)
C
Tn ( x)
C
k
21n приведенный многочлен Чебышева
первого рода имеет наименьшую равномерную норму среди всех многочленов степени n
и старшим коэффициентом равным 1 на отрезке [-1,1] или наименее уклоняется от нуля.
Доказательство завершено.
10) В качестве узлов сетки аппроксимационного многочлена Лагранжа можно выбрать
корни многочлена Чебышева на отрезке [a,b]. Тогда разность искомой функции и
многочленом Лагранжа в благоприятном случае представляет собой многочлен наименее
уклоняющийся от нуля. Проведём оценку погрешности аппроксимации в случае отрезков
[-1,1] и [a,b]. По формуле Лагранжа на сетке n1 z1 ,...zn узла погрешность
интерполяции равна
n
y (n)
y (n)
C
C
z zi , z, zi [1,1], i 1, n
n y ( x) Ln ( x) C
n C
(7 )
n!
n!
i 1
C
n y ( x) Ln ( x) C
y ( n)
n!
C
n
C
y ( n)
n
x xi , x, xi [a, b]
n!
i 1
C
C
В общем случае для произвольного отрезка[a,b] нужно сделать линейную замену
переменных, взаимно однозначно отображающую отрезки в друг друга
ab ba
ab ba
z, z 1 x a, z 1 x b, xi
zi , zi [1,1], xi [a, b], i 1, n (8)
2
2
2
2
ba
x xi
z zi , zi [1,1], xi [a, b], i 1, n
2
n
n
n
y (n)
y (n)
ba
C
C
x xi
z zi
n y ( x) Ln ( x) C
n!
n!
2
i 1
i 1
C
C
x
n
n
y ( n)
y ( n ) b a n
ba
C 1n b a
C
z zi
2
,
n!
2
n
!
2
n
!
22 n1
i 1
C
y (n)
n
C
2i 1
Qn1 ( z ), zk cos
, i 1, n,
i 1
2n
Используя формулу(8) получим координаты узлов Чебышева на произвольном отрезке
n
z z z
n
i
2k 1
ab ba
ab ba
ab ba
zi
zk
cos
(9)
, k 1, n
2
2
2
2
2
2
2n
Получим формулу приведенного многочлена Чебышева на произвольном отрезке[a,b] с
2x a b
,
единичным старшим коэффициентом z
ba
n
2x a b
ba
n1
n1
Tn ( z ) 2 Tn ( z ) 2 Tn
, Tn ( x) x x1 ...x xn
z z1 ...z zn
ba
2
xi
40
b a
b a 2 x a b
ba
ba
(10)
z z1 ...z zn
Tn ( z ) n1 n Tn ( z ) 2 n1 Tn
2 2
2
2
2
ba
Рассмотрим пример[1,№4.17]. Функция f ( x) sin(2 x) приближается многочленом
2i 1
Лагранжа на отрезке[0,2] по чебышевским узлам xi 1 cos
, i 1,6(n 6) . Найти
12
1
наибольшее целое p в оценке погрешности вида 0 10 p .
3
Воспользуемся формулой
y ( n ) b a n
C
n y( x) Ln ( x) C
, n 6, y ( 6) 26 sin 2 x 26 , a 0, b 2
2 n1
C
C
n! 2
2
n
y ( 6)
n
2 06
n
n
22*6
2
1
1
1
10 p
10 p p 2
2*61
2*61
6! 2
6!2
720 3
120 3
1)Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы. – 6-е изд. –
М.:БИНОМ. Лаборатория знаний.
6
C
Лекция 7. Интерполяция функций кубическими сплайнами. Метод прогонки.
Сплайн в переводе с английского означает гибкое лекало. На практике использовали
металлическую линейку – сплайн при вычерчивании линий сложной кривизны, концы
которой оставляли свободными. В МСС доказано, что свободное состояние сплайна
является однородным ОДУ 4 порядка y ( 4) ( x) 0, x [a, b], y ( 2) (a) y ( 2) (b) , последнее
условие соответствует свободным (ненапряжённым) концам линейки. Решение ОДУ
очевидно y( x ) a bx cx2 dx3 .
Рассмотрим
произвольную
(неравномерную)
сетку
из n 1
узлов
x0 a x1 ... xn bс
узловыми
значениями
интерполируемой
функции
y xi yi , i 0, n . На каждом интервале x [ xi , xi 1 ], i 1, n строим
кубический сплайн yi ( x) ai bi x xi 1 ci x xi 1 di x xi 1 , x [ xi , xi 1 ], i 1, n .
2
3
Обозначим hi xi xi 1, i 1, n . Выполнены условия непрерывности:
1) yi ( xi 1 ) ai , i 1, n, an 1 yn 1 ( xn b) yn ( xn ) an bn hn cn hn dn hn yn , n 1 усл. (1)
2) непрерывность функции в смежных узлах
2
3
yi ( xi ) ai bi hi ci hi di hi yi 1 ( xi ) ai 1, i 1, n 1 , n 1 условий
(2)
3) непрерывность первой производной в смежных узлах
2
y 'i ( xi ) bi 2ci hi 3di hi y 'i 1 ( xi ) bi 1, i 1, n 1, n 1 условий
(3)
4) непрерывность второй производной в смежных узлах
y ''i ( xi ) 2ci 6di hi y ''i 1 ( xi ) 2ci 1, i 1, n 1 , n 1 условий
(4)
5) условия свободных концов линейки
y ''1 ( x0 a) 2c1 y '' n ( xn b) 2cn 6dn hn 0 c1 0, cn 3dn hn - 2 условия
Всего 4n неизвестных коэффициентов и 4n n 1 3(n 1) 2 условий, т.е. система
4n линейных неоднородных уравнений.
2
3
41
Из формулы (4) выразим di
ci1 ci
c
, i 1, n 1, d n n
3hi
3hn
(5)
Подставим (5) в (3) hi ci ci 1 y 'i 1 ( xi ) bi 1 bi , i 1, n 1
c c
В (2) подставим d i i 1 i и выразим
3hi
2c c h
a a
a a 2c c h y y
2
bi i 1 i ci hi di hi i1 i i i1 i i i1 i i1 i , i 1, n 1
hi
hi
3
hi
3
a a 2c c h
y yn1 2cn hn
bn n1 n n n1 n n
hn
3
hn
3
В (7) формально заменим индекс i i 1 , получим
2c c h
a a
bi 1 i 2 i 1 i 1 i 2 i 1
hi 1
3
(7) и (8) подставим в (6)
a ai 1 ai 1 ai 2ci ci 1 hi 2ci 1 ci 2 hi 1
hi ci ci 1 i 2
hi 1
hi
3
3
(6)
(7)
(8)
a a
hi ci hi 1ci 2 2сi 1 hi hi 1 ai 2 ai 1 ai 1 ai
a a
3 i 2 i 1 i1 i hi ci hi 1ci 2 2сi 1 hi hi 1
3
hi 1
hi
hi
hi 1
Понизим индекс на 1 в последнем уравнении, получим относительно неизвестных
коэффициентов ci , i 2, n трёх диагональную матрицу системы.
a a a ai 1
hi 1ci 1 hi ci 1 2сi hi hi 1 и имеет смысл лишь при i 2, n
3 i 1 i i
hi 1
hi
y yi 1 yi 1 yi 2
hi 1ci 1 hi ci 1 2сi hi hi 1 , i 2, n
3 i
hi 1
hi
(9)
c1 cn 1 0
yi ( xi1 ) ai , i 1, n 1,
(10)
Уравнения(5), (9),(7),(10) решают поставленную задачу. Уравнение (9) решается
методом прогонки.Для кубического сплайна справедливо
Утверждение (экстремальные свойства кубического сплайна). Рассмотрим функционал
среди дважды дифференцируемых функций и дважды гладких составных сплайнов
2
2
b
d 2u d 2 S3
d 2 S3
d 2 S3
du
I (u ) dx, I u S3 2
dx
,
b 0 .
a
dx
dx
dx 2
dx 2
dx 2
a
a
b
S3 ( x ) A Bx Cx 2 Dx3
Составим разность
2
2
2
2
d 2u d 2 S
d 2u d 2 S 3 d 2u d 2 S3
I (u S3 ) I (u ) I ( S3 ) 2 23 2 2
2 2 dx
2
dx
dx
dx
dx
dx dx
a
b
2
b
b
d 2 S 3 d 2 S 3 d 2u
d 2 S 3 d 2 S 3 d 2u
d 2 S3 d 2u d 2 S3
2 2 2
dx 2K , K 2 2 2 dx
dx dx dx 2
dx dx
dx
dx 2 dx 2 dx 2 a
a
a
b
b
d 3S dS du
d 3S
d 4S
33 3 dx 33 S3 u 43 S3 u dx 12D * 0 0 0 так как
dx dx dx
dx
dx
a
a
a
b
b
42
S3 a u(a), S3 b u(b) любая интерполяционная функция проходит через заданные
узловые значения, а четвёртая производная от кубического сплайна равна нулю. В итоге
получим I (u S3 ) I (u) I ( S3 ) 0 I (u) I ( S3 ) I (u S3 ) 0 I (u) I ( S3 ) , т.е. среди
всех возможных интерполяционных функций именно кубический сплайн доставляет
2
du
минимум функционалу I (u ) dx .Для составного сплайна после суммирования
dx
a
I (u S3 ) I (u) I ( S3 )
b
xi
x1
d 2 S3i d 2 S3i d 2ui
d 2 S3i d 2 S3i d 2ui
I
(
u
S
)
I
(
u
)
I
(
S
)
2
i
3i
i
3i
2
2
dx 2 x
dx 2 dx 2
dx a
i 1
i 1 dx
dx
i 1
n
n
x2
x n 1
1
x n2
d 2 S3, n 1 d 2 S3, n 1 d 2un 1
d 2 S32 d 2 S32 d 2u2
...
dx 2 dx 2
dx 2 x
dx 2 dx 2
dx 2
b
d 2 S3, n d 2 S3, n d 2un
dx 2 dx 2
dx 2
x n 1
d 2 S3n d 2 S3n d 2un
d 2 S31 d 2 S31 d 2u1
b
2 a 0 0 0 в силу непрерывности второй
dx 2 dx 2
dx 2
dx 2 dx 2
dx
производной функции и сплайна в n 1 смежных точках. Т.е. экстремальное свойство
выполняется и для составного сплайна.
Метод прогонки
Решается уравнение вида
Ak xk 1 Ck xk Bk xk 1 Fk , k 1, n 1
(11)
Предположим, что на границах справедливы формулы
x0 0 x1 0 , xn n xn 1 n
(12)
И справедлива итерационная формула решающая (11)
xk k xk 1 k , k 0, n 1
(13)
Из (13) получим xk 1 k 1xk k 1 , которое подставим в (11), имеем
Ak k 1 xk k 1 Ck xk Bk xk 1 Fk , откуда xk
Т.е.
k
Bk xk 1
F Ak k 1
k
, k 1, n 1
Ak k 1 Ck Ak k 1 Ck
Bk
F Ak k 1 Ak k 1 Fk
, k k
, k 1, n 1
C k Ak k 1
Ak k 1 C k C k Ak k 1
(14)
формулы прогонки вперёд
Где 0 , 0 определяются формулой(12)(из начальных условий).
По формуле(13)и (12) xn1 n1xn n1, xn n xn1 n xn n n1xn n1 n
Откуда xn
n n 1 n
,
1 n 1n
n , n определяют из начальных условий (12)
43
xk k xk 1 k , k 0, n 1
Формулы (15) называются прогонкой
(15)
назад.Запишем условие (по Самарскому
А.А.)устойчивости численной схемы (11).
Ck Ak Bk Ak 0, 0 1, n 1
(16)
Из (9) и (12) получим 0 n 0, 0 n 0
Рассмотрим пример интерполяции функции с равномерной сеткой
b a , b 2 , a 0, n 100, h h h 0.01 .
yk cos(ih ), i 0, n, h
i
i 1
n
Из (9) получим
h2
3
(17)
yi yi 2 2 yi 1 ci 1 ci 1 4сi ci 1 ci 1 4сi 2 yi yi 2 2 yi 1 , i 2, n
3
h
c1 cn 1 0
3
Прогонка вперёд Ai Bi 1, Ci 4, Fi 2 cos(ih ) cos((i 2)h) 2 cos((i 1)h), i 2, n
h
Отметим, что(16) условие монотонности численной схемы(её устойчивости)
выполнено 4 1 1 2, 0 1 .
Используем формулы вперёд
Bi
A F
i
, i i i 1 i , i 2, n, 1 1 0, n1 n1 0
Ci Ai i 1
Ci Ai i 1
n 1
xn 1 n 1 n
cn 1 0, x1 c1 0 , x(i) c(i), i 1, n 1
1 n n 1
Литература:
1) Калиткин Н.Н. Численные методы.
Практическая работа №5. Интерполяция функций кубическими сплайнами
Используем формулы прогонки назад xi i xi 1 i , i n,1
for(i 1, i n - 1, i )
{
a3[i] y[i - 1];
d3[i] (x[i 1] - x[i])/(3.0 * h);
c3[i] x[i];
b3[i] (y[i]- y[i - 1])/h - h * (x[i 1] 2.0 * x[i])/3.0;
}
a3[1] y[0];
a3[n] y[n - 1];
c3[n] x[n];
.
d3[n] (x[n 1] - x[n])/(3.0 * h);
b3[n] (y[n]- y[n - 1])/h - (1.0/3.0) * (2.0 * x[n] x[n 1]) * h;
44
Рис.1 Сплайн 3-го порядка для функции y( x) cos( x) по 10 исходным точкам, каждый
сплайн дополнительно рисуется по 10 точкам.
Рис.2 График функции y( x) cos( x) по 100 точкам
Примерный текст программы на языке с:
#include
#include
const int n =10;
main()
45
{
int i,j;
double pi,h,aa,bb,y[n+2],x[n+1];
double a[n+1],b[n+1],c[n+1],f[n+1],la[n+1],nu[n+1];
double a3[n+1],b3[n+1],c3[n+1],d3[n+1];
pi=2.0*asin(1.0);
aa=0.0;
bb=2.0*pi;
h=(bb-aa)/double(n);
la[1]=0.0;
la[n+1]=0.0;
nu[1]=0.0;
nu[n+1]=0.0;
for(i=0;i<=n;i++)
{
y[i]=cos(h*double(i));
}
for(i=2;i<=n;i++)
{
a[i]=1.0;
b[i]=1.0;
c[i]=-4.0;
}
for(i=2;i<=n;i++)
{
f[i]=3.0*(y[i]+y[i-2]-2.0*y[i-1])/(h*h);
printf("i=%d a=%lf b=%lf f=%lf\n",i,a[i],b[i],f[i]);
}
for(i=2;i<=n;i++)
{
la[i]=b[i]/(c[i]-a[i]*la[i-1]);
nu[i]=(a[i]*nu[i-1]-f[i])/(c[i]-a[i]*la[i-1]);
}
for(i=1;i<=n+1;i++)
{
printf("i=%d la=%lf nu=%lf\n",i,la[i],nu[i]);
}
x[n+1]=0.0;
x[1]=0.0;
for(i=n;i>=1;i--)
{
x[i]=la[i]*x[i+1]+nu[i];
printf("i=%d x=%lf\n",i,x[i]);
}
printf("y(0)=%lf\n",y[0]);
for(i=1;i<=n-1;i++)
{
a3[i]=y[i-1];
d3[i]=(x[i+1]-x[i])/(3.0*h);
c3[i]=x[i];
b3[i]=(y[i]-y[i-1])/h-h*(x[i+1]+2.0*x[i])/3.0;
}
46
a3[1]=y[0];
a3[n]=y[n-1];
c3[n]=x[n];
d3[n]=(x[n+1]-x[n])/(3.0*h);
b3[n]=(y[n]-y[n-1])/h-(1.0/3.0)*(2.0*x[n]+x[n+1])*h;
for(i=1;i<=n;i++)
{
printf("i=%d a[%d]=%lf b[%d]=%lf c[%d]=%lf d[%d]=%lf\n",i,i,a3[i],i,b3[i],i,c3[i],i,d3[i]);
}
printf("h=%.16lf\n",h);
}
Та же программа, написанная на FORTRANе с графическим приложением Compaq Array
Viewer(Version 1.6.0).
program progonka
use dfimsl
integer(4),parameter::n=10,m=10,mm=n*m
integer(8)::i,j
real(8)::a(n+1),b(n+1),c(n+1),f(n+1),y(0:n),x(n+1),aa,bb,h,la(n+1),nu(n+1)
real(8)::a3(n),b3(n),c3(n),d3(n),xx,yy
real(4),allocatable::vrz(:,:)
!dec$attributes array_visualizer::vrz
aa=0d0
bb=4d0*dasin(1d0)
h=(bb-aa)/dfloat(n)
x(1)=0d0
x(n+1)=0d0
print*,aa,bb
do i=2,n
a(i)=1d0
b(i)=1d0
c(i)=-4d0
enddo
do i=0,n
y(i)=dcos(h*dfloat(i))
print*,"i=",i,"y=",y(i)
enddo
do i=2,n
f(i)=(3d0/(h*h))*(y(i)+y(i-2)-2d0*y(i-1))
print*,"i=",i,"f=",f(i)
enddo
la(1)=0d0
nu(1)=0d0
la(n+1)=0d0
nu(n+1)=0d0
do i=2,n
la(i)=b(i)/(c(i)-a(i)*la(i-1))
nu(i)=(a(i)*nu(i-1)-f(i))/(c(i)-a(i)*la(i-1))
enddo
do i=n,1,-1
x(i)=la(i)*x(i+1)+nu(i)
enddo
do i=1,n+1
47
print*,"i=",i,"x=",x(i)
enddo
do i=1,n-1
c3(i)=x(i)
d3(i)=(x(i+1)-x(i))/(3d0*h)
b3(i)=(y(i)-y(i-1))/h-(x(i+1)+2d0*x(i))*h/3d0
a3(i)=y(i-1)
enddo
c3(n)=x(n)
d3(n)=(x(n+1)-x(n))/(3d0*h)
b3(n)=(y(n)-y(n-1))/h-(x(n+1)+2d0*x(n))*h/3d0
a3(n)=y(n-1)
do i=1,n
print*,i,"a=",a3(i),"b=",b3(i),"c=",c3(i),"d=",d3(i)
enddo
allocate(vrz(2,mm))
do i=1,n
x0=h*dfloat(i-1)
do j=1,m
xx=x0+h*dfloat(j-1)/dfloat(m)
yy=a3(i)+(xx-x0)*b3(i)+(xx-x0)*(xx-x0)*c3(i)+(xx-x0)*(xx-x0)*(xx-x0)*d3(i)
vrz(1,(i-1)*m+j)=xx
vrz(2,(i-1)*m+j)=yy
enddo
enddo
call vGraph(vrz,mm)
deallocate(vrz)
allocate(vrz(2,mm))
do i=1,n
x0=h*dfloat(i-1)
do j=1,m
xx=x0+h*dfloat(j-1)/dfloat(m)
vrz(1,(i-1)*m+j)=xx
vrz(2,(i-1)*m+j)=dcos(xx)
enddo
enddo
call vGraph(vrz,mm)
deallocate(vrz)
end program progonka
subroutine vGraph(fun,nvalues)
use avdef
use avviewer
use dflib
integer(4)::nvalues
real(4)::fun(2,nvalues)
integer(4)::hv,status,nError
character(2)::key
character(av_max_label_len)::ylabel='y'
character(av_max_label_len)::xlabel='x'
call faglStartWatch(fun,status)
print*,"Starting Array Viewer"
call favStartViewer(hv,status)
48
if (status/=0)then
call favGetErrorNo(hv,nError,status)
if(nError/=0)then
print*,"Array Viewer reports error",nError
stop
end if
end if
call favSetArray(hv,fun,status)
call favSetArrayName(hv,"Wind stream",status)
call favSetGraphType(hv,VectorGraph,status)
call favSetUseAxisLabel(hv,x_axis,1,status)
call favSetUseAxisLabel(hv,y_axis,2,status)
call favSetAxisLabel(hv,x_axis,xLabel,status)
call favSetAxisLabel(hv,y_axis,yLabel,status)
call favShowWindow(hv,av_true,status)
print*,"Press any key to close down the viewer"
key=getcharqq()
call favEndViewer(hv,status)
call faglEndWatch(fun,status)
end subroutine vGraph
Таблицы решений для обоих компиляторов совпадают, откуда следует, что графики,
построенные по таблицам коэффициентов, также совпадают.
Тестовая таблица
i
a
b
c
d
1
1.00000
-0.1874215215
0.0000000000
-0.2951926129
2
0.80902
-0.5370336388
-0.5564249664
0.2301790351
3
0.30902
-0.9636447514
-0.1225477070
0.1444133453
4
-0.30902
-0.9466064313
0.1496650357
0.1438618969
5
-0.80902
-0.5881485992
0.4208383229
0.0500759398
6
-1.00000
0.0000000000
0.5152292455
-0.0500759398
7
-0.80902
0.5881485992
0.4208383229
-0.1438618969
8
-0.30902
0.9466064313
0.1496650357
-0.1444133453
9
0.30902
0.9636447514
-0.1225477070
-0.2301790351
10
0.80902
0.5370336388
-0.5564249664
0.2951926129
При больших значениях n 20, n 40 погрешность по норме Чебышева для
разности кубического сплайна функции и самой функцией с помощью программы
получим:
delta n 20 4,9 10 3 , delta n 40 1.21285 103 , их частное даёт
4,9 103
4.04 22 p 2 - интегральный (для составных сплайнов из большого
3
1.21285 10
числа кубических сплайнов)порядок аппроксимации равен 2. Этого и следовало ожидать –
многочлен 3 степени имеет точность в окрестности начала координат как O(h3 ) , всего
(b a )
сплайнов n
, тогда интегральная погрешность nO(h3 ) O h2 .
h
49
Глава 3. Интерполяция интегралов. Квадратурные интегральные формулы.
Лекция 8. Метод неопределённых коэффициентов. Формулы Котесса – Ньютона.
Интегральной квадратурной формулой называется формула замены определённого
интеграла линейным оператором относительно интегрируемой функции:
b
n
f ( x )dx Ci f ( xi ) R f
(1)
i 1
a
Где: x [a, b], Ci , i 1, n веса квадратурной формулы xi , i 1, n узлы квадратурной
формулы, R f - остаток (погрешность) квадратурной формулы. В силу линейности
операций интеграла и суммы относительно функции f (x ) их разность, остаток R f ,
также является линейным оператором
b
n
a
i 1
R f f ( x )dx Ci f ( xi )
Задача построения квадратурной формулы заключается в таком подборе весовых
Ci (а в случае квадратурных формул Гаусса и узлов xi ), чтобы
коэффициентов
максимально уменьшить норму невязки в каком – либо функциональном пространстве.
В методе неопределённых коэффициентов требуют равенства нулю нормы невязки
для всех полиномов, начиная со степени n 0,1,2... (в силу линейности остатка достаточно
потребовать отсутствие невязки для мономов вида 1, x, x 2 ,...., x n 1 ).
Наиболее употребляемые нормы в численных методах:
R C max R f ( x ) - норма Чебышева в пространстве равномерно – непрерывных на
xa , b
отрезке [a, b] функций
1
b
2
R L R 2 f ( x) dx - норма в пространстве функций L2 [a, b] интегрируемых с
2
a
квадратом
В методе неопределённых коэффициентов требуют равенства нулю невязки для
всех полиномов, начиная со степени n 0,1,2... (в силу линейности остатка достаточно
потребовать отсутствие невязки для мономов вида 1, x, x 2 ,...., x n 1 ). Получаем систему n
линейных уравнений относительно Ci , i 1, n , R1 0, Rx 0, R x 2 0,..., R x n 1 0
(2)
Для простоты квадратурные формулы строим на отрезке [1,1] , затем переходим к
произвольному отрезку [a, b] с помощью замены переменных:
b a , f ( x)dx b a f xz dz
a b b a
x
z, z [1.1] x [a, b], dx dz
.
a
2
2
2
2 1
Наиболее употребительные квадратурные формулы:
1) Формула центральных прямоугольников (по одному узлу n 1 )
b
1
1
f ( z )dz Cf (0) , в силу условий (2) получаем 1 уравнение:
1
50
f ( z ) 1,
1
1
1
f ( z )dz dz 2 C *1
1
ab
1 f ( z )dz 2 f (0) a f ( x)dx b a f 2
1
b
(3)
Построим составную формулу по системе равноотстоящих узлов xi , i 1, n с шагом
ba
h x 1 x 1 , i 1, n 1 :
i
i
n
2
2
b
f ( x )dx
b a
a
b a n
1
f
x
i 1 n f a h i 2
i 1
i 1 2
n
n
(4)
Для оценки погрешности центральной формулы прямоугольников разложим f (x )
ab
b a / 2
b
, y x c, dy dx, x a y b a / 2 :
в ряд Тейлора с центром в середине отрезка c
2
f ( x ) f c ( x c) f ' (c)
b
f ( x )dx
a
x c 2
f ' ' (c )
2
x c 3
6
f ( 3) ( c )
x c 4
24
f ( 4 ) (c ) O x c
ba
2
y 2 f '' (c) y 3 f ( 3) (c) y 4 f ( 4) (c) O y 5
'
f
c
yf
(
c
)
2
6
24
ba
5
dy
2
f (c ) y
y f '' (c) y f (3) (c) y f ( 4) (c) O y 6
y '
f (c )
2
6
24
120
3
2
5
b a
4
5
b a
2
(b a ) f (c )
b a 3 f '' (c)
b a
2
b a 6
f (c) O
1920
64
Сравнивая формулы(3) и (5), видно, что
3
b a ''
h3 ''
R( f )
f (c) O(b a )5
f (c) Oh5
24
24
Для составной формулы (4) получим оценку погрешности
3
h3 ''
b a
5
R( f ) n
f (c) O h
M O h 4 O h 2 , где
2
24
24
n
24
( 4)
(5)
(6)
2
M max f ' ' (c) , т.е. составная формула (4) имеет второй порядок аппроксимации O h .
x[ a , b ]
2) Формула трапеций (по 2 узлам n 2 ):
1
f ( z)dz C f (1) C
1
2
f (1)
в силу условий (2) получаем 2 уравнения:
1
1
f ( z ) 1,
1
1
f ( z )dz
dz 2 C
1
C 2
1
1
f (1) f (1)
f ( z ) z, f ( z )dz zdz 0 1 C1 1 C2 C2 C1 f ( z )dz
2
2
1
1
1
1
1
h
ba
f (a ) f (b) f (a ) f (b)
2
2
a
соответствует формуле площади трапеции.
1
b
f ( x)dx
(7)
51
Шаблон для составной формулы трапеций
1, 2, 2,,2, 1 1 ,1,...,1, 1
2
2
2
f (a ) f (b) n 1
f
(
x
)
dx
h
f (a h i )
(8)
a
2
i 1
Оценим погрешность формулы (7), разлагая функцию f (x ) в ряд Тейлора с центром x c
в точках x a и x b :
b a
h
x a, y x a 0 x a 0
b
Составная формула трапеций
h
b
y 2 ''
y 3 ( 3) 2
'
O h 4 , откуда
f f (c ) yf (c )
f (c )
f (c )
2
6
a
h
2
2
3
h
f (a) f (b) h 2 f (c) h f '' (c) O h3 hf c h f '' (c) O h4
2
2
4
8
Из формулы (5)имеем
b
b a 3 f '' (c) O h5 , R( f ) b f ( x)dx h f (a) f (b) hf (c) h 3 f '' (c)
hf (c) f ( x )dx
a
24
2
24
a
h3 ''
h3
h3 ''
hf c
f (c) Oh 4 f '' (c) O h 4 R( f )
f (c) O h 4
8
12
12
Для погрешности составной формулы имеем
b a h 2
h3
R( f ) n max f '' ( x ) O h 4
max f ' ' ( x ) O h3
x
[
a
,
b
]
x
[ a , b ]
12
12
(9)
откуда формула трапеций имеет второй порядок аппроксимации O h 2 .
3) Формула Симпсона (по 3 узлам n 3 ).
1
f ( z)dz C
1
f (1) C 2 f (0) C3 f (1)
1
f ( z ) 1,
1
1
1
1
1
1
1
1
f ( z )dz dz 2 C
1
f ( z ) z,
f ( z) z 2 ,
f ( z )dz zdz 0 1 C
1
1
1
1
C2 C3
1
f ( z )dz z 2 dz
1
2
1
4
1 C1 0 C2 1 C3 C3 C1 , C2
3
3
3
b
f ( z )dz 3 f (1) 4 f (0) f (1)
1
1
0 C2 1 C3 C3 C1
a
a b
f (a) 4 f
f ( b)
ba
2
f ( x )dx
3
2
h
(b a )
a b
a b
(10)
f (a) 4 f
f ( b) f ( a ) 4 f
f ( b)
6
2
2
3
1,4,2,4,2,, 2,4,1 (используется чётное
Шаблон для составной формулы Симпсона:
3
число интервалов n 2k ).Получаем составную формулу Симпсона из (10):
52
k
k 1
h
f
(
x
)
dx
f
(
a
)
4
f
(
a
h
(
2
i
1
))
2
f (a h(2i )) f (b)
a
3
i 1
i 1
b a f (a) 4 k f (a h(2i 1)) 2 k 1 f (a h(2i )) f (b)
3n
i 1
i 1
Оценим погрешность формулы(10), учтём b a 2h :
ch
5
h3 ''
b a ( 4)
h3 ''
5
c h f ( x)dx 2hf (c) 3 f (c) 1920 f (c) 2hf (c) 3 f (c) Oh
b
(11)
f (c h ) f (c h ) 2 f (c )
h2 ( 4)
''
f
(
c
)
f (c) Oh 4 ,из последних двух формул получим:
h2
12
ch
h 3 f (c h) f (c h) 2 f (c ) h 2 ( 4 )
h5 ( 4 )
4
f (c) O h
f (c ) O h 5
2
c h f ( x)dx 2hf (c) 3
h
12
60
ch
h
h5 ( 4 )
5
c h f ( x)dx 3 f (c h) f (c h) 4 f (c) 90 f (c) oh
b
R( f ) f ( x )dx
a
5
h
f (c h) f (c h) 4 f (c) h f ( 4) (c) oh5
3
90
Погрешность составной формулы( k
n ba
):
2
2h
b a h5
h5
ba
max f ( 4 ) ( x ) oh5 h 4
R( f ) k max f ( 4 ) ( x ) oh5
max f ( 4 ) ( x ) o(h 4 )
180 x[ a ,b]
90 x[ a ,b]
2h 90 x[ a ,b]
Т.е. порядок погрешности составной формулы равен 4.
Лекция 9. Квадратурные формулы Гаусса
Среди всех квадратурных интегральных формул особое место занимают
квадратурные формулы Гаусса. При одном и том же объеме алгебраических
преобразований с помощью них можно получить квадратуры точные для многочленов
степени 2n 1 , по сравнению другими методами (точные для многочленов степени n) .
Рассмотрим задачу: При заданном числе узлов n построить для вычисления
b
интегралов вида I ( f ) p( x) f ( x)dx с
весовой функцией p(x) всюду положительной
a
n
построить квадратурную формулу Гаусса S n ( f ) Ci f xi
точную для многочленов
i 1
максимально высокой степени.
В данной постановке имеется
неизвестных – весовые коэффициенты Ci , i 1, n и
узлы квадратуры xi , i 1, n .
Используя 2n условий, можно попытаться построить
квадратуру точную для многочленов степени 2n 1 . Построить квадратуру точную для
многочленов более высокой степени 2n уже невозможно. Например, для многочлена[1].
b b
P2 n ( x) x x1 x x2 x xn ,0 S n P2 n p( x)P2 n ( x)dx 0
2
2
2
a a
53
Важную роль при построении квадратурных формул Гаусса имеют многочлены,
ортогональные на отрезке [a, b] с весом p( x) 0 .Эти многочлены получают, например,
ортогонализацией
произведении
системе
координатных
функций 1, x, x 2 ,..., x k ,... при
скалярном
b
f , g p( x) f ( x) g ( x)dx
a
Пусть на отрезке [a, b] задана система ортогональных многочленов с весом p(x) :
1, 1 ( x), 2 ( x),..., k ( x),.... Тогда многочлен k (x) степени k ортогонален с весом p(x)
при l 0,1,2,..., k 1 . Действительно,
произвольному многочлену низшей степени Pl (x)
l
Pl (x) можно единственным образом представить в виде Pl ( x) Ci i ( x) . И при k l
i 0
b
a
k , Pl p( x) k ( x) Ci i ( x) dx Ci p( x) k ( x) i ( x) dx 0
b
l
l
i 0
a
i 0
При решении задач используют следующие системы ортогональных многочленов:
1) Лежандра
[1,1], p( x) 1 ,
2) Чебышева первого рода [1,1], p( x) 1 / 1 x 2 ,
3) Лаггера (0, ), p( x) e x ,
4) Эрмита (, ), p( x) e x .
2
При построении квадратур основной является следующая
Теорема. Пусть x1 ,..., xn нули ортогонального на [a, b] многочлена с весом p( x) 0
многочлена n (x) степени n и S n ( f ) - интерполяционная квадратура, построенная по
этим узлам. Тогда S n ( f ) будет точна для многочленов степени 2n-1.
Пример 1[1,№10.3.1]. Построить квадратурную формулу Гаусса с одним узлом для
вычисления интеграла:
1
I ( f ) x f ( x)dx
Построим квадратурную формулу с одним узлом S1 ( f ) Cf ( x) . Неизвестные величины вес C и узел x . Для их определения необходимо всего два уравнения, можно решить
задачу методом неопределенных коэффициентов:
1) Для функции требуем равенства интеграла I ( f ) и квадратуры S1 ( f ) для всех
многочленов степени 0
1
I 1 xdx
1
Cf ( x) C
2
1
2) Аналогично,
для
функции
f ( x) x, I x x 2 dx
1 1
2
Cx x
3 2
3
Найденные
величины подставляем в квадратуру.
54
1
Ответ: I f xf ( x)dx
1 2
f
2 3
квадратура точна для всех многочленов не выше
первой степени.
Пример 2[1,№10.2]. Доказать, что ортогональный многочлен степени с весом p( x) 0 на
отрезке [a, b] имеет ровно n различных корней на этом отрезке.
Решение: Доказательство проведём от противного. Пусть число корней ортогонального
r
многочлена n (x) равно r n Обозначим Rr ( x) x xi .
i 1
r
Тогда n ( x) Pnr ( x) x xi ,где многочлен Pnr (x)
не имеет корней на [a, b]. Тогда
i 1
r
многочлен Qnr ( x) n ( x) Rr ( x) Pnr ( x) x xi
2
не меняет знака на [a, b]. Но:
i 1
b
r
a
i 1
Rr ( x), n ( x) p( x)Pnr ( x) x xi 2 dx 0( p( x) 0)
Другими словами, ортогональный многочлен n (x) не ортогонален произвольному
многочлену низшей степени Rr ( x)(r n) на [a, b]. Что противоречит определению
ортогонального многочлена.
Пример 3[1,№10.22]. Методом ортогонализации построить ортогональный многочлен
третьей степени 3 ( x) x3 ... на промежутке (0, ), p( x) e x .
Решение: Так как в скалярном произведении ортогональных полиномов
b
n ( x), m ( x) p( x) n ( x), m ( x)dx 0 каждый
из них определен с точностью до
a
постоянного множителя, то положим старший коэффициент во всех ортогональных
полиномах равным единице.
Возьмем по частям вспомогательный интеграл
de x n
x n
x n1
x n1
x
x
0 e x dx 0 dx x dx e x 0 ne x dx n0 e x dx ... n!0 e dx n!e n!
n N
Пользуясь ортогональностью многочлена всем ортогональным многочленам низшей
степени, получим условия
x
n
0 ( x) 1, 1 ( x) x a : 0 ( x), 1 ( x) 0 e x ( x a)dx 1 a 0, a 1,
1 ( x) x 1, 2 ( x) x bx c,
2
,
e x x 2 bx c dx 2 b c 0
2
2 ( x) :
0 , e x x 2 bx c x 1dx 6 2b c 0
1
2
0
2 b c 0
Решая полученную систему уравнений
, находим
6 2b c 0
b 4, c 2, 2 ( x) x 2 4 x 2
Наконец, для многочлена
55
0 3 , 0
3 ( x) x a1 x a2 x a3 , 3 ( x) : 0 3 , 1
0 ,
3
2
3
2
x 3
2
0 e x a1 x a2 x a3 dx 6 2a1 a2 a3
2 ( x) : 0 e x x 3 a1 x 2 a2 x a3 x 1dx 24 6a1 2a2 a3
0 e x x 3 a1 x 2 a2 x a3 x 2 4 x 2 dx 120 24a1 6a2 2a3
Здесь каждый нижележащий интеграл вычисляется с учетом всех вышележащих
интегралов в системе.
Из последней системы уравнений
6 2a1 a2 a3 0
24 6a1 2a2 a3 0
120 24a 6a 2a 0
1
2
3
a1 9, a2 18, a3 6
3 ( x) x3 9 x 2 18x 6
Запишем ответ:
0 ( x) 1, 1 ( x) x 1, 2 ( x) x 2 4 x 2, 3 ( x) x3 9 x 2 18x 6
Пример 4[1,№10.4.2]. Построить квадратуру Гаусса с двумя узлами
интеграла:
I f
для вычисления
/2
cos( x) f ( x)dx
/2
Решение: Согласно указанному алгоритму строим ортогональный многочлен второй
степени на отрезке , с весом p( x) cos( x)
2 2
P0 ( x) 1
Составим таблицу вспомогательных интегралов
/2
cos( x) xdx
/ 2
/2
cos( x) x dx 0
3
/2
в силу нечетности подынтегральной функции и симметричности пределов подстановки в
пределах интегрирования
/2
cos( x)dx sin x
/2
/2
/ 2
, .
2 2
2
56
/2
/2
/2
/2
d sin x 2
cos( x) x dx
x dx sin x x 2
2 x sin( x)dx
dx
/ 2
/ 2
/ 2
/ 2
2
2
2
/2
/2
d cos( x)
2
2
/2
2
xdx
2
x
cos
x
2
cos(
x
)
dx
4
dx
/ 2
2
2
/ 2
/ 2
P1 ( x) x a :
/2
/2
/2
/ 2
/ 2
/2
cos( x) P0 ( x) P1 ( x)dx 0
cos( x)( x a)dx
a cos( x)dx 2a 0
Откуда
a 0, P1 ( x) x, P2 ( x) x 2 bx c :
/2
/2
cos(
x
)
P
(
x
)
P
(
x
)
dx
cos( x) x 2 bx c dx 0
2
/ 2
/ 2
/2
/2
cos( x) P ( x) P ( x)dx 0 cos( x) x 2 bx c xdx 0
1
2
/ 2
/ 2
2
2 4 2c 0
1 2
c
4 , b 0
2
2 2
b 4 0
2
1 2
4 , P2 ( x) 0.
Тогда P2 ( x) x
2 2
Легко находим корни ортогонального многочлена
2
1 2
2
4
2
2 2
4
Переходим ко второму действию алгоритма
x1, 2
I f
/2
cos( x) f ( x)dx C f ( x ) C
1
1
2
f ( x2 )
/ 2
2
2
C1 f ( x1 ) C2 f ( x2 ) C1 f
2 C2 f
2
4
4
Где весовые коэффициенты C1 ,C2 находим методом неопределенных коэффициентов.
Требуем точного равенства I ( f ) S2 ( f ) для всех многочленов нулевой и первой степени
/2
f ( x) 1,
cos( x)dx 2 C
1
C2
/ 2
2
2
cos(
x
)
xdx
C
2
C
2
1
2
4
4
/ 2
/2
f ( x) x,
Откуда C1 C2 1. Запишем
57
2
2
2 f 2
cos(
x
)
f
(
x
)
dx
f
4
4
/ 2
По теореме Гаусса полученная квадратура точна для всех многочленов степени не выше
Ответ: I f
/2
Пример 5[1,№10.17]. Квадратурная формула
3
3
S3 f f
f
(
)
f
2
3 2
применяется для вычисления интеграла I f
/2
f ( x)
dx.
1 x2
Показать, что она точна для всех многочленов пятой степени.
Решение: Пользуясь таблицей, приведенной в параграфе для ортогональных многочленов
/2
Чебышева первого рода [1,1], p( x) 1 / 1 x 2 можем построить многочлен
Чебышева первого рода третей степени рекуррентно (так как именно они ортогональны на
отрезке [-1,1] с указанной весовой функцией:
Tn ( x) 2 xTn1 ( x) Tn2 ( x), T0 ( x) 1,
T1 ( x) x, T2 ( x) 2 x 2 1, T3 ( x) 4 x3 2 x x 4 x3 3x.
Или с точностью до множителя при старшей степени
4
3 ( x) x 3 x
3
Найдем корни 3 ( x)
4
4
3
3
В соответствии с теоремой Гаусса
3 ( x) x3 x 0 x x 2 0, x1
1
I f
1
3
3
, x2 0, x3
.
2
2
3
3
C2 f 0 C3 f
dx C1 f x1 C2 f x2 C3 f x3 C1 f
2
2
1 x2
f ( x)
Неизвестные веса C1 , C2 , C3 находим методом неопределенных коэффициентов.
Потребуем точности квадратурной формулы для всех многочленов степени не выше двух:
1
1
1
f ( x) 1, I ( f )
dx arcsin x 1 C1 C2 C3
2
1 1 x
1
x
3
C3 C1
f ( x) x, I ( f )
dx 0
2
2
1 1 x
в силу нечетности подынтегральной функции в симметричных подстановках -1 и 1.
1
1
1
1
x2
1 1 x2
1
f ( x) x 2 , I ( f )
dx
dx 1 x 2 dx
dx
2
2
1 x2
1 1 x
1
1
1 1 x
2
2
3
С1 С3
4
В первом интеграле обозначим
58
x cos y, dx sin ydy, 1 x 2 sin y,
1
x 1 y ,
1
1
1 cos 2 y
1
1 x dx sin y dy
dy sin 2 y
2
2 4
2
2
2
Решаем систему уравнений
С1 С2 С3
С1 С3 С2
С3 С1 0
3
3
4
С1 С3
2
3
/2
Запишем ответ: I f
/ 2
f ( x)
1 x2
dx
3
f (0)
f
3 2
3
f
2
По теореме Гаусса данная квадратура точна для всех многочленов степени 2n-1=5.
Пример 6[1,№10.24]. Построить квадратурную формулу с двумя узлами для вычисления
интегралов
I f e x f ( x)dx C1 f x1 C2 f x2
Решение: Замечаем, что весовая функция в данном случае равна p( x) e x
на области 0, что соответствует ортогональным полиномам Эрмита. Согласно
примеру 3, для многочлена второй степени с двумя корнями на интервале
x 0, , 2 ( x) x 2 4 x 2
Находим корни квадратного трехчлена
2 ( x) x 2 4 x 2 0 x 22 2, x1 2 2 , x2 2 2
Тогда
I f e x f ( x)dx C1 f 2 2 C2 f 2 2
Переходим к определению
коэффициентов) C1 ,C2 :
весовых
коэффициентов
(методом
неопределённых
Для f ( x) 1 получим I f e x f ( x)dx 1 C1 C2
Для f ( x) x получим I f e x f ( x)dx 1 2 2 C1 2 2 C2
Решаем систему линейных уравнений:
C1 C2 1
1 2
1 2
C1
, C2
2 2
2 2
2 2 C1 2 2 C2 1
ответ:
59
1 2
1 2
f 2 2
I f e x f ( x)dx
2 2 f 2 2
2
2
По теореме Гаусса квадратурная формула точна для всех многочленов степени не выше 3.
Литература
1. Н.С.Бахвалов, А.В.Лапин, Е.В. Чижонков. Численные методы в задачах и
упражнениях. – М.:БИНОМ. Лаборатория знаний,2010.
Практическая работа №6. Сравнение порядков погрешности интегральных
квадратурных формул
Рекомендации для программы:
1)В качестве теста рассмотрим простой пример
1
f ( x ) 10 x , a 0, b 1, 10x 9dx x10 1, n 100, h 0.01, k
9
1
2)Выводим на экран не значение интеграла, а
k
k 1
h
1 f (a ) 4 f (a h(2i 1)) 2 f (a h(2i )) f (b)
3
i 1
i 1
n
50
2
величину
погрешности
3)Чем больше нулей после запятой при одном и том же n , тем точнее метод.
Определение 1. Говорят, что
разностное уравнение f h 0 аппроксимирует
некоторое уравнение (в том числе и дифференциальное) f ( x ) 0 с порядком p , если
найдутся положительные числа
f ( x )h f h
С 0, h0 0, h h0 : f ( x )h f h Ch p lim
C
h 0
hp
Другими словами, при уменьшении шага сетки в 2 раза погрешность f ( x )h f h
уменьшается в 2 p раз (норма разности понимается в некотором функциональном
пространстве). Запишем программу:
1) #include
#include
int main()
{
int i ,n;
double sum,a,b,h,x,delta;
a=0.0;
b=1.0;
n=100;
h=(b-a)/double(n);
sum=0.0;
//printf("h=%.16lf\n")
for(i=1;i<=n;i++)
{
x=a+h*(double(i)-0.5);
sum=sum+10.0*pow(x,9.0);
}
60
sum=sum*h;
delta=1.0-sum;
printf("h=%.16lf, delta=%.16lf\n",h,delta);
}
При n 100 программа возвращает h 0.01; delta 0.000375 ;
При n 200 возвращаются значения h 0.005; delta 0.000093746 , откуда
0.01
4.00017 22 p 2 - второй порядок аппроксимации
0.005
2)
#include
#include
main()
{
int i ,n;
double sum,a,b,h,x,delta;
a=0.0;
b=1.0;
n=100;
h=(b-a)/double(n);
sum=0.0;
for(i=1;i<=n-1;i++)
{
x=a+h*double(i);
sum=sum+10.0*pow(x,9.0);
}
sum=sum+(10.0*pow(a,9.0)+10.0*pow(b,9.0))/2.0;
sum=sum*h;
delta=1.0-sum;
printf("h=%.16lf, delta=%.16lf\n",h,delta);
}
При n 100 программа возвращает h 0.01; delta 0.0007499 ;
При n 200 возвращаются значения h 0.005; delta 0.0001875 , откуда
0.01
3.9995 22 p 2 - второй порядок аппроксимации
0.005
3) #include
#include
int main()
{
int i ,n;
double sum,a,b,h,x,delta,sum1,sum2;
a=0.0;
b=1.0;
n=200;
h=(b-a)/double(n);
sum=0.0;
//printf("h=%.16lf\n")
for(i=1;i<=n/2;i++)
{
x=a+h*(double(2*i-1));
sum=sum+10.0*pow(x,9.0);
}
61
sum1=sum*4.0;
sum=0.0;
for(i=1;i<=n/2-1;i++)
{
x=a+h*(double(2*i));
sum=sum+10.0*pow(x,9.0);
}
sum2=sum*2.0;
sum=sum1+sum2+10.0*(pow(a,9.0)+pow(b,9.0));
sum=sum*h/3.0;
delta=1.0-sum;
printf("h=%.16lf, delta=%.16lf\n",h,delta);
}
При n 100 программа возвращает h 0.01; delta 0.0000002799 ;
При n 200 возвращаются значения h 0.005; delta 0.000000017498 , откуда
0.01
15.996 24 p 4 - четвёртый порядок аппроксимации
0.005
Сравнивая первое и второе задание, а также формулы (*) и (**) видно, что погрешность
центральных прямоугольников примерно в 2 раза меньше погрешности формулы
0.0007499
1.9997 ).
трапеций при прочих равных условиях(
0.000375
Литература
1)Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы. – 6-е изд. –
М.:БИНОМ. Лаборатория знаний.
2)Бахвалов Н.С., Лапин А.В., Чижонков Е.В. Численные методы в задачах и упражнениях:
учебное пособие. – М.:БИНОМ. Лаборатория знаний,2010. – 240 с.
Практическая работа №7
Аппроксимация определённых интегралов.
Рассмотрим канонический отрезок[-1,1], на котором в силу симметрии узлы
квадратурной формулы расположены симметрично относительно нуля, а весовые
коэффициенты, соответствующие симметричным узлам имеют равные положительные
значения, как в формуле Симпсона. Разделим отрезок [-1,1] на 6 равных частей, т.е.
используем 7 равноотстоящих узлов.
Получим формулу (по узлам x1 1, x2 2 / 3, x3 1/ 3, x4 0, x5 1/ 3, x6 2 / 3, x7 1 ,
n 6 ):
-1 -2/3 -1/3 0 1/3 2/3 1
x1
С3
x3 x4 x5 x6 x7
С2 С1 С0 С1 С2 С3
x2
1
f ( z)dz С
f (0) C1 f (1/ 3) f (1 / 3) C2 f (2 / 3) f (2 / 3) C3 f (1) f (1)
(1)
1
Подставляя в формулу (1) в качестве функции f (z ) степенные мономы, начиная с
нулевой степени, используя только чётные степени мономов, получим систему уравнений:
62
1
f ( z ) 1,
1
1
f ( z) z 2 ,
f ( z) z 4 ,
f ( z )dz dz 2 С0 2C1 2C2 2C3
1
1
1
2
2
z dz 3 9 C
f ( z )dz
2
1
1
1
1
1
2
2
f ( z)dz z dz 5 81 C
4
1
1
1
8
C2 2C3 3 C1 4C2 9C3
9
32
C2 2C3 81 5C1 80C2 405C3
81
f ( z) z ,
6
1
1
2
2
128
C1
C2 2C3 729 7C1 448C2 5103C3
7 729
729
1
1
Необходимо решить систему линейных уравнений с 4 неизвестными.
2 С0 2C1 2C2 2C3
3 C 4C 9C
68
9
18
41
1
2
3
С0
, С1
, С2 , С3
105
140
35
420
81 5C1 80C2 405C3
729 7C1 448C2 5103C3
Из формул (1) и (2) получим формулу (3):
1
68
9
18
41
1 f ( z)dz S f 105 f (0) 140 f (1/ 3) f (1/ 3) 35 f (2 / 3) f (2 / 3) 420 f (1) f (1)
f ( z )dz z 6 dz
1
В частности, если f ( z ) 1, f ( z )dz 2
1
(2)
(3)
68
9 18 41
2
- имеем длину
105 140 35 420
канонического отрезка [-1,1].
Шаблон весовых коэффициентов для составной формулы по решению системы
уравнений (2)(коэффициенты на внутренних границах удваиваются):
41 18 9 68 9 18 41 18 9 68 9 18 41
. ,
,
,
, ,
, ,
,
,
, ,
( n 12 )
420 35 140 105 140 35 210 35 140 105 140 35 420
Для интеграла на отрезке [a, b] составная формула (на базе (3)) с равномерным шагом
сетки n 6k , k N :
b
I 1 f ( x)dx 3hS f
a
n
3(b a)
(b a)
S f ,h
, S f С j f x j , x j a h * j
n
n
(4)
Где в квадратурной формуле (4) значение однократного интеграла I 1
(b a)
пропорционально шагу равномерной сетки h
, коэффициент 3 выбран
n
согласно принципу соответствия ( при делении отрезка[-1,1] на 6 равных
h 1 / 3,3h 1, S f 2, I1 3hS f 2 b a, b 1, a 1 )
Удобно
разбить
S f ( n 6k , k N )
в
формуле(4)
на
5отдельных
частей
слагаемых
S f S1 S2 S3 S4 S5
41
f (a) f (b), С j 41 ;
420
420
k 1
k 1
18
18
S
f
a
h
(
1
6
s
)
f a h(5 6s), С j
2)если j 1mod 6 или j 5 mod 6 : 2
35 s 0
35
s 0
1)если j 0 или j n : S1
k 1
9 k 1
9
3)если j 2 mod 6 или j 4 mod 6 : S3
f a h(2 6s) f a h(4 6s), С j
140 s 0
140
s 0
(5)
(5.1)
(5.2)
(5.3)
63
4)если j 3 mod 6 : S4
68 k 1
68
f a h(3 6s) , С j
105 s 0
105
(5.4)
41 k 1
41
f a h(6s) , С j
210 s 1
210
(5.5)
5)если j 0 mod 6 : S5
Алгоритмическое разбиение квадратуры S f в(4) на 4 слагаемых (формулы (5))
обусловлено экономией машинного времени и уменьшением суммарной ошибки.
Действительно, в (5) мы складываем все узловые значения функции с одинаковым весом
С j и только один раз умножаем полученную сумму на этот вес С j .
2
x10
102.4
Рассмотрим пример: b 2, a 0, f ( x) x , I ( f ) f ( x)dx
a
10 0
Программа соответствует построенному алгоритму и формулам (4), (5.1-5.4),
написана на языке C++ и приведена ниже:
#include
#include
double f(double x);
int const n=60,k=n/6;
main()
{
int s,j;
double a,b,c,d,h1,h2,bb[n+1],x,y,x1;
double sum,sum1,sum2,sum3,bac1,bac,delta,epsilon;
printf("n=%d k=%d\n",n,k);
a=0.0;
b=2.0;
h1=(b-a)/double(n);
bac1=0.0;
sum=0.0;
sum1=0.0;
sum2=0.0;
sum3=0.0;
for(s=0;s<=k-1;s++)
{
x=a+h1*(1.0+6.0*double(s));
x1=a+h1*(5.0+6.0*double(s));
sum=sum+f(x)+f(x1);
}
sum=sum*(18.0/35.0);
for(s=0;s<=k-1;s++)
{
x=a+h1*(2.0+6.0*double(s));
x1=a+h1*(4.0+6.0*double(s));
sum1=sum1+f(x)+f(x1);
}
sum1=sum1*(9.0/140.0);
for(s=0;s<=k-1;s++)
{
x=a+h1*(3.0+6.0*double(s));
sum2=sum2+f(x);
9
b
64
}
sum2=sum2*(68.0/105.0);
for(s=1;s<=k-1;s++)
{
x=a+6.0*h1*double(s);
sum3=sum3+f(x);
}
sum3=sum3*(41.0/210.0);
bac1=sum+sum1+sum2+sum3+(f(a)+f(b))*(41.0/420.0);
bac1=bac1*3.0*h1;
delta=102.4-bac1;
epsilon=delta/bac1;
printf("int 1 =%.14lf, exact=%.14lf delta=%.14lf eps=%.16lf\n",bac1, 102.4,delta,epsilon);
}
double f(double x )
{
return x*x*x*x*x*x*x*x*x;
}
При n=120 k=20 программа возвращает значения:
int 1 =102.40000000000461, exact=102.40000000000001 delta=-0.00000000000460 eps=
-0.0000000000000450
Press any key to continue
При n=60 k=10 программа воpвращает значения:
int 1 =102.40000000118513, exact=102.40000000000001 delta=-0.00000000118513 eps=
-0.0000000000115735
Press any key to continue
Откуда
видно,
что
абсолютная
погрешность
изменяется
delta 2 0.00000000118513
257,6 28
delta1 0.00000000000460
Т.е. порядок аппроксимации полученной составной одномерной формулы равен 8.
delta I ( f ) S f
Параметр
быть
eps
относительная пог решность не должна
Sf
Sf
меньше 1016 , выполнение асимптотики (порядок аппроксимации p 8 ) можно ожидать
15
при eps 10 .
Практическая работа 8. Аппроксимация двойных интегралов
2.Построение двумерного алгоритма
Двумерную квадратурную формулу на прямоугольнике получим как декартовое
произведение двух одномерных формул, заданных на отрезке, по аналогии с формулой
(4):
b d
I 2 f ( x, y )dxdy 9h1h2 S f , h1
a c
n
n
(b a)
( d c)
, h2
, S f Ci , j f y j xi ,
n
n
j 0 i 0
(6)
xi a h1 * i, y j c h2 * j; i, j 0, n
65
Где: C i , j - весовые коэффициенты определяются формулой (7)
В частности, при f ( x, y) 1, I 2 4, a c 1, b d 1 получаем площадь канонического
квадрата со стороной 2([-1,1]*[-1,1]). h1 h2 1 / 3, S f 4 - как повторная сумма при
фиксированной внешней переменной суммирования j (при этом сумма по внутренней
переменной i равна 2 при фиксированной переменной j) в соответствии с формулой (7).
Ci , j Сi * C j ; i, j 0, n
С 18 если i 1 mod 6 или i 5 mod 6
i 35
С 9 если i 2 mod 6 или i 2 mod 6
i 140
(7)
68
если i 3 mod 6
Сi
105
41
Ci 210 если i 0 mod 6, i 0, i n
С 41 если i 0, i n
i 420
10
1010
y5
105
exp 10 1 .
Рассмотрим пример: найти I 2 exp( x) y dxdy exp x
5
5
0 0
В данном примере выбраны большие размеры области интегрирования, кроме того
экспоненциальная функция растёт значительно быстрее степенной, именно при этих
условиях можно проследить асимптотику для порядка аппроксимации(p=8).
4
Согласно формулам (6),(7) построим алгоритм для программы на Visual C++ 6.0:
#include
#include
double f(double x, double y);
int const n=120,k=n/6;
main()
{
int s,j;
double a,b,c,d,h1,h2,bb[n+1],x,y,x1;
double sum,ss,sum1,sum2,sum3,bac1,bac,bac2,delta,epsilon;
printf("n=%d k=%d\n",n,k);
a=0.0;
b=10.0;
c=a;
d=b;
h1=(b-a)/double(n);
h2=(d-c)/double(n);
bac1=0.0;
bac2=0.0;
sum=0.0;
sum1=0.0;
sum2=0.0;
sum3=0.0;
for (j=0;j<=n;j++)
{
y=c+h2*double(j);
66
bac1=0.0;
sum=0.0;
sum1=0.0;
sum2=0.0;
sum3=0.0;
for(s=0;s<=k-1;s++)
{
x=a+h1*(1.0+6.0*double(s));
x1=a+h1*(5.0+6.0*double(s));
sum=sum+f(x,y)+f(x1,y);
}
sum=sum*(18.0/35.0);
for(s=0;s<=k-1;s++)
{
x=a+h1*(2.0+6.0*double(s));
x1=a+h1*(4.0+6.0*double(s));
sum1=sum1+f(x,y)+f(x1,y);
}
sum1=sum1*(9.0/140.0);
for(s=0;s<=k-1;s++)
{
x=a+h1*(3.0+6.0*double(s));
sum2=sum2+f(x,y);
}
sum2=sum2*(68.0/105.0);
for(s=1;s<=k-1;s++)
{
x=a+6.0*h1*double(s);
sum3=sum3+f(x,y);
}
sum3=sum3*(41.0/210.0);
bac1=sum+sum1+sum2+sum3+(f(a,y)+f(b,y))*(41.0/420.0);
if(j==0 || j==n)
{
bb[j]= bac1*(41.0/420.0);
}
еlse if(j%6==1 || j%6==5)
{
bb[j]= bac1*(18.0/35.0);
}
else if(j%6==2 || j%6==4)
{
bb[j]= bac1*(9.0/140.0);
}
else if(j%6==3)
{
bb[j]= bac1*(68.0/105.0);
}
else if(j%6==0 && j>0 && j
#include
double f(double x, double y, double z);
int const n=120,k=n/6;
main()
{
int s,j,j1;
double a,b,c,d,e,f1,h1,h2,h3,aa[n+1],bb[n+1],x,y,z,x1,xx;
double sum,sum1,sum2,sum3,sum4,epsilon,bac1,bac,bac2,bac3,delta;
printf("n=%d k=%d\n",n,k);
a=0.0;
c=a;
e=a;
b=4.0;
d=b;
f1=b;
h1=(b-a)/double(n);
h2=(d-c)/double(n);
h3=(f1-e)/double(n);
for(j1=0;j1<=n;j1++)
{
z=e+h3*double(j1);
for(j=0;j<=n;j++)
{
bac1=0.0;
4 5
y=c+h2*double(j);
sum=0.0;
sum1=0.0;
sum2=0.0;
sum3=0.0;
69
for(s=0;s<=k-1;s++)
{
x=a+h1*(1.0+6.0*double(s));
x1=a+h1*(5.0+6.0*double(s));
sum=sum+f(x,y,z)+f(x1,y,z) ;
}
sum=sum*(18.0/35.0);
for(s=0;s<=k-1;s++)
{
x=a+h1*(2.0+6.0*double(s));
x1=a+h1*(4.0+6.0*double(s));
sum1=sum1+f(x,y,z)+f(x1,y,z);
}
sum1=sum1*(9.0/140.0);
for(s=0;s<=k-1;s++)
{
x=a+h1*(3.0+6.0*double(s));
sum2=sum2+f(x,y,z);
}
sum2=sum2*(68.0/105.0);
for(s=1;s<=k-1;s++)
{
x=a+h1*(6.0*double(s));
sum3=sum3+f(x,y,z);
}
sum3=sum3*(41.0/210.0);
bac1=3.0*h1*(sum +sum1+sum2+sum3+(41.0/420.0)*(f(a,y,z)+f(b,y,z)));
if( (j==n) || (j==0))
{
bb[j] = (41.0/420.0)*bac1;
}
else if((j%6==1) || (j%6==5) )
{
bb[j] = (18.0/35.0)*bac1;
}
else if((j%6==2) || (j%6==4) )
{
bb[j] = (9.0/140.0)*bac1;
}
else if(j>0 && j0 && j1
#include
double f(double x, double y, double b);
double alg(int s, int n);
int const n1=3;
main()
{
int s,j,n,t,p;
int n0,i,jj,jjj;
double v[n1+1],vv[n1+1];
double a,aa,b,bb,c,d,h1,h2,x,y,r,r1,r2,x1,pi,res,xx;
double sum, bc, delta, epsilon;
double cab, caban, mins;
n0=14;
pi=2.0*asin(1.0);
r1=5.0;
r2=10.0;
for(t=1;t<=n1;t++)
{
n=n0;
printf("n=%d t=%d\n",n0,t);
a=0.0;
c=a;
b=(r1+r2)*pi;
d=(r2-r1);
h1=(b-a)/double(n);
h2=(d-c)/double(n);
bc=0.0;
for(j=0;j<=n;j++)
{
y=c+h2*double(j);
for(i=0;i<=n;i++)
{
x=a+h1*double(i);
bc=bc+f(x,y,b)*alg(i,n)*alg(j,n);
}
}
bc=bc*(2.0*pi*49.0*h2*h1)/b;
res=bc;
v[t]=bc;
xx= pi*(pow(10.0,10.0)-pow(5.0,10.0))/10.0;
delta=xx-res;
printf("numerical=%.16lf v[%d]=%.16lf exact=%.16lf delta=%.16lfn=%d\n", res, t,
v[t],xx,delta,n0);
epsilon=delta/xx;
printf("epsilon(%d)=%.16lf \n",n0,epsilon);
n0=n0+14;
}
10 2
10
r10 1
r
sin
rdrd
0 0
10 0 2
8
2
2
9
73
for(s=1;s<=n1;s++)
{
vv[s]=v[s];
}
for(s=1;s<=n1;s++)
{
mins=1e10;
for(j=s;j<=n1;j++)
{
if(vv[j]0 || s
#include
double f(double x, double y, double z);
double alg(int s, int n);
main()
7
2
2
77
{
int s,j;
double a,b,c,d,e,f1,h1,h2,h3,x,y,z,xx,r1,r2;
double sum, epsilon, bc, delta, res, aa, bb;
double pi, mins, cab;
int t1,t2,n,k,i,t,n0,jj,jjj;
int const n1=3;
double v[n1+1],vv[n1+1];
n0=10;
pi=2.0*asin(1.0);
r1=5.0;
r2=10.0;
for(t=1;t<=n1;t++)
{
n=n0;
printf("n=%d t=%d\n",n0,t);
a=0.0;
c=a;
e=a;
b=pi*(r2+r1);
d= 4.0*(r2*r2+r2*r1+r1*r1)/(3.0*(r2+r1));
f1=r2-r1;
h1=(b-a)/double(n);
h2=(d-c)/double(n);
h3=(f1-e)/double(n);
bc=0.0;
for(k=0;k<=n;k++)
{
z=e+h3*double(k);
for(j=0;j<=n;j++)
{
y=c+h2*double(j);
for(i=0;i<=n;i++)
{
x=a+h1*double(i);
bc=bc+f(x,y,z)*alg(i,n)*alg(j,n)*alg(k,n);
}
}
}
bc=bc*h1*h2*h3*125.0;
res=bc;
res=res*2.0*pi*pi/(d*b);
xx=pi*pi*(pow(10.0,10.0)-pow(5.0,10.0))/20.0;
delta=res-xx;
epsilon=delta/res;
v[t]=res;
printf("numerical=%.6lf exact=%.6lf delta=%.6lf \n",res,xx,delta);
printf("epsilon(%d)=%.16lf \n",n0,epsilon);
n0=n0+10;
}
for(s=1;s<=n1;s++)
{
78
vv[s]=v[s];
}
for(s=1;s<=n1;s++)
{
mins=1e10;
for(j=s;j<=n1;j++)
{
if(vv[j]0 || s
#include
double f(double x, double y);
int main()
{
int i,n;
double a,b,h,x,y;
n=100;
a=1.0;
b=2.0;
h=(b-a)/double(n);
x=1.0;
y=0.5;
for(i=1;i<=n;i++)
{
y=y+ h * f(x,y);
x=x+h;
}
printf("x=%.16lf delta=%.16lf\n", x+h,y-1.0/3.0);
}
double f(double x, double y)
{
return y*(y-1.0)/x;
}
Программа возвращает n 100 delta 0.000641024
n 100 delta 0.000320079 , откуда порядок аппроксимации
0.000641024
2.0026 21 p 1
0.000320079
4)Рунге – Кутты 2 – го порядка
#include
#include
double f(double x, double y);
int main()
{
int i,n;
double a,b,h,x,y,k;
n=100;
a=1.0;
b=2.0;
h=(b-a)/double(n);
x=1.0;
y=0.5;
for(i=1;i<=n;i++)
{
k=f(x,y);
y=y+ h * f(x+h/2.0,y+k*h/2.0);
x=x+h;
}
printf("x=%.16lf delta=%.16lf\n", x+h,y-1.0/3.0);
86
}
double f(double x, double y)
{
return y*(y-1.0)/x;
}
Программа возвращает n 100 delta 0.000000838475
n 200 delta 0.00000020948 , откуда порядок аппроксимации
0.000641024
4.0026 22 p 2 -равен 2.
0.000320079
5)
#include
#include
int main()
{
int i ,n;
double sum,a,b,h,x,delta,sum1,sum2;
a=0.0;
b=1.0;
n=200;
h=(b-a)/double(n);
sum=0.0;
//printf("h=%.16lf\n")
for(i=1;i<=n/2;i++)
{
x=a+h*(double(2*i-1));
sum=sum+10.0*pow(x,9.0);
}
sum1=sum*4.0;
sum=0.0;
for(i=1;i<=n/2-1;i++)
{
x=a+h*(double(2*i));
sum=sum+10.0*pow(x,9.0);
}
sum2=sum*2.0;
sum=sum1+sum2+10.0*(pow(a,9.0)+pow(b,9.0));
sum=sum*h/3.0;
delta=1.0-sum;
printf("h=%.16lf, delta=%.16lf\n",h,delta);
}
Программа возвращает n 100 delta 0.0000002799
n 200 delta 0.0000000175 , откуда порядок аппроксимации
0.0000002799
15.994 2 4 p 4 -равен 4
0.0000000175
Литература
1)Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы. – 6-е изд. –
М.:БИНОМ. Лаборатория знаний.
2)Бахвалов Н.С., Лапин А.В., Чижонков Е.В. Численные методы в задачах и упражнениях:
учебное пособие. – М.:БИНОМ. Лаборатория знаний,2010. – 240 с.
87
Лекция 12. Краевые задачи. Методы построения схем.
Задача, содержащая обыкновенное дифференциальное уравнение называется
краевой, если дополнительные условия для определения произвольных постоянных в
решении заданы в нескольких разных точках отрезка(на границе рассматриваемой
области в многомерном случае для уравнений в частных производных). Следовательно,
как правило, уравнения имеют второй порядок и выше.
1. Метод неопределённых коэффициентов.
Для локальной аппроксимации дифференциального оператора
Lhuh в узле сетки
xi
в выражении
Lu h Lhuh xx
i
Lu h разностным
разностный оператор Lh берут с
неопределёнными коэффициентами, затем раскладывают в ряд узловые значения
относительно выбранного узла xi , затем группируют множители при uxi , u ' xi , u '' xi ,... .
Далее приравнивают выбранные множители к нулю и приходят к системе алгебраических
уравнений для нахождения коэффициентов разностной схемы. Порядок аппроксимации и
главный член погрешности определяется после подстановки найденных коэффициентов в
первый ненулевой множитель при соответствующей производной в выбранном узле xi
2. Метод Ритца.
Применяется для решения краевых задач
Lu f , x (a, b)
u (a) ua
u (b) u
b
Требуется выполнения условий для дифференциального оператора:
1) L 0 Lu, u u, u , 0, u C 2 D (положительность оператора)
(1)
2) Lu, v Lv, u , u, v (самосопряжённость оператора)
3) Выбирают систему координатных функций i x ,по которой раскладывают решение
n
0 a ua , 0 b ub , i a i b 0, i 1,2,3..., u ( x) 0 x Cii x
(2)
i 1
Рассмотрим минимизирующий функционал
F (u) Lu, u 2 f , u F (uC ) LuC , uC 2 f , uC , F (uC ) min
F (u C ) u C
u C
u C
L
, uC LuC ,
2 f ,
0
C
C
C
C
C
(3)
88
u C
uC
uC
2 LuC ,
2 f ,
0 2 LuC f ,
0 LuC f , i x 0, i 1, n
C
C
C
LuC ,i x f ,i x , C j L j x i x f ,i x , C0 1, i 1, n
n
j 0
n
a
j 0
i, j
C j f i , ai , j L j x i x , f i f , i x , C0 1, i 1, n, j 0, n
(4)
То есть функционал вида (3) минимизирует исходное уравнение(1) на конечном n
множестве координатных функций. Весовые коэффициенты C j для минимизирующей
функции в линейном пространстве U hn определяются системой линейных уравнений (4).
Первая производная функционала(3) по Фреше с учётом само сопряжённости
функционала равна нулю в силу необходимых условий
F , h 2Lu, h 2 f , h 0 Lu f , h 0, h Lu f
Рассмотрим вторую производную по Фреше функционала(3)
2 F , h F , h 2 Lu, h 2Lh, h 0, h C 2 D
В силу положительной определённости функционала L. Таким образом, использованы все
условия, накладываемые на функционал, уравнение(1) доставляет функционалу (3)
абсолютный минимум.
Рассмотрим пример.
Lu u '' u 1 x 2 f ( x) u '' u x 2 1, x (1,1)
u (1) 0
u (1) 0
В данном случае
0 x 0, ai , j C j f i , ai , j L j x i x , f i f , i x , f ( x) 1 x 2 1 ( x).2 ( x) 1 x 2
n
2
j 1
Проверим применимость метода Lu, u u '' u udx u 'u
1
1
1
1
1
u '2 u 2 dx 0 ,
1
Lu, v u '' u vdx u 'v 1 u' v' uv dx v'u 1 u' v' uv dx v'' v udx Lv, u
1
1
1
1
1
1
1
1
1
1
Находим коэффициенты для уравнения Lu u u f ( x) x 1
''
1
1
2
a1,1 L1 x 1 x (1 x 1 x )dx 4 x 1 x
'2
2
1
2
1
2 2
1
4 3
2 3 x5
56
dx x x x
3
5 1
15
3
3
64
'
'
a1, 2 L 2 x 1 x ( 2 x 1 x 1 x 2 x )dx 2 x 4 x 1 x 2 1 x 2 dx
1
1
1
1
1
1
21
a2,1 L1 x 2 x ( 2 x 1 x 1 x 2 x )dx 2 x 4 x 1 x 2 1 x 2 dx
'
'
1
1
1
1
a2, 2 L 2 x 2 x ( 2 x 2 x )dx 4 x 1 x 2
'2
1
3
2
1
64
21
1 x dx 1024
315
2
2 4
89
1
f1 f x 1 x x 2 1 1 x 2 dx
1
1
2
16
32
, f 2 f x 2 x x 2 1 1 x 2 dx
15
35
1
64
16
56
С
С
1
2
15
21
15
64
1024
32
С
С
21 1 315 2
35
С1 0.23913
2
u ( x) С11 ( x) С2 2 ( x) 0.239131 x 2 0.057071 x 2
С2 0.05707
u ( y x 2 ) num 0.239131 y 0.057071 y ,
2
du
du
2x
dx
dy
0,1 x 0
2 x 0.23913 0.114141 y
0,1 x 0
max u( x) u(0) 0.23913 0.05707 0.29620 ,
x[ 1,1]
Точное решение приведенного примера есть
u( x) u( x) num C
ch( x) 2
e0 e0
u ( x) 2
x 1, u(1) u(1) 0, u(0) 2 1 1 1 0.2961,
0.00034 0.034%
ch(1)
e e
u ( x) C
u '' u 2
ch( x)
ch( x)
2 2
1 x 2 1 x 2 .
ch(1)
ch(1)
3.Метод Галёркина
В данном случае нет никаких ограничительных условий на дифференциальный
оператор. Рассмотрим систему линейно независимых функций i x . Будем решать
неоднородное дифференциальное уравнение вида:
Lu f , x (a, b)
(1)
u (a) ua
u (b) u
b
Как и в методе Ритца требуем, чтобы все функции системы , кроме первой, удовлетворяли
однородным граничным условиям
n
0 a ua , 0 b ub , i a i b 0, i 1,2,3..., u ( x) 0 x Cii x
i 1
Потребуем, чтобы невязка исходного дифференциального уравнения, т.е. разность
левой и правой частей уравнения r (u) Lu f ,была ортогональна всем функциям линейно
независимой системы:
r (u),i x Lu f ,i x 0 Lu,i x f ,i x, i 1, n
(2)
n
Разложим решение по выбранной системе координатных функций u ( x) Cii ( x) ,
i 1
которое подставим в формулу(2). Пользуясь линейностью дифференциального оператора
и линейностью скалярного произведения, меняя в полной сумме индекс i j получим:
90
n
n
L Cii ( x), i x C j L j ( x), i x f , i x , i 1, n
i0
j 0
n
a
j 0
j ,i
C j f i , a j ,i L j ( x), i x , f i f , i x , C0 1, i 1, n, j 0, n
(3)
Формула (3)(система линейных алгебраических уравнений относительно
коэффициентов C j ) данного метода совпадает с формулой (4) метода Ритца, но
положительная определённость и самосопряжённость дифференциального оператора не
требуется.
Рассмотрим пример.
Lu u '' u 1 x 2 , x (1,1), ( x) 1 x 2 , ( x) 1 x 2 2
1
1
u (1) 0
u (1) 0
Lu, u (u '' u)udx u 'u 1 u 2 u '2 dx вообще говоря, не является знакоопределённым.
1
1
1
1
1
Используем формулы(3) для нахождения коэффициентов.
1
a1,1 L1 x 1 x
'2
a1, 2 L 2 x 1 x
8x 1 x 1 x
2
2
1
a2, 2 L 2 x 2 x 2
2
2 2
1
1
x5
8
3
dx 2 x x
5 1
5
1
(1 x 2 x 1 x 2 x )dx
'
2 3
'
2
2
1
1
'
2 1 1
1
1
(1 x 1 x )dx 4 x 1 x
1
'
1 1 1
'
1
1
11
11
x7
128
dx x 3 x x 5
a2,1
5
7 1
105
3
1
1
1
1
( 2 x 2 x )dx 16 x 2 1 x 2 1 x 2 dx
'2
2
1
2
4
1
1
20 3
38 x 5 20 7 x 9
512
1
20
x
38
x
20
x
x
dx
x
x
x
1
3
5
7
9 1
315
1
2
4
6
1
f1 f x 1 x 1 x
1
8
2
2
32
dx 16
, f f x x 1 x dx
15
35
1
2
2 3
2
1
128
16
8
5 С1 105 С2 15
С 0.55556
1
u ( x) С11 ( x) С2 2 ( x)
128 С 512 С 32 С2 0.14583
105 1 315 2 35
0.555561 x 2 0.145831 x 2
2
u ( y x 2 ) num 0.555561 y 0.145831 y ,
2
du
du
2x
dx
dy
0,1 x 0
2 x0.55556 0.291661 y
0,1 x 0
91
min u( x) u(0) 0.55556 0.14583 0.70139 ,
x[ 1,1]
Точное решение приведенного примера есть
cos( x)
1
u ( x) 2
3 x 2 , u (1) u (1) 0, u (0) 2
3
cos(1)
cos(1)
u ( x) u ( x) num C
0.701631,
0.00034 0.034% т.е. получаем совпадение трёх первых
u ( x) C
значащих цифры численного и аналитического решения методом Галёркина
cos( x)
cos( x)
u '' u 2
2 2
3 x 2 1 x 2 .
cos(1)
cos(1)
Как видно из двух приведенных примеров относительная погрешность равномерной
нормы обоих методов (Галёркина и Ритца) равная.
4. Интегро – интерполяционный метод
Заключается в сведении дифференциальной краевой задачи к алгебраической
задаче методом интегрирования и интерполяции функций на отрезке разбитом на
интервалах. Рассмотрим на пример интерполяции на равномерной сетке
Dh xi ih, i 0, N , Nh 1
u '' q( x)u ' p( x)u f ( x),0 p( x) p1 , q( x) q 1, x (0,1)
u ' (0) 1u (0) 1 , u (1) 0
Обозначим ( x) u' ( x) , на интервале xi h / 2, xi h / 2заменим интеграл квадратурной
(1)
ab
3
интегральной формулой центральных прямоугольников f ( x)dx b a f
O b a
2
a
b
i1/ 2 i1/ 2
xi 1 / 2
xi 1 / 2
u ( x)dx q( x)u' p( x)u f ( x)dx h(q
''
i
xi 1 / 2
i
pi ui f i ) O h3
xi 1 / 2
u u
u u
i1/ 2 i1 i O h3 , i1/ 2 i i1 O h3 . Так как
h
h
2 ''
3 '''
h u i h u i h 4u ''''i
h 2u ''i h3u '''i h 4u ''''i
h3u '''i
2hu 'i
ui1 ui1 ui hu 'i
ui hu 'i
Oh5
2
6
24
2
6
24
3
u u
h 2u '''i
i i1 i1 u 'i
Oh 4 u 'i i Oh 2
2h
6
i1/ 2 i1/ 2 ui1 ui1 2ui
u u
(qii pi ui f i ) O h 2 qi i1 i1 pi ui f i O h 2 (2)
2
h
h
2h
2
Интерполируем граничное условие с той же точностью O h на интервале[0,h]
u ' (0) u0' 1u (0) 1 : u '1/ 2 u '0
h/2
u dx 2 q
''
h
1/ 4 p1/ 4u1/ 4 f1/ 4 Oh3
1/ 4
q1 / 4 q0 O(h), 1 / 4 1 / 2 O(h), p1 / 4 p0 O(h), u1 / 4 u0 O(h), f1 / 4 f0 O(h)
92
h
q0u'1/ 2 p0u0 f 0 O h 2 u'1/ 2 u1 u0 h p0u0 f 0 1u0 1
2
h
2 1 q0
u1 u0
h p0
h f0
(3)
1u0 1 O h 2 , 1 1
, 1 1
h
2 1 q0
2 1 q0
Отметим, что линейная неоднородная система(2) с трёхдиагональной матрицей допускает
решение методом прогонки
ui1 ui1 2ui
u u
q h
q h
qi i1 i1 pi ui f i ui1 1 i 2 pi h 2 ui ui1 1 i f i h 2 , i 1, N 1
2
h
2h
2
2
u N 0, u1 u0 1 h1 h1
В последней формуле выполнено условие абсолютного диагонального преобладания
при достаточно малом коэффициенте q(x) формулы прогонки корректны
u' (0) u0' 1u(0) 1 : u'1/ 2 u'0
qi h
qh
1 i 2
2
2
И всегда выполнено условие условного диагонального преобладания
qh
qh
Ci Ai Bi 2 pi h 2 1 i 1 i 2
2
2
q( x) q, qh 2 Ci Ai Bi 2 pi h 2 1
Глава 5. Интегральные уравнения.
Лекция 13. Область сходимости интегральных уравнений
Интегральные уравнения первого и второго рода
Рассмотрим уравнение вида
b
y( x) K ( x, s) y( s)ds f ( x), x, s [a, b]
(1.1)
a
где функции f ( x), K ( x, s) заданы, а неизвестная функция y(x) находится под знаком
интеграла. K ( x, s) - ядро интегрального оператора. Уравнение(1a) носит название
Фредгольма второго рода. Уравнение вида
b
K ( x, s) y( s)ds f ( x), x, s [a, b]
(1.2)
a
называются интегральным первого рода. Уравнения Вольтерра – это интегральные
уравнения с переменным верхним пределом. Уравнение Вольтерра второго рода:
x
y( x) K ( x, s) y( s)ds f ( x), x, s [a, b]
(1.3)
a
Уравнение Вольтерра первого рода имеет вид
x
K ( x, s) y( s)ds f ( x), x, s [a, b]
(1.4)
a
Используем теорему А.Н. Колмогорова для получения условий сходимости интегрального
уравнения Фредгольма 2 рода.
93
b
y ( x ) K ( x, s ) y ( s )ds f ( x )
(2)
a
В численных методах используют два основных вида нормированных функциональных
пространств:
1) Пространство функций C[a, b] непрерывных на отрезке [a, b] с нормой
f g
C
max f ( x ) g ( x )
x[ a , b ]
2) Пространство функций L2 интегрируемых с квадратом на отрезке [a, b] и нормой
f ( x ) g ( x ) dx
L2
a
Справедлива следующая
2
b
1
2
f g
Лемма 1. (А.Н. Колмогоров). Пусть
y1( x), y2 ( x), f ( x) C[a, b], K ( x, s) C [a, b] [a, b].
. И выполнено условие
1
K ( x, s )
( x , s )([ a , b ][ a , b ])
Тогда оператор Gb y(x ) (формула (1)) сжимающий и последовательность сжимающих
отображений
(b a )
max
b
yk 1 ( x ) K ( x, s ) yk ( s )ds f ( x )
(3)
a
сходится к некоторой функции y ( x ) C[a, b] решению уравнения (2). Это решение
единственно.
Доказательство. Рассмотрим начальную непрерывную функцию y0 ( x ) C[a, b] , тогда
последовательность функций, используя условие леммы,
b
yk 1 ( x ) K ( x, s ) yk ( s )ds f ( x ) , k 0,1,
a
также непрерывны yk 1 ( x) C[a, b], k 0,1,. Для двух разных последовательностей
y 1k 1 ( x ) , y k21 ( x )
b
y
2
k 1
y
max y ( x) y ( x) | | max | K ( x, s) | | yk2 ( x) y1k ( x) | ds
1
k 1 C
| | (b a )
2
k 1
x[ a ,b ]
max
( x , s )([ a , b ][ a , b ])
1
k 1
x[ a ,b ]
a
K ( x, s) max yk2 ( x ) y1k ( x ) | | (b a) K
x[ a , b ]
C
yk2 y1k
C
b
Отображение Gb y ( x ) K ( x, s ) y ( s )ds будет сжимающим, если
a
y
Т.е.
2
k 1
y
1
k 1 C
при
y y1k , | | (b a) K
2
k
C
1
(b a ) K
пространства C[a, b] -
C
1
.Обозначим lim yk 1 ( x ) y ( x ) C[a, b]
k
(в силу полноты
C
последовательность непрерывных функций
сходится к элементу y ( x ) C[a, b]
yk 1 ( x ) C[a, b]
данного пространства. По теореме 1 Колмогорова
94
y (x ) неподвижная точка отображения(3) существует,
уравнению:
единственна и удовлетворяет
b
y ( x ) K ( x, s ) y ( s )ds f ( x )
a
откуда и следует утверждение леммы.
1
2
2
b
Лемма 2. Пусть y ( x ) L2 [a, b], K L K ( x, s ) dxds . K ( x, s) L2 ([a, b] [a, b])
2
a
Начальная функция y0 ( x ) и неоднородная часть интегрального уравнения (2)
1
2
f ( x), y0 ( x) L2 [a, b] . Тогда последовательность функций
b
yk 1 ( x ) K ( x, s ) yk ( s )ds f ( x ) , k 0,1,
a
Сходятся по норме
L2
к функции y ( x ) L2 [a, b] решению уравнения (2).
Доказательство. Рассмотрим метод простой итерации
b
yk 1 ( x ) K ( x, s ) yk ( s )ds f ( x ) , k 0,1,
a
Используем общие свойства нормы:
1) g q L g L q L g , q L2 [a, b]
2
2
2
(неравенство треугольника для функционала нормы)
b
1
1
2) ( g , q) g ( s )q( s )ds ( g , g ) 2 (q, q) 2
a
неравенство Коши - Буняковского с нормой функции q(x )
1
2
( q, q) q( s )2 ds
a
то функция yk 1 ( x ) имеет норму в L2 [a, b] т.е. yk 1 ( x ) L2 [a, b] :
q
b
1
2
L2
yk 1
L2
K
L2
yk
L2
f
(По условию леммы 2 числа K
L2
L2
(k 0,1,)
, y0
L2
, f
L2
существуют)
Рассмотрим две функциональных последовательности y1k 1 ( x), y1k 1 ( x ) L2 [a, b] :
b
y
1
k 1
( x ) K ( x, s ) y1k ( s )ds f ( x ), k 0,1,
a
b
yk21 ( x ) K ( x, s ) yk2 ( s )ds f ( x ), k 0,1,
a
yk21 ( x ) y1k 1 ( x ) K ( x, s )yk2 ( s ) y1k ( s )ds
b
a
y
2
k 1
y
2
1
k 1 L
2
y
a
1
k
2
b
( x ) dx K ( x, s )yk2 ( s ) y1k ( s )ds
a
2
( x) y
2
k
a
b
2
k 1
K ( x, s) y ( s) y ( s)ds
b
1
k 1
2
95
(Используя неравенство Коши – Буняковского, продолжим преобразование)
1
b
dx K ( x, s )2 ds
a
a
b
2
K
2
yk2 y1k
2
L2
2
L2
yk21 y1k 1
Короче,
1
b
b
b 2
2
2
2
1
2
yk ( x ) yk ( x ) ds K ( x, s ) dsdx yk2 ( s ) y1k ( s ) ds
a
a
a
L2
K
yk2 y1k
L2
L2
b
Отображение Gb y ( x ) K ( x, s ) y ( s )ds будет сжимающим в L2 [a, b]
a
yk21 y1k 1
L2
K
L2
Что возможно при
yk2 y1k
1
K L
2
L2
yk2 y1k
L2
2
b b
K ( x, s ) dsdx
a a
yk2 y1k
L2
(при K
L2
1)
1
2
Что и требовалось доказать.
Замечание (соотношение для – области сходимости интегральных уравнений в
пространствах C[a, b], L2 [a, b] ). Поскольку
2
b b
K
2
L2
K ( x, s) dsdx (b a) 2
a a
K
L2
(b a ) K
C
L2
2
K ( x, s) (b a) 2 K
1
1
K L
(b a ) K
2
Другими словами, L
max
( x ,s )[ a ,b ][ a ,b ]
2
C
C
C
область сходимости в пространстве L2 [a, b] не уже
C
области сходимости в пространстве функций C[a, b] для интегрального уравнения
Фредгольма второго рода.
Лекция 14. Прямые методы решения интегральных уравнений.
1)Метод замены интеграла квадратурной формулой:
b
b
n
a
j 1
y( x) K ( x, s) y( s)ds f ( x), K ( x, s) y( s)ds C j K ( xi , s j ) y( s j ), a x, s b
a
ba
, i, j 0, n
(4)
n
j 0
В формуле (4)заданы узлы и весовые коэффициенты, xi , s j , C j т.е. (4) – система линейных
уравнений относительно неизвестных y( xi ), y(s j ) . Формула(4) удобна для аналитического
решения интегральных уравнений, так как число неизвестных узловых значений функции
совпадает с числом узлов квадратурной формулы. В матричном виде(4):
n
y( xi ) C j K ( xi , s j ) y( s j ) f ( xi ), xi a hi, s j a hj, h
yi C j Kij y j f i yi aij y j f i , aij Kij C j , K ij K xi , s j
n
n
j 0
j 0
(5)
96
Рассмотрим пример. Найти приближённое решение интегрального уравнения методом
замены интеграла квадратурной формулой Симпсона и оценить его погрешность.
1
1
5
1
1
5
1
y( x) x xsy( s)ds y( x) xsy( s)ds x f ( x), , K ( x, s) xs
6
20
20
6
2
4(b a)
b a
ab
ba 1
, a 0, b 1
y(a) 4 y
y(b) , C1 C3
, C2
6
6
2
6 6
a
00
0 1 / 2
0 1
a1,1 K1,1C1 1
0, a1, 2 K1, 2C2 4
0 , a1,3 K1,3C3 1
0
6
6
6
1/ 2 0
1 / 2 1 / 2 1
1 / 2 1 1
a2,1 K 2,1C1 1
0, a2, 2 K 2, 2C2 4
, a2,3 K 2,3C3 1
6
6
6
6
12
1 0
1 1 / 2 2
11 1
a3,1 K 3,1C1 1
0, a2, 2 K 2, 2C2 4
, a2,3 K 2,3C3 1
6
6
6
6 6
1
5
y1 2 0 y1 0 y2 0 y3 6 0 0 y1 0
y 0
1
1
1
5
1
5
y 0 y y y
22 y2 y3 10 1
1
2
3
2 2
6
12 6 2 12
24 y2 12 y3 y3 2 y2
1
2
1 5
5
1
y3 0 y1 y2 y3 1 2 y2 11y3 10
20 y2 10, y2 , y3 1
2
6
6 6
6
2
Можно предположить, что точное решение есть y( x) x , действительно:
b
y(s)ds
1
1
5
1
5
1 s3
x x x ssds x x x
x.
6
2 0
6
2 30
2)Метод замены ядра.
Применяется для уравнений с вырожденным ядром.
Определение. Вырожденным ядром интегрального оператора называется ядро вида
n
K ( x, s) Ai ( x) Bi ( s). Необходимо, чтобы система функций Ai ( x), i 1, n была линейно
i 1
n
независимой. Представим решение в виде y( x) f ( x) Di Ai ( x) , тогда
i 1
f ( x) Di Ai ( x) Ai ( x) Bi ( s) f ( s) D j Aj ( s) ds f ( x)
i 1
j 1
a i 1
b n
n
n
Di Ai ( x) Ai ( x) Bi ( s) f ( s) D j Aj ( s) ds 0
i 1
j 1
a i 1
b
b
n
n
Ai ( x) Di D j Aj ( s) Bi ( s)ds f ( s) Bi ( s)ds 0
i 1
j 1
a
a
n
b
n
n
n
b
b
n
b
b
j 1
a
a
j 1
a
a
Di D j A j ( s) Bi (s)ds f (s) Bi (s)ds Di aij D j f i , aij A j (s) Bi (s)ds, f i f (s) Bi (s)ds (6)
Если определитель матрицы I A не равен нулю, то решение D в системе уравнений(6)
единственно. Если det I A 0 , то называется характеристическим числом
интегрального ядра. А также найти собственные векторы, соответствующие из
97
уравнения:
I Ay 0, y 0 det I A 0
(7)
Рассмотрим пример.
y( x) sin( x s) y( s)ds y( x) sin( x) coss cos( x) sin s y( s)ds cos x, 1, f ( x) cos x .
A1 ( x) sin( x), A2 ( x) cos( x), B1 (s) cos(s), B2 (s) sin(s)
cos(2s)
0,
По формуле(6) находим коэффициенты: a11 A1 (s) B1 (s)ds sin( s) cos(s)ds
4 0
1
2s sin 2s
a12 A2 (s) B1 (s)ds cos (s)ds 1 cos2s d 2s
,
4
4 0 2
4
2
1
2s sin 2s
a21 A1 (s) B2 (s)ds sin (s)ds 1 cos2s d 2s
,
4
4 0 2
4
2
1
a22 A2 (s) B2 (s)ds cos(s) sin( s)ds 0, f1 f (s) B1 (s)ds cos (s)ds 1 cos(2s)d 2s
40
2
2
f 2 f ( s) B2 ( s)ds cos(s) sin( s)ds 0 .
Решаем систему уравнений
2
2
D2 2 D2 2 D2 4 2
D1 2 D2 2
D1 a11D1 a12 D2 f1
D2 a21D1 a22 D2 f 2
D D 0
D 2 D 2
2 2 1
1 2 4 2
2
2
2
4
y( x) f ( x) D1 A1 ( x) D2 A2 ( x) cos( x)
sin( x)
cos( x)
sin( x)
cos( x)
2
2
2
4
4
4
4 2
Проверим, что полученное решение является точным:
cos( x)
2
2
sin(
x
)
cos( x) sin( x) coss cos( x) sin s y( s)ds cos x
4 2
4 2
2
2
2
4
sin( x)
cos( x) sin( x) coss cos( x) sin s
sin( s)
cos(s) ds
2
2
2
2
4
4
4
4
2
2
4
2
sin( x)
cos( x) sin( x)
cos( x)
0 . Верно.
2
2
2
4
4
4 2
4 2 2
Найдём также характеристические числа и соответствующие им линейно независимые
решения из уравнения(7) в данном примере.
2
1
2
2
0 1 1, 2 1
det I A 0 det
2
2
1
2
98
2
a) 1 1 ,
2
2
2
b) 2 1 ,
2
2
2 D1 0 , D1 1, y ( x) D sin( x) D cos( x) sin( x) cos( x)
1
2
1s
D2 0 D2 1
2
2 D1 0 , D1 1 , y ( x) D sin( x) D cos( x) sin( x) cos( x)
1
2
D2 0 D2 1 1s
2
Лекция 15. Проекционные методы решения интегральных уравнений.
1.Метод наименьших квадратов
Разложим приближенное решение интегрального уравнения (2) по системе линейно
независимых функций i ( x), i 1, n
n
~
y ( x) Cii ( x)
(1)
i 1
Обозначим невязку уравнения (2)
~
b
~
r ( x) y ( x) K ( x, s) y( s)ds f ( x)
(2)
a
Потребуем, чтобы норма невязки r (x) в пространстве L2 [a, b] r
L2
функций была
~
минимальной. Подставим y ( x) из (1) в (2), r (x) будет зависеть от n варьируемых
коэффициентов.
n
b
n
i 1
a
i 1
r ( x) Cii ( x) K ( x, s) Cii ( s)ds f ( x)
Необходимое условие минимума функции
r
2
L2
C1 ,..., Cn
Ci
r
L2
C1 ,..., Cn
Ci
( r
2
L2
2r
r
L2
C1 ,..., Cn
Ci
L2
0 , если r
L2
переменных:
0
0
удобнее дифференцировать, чем r
L2
)
b
b
b
n
n
2 Cii ( x) K ( x, s) Cii ( s)ds f ( x) i ( x) K ( x, s)i ( s)ds dx 0
i 1
a i 1
a
a
В первом множителе можно заменить индекс суммирования i j . Относительно
неизвестных коэффициентов C j получаем неоднородную систему n линейных уравнений
b
b
b
b
b
C j j ( x) K ( x, s) j ( s)ds i ( x) K ( x, s)i ( s)ds dx f ( x)i ( x) K ( x, s)i ( s)ds dx
a
j 1
a
a
a
a
n
99
Таким образом, имеем матричное уравнение AC f вида
n
a
i, j
j 1
C j f i , i 1, n
(3)
где ai , j симметрическая матрица, как следует из формул для коэффициентов.
b
b
ai , j j ( x) K ( x, s) j ( s)ds i ( x) K ( x, s)i ( s)ds dx
a
a
a
b
b
f i f ( x)i ( x) K ( x, s)i ( s)ds , i 1, n
a
a
b
(4)
Пример[1,№]. Найти приближенное решение интегрального уравнения
1
y ( x) x xs x 2 y ( s)ds
1
методом наименьших квадратов, используя в качестве первой системы функций
1 ( x) 1, 2 ( x) x
Решение: Приближенное решение уравнения разложим по системе базисных функций
n
~
y ( x) Cii ( x) C1 C2 x
i 1
Невязка уравнения r ( x) C1 C2 x x xs x 2 C1 C2 s ds
1
1
Так как неизвестных коэффициентов всего два, проще повторить весь алгоритм сначала,
не вычисляя коэффициенты ai , j f i по формулам (4).
r
L2
r
2
L2
C1 , C2
C1
r
2
L2
C1 , C2
C2
Так как
1
1
1
1
0 0 C1 C2 x x xs x 2 C1 C2 s ds 1 xs x 2 ds dx
1
1
1
1
1
1
0 0 C1 C2 x x xs x 2 C1 C2 s ds x xs x 2 sds dx
1
1
1
2
1
1
xs 3 x 2
2
x
xs x sds
2 1 3
3
1
xs 2
xs x ds
x 2 s 2 x 2
2
1
1
1
2
1
C1 C2 x x xs x 2 C1 C2 s ds dx
1
1
1
2
2
Получим систему линейных уравнений относительно неизвестных коэффициентов
1
2
2
2
C1 C2 x x C1 2 x C2 x 1 2 x dx 0
3
1
1
C C x x C 2 x 2 C 2 x x 2 x dx 0
1
2
2
1
3
3
1
100
1
x2 2 4 1 2 4 4 x2 2x4
2 3 2 3 4 5
C1 x x x x C2 x x x
0
3
3
5
3
12 2
4 1
2 4
1
3
3
1
x
2 4
2 3 x
x 0
C1 x x C2
12
6
9 27 9 1
1
2 3 2 3 4 5
C1 x x x x 0 C1 0
3
3
5 1
1
x 3 x 3
C2 1
C2 27 9 0 27 9 0, C2 3
1
~
n
y ( x) Cii ( x) C1 C2 x 3x.
i 1
проверим, что данное решение является точным:
1
3x x
1
s3
xs x 3sds x 3x
3
2
1
s2
3x
2
1
1
x 2 x 3x.
2
1
2.Метод Петрова – Галеркина
Рассмотрим уравнение Фредгольма второго рода
b
y( x) K ( x, s) y( s)ds f ( x), x, s [a, b]
(1)
a
Пусть имеются две системы линейно – независимых функций
i ( x), i ( x), i 1, n, x [a, b], i ( x), i ( x) L2 [a, b].
Разложим приближенное решение интегрального уравнения Фредгольма второго рода
~
y ( x) по первой системе функций
~
n
y ( x) Cii ( x) f ( x)
(2)
i 1
Данное разложение подставим в уравнение(1)
b
n
n
C
(
x
)
f
(
x
)
K
(
x
,
s
)
Cii ( s) f ( s) ds f ( x)
i i
i 1
i1
a
Запишем невязку уравнения для последнего уравнения
b
n
n
r ( y) Cii ( x) K ( x, s) Cii ( s) f ( s) ds
i 1
i1
a
Потребуем ортогональности невязки r ( y) всем функциям второй координатной системы (в
этом заключается идея методов Галеркина i ( x), i 1, n . Все функции каждой системы
построены так, что их норма убывает при увеличении индекса функции. Ортогональность
невязки r ( y) каждой из функции i ( x), i 1, n обеспечивает также малость ее нормы,
поскольку невязка разложима по
пространства
системе функций i ( x), i n,
ортогонального
к функциям i ( x), i 1, n , а норма каждой j n , j n 1 . При
достаточно быстром законе уменьшения нормы n в пределе при n
101
rn1 ( x)
rn1
2
L2
j n1
j
( x) j , r y( x) и верна теорема Стеклова
b
j , r x 0, j , r x j ( x)r ( x)dx
2
j n1
n
a
b
j , r 0 j ( x)r ( x)dx 0, j 1, n
a
b
b
n
n
j ( x) Cii ( x) K ( x, s) Cii (s) f (s) ds dx 0, j 1, n
i1
a
i1
Поменяем порядок интегрирования и суммирования местами, получим систему из n
линейных уравнений
b b
b b
n
b
C
(
x
)
(
x
)
dx
K
(
x
,
s
)
(
s
)
(
x
)
dsdx
K ( x, s) f ( s) j ( x)dsdx, j 1, n
i
j
i
i
j
i 1
a a
a a
a
(3)
Запишем (3) в матричном виде
a
b
b b
a
a a
AC f a j ,i j ( x)i ( x)dx K ( x, s)i ( s) j ( x)dsdx, j 1, n
b b
f j K ( x, s) f ( s) j ( x)dsdx, j 1, n
(4)
a a
Мнемоническое правило для запоминания (в формулах (4) первый индекс в матрице a j ,i
соответствует индексу второй системы координатных функций, соответственно, второй
индекс - первой системе).
Пример[1.№30.2]. Найти приближенное решение интегрального уравнения методом
Петрова – Галеркина
1
y ( x) 1 xs x 2 y ( s)ds
1
Используя в качестве первой системы функций 1 (s) s, 2 (s) s 2
в качестве второй системы 1 ( x) 1, 1 ( x) x
Решение: Перепишем исходное уравнение в стандартном виде (1), откуда
1
y ( x) xs x 2 y ( s)ds 1, K ( x, s) xs x 2 , 1, f ( x) 1
1
По формулам(4) вычисляем коэффициенты матрицы
1
1
1 1
1
3 1
2 1
2 1
x2
s
s
2
x
2
2
dx
a1,1 1 xdx 1 xs x s 1dsdx
x
x
0
2
3
2
3 2 1
1
1 1
1
1
1
1
1
1
1
1
1 1
1
3 1
x3
s4
2 2 x3
2
2
2 2
2s
a1, 2 1 x dx 1 xs x s 1dsdx
x
x
dx
3 1 1 4 1
3 1
3 3 3 1 9
1
1 1
1
1
1
1 1
1
3 1
2 1
x3
2 2 x3
2
2
2s
3s
a2,1 x xdx 1 xs x s xdsdx
x
x
dx
3 1 1
3 1
2 1
3 3 3 1 9
1
1 1
102
1
1 1
a2, 2 x x dx 1
2
1
1 1
x4
xs x s xdsdx
4
2
2
s4
x2
4
1
1
1
1
1
s3
x
3
1
3
4
dx 2 x
3 4
1
1
1
0
1
1
s2 1
x3
4
2 1
f1 xs x 1 1dsdx x
x s 1 dx 2
2
3 1 3
1 1
1
1
1
1 1
1
2 1
2x4
2
2s
3 1
f 2 xs x x 1dsdx x
x s 1 dx
0
2
4 1
1 1
1
1
1 1
2
1
Составляем систему из 2 линейных уравнений
2
4
0C1 9 C2 3 C2 6
a1,1C1 a1, 2C2 f1
a
C
a
C
f
2
,
1
1
2
,
2
2
2
2 C 0C 0 C 0
2
1
9 1
y( x) f ( x) C11 ( x) C22 ( x) 1 6 x 2
Проверим, что данное решение является точным
1
xs 2
s4
s3
y ( x) 1 xs x 1 6s ds 1
x2s 6x 6x2
4
3 1
2
1 1
2
2
2
1 2x 4x 1 6x
1 1
2
2
3.Метод Бубнова – Галеркина
Данный метод является частным случаем метода Петрова – Галеркина, если обе
системы функций совпадают
i ( x) i ( x), i 1, n, x [a, b], i ( x), i ( x) L2 [a, b].
Формулы коэффициентов линейной системы уравнений (4)переходят в
b
b b
a
a a
AC f a j ,i j ( x)i ( x)dx K ( x, s)i ( s) j ( x)dsdx, j 1, n
b b
f j K ( x, s) f ( s) j ( x)dsdx, j 1, n
(5)
a a
Пример[1.№30.6]. Найти методом Бубнова – Галеркина приближенное решение
интегрального уравнения
1
y ( x) 1 xs x 2 y ( s)ds
1
Используя в качестве системы функций 1 (s) s, 2 (s) s 2
Решение:
В данном примере
K ( x, s) xs x 2 , 1, f ( x) 1
Вычисляем элементы матрицы системы линейных уравнений
1
1
1
1 1
1
3 1
2 1
x3
2 2 x3
2
2
2
2s
3s
a1,1 x dx 1 xs x s xdsdx
x
x
dx
3 1 1
3 1
2 1
3 3 3 1 9
1
1 1
103
1
1 1
a1, 2 x dx 1
3
1
1 1
1
1 1
a2,1 x dx 1
3
1
s4
x2
4
1
1
1
x4
xs x s xdsdx
4
2
1 1
2
x4
xs x s x dsdx
4
2
1
4
dx 2 x
3 4
1
1
1
s3 1
s2
x3
x4
3
2
1
1
1
1
1
2
1
4
dx 2 x
3 4
1
s3
x
3
1
1
3
1
0
1
0
1
1
3 1
s4 1
2 2 x5
2
3
4s
a2, 2 x dx 1
x
x
dx
4
3 1
5 3 5 1 15
1
1 1
1
1
1
1 1
1
4 1
2s1
x
1
2
3
f1 xs x x 1dsdx x
x s 1 dx 2
0
2 1
4
1 1
1
1
1
1 1
4
1 1
f2
1 1
x5
xs x s x dsdx
5
2
2
1
1
2
3s1
x5
1
xs x x 1dsdx x
x 4 s 1 dx 2
2 1
5
1
2
1
1
2
1
4
5
Получаем систему двух линейных уравнений
2
9 C1 0C2 0 C1 0
a1,1C1 a1, 2C2 f1
a2,1C1 a2, 2C2 f 2
0C 2 C 4 C 6
2
1 15 2 5
y ( x) 1 6 x 2
4.Метод коллокации
Будем искать приближенное решение z (x) интегрального уравнения
b
y( x) K ( x, s) y( s)ds f ( x), x, s [a, b]
(1)
a
в виде
n
z ( x) Cii ( x), i ( x)i 1 ,
n
i 1
Система известных линейно – независимых функций. Неизвестные коэффициенты
найдем из условия равенства нулю невязки уравнения (1) в заданных точках отрезка[a,b]
точках коллокации.
n
b
n
i 1
a
i 1
Cii ( xk ) K ( xk , s) Cii (s)ds f ( xk ), k 1, n
b
b
n
n
C
(
x
)
C
K
(
x
,
s
)
(
s
)
ds
f
(
x
),
k
1
,
n
C
(
x
)
K ( xk , s)i ( s)ds f ( xk )
i i
k
i
k
i
k
i i
k
i 1
i 1
i 1
a
a
b
AC f ak ,i i ( xk ) K ( xk , s)i ( s)ds , k 1, n, f k f xk
(2)
a
n
Пример[1,№30.8].Найти приближение решение интегрального уравнения
104
1
1
4
4
x xs 2 x y ( s)ds y ( x) xs 2 x y ( s)ds 1 x
3
3
1
1
4
f ( x) 1 x, 1, K ( x, s) xs 2 x
3
С точками коллокации -1,0,1, используя в качестве координатной системы функций три
первых полинома Лежандра.
Решение: Полиномы Лежандра ортогональны друг другу на отрезке [-1,1] с весовой
функцией p( x) 1 . Находим полиномы ортогонализацией.
P0 ( x) 1; P1 ( x) x a;
y ( x) 1
1
x2
1 P1 ( x) P0 ( x) 0 1x a dx 0 2 ax 2a 0 a 0, P1 ( x) x
1
2
P2 ( x) x bx c :
1
1
1
1
1
x 3 bx 2
2
1
2
P0 ( x) P2 ( x)dx 0 x bx c dx
cx 2c 0 c
2
3
1
3
1 3
1
1
1
1
x 4 bx 3
x2
2
2
P0 ( x) P2 ( x)dx 0 x bx c xdx 4 3 c 2 3 b 0 b 0
1
1
1
Откуда
1
3
В качестве системы координатных функций имеем три многочлена Лежандра
1
1 ( x) 1; 2 ( x) x,3 ( x) x 2
3
Запишем решение в виде
n
1
z ( x) Cii ( x) C11 ( x) C22 ( x) C33 ( x) C1 C2 x C3 x 2
3
i 1
В точках коллокации приравниваем нулю невязку исходного уравнения
r ( xk ) 0, k 1,2,3, x1 1, x2 0, x3 1
P2 ( x) x 2 bx c x 2
Находим коэффициенты системы по формуле(2) K ( x, s) xs 2 x
1
1
a1,1 1 ( x1 ) K ( x1 , s)1 ( s)ds 1
1
1
1
1
a1, 2 2 ( x1 ) K ( x1 , s) 2 ( s)ds 1
1
1
1
s4 s2
s 1 sds 1 1
2 1
4
2
1
1
2
2 s5 s3 s3 s
34
2 1
2
3 ( x1 ) K ( x1 , s)3 ( s)ds s 1 s ds
3 1
3
3 5 3 9 3 1 45
1
1
a1,3
1
s3
1
s 1 ds 1 s
3
3
1
2
1
1
1
1
1
a2,1 1 ( x2 ) K ( x2 , s)1 ( s)ds 1 0 1ds 1
1
a2, 2 2 ( x2 ) K ( x2 , s) 2 ( s)ds 0 0sds 0
1
1
a2 , 3
1
1
1
1
3 ( x2 ) K ( x2 , s)3 ( s)ds 0 s 2 ds
3 1
3
3
1
1
105
1
1
a3,1 1 ( x3 ) K ( x3 , s)1 ( s)ds 1
1
1
1
1
a3, 2 2 ( x3 ) K ( x3 , s) 2 ( s)ds 1
1
1
s3
7
s 1 ds 1 s
3
1 3
1
2
1
s4 s2
s 1 sds 1 1
2 1
4
2
1
1
2
1
2 s5 s3 s3 s
62
a3,3 3 ( x3 ) K ( x3 , s)3 ( s)ds s 2 1 s 2 ds
3 1
3
3 5 3 9 3 1 45
1
4
1
4
4
7
f1 f x1 1 x1 , f 2 f x2 1 x2 1, f 3 f x3 1 x3
3
3
3
3
3
Оставляем систему линейных уравнений
34
1
1
3 C1 C2 45 C3 3
a11C1 a12C2 a13C3 f1
1
C1 1, C2 0, C3 0
a21C1 a22C2 a23C3 f 2 C1 0C2 C3 1
3
a C a C a C f
32 2
33 3
3
31 1
62
7
7
3 C1 C2 45 C3 3
1
Откуда, решение системы уравнений единственно C1 1, C2 0, C3 0 .
z( x) C11 ( x) C22 ( x) C33 ( x) 1
Покажем, что полученное решение является точным
1
1
s3
4
4
4
2
z ( x) 1 1 x xs 2 x z ( s)ds 1 x x xs 1 x x 2 x 1
3
3
3
3
3
1
1
Практическая работа №13. Численное решение интегральных уравнений
Используем для численного
второго рода
решения
интегрального
уравнения Фредгольма
b
y ( x) K ( x, s) y ( s)ds f ( x)
(1)
a
Применим метод простой итерации для функциональной последовательности
b
yk 1 ( x) K ( x, s) yk ( s)ds f ( x), k 0,1,...
(2)
a
В качестве y0 ( s ) можно взять, например, f (s ) . Как выяснилось в параграфе
“Интегральные уравнения”, область сходимости по параметру шире в пространстве
L2 [a, b] , чем в пространстве C[a, b] . Заменим в (2) интеграл составной квадратурной
формулой Симпсона (необходимо взять четное число интервалов разбиения n 2m
отрезка [a, b] - получим N n 1 2m 1 узлов разбиения:
ba ba
xi , i 0,2m, x0 a, xN b, h
2k
n
106
k
y
(
a
)
K
(
x
,
a
)
y
(
b
)
K
(
x
,
b
)
4
yk ( s2i 1 ) K ( x j , s2i 1 )
k
j
k
j
b
h
i 1
I ( yk ) K ( x, s ) yk ( s )ds S N 1 k 1
3
a
2 yk ( s2i ) K ( x j , s2i )
i 1
sl a h * l, l 0,2k; x j a h * j, j 0,2k
Окончательно, получим итерационную последовательность
k
yk ( a ) K ( x j , a ) yk (b) K ( x j , b) 4 yk ( s2i 1 ) K ( x j , s2i 1 )
h
i 1
f ( x)
(3)
yk 1 ( x j ) k 1
3
2 yk ( s2i ) K ( x j , s2i )
i 1
sl a h * l, l 0,2k; x j a h * j, j 0,2k
Именно формула (3) реализована в следующей программе. В качестве начальной
функции можно взять y0 x j . Программа написана на языке С++ с двойной точностью.
Целочисленные параметры: n1 число интервалов разбиения( 2m ) отрезка [a, b] , n 2 - число
итераций( k ) ,n- частота распечатки данных на экране(всего распечатанных строк
n1
n3 1 , удобно выбрать n1 10n ).
n
В программе сравниваются две нормы невязки yk 1 ( x ) y( x ) ( в пространствах
C[a, b] и L2 [a, b] ), если точное решение y(x ) интегрального уравнение (1) известно.
yk 1 y C max yk 1 ( x ) y( x )
x[ a , b ]
1
2
b
yk 1 y L ( yk 1 ( x ) y ( x ))2 dx
2
a
Кроме того, для вычисления нормы
используется формула Симпсона.
1
1
y ( x ) e x x e s y ( s )ds
20
yk 1 y
L2
, т.е. при
вычислении интеграла
В качестве теста для программы рассмотрим пример 2.
1
с точным решением y( x ) x e x , , K ( x, s ) xe x , f ( x ) e x
2
Для данного примера
1
1 1
K ( x, s ) C max x , s[0,1] xe s e, C
.
(b a ) K C e 2
1
K ( x, s )
L2
1
1
1
1
2 1
2 1 1 2s 1 2 1 2
b b
2
dx K ( x, s )2 ds x 2 dx e2 s ds
[e ]0 ( e 1)
3 2
6
a a
0
1
1
2
1
L2 K ( x, s ) L
(e2 1) 0,96907
2
2
6
Т.е. этого достаточно для сходимости итерации и единственности решения в
пространстве функций L2 [0,1] Из того что выполнены достаточные условия сходимости
итерации к точному решению в пространстве C[a, b] ещё не следует отсутствие этой
сходимости. После основного тела программы, в конце, вынесены функции, написанные с
1
2
107
двойной точностью, k ( x, s ) - ядро интегрального уравнения, f (x ) - неоднородная часть
уравнения, ff (x ) - точное решение.
#include
#include
double k(double x, double s);
double f(double x);
double ff(double x);
const int n1=1000;
const int n2=50;
const int n=100;
const int n3=int(double(n1)/double(n))+1;
int main()
{
int i,j,j1,j2,j3,j4,ii;
double yy[n1+1],y1[n1+1],y2[n1+1],delta[n1+1],delta1[n1+1];
double a,b,h,norma,xx,xj,yadro,x,s,c,lambda,cc,bac;
printf("n1=%d, n2=%d,n3=%d\n",n1,n2,n3);
a=0.0;
b=1.0;
h=(b-a)/double(n1);
xx=0.0,xj=0.0;
yadro=0.0;
c=0.0;
lambda=0.5;
norma=0.0;
printf("n3=%d\n",n3);
for(j=0;j<=n1;j++)
{
y1[j]=f(a+h*double(j));
yy[j]=ff(a+ h*double(j));
}
// итерации по переменной ii соответствует переменная k
for(ii=0;ii<=n2;ii++)
{
for(i=0;i<=n1;i++)
// внешняя переменная i соответствует переменнной x
{
xx=a+double(i)*h;
c=0.0;
for(j=0;j<=n1;j++)
// внутренняя переменная j соответствует переменной s
{
xj=a+double(j)*h;
// yadro k ( x, s)
yadro=k(xx,xj);
// формула Симпсона
//
if(j-2*int(double(j)/2.0)==1 && j>=1 && j<=n1-1)
c=c+4.0* yadro*y1[j];
else if(j-2*int(double(j)/2.0)==0 && j>=1 && j<=n1-1)
c=c+2.0* yadro*y1[j];
108
else
c=c+yadro*y1[j];
}
y2[i]=(h*lambda*c)/3.0+f(xx);
}
//
for(j1=0;j1<=n1;j1++)
{
// переприсвоение вектора
y1[j1]=y2[j1];
}
}
for(j2=0;j2<=n1;j2++)
{
x=a+double(j2)*h;
// разность между точным и численным решениями
delta[j2]=y2[j2]-yy[j2];
}
for(i=0;i<=n1;i++)
{
x=a+double(i)*h;
if(i-n*int(double(i)/double(n))==0)
printf("i=%d,x=%lf,axact=%.16lf,res=%.16lf,delta=%.16lf\n",i,x,yy[i],y2[i],delta[i]);
}
//
//норма в С[a,b]
for(j3=0;j3<=n1;j3++)
{
if((delta[j3]>=0.0&&(delta[j3]>norma||delta[j3]>norma)||(delta[j3])<0.0&&(delta[j3]
#include
int const nx=80, ny=15, l1=10,N=nx,N1=ny*l1;
void main()
{
int k,k1,j,i,g1,l2,n3;
double x0[N],x[N],y[N],l[N],nu[N],a[N],b[N],c[N],f[N],pro[N],res[N][N1],res1[N][N1];
double z,alfa,t1,delta[N1],M;
double pi,h,dt,min,max,period,g,g2;
for(i=1;i<=nx;i++)
{
//printf("1");
}
pi=2.0*asin(1.0);
h=pi/double(N);
alfa=1.0;
max=-1000.0;min=1000.0;
z=0.5;
t1=double(N1)*h*h*z/alfa;
l2=2;
printf("t1=%lf\n",t1);
// boundary condition
l[0] =0.0;
l[N]=0.0;
nu[0]=0.0;
nu[N]=0.0;
for( k=0;k<=N;++k)
{
res[k][0]=sin(3.0*k*h) ;
x[k]=exp(-9.0*t1)*res[k][0];
}
for( k=0;k<=N;++k)
{
b[k]=z;
a[k]=z;
c[k]=2.0*z+1.0;
}
for (j=1;j<=N1;++j)
{
for(k=0;k<=N;++k)
{
f[k]=-res[k][j-1];
118
}
for(k=0;k<=N;k++)
{
l[k]=0.0;
nu[k]=0.0;
}
for( k=1;k<=N-1;++k)
{
l[k]=b[k]/(c[k]-a[k]*l[k-1]);
nu[k]=(a[k]*nu[k-1]-f[k])/(c[k]-a[k]*l[k-1]);
}
y[N]=(nu[N]+l[N]*nu[N-1])/(1.0-l[N-1]*l[N]);
res[N][j]=y[N];
for( k=N-1;k>=0;--k)
{
y[k]=l[k]*y[k+1]+nu[k];
res[k][j]=y[k];
}
}
for(j=0;j<=N1;++j)
{
for(k=0;k<=N;++k)
{
if(res[k][j]<=min)
{
min=res[k][j];
}
else
{
min=min;
}
if(res[k][j]>=max)
{
max=res[k][j];
}
else
{
max=max;
}
}
}
for(j=0;j<=N1;++j)
{
if(j%l2==0)
{
for(k=0;k<=N;++k)
{
res1[k][j/l2]=res[k][j];
}
}
}
period=max-min;
119
for(i=1;i<=(N1/l2)*(N);i++)
{
k=i%N;j=(i-i%N)/N;
if(k=0.0)
{
printf("%d",(g1-1)/2);
}
else
{
printf(" ");
}
}
for(k1=0;k1<=N;k1++)
{
printf("ax(%d)=%lf res(%d %d)=%lf delta(%d)=%lf \n",k1,x[k1],k1,N1,res[k1][N1],k1,x[k1]res[k1][N1]);
}
for(k1=0;k1<=N;k1++)
{
delta[k1]=sqrt((x[k1]-res[k1][N1])*(x[k1]-res[k1][N1]));
}
for(i=0;i<=N;i++)
{
if(M<=delta[i])
{
M=delta[i];
}
}
printf("delta=%lf\n",M);
}
120
Рис.1 Распределение температуры на стержне длиной со временем.
Тест – таблица (точное решение, численное решение, абсолютная ошибка)
exact(0)=0.000000 res(0 150)=0.000000 delta(0)=0.000000
exact(1)=0.041505 res(1 150)=0.041705 delta(1)=-0.000199
exact(2)=0.082435 res(2 150)=0.082831 delta(2)=-0.000396
exact(3)=0.122222 res(3 150)=0.122809 delta(3)=-0.000587
exact(4)=0.160315 res(4 150)=0.161085 delta(4)=-0.000770
exact(5)=0.196185 res(5 150)=0.197127 delta(5)=-0.000942
exact(6)=0.229336 res(6 150)=0.230437 delta(6)=-0.001101
exact(7)=0.259307 res(7 150)=0.260552 delta(7)=-0.001245
exact(8)=0.285684 res(8 150)=0.287055 delta(8)=-0.001372
exact(9)=0.308100 res(9 150)=0.309579 delta(9)=-0.001479
exact(10)=0.326244 res(10 150)=0.327811 delta(10)=-0.001567
exact(11)=0.339866 res(11 150)=0.341498 delta(11)=-0.001632
exact(12)=0.348777 res(12 150)=0.350452 delta(12)=-0.001675
exact(13)=0.352852 res(13 150)=0.354546 delta(13)=-0.001694
exact(14)=0.352036 res(14 150)=0.353726 delta(14)=-0.001690
exact(15)=0.346339 res(15 150)=0.348002 delta(15)=-0.001663
exact(16)=0.335841 res(16 150)=0.337454 delta(16)=-0.001613
exact(17)=0.320688 res(17 150)=0.322227 delta(17)=-0.001540
exact(18)=0.301088 res(18 150)=0.302534 delta(18)=-0.001446
exact(19)=0.277315 res(19 150)=0.278646 delta(19)=-0.001332
exact(20)=0.249697 res(20 150)=0.250896 delta(20)=-0.001199
exact(21)=0.218617 res(21 150)=0.219667 delta(21)=-0.001050
exact(22)=0.184507 res(22 150)=0.185393 delta(22)=-0.000886
exact(23)=0.147839 res(23 150)=0.148549 delta(23)=-0.000710
exact(24)=0.109121 res(24 150)=0.109645 delta(24)=-0.000524
exact(25)=0.068891 res(25 150)=0.069222 delta(25)=-0.000331
exact(26)=0.027706 res(26 150)=0.027839 delta(26)=-0.000133
121
exact(27)=-0.013864 res(27 150)=-0.013930 delta(27)=0.000067
exact(28)=-0.055241 res(28 150)=-0.055506 delta(28)=0.000265
exact(29)=-0.095852 res(29 150)=-0.096313 delta(29)=0.000460
exact(30)=-0.135135 res(30 150)=-0.135784 delta(30)=0.000649
exact(31)=-0.172544 res(31 150)=-0.173373 delta(31)=0.000829
exact(32)=-0.207561 res(32 150)=-0.208558 delta(32)=0.000997
exact(33)=-0.239701 res(33 150)=-0.240852 delta(33)=0.001151
exact(34)=-0.268518 res(34 150)=-0.269807 delta(34)=0.001289
exact(35)=-0.293612 res(35 150)=-0.295022 delta(35)=0.001410
exact(36)=-0.314636 res(36 150)=-0.316147 delta(36)=0.001511
exact(37)=-0.331298 res(37 150)=-0.332889 delta(37)=0.001591
exact(38)=-0.343368 res(38 150)=-0.345016 delta(38)=0.001649
exact(39)=-0.350677 res(39 150)=-0.352361 delta(39)=0.001684
exact(40)=-0.353124 res(40 150)=-0.354820 delta(40)=0.001696
exact(41)=-0.350677 res(41 150)=-0.352361 delta(41)=0.001684
exact(42)=-0.343368 res(42 150)=-0.345016 delta(42)=0.001649
exact(43)=-0.331298 res(43 150)=-0.332889 delta(43)=0.001591
exact(44)=-0.314636 res(44 150)=-0.316147 delta(44)=0.001511
exact(45)=-0.293612 res(45 150)=-0.295022 delta(45)=0.001410
exact(46)=-0.268518 res(46 150)=-0.269807 delta(46)=0.001289
exact(47)=-0.239701 res(47 150)=-0.240852 delta(47)=0.001151
exact(48)=-0.207561 res(48 150)=-0.208558 delta(48)=0.000997
exact(49)=-0.172544 res(49 150)=-0.173373 delta(49)=0.000829
exact(50)=-0.135135 res(50 150)=-0.135784 delta(50)=0.000649
exact(51)=-0.095852 res(51 150)=-0.096313 delta(51)=0.000460
exact(52)=-0.055241 res(52 150)=-0.055506 delta(52)=0.000265
exact(53)=-0.013864 res(53 150)=-0.013930 delta(53)=0.000067
exact(54)=0.027706 res(54 150)=0.027839 delta(54)=-0.000133
exact(55)=0.068891 res(55 150)=0.069222 delta(55)=-0.000331
exact(56)=0.109121 res(56 150)=0.109645 delta(56)=-0.000524
exact(57)=0.147839 res(57 150)=0.148549 delta(57)=-0.000710
exact(58)=0.184507 res(58 150)=0.185393 delta(58)=-0.000886
exact(59)=0.218617 res(59 150)=0.219667 delta(59)=-0.001050
exact(60)=0.249697 res(60 150)=0.250896 delta(60)=-0.001199
exact(61)=0.277315 res(61 150)=0.278646 delta(61)=-0.001332
exact(62)=0.301088 res(62 150)=0.302534 delta(62)=-0.001446
exact(63)=0.320688 res(63 150)=0.322227 delta(63)=-0.001540
exact(64)=0.335841 res(64 150)=0.337454 delta(64)=-0.001613
exact(65)=0.346339 res(65 150)=0.348002 delta(65)=-0.001663
exact(66)=0.352036 res(66 150)=0.353726 delta(66)=-0.001690
exact(67)=0.352852 res(67 150)=0.354546 delta(67)=-0.001694
exact(68)=0.348777 res(68 150)=0.350452 delta(68)=-0.001675
exact(69)=0.339866 res(69 150)=0.341498 delta(69)=-0.001632
exact(70)=0.326244 res(70 150)=0.327811 delta(70)=-0.001567
exact(71)=0.308100 res(71 150)=0.309579 delta(71)=-0.001479
exact(72)=0.285684 res(72 150)=0.287055 delta(72)=-0.001372
exact(73)=0.259307 res(73 150)=0.260552 delta(73)=-0.001245
exact(74)=0.229336 res(74 150)=0.230437 delta(74)=-0.001101
exact(75)=0.196185 res(75 150)=0.197127 delta(75)=-0.000942
exact(76)=0.160315 res(76 150)=0.161085 delta(76)=-0.000770
exact(77)=0.122222 res(77 150)=0.122809 delta(77)=-0.000587
exact(78)=0.082435 res(78 150)=0.082831 delta(78)=-0.000396
122
exact(79)=0.041505 res(79 150)=0.041705 delta(79)=-0.000199
exact(80)=0.000000 res(80 150)=0.000000 delta(80)=0.000000
delta=0.001696
Press any key to continue
Обратим внимание,что согласно формуле(9)точное решение u( x, t ) exp 9t sin(3x)
экспоненциально падает со временем, поэтому, при больших временах малое решение
будет иметь и малую погрешность. Следовательно, нужно зафиксировать конечный
t1
zh 2
момент
времени
.
Тогда
при
фиксированных t1, z, :
N1
2
z b a
t1
N1 const N1 ~ N 2 .
2
N
norma C=0.0019494157524987, N=80, N1=160 (норма Чебышева для невязки точного и
приближённого решений)
norma C=0.0077729968047970, N=40, N1=40
Оценим порядок погрешности
norma( N 40) 0.0077729968047970
3,988 2 2
norma( N 80) 0.0019494157524987
Из приведенных расчётов видно, что порядок погрешности численной схемы с 3
знвчащими цифрами равен 2 u
C
~ h 2 , кроме того, так как ~ h 2 , z
h2
const
O h2 O h2
Литература:
1) А.А.Самарский, П.Н.Вабищевич. Численные методы. Решения обратных залач
математической физики. – М.: ЛКИ . 2013. – 478 с.
2) И.В. Красиков, И.Е. Красикова. Алгоритмы просто как дважды два. – М.:Эксмо,
2007. – 2007ю – 256 с.
3) В.П.Пикулин, С.И.Похожаев. Практический курс по уравнениям математической
физики. – М.: Наука. – 1995. – 223 с.
Лекция 18. Волновое уравнение.
Волновое уравнение описывает колебания струны или упругой мембраны.
В качестве теста для программы рассмотрим пример колебаний закреплённой за концы
струны.
u tt c 2 u xx , x (0, ), t 0
(1)
u ( x,0) sin(2 x), u t ( x,0) 0, x [0, ]
u (0, t ) u ( , t ) 0, t 0
В уравнении (1) с – скорость волнового фронта.
Неизвестную функцию найдём методом разделения переменных u( x, t ) X ( x)T (t ) ,
которую подставим в первое уравнение(1)
T ''
X ''
T '' X c 2 X ''T
c2
T
X
В силу независимости переменных x, t последнее равенство возможно тогда и
только тогда, если const . Для функции X (x ) получаем задачу Штурма – Лиувилля
123
' ' n
Xn 2 Xn 0
c
X n (0) X n ( ) 0, n 0,1,2,...
(2)
Задача (2) имеет общее решение
n
X n ( x ) An cos x n Bn sin x n , X n (0) 0 An 0, X n ( ) 0, n n
n
c
c
c
c
n с 2 n 2 , n 0,1,2,... X n ( x ) Bn sin(nx )
(3)
Для функции Tn (t ) получаем уравнение Tn'' c 2n 2Tn 0 ,
общее решение последнего уравнения есть:
Tn (t ) Cn cos(cnt ) Dn sin(cnt ),T ' n (t ) cnCn sin(cnt ) cnDn cos(cnt )
Используем начальные условия – второе уравнение задачи(1):
(4)
Dn 0, n 0,1,2,...
u( x, t ) Cn sin( nx ) cos(cnt ) - общее решение задачи (1)
(5)
n0
Из начальных условий(1) получаем единственный ненулевой коэффициент разложения
C2 1, u( x, t ) sin(2 x) cos(2ct ) - решение задачи (1)
(6)
Построим разностную схему для уравнения (1)
n
n
n
umn 1 umn 1 2umn
2 um 1 um 1 2um
c
(7)
2
h2
c 2 2
Введём параметр z 2 , u mn1 u mn1 2u mn z u mn 1 u mn 1 2u mn
h
n 1
n
n
n
u m zum1 zum1 2u m 1 z u mn1
(8)
Поскольку уравнения (7),(8) эквивалентны, то исследуем устойчивость (7)
относительно ошибки округления, в качестве функций возмущения возьмём
umn n ( )eim , [0,2 ] и подставим в (7)
1
2 n ( )eim z e i ei 2 2 4 z sin 2
2
2 2 1 2 z sin 2 1 0, [0,2 ] , находим корни последнего уравнения,
2
n ( )eim
1
разностная схема(6) устойчива если 1 [0,2 ] .
D 16 z 2 sin 4 4 16 z sin 2 4 16 z 2 sin 4 16 z sin 2
2
2
2
2
1,2 1 2 z sin 2 2 z 2 sin 4 z sin 2 .
2
2
2
(9)
Если 0 z 1 , то дискриминант D 0 [0,2 ] и
1, 2 1 2 z sin 2 2i z 2 sin 4 z sin 2
2
2
2
2
1,2 1 2 z sin 2 4 z 2 sin 4 z sin 2 1 4 z sin 2 4 z 2 sin 4 4 z 2 sin 4 z sin 2 1 .
2
2
2
2
2
2
2
Т.е. мы показали, что при z [0,1] разностная схема волнового уравнения устойчива.
2
124
При z 1 разностная схема расходится, т.е. 1, 2 1 , например, при
2
2
(рассмотрим
случай с положительным дискриминантом):
2
1, 2
2
1 2 z sin 2 4 z 2 sin 4 z sin 2 41 2 z sin 2 z 2 sin 4 z sin 2 1
2
2
2
2
2
2
8 z 2 sin 4 z sin 2 41 2 z sin 2 z 2 sin 4 z sin 2 0
2
2
2
2
2
2 z 2 sin 4 z sin 2 1 2 z sin 2 0
2
2
2
2
2 z 2 sin 4 z sin 2 1 2 z sin 2
2
2
2
что невозможно одновременно для знаков плюс и минус.
Рассмотрим аппроксимацию уравнения(8), для чего разложим узловые значения
функции в ряд Тейлора относительно центрального значения u mn :
u mn1 zumn 1 zumn 1 2u mn 1 z u mn1
u mn1 u mn1 2u mn 2u mn ut
ut
2
utt
3
uttt
4
2
2
utttt
utt
5
3
6
uttt
4
24
utttt
5
120
uttttt o 6
uttttt o 6 2u mn 2 utt
4
utttt o 6
2
6
24
120
12
Аналогично, заменяя временную переменную t пространственной переменной x
получим:
h4
z u mn 1 u mn 1 2u mn z h 2 u xx u xxxx O h 6
12
2
Используя волновое уравнение utt c u xx , utttt c 2 u xx tt c 2 utt xx c 4u xxxx ,
получим:
4
4
h4
2 utt utttt O 6 2 c 2 u xx c 4 u xxxx O 6 z h 2 u xx u xxxx O h 6
12
12
12
Но
zh 2
2
1 2 utt zh 2 u xx попробуем компенсировать члены более высокого порядка
малости в разложении
4 4
h4
4 4
h4
2 h4 2h2
c u xxxx O 6 z u xxxx O h 6
c z
c2 2
c 2 2 h 2
12
12
12
12
12
h 12
2 2
c
1 z . В этом случае порядок погрешности O 4 h 4 . Если z 1 порядок
2
h
аппроксимации волнового уравнения O 2 h 2 .
(*)
c
1 разностная схема (7),(8) имеет бесконечный
h2
порядок аппроксимации. Действительно, при z 1 операторы
u mn 1 u mn1 2u mn
umn 1 umn 1 2umn
и
имеют одинаковые коэффициенты разложения в ряд
h2
2
Тейлора соответственно (по чётным степеням шага сетки , h в силу симметрии
операторов) и справедливо уравнение utt c 2uxx . Кроме того
Оказывается, что в случае z
2 2
125
u( 2 k ) ux( 2 k )c 2k 2k 2u( 2k ) 2k 2ux( 2k )c 2k c 2 2c 2 ux( 2k ) c 2 h2 ux( 2k ) c 2h2 k 2ux( 2 k )
k 1
k 1
(10)
Что справедливо для любого целого неотрицательного числа k 0,1,2,... Т.е.в разложении
в ряд Тейлора слагаемое со степенью 2 k 2 в левой её части компенсирует слагаемое со
степенью h 2 k 2 в правой её части. В итоге можно выбрать параметр z 1 , так как он
кроме того удовлетворяет условию спектральной устойчивости численной схемы
относительно ошибок округления.
Волновое уравнение (уравнение колебаний) содержит вторую частную
производную по времени и вторые частные производные по координатам. Следовательно,
для однозначного описания задачи кроме двух граничных условий задачи(1) необходимо
два начальных условий (начальные значения координат u m0 струны и начальные значения
скорости всех точек струны u t m ). Эти начальные условия эквиваленты заданию 2 первых
слоёв по времени узловых значений неизвестной функции. Если использовать начальные
условия задачи (1) для аппроксимации второго временного слоя, то получим
u 1m u m0 ut m
(11)
- аппроксимация с первым порядком погрешности второго временного слоя по начальной
скорости всех узлов u t m . Следовательно, ошибка с первым порядком погрешности по
согласно формуле(11) переносится со второго временного слоя решения на конечный
временной слой u mN 1 .
Практическая работа№15. Решение волнового уравнения с помощью явной
разностной схемы.
Примерный код программы приведём ниже.Рекомендации к программе.
Первым шагом после написания программы для наблюдений волновой поверхности
необходимо отладить графический параметр N равный числу символов, заполняющих
строку экрана монитора. Он зависит как от разрешения операционной системы, так и от
настроек экрана. Подбирается экспериментально таким образом, чтобы строка символов,
состоящая из единиц начиная с левого края, была полностью заполнена единицами. В
нашем случае N=80. В программе используются параметры
pi=2.0*asin(1.0);
z=1.0;
h=pi/double(N);
c=velocity=1.0;
dt=(h/velocity)*sqrt(z);// dt= h
t2=pi*p*sqrt(z)/velocity;// конечный момент времени
Начало программы
#include
#include
//int const N=11, p=5, N1=p*N;
main()
{
const int N=40, p=5, N1=p*N;
int k,j,i,ll,nx,ny,g1,l2;
double x0[N+1],x[N+1],pro[N+1],res[N+1][N1+1],res1[N+1][N1+1];
double z,velocity,t2,delta[N+1][N1+1],res0[N+1][N1+1];
double pi,h,dt,min,max,period,g,g2,M;
for(i=1;i<=80;i++)
{
126
printf("1");
}
pi=2.0*asin(1.0);
z=1.0;
h=pi/double(N);
velocity=1.0;
dt=(h/velocity)*sqrt(z);
t2=pi*double(p)*sqrt(z)/velocity;
max=-1000.0;
min=1000.0;
printf("h=%.16lf\n ",t2);
for(j=0;j<=N1;j++)
for(k=0;k<=N;k++)
{
res0[k][j]=sin(2.0*h*double(k))*cos(2.0*velocity*dt*double(j));
printf("res(%d %d)=%.16lf\n",k,j,res0[k][j] );
}
for(j=0;j<=N1;j++)
{
res[0][j]=0.0;
res[N][j]=0.0;
}
for( i=1;i<=N-1;i++)
{
x0[i]=sin(2.0*double(i)*h);
// res[i][0]=res0[i][0];
res[i][0]=x0[i];
// pro[i]=0.0;
res[i][1]=res0[i][1];
//res[i][1]=res[i][0]+pro[i]*dt;
//x[k]=res[k][0]*cos(2.0*velocity*t2);
printf("i=%d,x=%.16lf y=%.16lf \n",i, res[i][1] , res0[i][1]);
}
for (j=2;j<=N1;++j)
{
for( k=1;k=max)
{
max=res[k][j];
}
else
{
max=max;
}}}
for(j=0;j<=N1;++j)
{
if(j%l2==0)
{
for(k=0;k<=N;++k)
{
res1[k][j/l2]=res[k][j];
//printf("%d %d %d %lf\n",k,j,(j/l2),res1[k][j/l2]);
}} }
printf("l2=%d\n",l2);
period=max-min;
for(i=1;i<=(N1/l2)*(N);i++)
{
k=i%N;j=(i-i%N)/N;
if(k=0.0)
{
printf("%d",(g1-1)/2);
}
else{printf(" "); } }}
128
Рис.1
Из приведенного графического решения видно, что пространственно – временная
зависимость смещения u ( x, t ) точек струны
с координатой x в момент времени t
представляет собой колебания, которые представляют стоячие волны. Действительно,
левый верхний фрагмент волновой поверхности становится правым нижним в следующем
временном ряду, и наоборот – правый верхний фрагмент волновой поверхности
становится левым нижним в следующем временном ряду. Это свидетельствует об
одновременном распространении бегущих волн слева – направо и справа – налево,
которые, как известно, и образуют стоячую волну.
В программе массив res[i][j] заполняется значениями численного решения, u ij , а
массив res0[i][j] заполняется точными значениями аналитического решения u ( xi , t j ) на
общих узлах численной решётки.
Используем абсолютно точное значение второго
временного слоя
res[i][1]=res0[i][1]; N=40, p=5, N1=p*N; z=1.0
129
Рис.2
15
Как видно из Рис.2 норма невязки равна u C 5.2 10 что близко к нулю для чисел
с двойной точностью (учитывая то, что ошибка занимает 15 и 16 позиции набора
значащих цифр после запятой) и служит численным подтверждением формулы (10). Рис.2
приведен в виде скриншота преднамеренно, чтобы видеть, что массивы для численного и
точного решений отличны от нуля и близки друг другу по норме Чебышева, т.е. нет
тривиального совпадения 0-0=0.
Проверим, что в случае z 1 порядок погрешности O 2 h 2
res[i][1]=res0[i][1]; N=20, p=5, N1=p*N; z=0.95(Рис.3)
Рис.3
130
Уменьшим шаг сетки в 2 раза, увеличивая N в 2 раза, оставляя прочие параметры без
изменения: res[i][1]=res0[i][1]; N=40, p=5, N1=p*N; z=0.95(Рис.4)
Рис.4
Из Рис.3, Рис.4 видно
u 20 C
u 40 C
0.00609
3.98 2 2 , что с точностью до 3 значащих цифр
0.00153
подтверждает второй порядок погрешности O h 2 формула(*).
В программе используются следующие начальные формулы, определяющие
координатный и временной шаг сетки h, dt:
res[i][1]=res0[i][1]; N=40, p=5, N1=p*N;
h=pi/double(N);
velocity=1.0;
dt=(h/velocity)*sqrt(z);// dt - временной шаг
(12)
Из формулы (12) следует, что при фиксированном параметре z и скорости velocity
временной шаг прямо пропорционален координатному шагу h с / z . Следовательно,
для случая 0 z 1 поскольку выполняется асимптотика погрешности O h 2 , то так же
2
верна оценка Oh 2 O с / z O 2 . Таким образом, полная погрешность численной
схемы при изменении временного и пространственного шага изменяется как
O h 2 O 2 O h 2 2 , т.е. численно подтверждена справедливость формулы(*)
O h , 0 z 1 .
2
2
Можно проверить численно, что для параметра z 1 численная схема расходится
даже в случае точного задания второго временного слоя:
res[i][1]=res0[i][1]; N=20, p=2, N1=p*N; z=1.01(Рис.5)(норма Чебышева превышает
10100 ,хотя решение задачи ограничено по норме u C 1 - формула(6)).
131
Рис.5
В итоге численно подтверждены все выводы о порядке погрешности численной
схемы – формулы (10), (11), (12), (*).
Литература
1) Бахвалов Н.С., Лапин А.В., Чижонков Е.В.Численные методы в задачах и
упражнениях. – М.:БИНОМ, Лаборатория знаний, 2010.
2) Пикулин В.П., Похожаев С.И. Практический курс по уравнениям математической
физики. – М: Наука, ФИЗМАТЛИТ, 1995.
3) Самарский А.А., Вабишевич П.Н. Численные методы решения обратных задач
математической физики. Учебное пособие. – М.: Издательство ЛКИ, 2014 – 480 с.
Лекция 19. Уравнение Пуассона.
Рассмотрим линейную двухмерную задачу математической физики второго порядка
- уравнение Пуассона на прямоугольнике (по классификации уравнение эллиптического
типа):
2u 2u
x 2 y 2 sin( x), 0 x, y
(1)
u 0, y u , y sin y
u x,0 u x, sin x
0 x, y
Условие данной задачи является новым.
132
Проведём редукцию линейной задачи (1). Действительно, если Lu( x, y) - линейный
дифференциальный оператор, то общая дифференциальная задача(2):
Lu F ( x, y ), x, y D
u x, y x , y C1 f1 x, y
(2)
u
x
,
y
f
x
,
y
2
x , y C2
x, y С1 , С 2
Где: С1 ,С2 - 2 части границы замкнутой области D
Эквивалентна трём простейшим задачам, каждая из которых в системе содержит только
одно уравнение с неоднородной правой частью:
Lu 3 0, x, y D
Lu1 F ( x, y ), x, y D Lu 2 0, x, y D
u1 x, y x , y C1 0
u 2 x, y x , y C1 f1 x, y ; u 3 x, y x , y C1 0
(3)
u
x
,
y
u
x
,
y
u
x
,
y
f
x
,
y
2
2
3
1
x , y C2
x , y C2
x , y C2
x, y С1 , С 2
x, y С1 , С2
x, y С1 , С 2
Тогда складывая все три системы (3), учитывая их линейность, получим, что
Lu1 u 2 u 3 F ( x, y ) 0 0, x, y D
u 1 x, y u 2 x, y u 3 x, y x , y C1 0 f1 x, y 0
u 1 x, y u 2 x, y u 3 x, y x , y C2 0 0 f 2 x, y
x, y С1 , С 2
решением исходной системы уравнений (2) является сумма решений 3 частных систем (3).
ux, y u1 x, y u 2 x, y u 3 x, y .
Пользуясь редукцией линейной задачи, решим пример (1).
2 u1 2 u1
0, 0 x, y
2
2
x
y
1) u1 0, y u1 , y sin y
u x,0 u x, 0
1
1
0 x, y
Решаем задачу методом разделения переменных ux, y X ( x)Y ( y), X ''Y XY '' 0
Выберем в решении функцию Y y sin y , совпадающую с граничным условием
на первой части границы и автоматически обращающее в 0 решение на второй части
границы. Получим уравнение и граничные условия для функции X x
X '' X 0
X sin y X sin y 0
X 0 X 1
''
(4)
Общее решение последней краевой задачи находим на множестве гиперболических
e x ex
e x ex
, chx
функций X x Ashx Bch x , shx
.
2
2
Используя граничные условия:
1 ch
X 0 Ash0 Bch 0 B 1; X Ash ch 1 A
sh
1 ch
shx chx sin y
Запишем решение частной задачи 1) u1 x, y
sh
133
Ищем решение второй частной задачи
2u2 2u2
0, 0 x, y
2
x
y 2
2) u 2 0, y u 2 , y 0
u x,0 u x, sin x
2
2
0 x, y
Аналогично, разделяя переменные, выбираем функцию X x sinx , автоматически
удовлетворяющую первому граничному условию 2) и совпадающую
со вторым
граничным условием.
Y '' Y 0
Y '' sin x Y sin x 0
(5)
Y
Y
1
Краевые задачи (4) и (5) совпадают с точностью до замены переменных
X Y , x y .Поэтому выписываем ответ для второй частной задачи 2):
1 ch
sh y ch y sin x
u 2 x, y
sh
Находим решение третьей частной задачи с уравнением Пуассона
2u3 2u3
sin( x), 0 x, y
2
x
y 2
3) u 3 0, y u 3 , y 0
u x,0 u x, 0
3
3
0 x, y
x и
Разделяя переменные, выбираем функцию, зависящую от аргумента
повторяющую неоднородность уравнения Пуассона X x sinx , ux, y sinx Y y . При
этом автоматически выполняется первое краевое условие задачи 3), решение подставим в
уравнение Пуассона:
sinx Y Y '' sinx sinx Y '' Y 1
Y '' Y 1
Y 0 Y 0
Находим частное решение дифференциального уравнения краевой задачи (6).
Y part y 1
(6)
Общее решение однородного уравнения следующее:
Y y Ash y Bch y
Общее решение неоднородного уравнения есть сумма частного неоднородного и общего
однородного уравнений.
Yн y 1 Ash y Bch y
Теперь нужно выполнить краевые условия задачи (6)
Yн 0 1 Ash0 Bch 0 B 1 0 B 1
1 ch
Yн 1 Ash ch 0 A
sh
Тогда решение краевой задачи (6) есть
1 ch
sh y ch y sin x
u3 x, y 1
sh
134
Решение исходной задачи 1) есть сумма решений 3 частных задач:
1 ch
shx chx sin y
ux, y u 1 x, y u 2 x, y u 3 x, y
sh
1 ch
1 ch
sh y ch y sin x 1
sh y ch y sin x
(7)
sh
sh
Формулу (7) – решение краевой задачи для уравнения Пуассона на прямоугольнике
используем в качестве теста при составлении программы.
Для численного решения уравнения Пуассона составим схему. Для аппроксимации
выберем два шаблона максимального порядка симметрии и наименьшего диаметра:
шаблон “крест”
u 0,1
u 1,0
девяти точечный шаблон
u 1,1 u 0,1 u1,1
u1, 0
u 1,0
u 0, 1
u1, 0
u 1, 1 u 0, 1 u1, 1
Центральная точка в обоих шаблонах имеет значение u 0, 0 . Поскольку задача (1)
рассматривается на квадрате, то можно выбрать одинаковый шаг сетки по обоим
переменным. В силу симметрии шаблона относительно центрального узла
равноудалённые узлы входят в лапласиан (уравнение Пуассона) с одинаковым весом:
Разложим все узловые значения функций в последней формуле относительно
центрального узла, с точностью до O h 7 :
2u 2u
2 u h 3 3u
3u
3u
3u
2 2 2
3 3 2 3
xy 6 x
y
x y
xy 2 y 3
x
h 4 4u
4u
4u
4u 4u h 5 5u
5u
5u
5u
4 4 3 6 2 2 4
5
10
10
24 x
x y
x y
xy 3 y 4 120 x 5
x 4 y
x 3 y 2
x 2 y 3
u u h 2
u1,1 u 0,0 h
x y 2
5u
5u h 6 6u
6u
6u
6u
6u
6u
6u
5 4 5
6 5 15 4 2 20 3 3 15 2 4 6
y x y 720 x 6
x y
x y
x y
x y
xy 5 y 6
u u h 2 2 u 2 u
2 u h 3 3u
3u
3u
3u
3 3 2 3
u1, 1 u0,0 h 2 2 2
2
3
x
y
2
x
y
6
x
y
x
x
y
x
y
y
h 4 4u
4u
4u
4 u 4 u h 5 5u
5u
5u
5u
4 4 3 6 2 2 4
5
10
10
24 x
x y
x y
xy 3 y 4 120 x 5
x 4 y
x 3y 2
x 2 y 3
5
5u
5u h 6 6u
6u
6u
6u
6u
6u
6u
6
15
20
15
6
y 4 x y 5 720 x 6
x 5 y
x 4 y 2
x 3 y 3
x 2 y 4
xy 5 y 6
u 1, 1
u u h 2 2 u 2 u
2 u h 3 3u
3u
3u
3u
u0,0 h 2 2 2
3 2 3
xy 6 x 3
y
x y
xy 2 y 3
x y 2 x
h 4 4u
4u
4u
4u
4u h 5 5u
5u
5u
5u
4 4 3 6 2 2 4
5
10
10
24 x
x y
x y
xy 3 y 4 120 x 5
x 4 y
x 3 y 2
x 2 y 3
5
5u
5u h 6 6u
6u
6u
6u
6u
6u
6u
6
15
20
15
6
y 4 x y 5 720 x 6
x 5 y
x 4 y 2
x 3 y 3
x 2 y 4
xy 5 y 6
135
2u 2u
2 u h 3 3u
3u
3u
3u
2 2 2
3 3 2 3
xy 6 x
y
x y
xy 2 y 3
x
h 4 4u
4u
4u
4u
4u h 5 5u
5u
5u
5u
4 4 3 6 2 2 4
5
10
10
24 x
x y
x y
xy 3 y 4 120 x 5
x 4 y
x 3 y 2
x 2 y 3
u u h 2
u 1,1 u 0,0 h
x y 2
5u
5u h 6 6u
6u
6u
5 4 5
6 5 15 4 2
y x y 720 x 6
x y
x y
В сумме получим:
2u 2u h 4
u1,1 u1,1 u1,1 u1,1 4u 0,0 2h 2 2 2
y 6
x
6u
6u
6u
6u
20 3 3 15 2 4 6
x y
x y
xy 5 y 6
4u
4u
4u
4 6 2 2 4
x y
y
x
h 6 6u
6u
6u
6u
6 15 4 2 15 4 2 6 O h 8
180 x
x y
x y
y
Аналогично,
u h 2 2u h 3 3u h 4 4u h 5 5u h 6 6u
u0,1 u0, 1 u1,0 u1,0 4u0,0 h
x 2 x 2 6 x 3 24 x 4 120 x 5 720 x 6
u h 2 2 u h 3 3u h 4 4 u h 5 5 u h 6 6 u
u h 2 2 u h 3 3u h 4 4 u
h
h
x 2 x 2 6 x 3 24 x 4 120 x 5 720 x 6
y 2 y 2 6 y 3 24 y 4
h 5 5u h 6 6u
u h 2 2 u h 3 3u h 4 4 u h 5 5u h 6 6 u
h
4u 0,0
120 y 5 720 y 6
y 2 y 2 6 y 3 24 y 4 120 y 5 720 y 6
2u 2u h 4 4u 4u h 6 6u 6u
6 6 O h 8
h 2 2 2 4 4
y 12 x
y 360 x
y
x
1) 5 точечный шаблон “крест”
2u 2u
1
1
u 2 2 f x, y 2 C0 u 0,0 C1 u 0,1 u 0, 1 u1,0 u 1,0 2 C0 u 0,0
x
y
h
h
2
2u h 4 4u 4u h 6 6u 6u
2 u
6 6 O h 8
C1 4u 0,0 h 2 2 4 4
y 12 x
y 360 x
y
x
Методом неопределённых коэффициентов получаем систему уравнений
C0 4C1 0
h 2 4u 4u
, выразим из
C
4
с
главным
членом
погрешности
3 x 4 y 4
С1 1
последней формулы центральное узловое значение
h 2 f 0, 0
1
u0,0 u0,1 u0, 1 u1,0 u1,0
.
4
4
Методом простой итерации получаем рекуррентную последовательность
h 2 f 0, 0
1
u k 10,0 u k 0,1 u k 0, 1 u k 1,0 u k 1,0
, k 0,1,2,...
(8)
4
4
Практическая работа№16.
Интегрирование уравнение Пуассона на прямоугольнике.
Используя формулу (8), напишем программу для решения задачи (1) на С++
Программа определяет норму погрешности (максимальное значение модуля разности
между численным и точным значениями по всем узлам сетки на прямоугольнике) после,
136
m=2000 простых итераций. Начальное значение потенциала определяется с учетом
принципа максимума для эллиптического уравнения (в данном внутреннем узле
потенциал равен арифметическому среднему от граничных узловых значений, имеющих
ту же строку либо тот же столбец, что и рассматриваемый узел).
#include
#include
int const n=20, m=2000;
double ch(double x);
double sh(double x);
double a1(double x,double y);
double a2(double x,double y);
double b1(double x,double y);
double b2(double x,double y);
double f(double x,double y);
int main()
{
int i,j,k;
double u[m+2][n+2][n+2],a,b,c,d,pi,h1,h2,x,y;
double res[n+2][n+2],delta[n+2][n+2],max,sum;
max=-1000.0;
pi=2.0*asin(1.0);
a=0.0;
b=pi;
c=0.0;
d=pi;
h1=(b-a)/double(n);
h2=(d-c)/double(n);
////////////boundary condition
for(j=0;j<=m;j++)
{
for(i=0;i<=n;i++)
{
x=a+h1*double(i);
y=c+h2*double(i);
u[j][0][i]=b1(x,c);
u[j][n][i]=b2(x,d);
u[j][i][0]=a1(a,y);
u[j][i][n]=a2(b,y);
//sum =sum+ b1(x,c)+ b2(x,d)+ a1(a,y)+ a2(b,y) ;
}
}
for(j=1;j<=n-1;j++)
{
for(i=1;i<=n-1;i++)
{
x=a+h1*double(i);
y=c+h2*double(j);
u[0][j][i]=( b1(x,c)+ b2(x,d)+ a1(a,y)+ a2(b,y))/4.0 ;
}
}
for (k=0;k<=m;k++)
{
137
for (j=1;j<=n-1;j++)
{
for( i=1;i<=n-1;i++)
{
y=c+h1*double(j);
x=a+h1*double(i);
u[k+1][j][i]=0.25*(u[k][j-1][i]+u[k][j+1][i]+u[k][j][i-1]+u[k][j][i+1]) - (0.25)*h1*h1* f(x,y);
}
}
}
for(j=0;j<=n;j++)
for(i=0;i<=n;i++)
{
x=a+h1*double(i);
y=c+h2*double(j);
res[j][i]=(ch(x)+sh(x)*(1.0-ch(pi))/sh(pi))*sin(y)+sin(x)*(ch(y)+sh(y)*(1.0ch(pi))/sh(pi))+sin(x)*(ch(y)-1.0+sh(y)*(1.0-ch(pi))/sh(pi));
delta[j][i]= u[m][j][i]- res[j][i];
if( delta[j][i]<=0.0 )
{
delta[j][i]=- delta[j][i];
}
printf("i=%d j=%d delta=%.16lf\n",j,i, delta[j][i]);
if( delta[j][i]>=max)
{
max=delta[j][i];
}
printf("i=%d j=%d delta=%.16lf\n",j,i, delta[j][i]);
}
printf("norma C =%.16lf\n",max);
remove("101.txt");
FILE*file;
file=fopen("101.txt","w");
for(j=0;j<=n;j++)
{
for(i=0;i<=n;i++)
{
x=a+h1*double(i);
y=c+h2*double(j);
fprintf(file,"%.16lf %.16lf %.16lf \n",x,y,u[m][j][i]);
}
}
fclose(file);
remove("102.txt");
file=fopen("102.txt","w");
for(j=0;j<=n;j++)
{
for(i=0;i<=n;i++)
{
x=a+h1*double(i);
y=c+h2*double(j);
fprintf(file,"%.16lf %.16lf %.16lf \n",x,y ,res[j][i] );
138
}
}
fclose(file);
}
double ch(double x)
{
return (exp(x)+exp(-x))/2.0;
}
double sh(double x)
{
return (exp(x)-exp(-x))/2.0;
}
double a1(double x,double y)
{
return sin(y);
}
double a2(double x,double y)
{
return sin(y);
}
double b1(double x,double y)
{
return sin(x);
}
double b2(double x,double y)
{
return sin(x);
}
double f(double x,double y)
{
return sin(x);
}
При n=10 программа возвращает Чебышева
норму погрешности:
delta (n 10, m 200) 0,00913 .
При
n=20
программа
возвращает
норму
погрешности:
delta (n 10, m 200) 0,00913
delta (n 20, m 200) 0,0023
3,969 2 2 . Следовательно,
delta (n 20, m 200) 0,0023
у итерационной формулы (8) второй порядок погрешности.
Практическая работа №17.
Интегрирование уравнение Пуассона на прямоугольнике(9 точечный шаблон).
2) девяти точеный шаблон
2u 2u
1
u 2 2 f x, y 2 C0 u 0,0 C1 u 0,1 u 0, 1 u1,0 u 1,0 C 2 u1,1 u1, 1 u1, 1 u 1, 1
x
y
h
1
h2
2
2
4
4
4
6
6
6
C0 u 0,0 C1 4u 0,0 h 2 u u h u u h u u
2
2
4
4
6
6
y 12 x
y 360 x
y
x
139
2u 2u h 4
C 2 4u 0,0 2h 2 2 2
y 6
x
4u
4u
4u h 6 6u
6u
6u
6u
4 6 2 2 4
6 15 4 2 15 4 2 6
x y
y 180 x
x y
x y
y
x
2
2
4
2
4
4
Учитывая операторное
равенство u 2 2 u 4 2 2 2 4 u ,
y
x y
y
x
x
выразим производные старшего порядка потенциала u через производные функции
f x, y :
2
C 0 4C1 4C 2 0
C 0 4C1 4C 2 0
C 0 10 / 3
С1 2C 2 1
С1 2 / 3
С1 2C 2 1
С С
С 4С
С 1 / 6
1
2
1
2
1 2 C 2
2
12 6
2
Итого u f
1
C0u0,0 C1 u0,1 u0,1 u1,0 u 1,0 C2 u1,1 u1,1 u1,1 u 1,1
h2
1 10
2
1
u0,0 u0,1 u0, 1 u1,0 u 1,0 u1,1 u1, 1 u1, 1 u 1, 1
2
3
6
h 3
C1 4 u 4 u C 2 4 u
4u
4u
h2
u h 4 4
6 2 2 4 f
f
12
y 6 x 4
x y
y
12 x
Выражаем центральное узловое значение
3 2
1
h2
u 0,0 u 0,1 u 0, 1 u1,0 u 1,0 u1,1 u1, 1 u1, 1 u 1, 1 h 2 f
f
10 3
6
12
2
2
1
u0,1 u0,1 u1,0 u 1,0 1 u1,1 u1,1 u1,1 u 1,1 3 h 2 f h f
5
20
10
12
1
u0,1 u0,1 u1,0 u 1,0 1 u1,1 u1,1 u1,1 u 1,1
5
20
2
3
h
f 0,1 f 0,1 f1,0 f 1,0 4 f 0,0 1 u0,1 u0,1 u1,0 u 1,0
h 2 f 0,0
2
10
12h
5
1
u1,1 u1,1 u1,1 u1,1 3 h2 2 f0,0 1 f0,1 f0,1 f1,0 f 1,0 1 u0,1 u0,1 u1,0 u1,0
20
10 3
12
5
1
u1,1 u1,1 u1,1 u 1,1 1 h 2 8 f 0,0 f 0,1 f 0,1 f1,0 f 1,0
(9)
20
40
Из формулы (9) получим простую итерацию
1
1 k
u k 10,0 u k 0,1 u k 0, 1 u k 1,0 u k 1,0
u 1,1 u k 1, 1 u k 1, 1 u k 1, 1
5
20
1
h 2 8 f 0,0 f 0,1 f 0, 1 f1,0 f 1,0
(10)
40
Используя формулу (10) составим программу для задачи (1)
#include
#include
int const n=20, m=2000;
double ch(double x);
double sh(double x);
double a1(double x,double y);
140
double a2(double x,double y);
double b1(double x,double y);
double b2(double x,double y);
double f(double x,double y);
//int const n=100, m=10,ll=10;
int main()
{
int i,j,k;
double u[m+2][n+2][n+2],a,b,c,d,pi,h1,h2,x,y;
double res[n+2][n+2],delta[n+2][n+2],max,sum;
max=-1000.0;
pi=2.0*asin(1.0);
a=0.0;
b=pi;
c=0.0;
d=pi;
h1=(b-a)/double(n);
h2=(d-c)/double(n);
////////////boundary condition
for(j=0;j<=m;j++)
{
for(i=0;i<=n;i++)
{
x=a+h1*double(i);
y=c+h2*double(i);
u[j][0][i]=b1(x,c);
u[j][n][i]=b2(x,d);
u[j][i][0]=a1(a,y);
u[j][i][n]=a2(b,y);
}
}
for(j=1;j<=n-1;j++)
{
for(i=1;i<=n-1;i++)
{
x=a+h1*double(i);
y=c+h2*double(j);
u[0][j][i]=( b1(x,c)+ b2(x,d)+ a1(a,y)+ a2(b,y))/4.0 ;
}
}
for (k=0;k<=m;k++)
{
for (j=1;j<=n-1;j++)
{
for( i=1;i<=n-1;i++)
{
y=c+h1*double(j);
x=a+h1*double(i);
u[k+1][j][i]=0.2*(u[k][j-1][i]+u[k][j+1][i]+u[k][j][i-1]+u[k][j][i+1])+
0.05*(u[k][j+1][i+1]+u[k][j+1][i-1]+u[k][j-1][i-1]+u[k][j-1][i+1])(1.0/40.0)*h1*h1*(8.0*f(x,y)+ f(x-h1,y)+ f(x+h1,y) +f(x,y-h1) + f(x,y+h1) );
}
141
}
}
for(j=0;j<=n;j++)
for(i=0;i<=n;i++)
{
x=a+h1*double(i);
y=c+h2*double(j);
res[j][i]=(ch(x)+sh(x)*(1.0-ch(pi))/sh(pi))*sin(y)+sin(x)*(ch(y)+sh(y)*(1.0ch(pi))/sh(pi))+sin(x)*(ch(y)-1.0+sh(y)*(1.0-ch(pi))/sh(pi));
delta[j][i]= u[m][j][i]- res[j][i];
if( delta[j][i]<=0.0 )
{
delta[j][i]=- delta[j][i];
}
printf("i=%d j=%d delta=%.16lf\n",j,i, delta[j][i]);
if( delta[j][i]>=max)
{
max=delta[j][i];
}
printf("i=%d j=%d delta=%.16lf\n",j,i, delta[j][i]);
}
printf("norma C =%.16lf\n",max);
remove("101.txt");
FILE*file;
file=fopen("101.txt","w");
for(j=0;j<=n;j++)
{
for(i=0;i<=n;i++)
{
x=a+h1*double(i);
y=c+h2*double(j);
fprintf(file,"%.16lf %.16lf %.16lf \n",x,y,u[m][j][i]);
}
}
fclose(file);
remove("102.txt");
file=fopen("102.txt","w");
for(j=0;j<=n;j++)
{
for(i=0;i<=n;i++)
{
x=a+h1*double(i);
y=c+h2*double(j);
fprintf(file,"%.16lf %.16lf %.16lf \n",x,y ,res[j][i] );
}
}
fclose(file);
}
double ch(double x)
{
return (exp(x)+exp(-x))/2.0;
142
}
double sh(double x)
{
return (exp(x)-exp(-x))/2.0;
}
double a1(double x,double y)
{
return sin(y);
}
double a2(double x,double y)
{
return sin(y);
}
double b1(double x,double y)
{
return sin(x);
}
double b2(double x,double y)
{
return sin(x);
}
double f(double x,double y)
{
return sin(x);
}
При n=10 программа возвращает Чебышева
норму погрешности:
delta (10) 0.0000242
При n=20 программа возвращает норму погрешности: delta (20) 0.00000152
delta (10)
0.0000242
15.92 2 4 . Следовательно, у итерации (10) четвёртый порядок
delta (20) 0.00000152
погрешности.
Лекция №20.
Согласование порядков аппроксимации дифференциального и граничного
операторов.
Введение. Рассмотрим в области D с границей G краевую дифференциальную зада
(1)
Lu f в области D
с граничным условием
(2)
lu на G
Здесь L и l - дифференциальные операторы; и f , – заданные, а u - искомый
элементы некоторых линейных нормированных функциональных пространств F , Ф,U
соответственно[1]. Разностную схему определяют как семейство сеточных задач,
зависящих от параметра (шага) h :
Lhuh f h на сетке в области Dh
(3)
lhuh h на граничной сетке
Gh
(4)
143
Говорят, что разностная схема (3), (4) аппроксимирует на решении u с порядком
аппроксимации p min( p1, p2 ) дифференциальную задачу (1), (2) , если существуют
такие положительные постоянные h0 , c1, p1, c2 , p2 , не зависящие от h , что при всех h h0 ,
справедливы неравенства:
Lh (u) f h F c1h p1 ,
lh (u) h Ф с2h p2
h
р
Из определения порядка аппроксимации следует, что для максимальной точности
аппроксимации разностной задачи (3), (4) и экономии машинного времени необходимо
соблюдение равенства:
p1 p2 p
(5)
Постановка задачи. Для обоснования условия (5) рассмотрим численное решение
начально-краевой задачи параболического типа[2], стр.193:
u t u xx ,0 x , t 0,
u ( x,0) cos(2 x),0 x ,
u (0, t ) u ( ,0), t 0.
x
(6)
x
Система уравнений (6) имеет точное аналитическое решение: u( x, t ) e4t cos(2 x ) .
Действительно:
u( x, t )t u( x, t ) xx 4 cos(2 x)e4t ,0 x , t 0,
u( x,0) cos(2 x),0 x , u x ( x, t ) 2e 4t sin(2 x), u x (0, t ) u x ( ,0) 0, t 0.
Используем задачу (6) , в которой третье уравнение представляет собой граничное условие
Неймана, в качестве теста при составлении программы.
В задаче (6) первое уравнение соответствует дифференциальной задаче (1) в полу
полосе 0 x , t 0. Третье уравнение является граничным оператором (2) на лучах:
t 0, x 0, x . Рассмотрим разностное уравнение (3) для задачи (6) :
(umn 1 umn )
(umn 1 umn 1 2umn )
, m 1,2,3,... N , n 1,2,3
(7)
h2
Уравнение (7) представляет явную разностную схему однородного уравнения
теплопроводности на сетке с равномерным шагом по времени и по координате
h / N . Обозначим параметр z / h 2 и уравнение (7) преобразуем к виду:
umn1 umn z(umn 1 umn 1 2umn ),
(8)
Разложим узловые значения umn 1, umn 1, umn 1
в формуле (8) в ряд Тейлора для
получения максимального порядка аппроксимации с центром разложения u mn :
(umn ) 2 2 (umn )
u u
o( 2 )
2
t
2 t
n
(u m ) h 2 2 (u mn ) h 3 3 (u mn ) h 4 4 (u mn )
u mn 1 u mn h
o( h 4 )
x
2 x 2
6 x 3
24 x 4
n 1
m
n
m
(umn ) h 2 2 (umn ) h3 3 (umn ) h 4 4 (umn )
o(h 4 )
2
3
4
x
2 x
6 x
24 x
n 1
n
n
Подставляя разложения для um , um1, um1 в формулу(8), получим:
umn 1 umn h
2 2 (umn ) h 4 4 (umn )
(umn ) 2 2 (umn )
o( 2 h 4 )
h
z
2
2
4
t
2 t
x
12 x
(9)
Потребуем по отдельности равенства первых и вторых слагаемых в формуле (9) по
отдельности:
144
(umn )
(umn )
(umn ) 2 (umn )
,
используя
первое
уравнение
системы
уравнений
zh2
,
(
6
)
t
x 2
t
x 2
получим zh2 , которое справедливо для любого z .
Преобразуем вторую производную во времени, считая функцию u( x, t ) дважды по t
и четырежды по x непрерывно дифференцируемой:
(umn ) n 2 (umn ) 2 n
2 2 n
4 n
u
(
u
)
(
u
)
(um )
m
m
m
t 2
t t x 2 x 2 t
x 2 x 2
x 4
Учитывая последнее равенство и требование:
2 2 (umn )
h 4 4 (umn )
2
h4 h4
h2
h2
1
z
z
z .
2
4
2
2 t
12 x
2
12 h 12
12
6
6
(10)
Итак, максимальный порядок аппроксимации дифференциального оператора (1) по h
1
p1 4 с параметром z . Тогда уравнение (8) перепишем в виде:
6
1
1
umn 1 umn (umn 1 umn 1 2umn ) o( 2 h 4 ) (umn 1 umn 1 4umn ) o( 2 h 4 ).
(11)
6
6
Разностное уравнение (8) необходимо исследовать на устойчивость. Используем
признак спектральной устойчивости. Спектральный признак состоит в следующем: если
при заданном законе стремления и h к нулю для всех 0 2 справедливо
неравенство ( ) 1 , то спектральный признак выполнен, и численная схема может быть
использована для решения уравнения Lu f . Комплексное число ( ) определяет
замкнутую кривую на комплексной плоскости при изменении . В качестве функций
возмущения численной схемы выберем umn ( ) eim
n
( )
n 1 im
e
( ) e
n im
z ( ) e
n im
i
(e e
i
2)
( ) e
n im
Разделим последнее уравнение на
2
[1] и подставим в (8) :
:
2
( ( ) 1) 2 z(cos( ) 1) 4 z sin ( ) 1 4 z sin
(12)
2
2
1
Если параметр 0 z , то справедливо из (12) : 1 ( ) 1 ( ) 1.
2
1
Таким образом, при z
численная схема (11) имеет не только максимальный
6
порядок аппроксимации, но и является устойчивой.
Построим схему граничного оператора lhuh h для граничного условия lu
- третьего уравнения системы (6) : ux (0, t ) ux ( ,0) с тем же порядком точности:
p2 p1 4 . Составим квадратурную формулу для граничного оператора (производной
u
функции в нуле (0, t ) ) методом неопределенных коэффициентов[1]:
x
u
1 n
(0, t ) au0 bu1n cu2n du3n eu4n r( x )
(13)
x
h
В формуле неизвестные коэффициенты a, b, c, d , e подлежат определению, h шаг
равномерной сетки, u0n , u1n , u2n , u3n , u4n значения функции umn в 5 ближайших узлах к левой
границе отрезка 0, . r(x ) невязка квадратуры.
145
Потребуем равенства нулю остатка r(x ) в формуле (13)
максимально высокой степени:
u
1
a) u( x, t ) 1, (0, t ) 0 (a b c d e) a b c d e 0.
x
h
для
многочленов
b) u( x, t ) x,
u
1
(0, t ) 1 (a * 0 bh 2hc 3dh 4eh ) b 2c 3d 4e 1.
x
h
c) u( x, t ) x 2 ,
u
1
(0, t ) 0 (a0 bh 2 c(2h)2 d (3h)2 e(4h)2 ) b 4c 9d 16e 0.
x
h
d) u( x, t ) x 3 ,
u
1
(0, t ) 0 (a0 bh3 c(2h)3 d (3h)3 e(4h)3 ) b 8c 27d 64e 0.
x
h
e) u( x, t ) x 4 ,
u
1
(0, t ) 0 (a0 bh4 c(2h)4 d (3h)4 e(4h)4 ) b 16c 81d 256e 0.
x
h
Решаем систему линейных уравнений:
a b c d e 0
b 2c 3d 4e 1
(14)
b 4c 9d 16e 0
b 8c 27d 64e 0
b 16c 81d 256e 0
Линейная система уравнений (14) имеет единственное решение:
25
4
1
a , b 4, c 3, d , e
12
3
4
Подставляя найденные коэффициенты в (13) , получим квадратуру, точную для
многочленов степени не выше четырех, т.е. порядок сходимости граничного оператора в
поставленной задаче также p2 4 p1 :
u
1
(0, t )
(25u0n 48u1n 36u2n 16u3n 3u4n )
(15)
x
12h
u
(0, t ) 0 , то выразим из (15) u0n :
Так как, по условию задачи (6)
x
1
u0n (48u1n 36u2n 16u3n 3u4n )
(16)
25
В силу симметрии задачи для граничного оператора на правой границе в точке x :
1
uNn (48uNn 1 36uNn 2 16uNn 3 3uNn 4 )
(17)
25
1
Учитывая связь zh2 h 2 , видим, что при малых h : h . Выберем временной
6
отрезок T M
таким образом, чтобы по порядку величины T ~ X Nh и исходная
задача рассматривается на прямоугольнике с соизмеримыми сторонами. Положим
N 2h 2 2
M ~ N 2 T M N 2
~ 1. Окончательно, выпишем разностные уравнения
6
6
численной схемы, соответствующей дифференциальной задаче (6) :
146
um0 cos( 2mh), m 0,1,2,..., N
n 1
n 1
n 1
u n um 1 um 1 4um , m 1,2,... N 1, n 1,2,..., N 2
m
6
(18)
n 1
n
n
n
n
2
u
(
48
u
36
u
16
u
3
u
),
n
1
,
2
,...,
N
0
1
2
3
4
25
1
n
n
n
n
n
2
u N 25 ( 48u N 1 36u N 2 16u N 3 3u N 4 ), n 1,2,... N
Первое уравнение в численной схеме (18) представляет собой начальное условие
задачи (6) . Тогда точное решение u( x, T ) в узлах равномерной сетки в последнем
временном слое n N 2 :
N2
m
u
cos(2mh)e
4T
cos(2mh)e
4
h2 N 2
6
cos(2mh)e
2
2
3
, m 0,1,2,... N
(19)
Практическая работа №18. Согласование порядков аппроксимации.
Описание программы.
Для численной схемы (18) и теста (19) напишем программу, например, на языке С.
Следующая программа написана с двойной точностью:
#include
#include
const int N=50,N1=N*N;
int main()
{
int k,j;
double pi,h,dt,M;
double res[N+1][N1+1],x[N+1],delta[N+1];
pi=2.0*asin(1.0);
h=pi/double(N);
dt=(h*h)/6.0;
for(k=0;k<=N;k++)
{
res[k][0]=cos(2.0*h*double(k));
x[k]=res[k][0]*exp(-4.0*dt*double(N1));
}
for(j=1;j<=N1;j++)
{
for(k=1;k<=N-1;k++)
{
res[k][j]=(1.0/6.0)*(res[k+1][j-1]+res[k-1][j-1]+4.0*res[k][j-1]);
}
res[0][j]=(1.0/25.0)*(48.0*res[1][j]-36.0*res[2][j]+16.0*res[3][j]-3.0*res[4][j]);
res[N][j]=(1.0/25.0)*(48.0*res[N-1][j]-36.0*res[N-2][j]+16.0*res[N-3][j]-3.0*res[N-4][j]);
}
printf(" x
axact
resolve
delta");
M=0.0;
for(k=0;k<=N;k++)
{
delta[k]= res[k][N1]- x[k];
147
if( delta[k]<0.0 )
{
delta[k]=- delta[k];
}
if( delta[k]>M)
{
M= delta[k];
}
if(k-5*int(double(k)/double(5))==0)
{
printf("x=%lf exact=%.14lf res=%.14lf delta=%.14lf \n",h*double(k),x[k],res[k][N1], x[k]res[k][N1] );
}}
printf("h=%lf h^4=%.14lf\n",h,h*h*h*h);
printf("norma Chebicheva=%.14lf\n",M);
}
Результаты численного решения
Покажем, насколько важно требовать согласование порядков аппроксимации
p2 p1 дифференциального и граничного операторов в задачах математической физики.
Для этого аппроксимируем сначала граничный оператор первым порядком сходимости
p1 1 , а дифференциальный оператор (11) , по – прежнему, четвертым порядком p2 4 .
Т.е. в формулах (16), (17) положим u0n u1n , uNn uNn 1 и в программе в формулах
(20), (21) res0 j res1 j , resN j resN 1 j . Программа возвращает таблицу
значений x, axact , resolve, delta (координату, точное
решение, численное решение,
разность между численным и точным решениями delta resolve axact ):
Таблица 1(N=400)
x
axact
resolve
delta
0.00000000
0.00138821536422
-0.00116477704469
-0.00255299240891
0.31415927
0.00112308982151
-0.00141598028627
-0.00255282114823
0.62831853
0.00042898213940
-0.00208561646036
-0.00255264003627
0.94247780
-0.00042898213940
-0.00291666632857
-0.00255244911732
1.25663706
-0.00112308982151
-0.00359015697326
-0.00255224843765
1.57079633
-0.00138821536422
-0.00384758973613
-0.00255203804554
1.88495559
-0.00112308982151
-0.00359015697326
-0.00255181799127
2.19911486
-0.00042898213940
-0.00359015697326
-0.00255158832706
2.51327412
0.00042898213940
-0.00208561646036
-0.00255134910711
2.82743339
0.00112308982151
-0.00141598028627
-0.00255110038758
3.14159265
0.00138821536422
-0.00116477704469
-0.00255084222654
h 7.853981633974483E - 003,
h4 3.805042618515720E - 009
Сравнивая значения exact и resolv в таблице 1, видим, что приближенное решение
даже не сходится к точному, так как приближенное решение всегда отрицательно, в то
время как точное
2
2
cos(2mh)e 3 , m 0,12,..., N дважды меняет знак при 0 x .
Пусть теперь p1 p2 4 формулы
(16), (17), (20), (21) написаны с четвертым
порядком аппроксимации. В таблице 2( N 200 )и в таблице 3( N 400 ) также указаны
полученные программой значения x, axact , resolve, delta .
Таблица 2( N 200 )
N2
m
u
148
x
0.00000000
0.31415927
0.62831853
0.94247780
1.25663706
1.57079633
1.88495559
2.19911486
2.51327412
2.82743339
3.14159265
axact
0.00138821536422
0.00112308982151
0.00042898213940
-.0004289821394
-0.00112308982151
-0.00138821536422
-0.00112308982151
-0.00042898213940
0.00042898213940
0.00112308982151
0.00138821536422
resolve
0.00138821868693
0.00112309312266
0.00042898540013
-0.00042897892418
-0.00112308664158
-0.00138821219752
-0.00112308664158
-0.00042897892418
0.00042898540013
0.00112309312266
0.00138821868693
delta
0.00000000332271
0.00000000332223
0.00000000332168
0.00000000332107
0.00000000332039
0.00000000331964
0.00000000331883
0.00000000331796
0.00000000331702
0.00000000331602
0.00000000331495
h = 1.570796326794897E - 002,
6.088068189625153E - 008
В пространстве С непрерывных на отрезке 0, функций с нормой Чебышева
x C max t0, x(t ) норма разности приближенного и точного решений, заданной на
равномерной сетке, равна
delta umN ( resolve) umN (axact )
2
2
C
max delta mN
2
m 0,...N
9
Из таблицы 2 видно при ( N 200) , что delta C 4 10 в то время как h 4 6 108 ,
Другими словами, равномерная норма разности имеет четвертой порядок погрешности
относительно шага h равномерной сетки.
Таблица 3 (N=400)
x
axact
resolve
delta
0.00000000
0.00138821536422
0.00138821868693
0.00000000010439
0.31415927
0.00112308982151
0.00112308992513
0.00000000010439
0.62831853
0.00042898213940
0.00042898224150
0.00000000010438
0.94247780
-0.00042898213940
-0.00042898203902
0.00000000010437
1.25663706
-0.00112308982151
-0.00112308972249
0.00000000010436
1.57079633
-0.00138821536422
-0.00138821526571
0.00000000010435
1.88495559
-0.00112308982151
-0.00112308972249
0.00000000010434
2.19911486
-0.00042898213940
-0.00042898203902
0.00000000010433
2.51327412
0.00042898213940
0.00042898224150
0.00000000010432
2.82743339
0.00112308982151
0.00112308992513
0.00000000010430
3.14159265
0.00138821536422
0.00138821546861
0.00000000010429
h 7.853981633974483E - 003,
h4 3.805042618515720E - 009
Аналогично, из таблицы 3 видно, что при ( N 400) delta
C
2 1010 в то время как
h 4 3 109 , и равномерная норма невязки также не превышает четвертой порядка степени
шага сетки h .
В общем случае, для определения (оценки) порядка сходимости разностной схемы,
как
определяет А.А.Самарский 3 , стр. 57, необходимо требовать уменьшение
погрешности (нормы разности приближенного и точного решений) в 16 раз при
уменьшении шага сетки h в 2 раза (увеличении N в 2 раза) – для сходимости с
четвертым порядком. В данной разностной схеме при увеличении N в 2 раза (с 200 до
3 109
400) погрешность по норме Чебышева уменьшается примерно в 10 30 16 раз.
10
149
Необходимо выбирать большие N , так как указанное требование может
проявляться на практике только в асимптотике 3 . Другими словами, численная схема
(18) аппроксимирует задачу (6) и ее решение на последнем временном слое (19) с
четвертым порядком. Легко видеть, что в общем случае от формулы (11) на конечном
временном слое достаточно требовать меньшей точности – второй порядок сходимости:
2 4
N2
2
2
4
2
4
2 4
um ~ N o( h ) ~ N o(h ) ~ o(N h ) ~ o h ~ o (h 2 )
( 20)
h
Используя формулу (20) , можно теоретически обосновать сходимость (расходимость)
погрешности решения. Действительно, в случае равенства p2 p1 4 порядок
аппроксимации общей задачи p min( p1, p2 ) 4 и согласно (20) на последнем
временном слое разностное решение (18) сходится при h 0 к решению
дифференциальной задачи u( x, t ) uh ( x, t ) ~ o(h 2 )
(6) не хуже чем со вторым порядком.
Если p2 1; p1 4, то p min( p1, p2 ) 1 , т.е. на конечном временном слое невязка
между решениями разностной и дифференциальной задачами имеет асимптотику:
N 2 o(h) ~ N 2 h o(1) N 2 o(1) ~ N o(1) .
N
Поскольку
может
иметь
слабую
сходимость,
например,
при
o(1)
1
h 0( N ); o(1) ~
,то u( x, t ) uh ( x, t ) ~ N/lnN , N .
lnN
Что доказывает расходимость задачи в последнем случае.
Литература
1) Бахвалов Н.С., Лапин А.В., Чижонков Е.В.Численные методы в задачах и
упражнениях. – М.:БИНОМ, Лаборатория знаний, 2010.
2) Пикулин В.П., Похожаев С.И. Практический курс по уравнениям математической
физики. – М: Наука, ФИЗМАТЛИТ, 1995.
3) Самарский А.А., Вабишевич П.Н. Численные методы решения обратных задач
математической физики. Учебное пособие. – М.: Издательство ЛКИ, 2014 – 480 с.
4) Герец А.Ю., Зеленкевич А.А., Гурьева Н.А.,Пастухов Ю.Ф.,Пастухов Д.Ф.
Согласование порядков аппроксимации дифференциального и граничного
оператров в краевой задаче для уравнений в частных производных. Вестник
Полоцкого государственного университета, серия С, №12,2015, стр.102.
150
Приложение1
УДК 517.6: 517.958
ОПТИМАЛЬНЫЙ ПАРАМЕТР АППРОКСИМАЦИИ РАЗНОСТНОЙ СХЕМЫ
ВОЛНОВОГО УРАВНЕНИЯ НА ОТРЕЗКЕ
Н.К. ВОЛОСОВА
(Московский государственный технический университет им. Н.Э. Баумана)
Д.Ф. ПАСТУХОВ, Ю.Ф. ПАСТУХОВ
(Полоцкий государственный университет)
Предложен алгоритм решения начально-краевой задачи для неоднородного волнового
уравнения на отрезке с двойной точностью, основанный на выборе оптимального параметра,
обеспечивающего бесконечный алгебраический порядок аппроксимации однородному
уравнению. Для решения системы линейных уравнений с симметрической пятидиагональной
матрицей с краевым условием Дирихле доказаны достаточные условия корректности формул
прогонки вперед более слабые, чем условия диагонального преобладания ее элементов.
Применение алгоритма укрупнения ячеек сетки и использование метода производящих
функций дает двойную точность относительной погрешности решения даже на грубой сетке
с числом узлов несколько сотен.
Ключевые слова: метод производящих функций, инициализация задачи, слабые
достаточные условия корректности формул прогонки симметричной пятидиагональной
матрицы.
Введение. Задачи с численным решением волнового уравнения встречаются во
многих физико-технических приложениях, большой класс краевых задач математической
физики также сводится к неоднородному волновому уравнению на отрезке, на
прямоугольнике, в параллелепипеде [1–5]. В последнее время в численных методах
появилось направление ускоренных расчетов [2], которое достигается либо за счет
увеличения порядка аппроксимации разностных схем [2–4], либо удачным выбором
геометрии узлов сетки. Авторы работы [6, с. 23] в лучших традициях московской
математической школы аналитически решили задачу о бегущей волне кручения на отрезке
железнодорожного полотна, используя уравнение гиперболического типа с неоднородной
правой частью и с учетом слагаемых, описывающих затухание механических волн.
Напомним, что порядком аппроксимации дифференциального оператора разностным
оператором [4, с. 102] называется максимальное положительное число p , если
существуют положительные числа p, С 0 , не зависящие от шага сетки h такие, что норма
невязки (разности дифференциального и разностного оператора) не превышает
Lu h Lhuh Ch p .
В данной работе решается одномерное неоднородное уравнение с ускорением
расчета путем увеличения порядка аппроксимации и выбора оптимального параметра
аппроксимации разностной схемы. Найденная параметризация обеспечивает однородному
разностному уравнению бесконечный алгебраический порядок аппроксимации, а для
неоднородной начально-краевой задачи позволяет выразить невязку уравнений только
через частные производные от известной правой части волнового уравнения. Более того,
применение производящих функций как функций временного шага заменяет вычисление
бесконечного ряда слагаемых для невязки в разностных уравнениях на конечное число
арифметических вычислений с двойной точностью в неоднородной начально-краевой
задаче.
Нами построен алгоритм инициализации задачи, т.е. аппроксимация второго
временного слоя решения по начальным данным задачи. Алгоритм сводится к прогонке
либо трехдиагональной системы линейных алгебраических уравнений (СЛАУ), либо к
прогонке сначала трехдиагональной, а затем пятидиагональной СЛАУ. Найдены также
151
достаточные условия корректности формул прогонки, более слабые, чем диагональное
преобладание элементов матрицы. Алгоритм инициализации дает приближение второго
слоя решения по начальным условиям с относительной погрешностью не хуже чем 1010
при числе узлов 500. Инженерный американский продукт ANSYS Fluent завершает
решение задач с относительной точностью 103 , и с более грубой точностью на процессе
инициализации задачи, т.е. с точностью 101 102 . Благодаря применению спектрально
устойчивых разностных схем относительная погрешность начальных данных уменьшается
от значения 108 1010 до величины 1015 . В работе нами построен алгоритм укрупнения
ячеек сетки (масштабирования) с коэффициентом масштабирования l 1 , позволяющий
сократить число вычислений в сотни раз ( l 2 раз). Неоднородная начально-краевая задача
при числе узлов 300 на редкой координатно-временной сетке решается с помощью
указанных здесь методов с двойной точностью 1015 (т.е. первые 15 десятичных знаков
аналитического и численного решения на последнем временном слое во всех
координатных узлах совпадают).
Некоторые двухмерные и трехмерные колебания в приложениях часто сводятся к
одномерным колебаниям [5, с. 181], например, в прямоугольном кристалле колебания
атомных параллельных плоскостей порождают одномерные звуковые волны, поэтому
решаемая нами численно задача полезна и в многомерных случаях.
Постановка задачи. Рассмотрим начально-краевую задачу для неоднородного
волнового уравнения на отрезке [a, b] .
2 u ( x, t )
2 u ( x, t )
a2
f ( x, t ), a 2 0, ( x, t ) (a, b) (0, T ),
2
2
x
t
u ( x, 0) ( x), x [a, b],
ut ( x, 0) ( x), x [a, b],
u (a, t ) u (b, t ) 0, x [ a, b],
(1)
где u( x, t ) – точное аналитическое решение задачи (1); f ( x, t ) – функции внешнего
источника, ( x) – начальное смещение и ( x) – начальная скорость точек струны с
закрепленными концами на отрезке ( x, t ) [a, b] [0, T ] .
Аналитической задаче (1) сопоставим разностную задачу на равномерной сетке,
используя пятиточечный шаблон – крест:
n 1
n 1
n
n
um
um
2um
u n u n 2um
a 2 m 1 m 1
f ( xm , tn ),
2
h2
xm a mh, tn n, [m, n] [1, M 1] [1, N 1],
u (mh, 0) (mh), m [0, M ],
u (mh, ) 1 (mh), m [0, M ], 1 ( x) F 1 ( x), ( x) ,
u (0, n) u ( N , n) 0, n [0, N ].
где
h
ba
T
,
N
M
(2)
– временной и координатный шаги сетки; a 2 – квадрат фазовой скорости
волны.
Задание начальных условий ( x), ( x) в линейной аналитической задаче (1)
эквивалентно заданию значений двух начальных временных слоев решения
u(mh,0) (mh) um
, u(mh, ) 1 (mh) u1m , m [0, M ] в разностной задаче (2), поскольку их
запрашивает узловое значение um2 в первой рекуррентной формуле системы (2).
152
Зависимость второго временного слоя 1 ( x) F 1 ( x), ( x) в системе уравнений (2) как
функции начальных условий определяется с помощью предварительного численного
алгоритма инициализации задачи методом прогонки.
Обозначим
параметр
z
эквивалентном виде
a 2 2
h2
и
перепишем
разностное
уравнение
(2)
n1
n1
n
n
n
n
2
n
n
n
2
um
um
2um
z um
1 um1 2um f ( xm , tn ) z um1 um1 2um f m,n .
в
(3)
Потребуем, чтобы разностное уравнение (3) аппроксимировало первое уравнение
системы (1) с максимальным алгебраическим порядком, далее разложим узловые значения
n1 n1 n
n
um
, um , um1, um
1 в ряд Тейлора в центральном узле (m, n) xm , tn с вектором шага
соответственно (h, ) :
n
s 2k 2 2k u n
1 s u n
1 s um
m s
m 2k
s
s
s
2k
s
!
s
!
2
k
!
t
t
t
s 1
s 1
k 1
s
n 1
n 1
n
n
n
um
um
2um
2um
2um
2
n
2um
t 2
2
2k !
k 2
n
2k um
2 k
2k
t
.
Меняя в последней формуле буквенные обозначения индексов и переменных
(m n), x t (h ) , получим
n
n
2 2um
2 2k um
n
n
n
2
z um
u
2
u
f
z
h
h2k f m,n 2 .
1
m1
m
m,n
2
2
k
x
k 2 2k ! x
Приравняем правые части последних двух выражений, используя тождество
n
2um
2
t
n
2um
a2
2
x 2
n
2um
t 2
f m, n ,
2
имеем
2k !
k 2
n
n
n
2k um
2um
2 2k um
2k 2 a 2
f m,n 2
2 k
2k
2
k
!
t 2k
x 2
t
k 2
n
n
a 2 2um
2 2k um
h2k f m,n 2
h
h2
x 2 k 2 2k ! x 2k
2 2
n
n
2 2k um
2 2k um
2k
z
2k ! 2 k
2k ! 2 k h 2 k
t
x
k 2
k 2
.
(4)
Невязка первого уравнения системы (2) равна невязке уравнения (4), т.е. разности
левой и правой частей уравнения (4):
n
R(um
)
n
n
2k um
2 2k um
2k
z
h 2k .
2k ! 2 k
2k
x
k 2
t
Замечание 1. Если параметр z
(5)
a 2 2
h2
1
и волновое уравнение
однородное, то из его записи для произвольного узла сетки
тождество
n
2k um
t 2k
2 k z
n
2k um
t 2k
n
2k um
x 2k
a 2k
n
2k um
x 2k
h2k h2k
n
2um
t 2
a2
2u
t 2
n
2um
x 2
a2
2u
x 2
следует
, тогда в формуле (5) преобразуем выражение в скобках
n 2k 2k
n
2k um
2k um
a
z h2k
zk z 0 .
2k
x 2k h2k
x
Другими словами, для
параметра z 1 однородное одномерное волновое уравнение имеет бесконечный
153
порядок аппроксимации! В этом случае разностная схема (3) с fm,n 0, z 1 точна для
многочленов произвольной степени. Равномерная норма погрешности аппроксимации
первого уравнения задачи (1) первым уравнением разностной задачи (2) не зависит от
шага сетки h (аппроксимация происходит с двойной точностью даже для крупного
шага сетки).
Для упрощения формулы (5) докажем первое утверждение.
Утверждение
n
2um
2
t
n
2um
a2
2
x
n
2 p um
t 2 p
a2 p
x 2 p
Для
неоднородного
одномерного
волнового
уравнения
справедлива формула
f m, n
n
2 p um
1.
p 1
2( p 1) f m,n
l 0
x 2l t 2( p l 1)
a2l
, p2.
(6)
Доказательство проведем по индукции. Для базы индукции, если p 2 , имеем
2
2
n
2 n
4 n
2
2 f m,n
2 2 2um
2
2 um
4 um
2 f m,n f m,n
f m,n a
f m,n
a
a
a
a
t 4
t 2
x 2
x 2
x 2
t 2
x 4
x 2
t 2
n
4um
,
что верно. Следовательно, получаем формулу (6), если p 2 .
n
2( p 1)um
Пусть справедлива также формула
t 2( p 1)
a
2( p 1)
n
2( p 1) um
x 2( p 1)
p 2
a
2l
l 0
2( p 2) f m,n
x 2l t 2( p l 2)
,
тогда
n
2 p um
t 2 p
a
2( p 1)
n
p 2
2( p 2) f m,n
2 2( p 1) 2( p 1) um
a
a 2l
t 2
x 2( p 1)
x2l t 2( p l 2)
l 0
2( p 1)
n
2p n
p 2 2l 2( p 1) f m,n
f m,n
2( p 1) 2 2um
2 p um
2( p 1)
f m,n a
a
a
a
2( p 1)
2
2l 2( p l 1)
2p
2( p 1)
x
x
x t
x
x
l 0
p 2
2( p 1) f m,n
l 0
x 2l t 2( p l 1)
a 2l
n
p 2
2( p 1) f m,n
2( p 1) 2um
a 2( p 1)
a 2l
2( p 1)
2
2l 2( p l 1)
x
t
x
t
l
a2 p
n
2 p um
x 2 p
p 1
2( p 1) f m,n
l 0
x 2l t 2( p l 1)
a2l
,
т.е. формула (6) (утверждение 1) доказана для произвольного целого p 2 .
Используя формулу (6), преобразуем невязку разностного уравнения (3), подставив ее в
формулу (5):
n
R(um
)
n
n
n
k 1
2 2 k 2 k 2 k um
2( k 1) f m,n
2 k um
2 2 k um
a
2 k z
h 2k
a 2l
2k
x 2k
x 2k
x 2l t 2( k l 1)
k 2
l 0
t
k 2 2k !
2k !
2( k 1)
n
k 1
2k um
f m, n
2 2 k 2 k a 2 k
2k
2l
h
z
a
2
k
2
k
2
l
2(
k
x t l 1)
k 2 2k !
l 0
h
x
2( k 1)
n
k 1
f m, n
2k um
2 2k k
2k
2l
h
z
z
a
2k !
x 2k
x 2l t 2( k l 1)
k 2
l 0
z 1
2( k 1)
f m, n
2 2k k 1 2l
a
2
l
2(
k
x t l 1)
k 2 2k !
l 0
n
2 k um
z
h 2k
x 2k
z 1
.
(7)
Выпишем несколько первых слагаемых для невязки R(umn ) из формулы (7):
154
n
R(um
)
2
2
2 4 2 f m, n f m, n
a
4!
x 2
t 2
2 6 4 f m , n
4 f m, n 4 f m, n
a4
a2
4
2 2
6!
x
x
t
t 4
6
6 f m, n
6 f m, n 6 f m, n
28 6 f m,n
a
a4
a2
8!
x6
x 4 t 2
x 2 t 4
t 6
(8)
f m, n
f m, n
f m, n f m, n
2 8 f m, n
a
a6
a4
a2
8
6
2
4
4
2 6
10!
x
x
t
x
t
x
t
t 8
8
10
8
8
8
8
10
10
10
10
10
10
212 10 f m,n
8 f m, n
6 f m, n
4 f m, n
2 f m, n f m, n
a
a
a
a
a
12!
x10
x8t 2
x 6 t 4
x 4 t 6
x 2 t 8
t10
.
Определение 1. Одномерное уравнение в частных производных
a2
f
2
x 2
2 f
t 2
0, a 2 0
2 f
по аналогии с волновым уравнением
t 2
a2
2 f
x 2
0, a 2 0
назовем волновым уравнением
комплексного аргумента. Рассмотрим свойства решений (9).
Утверждение 2 (свойства волнового уравнения комплексного аргумента).
1) Уравнения xi at C1 const, xi at C2 const являются уравнениями характеристик
для (9). Действительно,
f
f
a x i t 0
f f
a2
0 a i a i f 0
2
2
f
x t x t
x
t
f
a i
0
t
x
2
2
dx dt
a i
xi at C1 x iat iC1 C1
dx dt
xi at C2 x iat iC2 C2
a i
2) Решением волнового уравнения комплексного аргумента является линейная
комбинация произвольных дважды дифференцируемых функций на комплексных
характеристиках
f ( x, t ) C1u( x iat ) C2v( x iat ), u (), v() C 2 Z .
(10)
Действительно,
a2
2 f
x
2
2 f
t
2
a 2 C1u '' ( x iat ) C2v'' ( x iat ) (ia)2 C1u '' ( x iat ) (ia)2 C2v'' ( x iat ) 0 .
3) Пусть функция f x iat f1 x, t if2 x, t комплексного аргумента ( x iat ) –
решение уравнения (9), тогда функции действительного аргумента f1 ( x, t ), f2 ( x, t ) , т.е.
действительная и мнимая части f x iat , также являются решениями уравнения (9).
Действительно, имеем
a2
2 f x iat
x2
2 f x iat
t 2
0 a2
2 f1 ( x, t ) if 2 ( x, t )
x2
2 f1 ( x, t ) if 2 ( x, t )
t 2
0
155
2 2 f1 ( x, t ) 2 f1 ( x, t )
0
a
2
2
x 2
t 2
2 f1 ( x, t ) if 2 ( x, t ) f1 ( x, t ) if 2 ( x, t )
a
0 i0
x 2
t 2
2 f ( x , t ) 2 f ( x, t )
2
2
a 2
0.
x 2
t 2
Таким образом, показано, что функции f1 ( x, t ), f2 ( x, t ) – решения уравнения (9).
Последняя система уравнений следует из определения равенства двух комплексных чисел.
Утверждение 2 доказано.
Приведем примеры из класса решений волнового уравнения комплексного
аргумента, используя утверждение 2.
Пример 1. f1 ( x, t ) Re ( x iat )2 x2 a 2t 2 . Действительно,
a
2
2 x 2 a 2t 2
x 2
2 x 2 a 2 t 2 2a 2 2a 2 0 .
t 2
Пример 2. f2 ( x, t ) Im ( x iat )4 4x 3at 4xa 3t . Действительно,
a2
2 4 x3at 4 xa3t 3
x 2
2 4x3at 4xa3t3 24a3 xt 24a3 xt 0 .
t 2
Пример 3. f3 ( x, t ) Im exp( x iat ) exp x sin at . Действительно,
a2
2 exp x sin at
x 2
2 exp x sin at
t 2
a 2 a 2 exp x sin at 0 .
Замечание 2. Если правая часть f ( x, t ) неоднородного волнового уравнения
действительного аргумента задачи (1) удовлетворяет однородному волновому уравнению
мнимого аргумента, то порядок невязки разностной схемы задачи (2) увеличивается со
второго порядка до четвертого. Более того, невязку в этом случае удается выразить через
частные производные по одной независимой переменной t. Нужно учесть, что невязка
уравнения (3) на 2 порядка больше невязки уравнения (2). Действительно, из формулы (8)
получим
n
R(um
)
4
2
2
26 f m,n
2 2 f m, n f m , n
a
a2
6! t 4
x 2
x 2
t 2
2
2
28 4 2 f m,n f m,n
a
8! t 4
x 2
t 2
8
2
2
210 f m,n
6 2 f m, n f m, n
a
a2
10! t 8
x 2 t 4
x 2
t 2
4
8
4 k 2 4 k f
26 f m,n 210 f m,n
m, n
.
... 2
4k
6! t 4
10! t 8
4
k
2
!
t
k 1
2
2
4 2 f m, n f m , n
a4
a
x 4
x 2
t 2
2
2
6 2 f m, n f m, n
a6
a
x6
x 2
t 2
...
(11)
Кроме аппроксимации важен вопрос об устойчивости разностного уравнения (3), так
как неустойчивая схема накапливает ошибку округления по геометрической прогрессии,
что ведет к неограниченному численному решению. В то время как устойчивая схема
суммирует ошибки округления по арифметической прогрессии и норма невязки
пропорциональна количеству элементарных операций. Проверим разностное уравнение
(3) на спектральную устойчивость. Учтем, что численное решение umn ( x, t ) удовлетворяет
156
также уравнению (3), как и проекция аналитического решения на узлы сетки
u( x, t ) nm umn , nm umn umn umn1 umn1 2umn z umn1 umn1 2umn fm,n 2 . Вычитая из последнего
выражения уравнение (3) получим однородное уравнение относительно невязок в каждом
внутреннем узле сетки (m, n):
n1
nm1 m
2nm z nm1 nm1 2nm .
Подставляя в последнее уравнение ошибку округления вида nm n ()eim , получим
спектральное уравнение
1/ 2 z ei ei 2 4 z sin 2 2 2 1 2 z sin 2 1 0 .
2
2
Как
n
um
следует
из
определения
0 () 1 [0, 2] .
спектральной
устойчивости
(12)
[4,
с.
125],
n
Используя коэффициенты квадратного уравнения (12), получим 1 2
c
1/1 1 .
a
Если корни действительные, то при 1 1 2 1 . Тогда возможен единственный
результат
что
заведомо
невозможно,
т.к.
1 2 1 [0, 2] ,
2
1,2 1 2 z sin 2 1 2 z sin 2 1
2
2
зависит от
.
Следовательно, имеем пару
комплексно сопряженных корней:
2
1,2 1 2 z sin 2 i 1 1 2 z sin 2 ,
2
2
1,2
2
2
2
1 2 z sin 2 1 1 2 z sin 2 1, [0, 2] .
2
2
Выясним
условия,
при
которых
дискриминант
отрицательный.
2
2
2
2
4
2
1 2 z sin 1 0 1 4 z sin 4 z sin 1 4sin z z 1 0
2
2
2
2
z (0,1], z 0, [0, 2] , то есть с параметром z 1 разностное уравнение
(3) является
спектрально устойчивым.
Тестовый пример 1
utt u xx sin( x)sin(t ), x (0, ), t 0
u ( x, 0) sin( x), ut ( x, 0) sin(2 x), x [0, ]
u (0, t ) u (, t ) 0, t 0
Сведем исходную задачу к трем простым:
u( x, t ) u1 ( x, t ) u2 ( x, t ) u3 ( x, t ) ,
где u1 ( x, t ), u2 ( x, t ), u3 ( x, t )
соответственно:
– решения первой (a), второй (b) и третьей (с) задач
u1tt u1xx sin( x) sin(t ), x (0, ), t 0
a) u1 ( x, 0) 0, u1t ( x, 0) 0, x [0, ]
u1 (0, t ) u1 (, t ) 0, t 0;
157
u2tt u2 xx , x (0, ), t 0
b) u2 ( x, 0) sin( x), u2t ( x, 0) 0, x [0, ]
u2 (0, t ) u2 (, t ) 0, t 0;
с)
u3tt u3 xx , x (0, ), t 0
u3 ( x, 0) 0, u3t ( x, 0) sin(2 x), x [0, ]
u3 (0, t ) u3 (, t ) 0, t 0.
Выбираем решение задачи (a) в виде u1 ( x, t ) f1 (t )sin( x) , удовлетворяющее граничным
условиям u1(0, t ) u1(, t ) 0 , подставляя в первое уравнение системы, получим
f1'' f1 sin t
f (0) f ' (0) 0
1
1
общее решение однородного уравнения (c индексом оо) есть f1oo (t ) A sin t B cos t . Частное
решение неоднородного уравнения (c индексом ч) ищем в виде
f1ч (t ) (a bt ) cos t , f '1ч b cos t (a bt )sin t, f ''1ч 2b sin t (a bt ) cos t ,
подставляем значения f1ч (t ), f ''1ч в первое уравнение системы:
t cos t
, f1(0) f1' (0) 0
2
sin t t cos t sin( x)
2b sin t sin t b 1/ 2, a 0, f1 (t ) f1oo (t ) f1ч (t ) A sin t B cos t
B 0, A 1/ 2 0, f1 (t )
sin t t cos t
2
, u1 ( x, t ) f1 (t )sin( x)
2
Решение задачи (b) ищем в виде u2 ( x, t ) f 2 (t )sin x , которое подставим в уравнения
системы (b)
f 2'' f 2 0
f (0) 1, f ' (0) 0
2
2
f2 (t ) A1 sin t B1 cos t , f 2 (0) 1 B1 1, f '2 (0) 0 A1 0
Получим u2 ( x, t ) f2 (t )sin x cos t sin x .
Решение задачи (c) ищем в виде u3 ( x, t ) f3 (t )sin 2x , которое подставим в уравнения
системы (c)
f3'' 4 f3 0
f (0) 0, f ' (0) 1
3
3
f3 (t ) A2 sin 2t B2 cos 2t , f3 (0) 0 B2 0, f '3 (0) 1 2 A2 1
u3 ( x, t ) f3 (t )sin 2 x
sin 2t sin 2 x
2
.
Решение исходного примера есть
u ( x, t ) u1 ( x, t ) u2 ( x, t ) u3 ( x, t )
sin t t cos t sin( x) cos
2
t sin x
sin 2t sin 2 x
2
.
Инициализация задачи. Инициализацией задачи назовем определение второго
временного слоя решения по начальным данным задачи, т.е. определения функции 1 ( x) в
задаче (2)
u ( x,0)
u (mh, ) 1 (mh), m [0, M ], 1 ( x) F ( x) u ( x,0), ( x)
.
t
Аппроксимируем первую производную решения в начальный момент времени ( x) .
Рассмотрим два случая инициализации разностной задачи (2):
158
1) в задаче (2) первое уравнение однородное ( x) 0, ( x) 0 ;
2) в задаче (2) первое уравнение неоднородное ( x) 0, ( x) 0 .
В этих двух случаях инициализация задачи существенно отличается.
Построим квадратурную формулу для функции ( x) , связывающую узловые
значения функции в одном узле в трех временных слоях, с момента времени t 0 точную
для многочленов максимальной степени
1
1
C0u(0) C1u() C2u(2) , u(t ) 1: u (0) 0 C0 C1 C2
1
1
2
2
u (t ) t : u (0) 1 0C0 C1 2C2 , u (t ) t : u (0) 0 02 C0 2C1 2 C2 .
u (0)
Решаем систему линейных уравнений
C0 C1 C2 0
C0 3 / 2
C1 2
C1 C2 2 1
C1 C2 4 0
C2 1/ 2
1 3
1
u (0) u 0 2u1 u 2 , откуда
2
2
u(2) u 2 3u 0 4u1 2u .
(13)
Формула (13) имеет третий алгебраический порядок погрешности, т.е. погрешность
имеет вид O 3 . Получим аналогичную формулу, связывающую четыре временных слоя:
1
1
C0u(0) C1u() C2u(2) C3u(3) , u(t ) 1: u (0) 0 C0 C1 C2 C3
1
1
2
2
u(t ) t : u (0) 1 C0 0 C1 2C2 3C3 , u(t ) t 2 : u (0) 0 02 C0 2C1 2 C2 3 C3
1
3
3
u (t ) t 3 : u (0) 0 03 C0 3C1 2 C2 3 C3 .
u (0)
Решаем систему линейных уравнений:
C0 C1 C2 С3 0
C0 11/ 6
C 2C 3С 1
C 3
1
2
3
1 11
3
1
1
u (0) u 0 3u1 u 2 u3 ,
6
2
3
C1 4C2 9С3 0
C2 3 / 2
C 8C 27С 0
C 1/ 3
2
3
3
1
откуда
u (3) u3
11 0
9
u 9u1 u 2 3u .
2
2
(14)
Формула (14) имеет четвертый порядок погрешности, т.е. погрешность имеет вид
O .
4
В первой задаче инициализации c использованием формул (3), (13) fm,n 0 для трех
временных слоев имеем:
n1
n1
n
n
n
n
2
2
1
1
1
um
um
2um
z um
1 um1 2um f m,n um um 2 1 z um z um1 um1
3um
4u1m 2u
zu1m1 2 1 z u1m zu1m1
2um
2u , m 1, M 1.
(15)
Система линейных уравнений (15) представляет трехдиагональную матрицу с
коэффициентами
Am z, Cm 2 1 z , Bm z, Fm 2um
2u
относительно неизвестных u1m1, u1m , u1m1 .
Решить систему уравнений (15) можно методом прогонки, например, с помощью
формул [3, с. 44], [7, с. 68], прогонки вперед
159
m
Bm
A
F
, m m m1 m , m 1, M 1, 0 0, 0 u10
Cm Am m1
Cm Am m1
и формул прогонки назад
u1m mu1m1 m , m M 1,1.
(16)
Условие корректности формул прогонки (условие абсолютного диагонального
преобладания) выполнено, так как Cm Am Bm 0 2 1 z 2 z 0 [3, с. 35]. Поскольку
формула(13) точна для всех многочленов второй степени, т.е. имеет погрешность O 3 с
третьим алгебраическим порядком, то и погрешность решения системы уравнений (16)
также O 3 , т.е. формулу (15) можно считать начальным этапом инициализации задачи.
Используя формулы (3), (14) fm,n 0 , построим второй этап инициализации задачи (2)
n1
n1
n
n
n
n
2
3
1
2
2
2
um
um
2um
z um
1 um1 2um f m,n um um 2 1 z um z um1 um1
11 0
9 2
11 0
5
2
1
2
2
um 9u1m um
3um
um 3um
8um 2 z um z um1 um1
2
2
2
2
5
8u1m 2 z um
2 1 z u1m z u1m1 u1m1
2
1
1
1
1
1
1
z um
1 2 1 z um1 z um 2 um um1 2 1 z um1 z um um2
5
5
5
z 2u1m2 (2 z (1 z ) z 2 z )u1m1 u1m 8 2 z 2 1 z 2 z 2 (2 z (1 z ) z 2 z )u1m1 z 2u1m 2
2
2
2
11
5
1
1
0
2 1
2 1
1
2
2 1
2 1
2 z um
3um
zum1 zum1 z um 2 z 4 z um1 um 3 z 6 z z 4 z um1 z um 2
2
2
2
1
1
z 2u1m2 z 4 z 2 u1m1 u1m 3 z 6 z 2 z 4 z 2 u1m1 z 2u1m 2 (3 2 z )um
zum
1 zum1 3um .
2
2
(17)
Для оптимального параметра z 1 формула (17) перейдет в формулу
9
9
u1m2 u1m1 10u1m u1m1 u1m 2 um
um
1 um1 3um .
2
2
(18)
Отметим, что трехдиагональная матрица (15) и пятидиагональная матрица (18)
систем линейных уравнений в данном случае используются для аппроксимации второго
временного слоя, а не для решения основной задачи, как в работах [7, 8].
Линейная система уравнений (19) имеет пятидиагональную матрицу прогонки
относительно неизвестных u1m2 , u1m1, u1m , u1m1, u1m2 , обозначим ее коэффициенты
9
9
Am1 1, Am2 , Cm 10, Bm1 , Bm2 1, Fm um
1 um um1 3um .
2
2
Для решения системы уравнений (18) используем формулы прогонки [7, с. 70],
формулы прогонки вперед:
1m
B1m A2m 2m1 A1m 1m2 2m1
B2m
, 2m
Cm A1m 1m2 1m1 A1m 2m 2 A2m 1m 1
Cm A1m 1m 2 1m 1 A1m 2m 2 A2 m 1m 1
A
A1m m2 A2m m1 Fm
m 1m 1m 2 m 1
, m 2, M 2.
Cm A1m 1m 2 1m 1 A1m 2m 2 A2m 1m 1
(19а)
и формулы прогонки назад
u1m 1mu1m1 2mu1m2 m , m M 2, 2
1M 2u1M 1 2 M 2u1M M 2 .
Из последней формулы видно, что u10 , u11 принимают фиксированные
(краевое условие Дирихле – краевые значения u10 , u11, u1M 1, u1M заданы) при любых
узловых значениях, если положить 0 u10 , 10 20 0, 1 u11, 11 21 0 .
u10
10u11 20u12
0 , u11
11u12
21u13
(19б)
1 , u1M 2
значения
соседних
160
Коэффициенты последней системы уравнений не имеют даже нестрогого
(абсолютного)
диагонального
преобладания,
так
как
9
Cm 10 Am1 Am2 Bm1 Bm2 2 1 11 . Однако недиагональные элементы матрицы
2
Am1, Am2 , Bm1, Bm2 являются знакопеременными и удовлетворяют требованию условного
диагонального преобладания:
Cm 10 Am1 Am2 Bm1 Bm2 2 1
9
7.
2
Определение 2. Говорят, что квадратная матрица коэффициентов ai, j имеет
условное диагональное преобладание, если для любой ее строки
ai,i
n
j 1, j i
ai, j , i 1, n .
Оказывается, что для корректности формул прогонки вперед (19а) при решении
системы уравнений (18) достаточно выполнить условие более слабое, чем абсолютное
диагональное
преобладание
элементов
матрицы
ai,i
n
j 1, j i
ai, j Cm 2 A2m A1m 10 2 9 / 2 1 11 , но более сильное, чем условное
диагонального преобладания элементов матрицы (для коэффициентов левой части
n
уравнения (18)) ai,i ai, j Cm 2 A2m A1m 10 2 9 / 2 1 7 , а именно
j 1, j i
10 Cm 2 A2m A1m 2 9 / 2 1 10 .
Утверждение 3. Пусть квадратная пятидиагональная матрица коэффициентов
линейной системы уравнений
A1mu1m2 A2mu1m1 Cmu1m B1mu1m1 B2mu1m2 Fm , m 2, M 2
является:
1) симметрической: A1m B2m , A2m B1m , со знакочередующимися недиагональными
коэффициентами для определенности
A1m 0, A2m 0, Cm 0 ;
2) удовлетворяет условию (условию подчинения коэффициентов):
Cm 2 A2m A1m Cm 2 A2m A1m , A2m 2 A1m .
Тогда в краевой задаче Дирихле 0 u10 , 10 20 0, 1 u11, 11 21 0 :
1) 0 1m 1, 1/ 2 2m 0, m 0, n 2 ;
2) формулы прогонки вперед (19а) для коэффициентов 1m , 2m , m корректны.
Доказательство утверждения 3 проведем по индукции:
1) для базы индукции m = 2 имеем:
A22
A
B12 A22 21 A12 10 21
A
A
22 0, 22
22 1,
C2 A12 10 11 A12 20 A22 11 C2
C2
2 A22 A12 2 A22
A
A12
A
B22
A
1 1
12 0, 12
12
C2 A12 10 11 A12 20 A22 11 C2
C2
2 A22 A12 5 A12 5 2
12
22
A
A
sign(12 ) sign 22 1, sign( 22 ) sign 12 1 .
C2
C2
База индукции проверена. Пусть верно
A
1
1k 1, 2k , sign(1k ) sign 2k
2
Ck
A1k
1, sign( 2k ) sign
Ck
1, k 2, m 1 .
Тогда
161
1m
B1m A2m 2m1 A1m 1m2 2m1
Cm A1m 1m2 1m1 A1m 2m2 A2m 1m1
A2m A2m 2m1 A1m 1m2 2m1
Cm A1m 1m2 1m1 A1m 2m2 A2m 1m1
1/ 2 2m1 0, 1/ 2 2m1 1 1, 0 1m1 1, A2m A2m 1 2m1 A2m / 2,
A1m / 2 A1m1m22m1 0 , A2m A1m / 2 A2m 1 2m1 A1m1m22m1 A2m / 2 0 ,
A1m A1m1m21m1 0 , 0 A1m2m2 A1m / 2, 0 A2m1m1 A2m ,
Cm A1m Cm A1m1m21m1 A1m2m2 A2m1m1 Cm A1m / 2 A2m 0 ,
A2m / 2
Cm A1m / 2
2m
1m
A2m 1 2m1 A1m 1m2 2m1
Cm A1m 1m2 1m1 A1m 2m2 A2m 1m1
B2m
Cm A1m 1m2 1m1 A1m 2n2 A2m 1m1
A2m A1m / 2
A A1m / 2
2m
1,
Cm A1m / 2 A2m
A2m A1m / 2
A1m
A2m A1m / 2
A1m
5 / 2 A1m
2 1
.
5 2
Из предыдущих оценок следует, что знаменатель и числители формул заключены в
пределах
Cm A1m1m21m1 A1m2m2 A2m1m1 Cm A1m / 2 A2m A2m A1m / 2 0 ,
A2m 1 2m1 A1m1m22m1 A2m / 2 0, B2m A1m 0 .
Тогда с учетом предыдущих неравенств получим, что 0 1m 1, 1/ 2 2m 0 ;
2) ввиду доказанной первой части утверждения 3 имеем
0 1m 1, 1/ 2 2m 0, m 0, n 2
Cm A1m / 2 Cm A1m1m21m1 A1m2n2 A2m1m1 Cm A1m / 2 A2m A2m A1m / 2 0.
Поэтому знаменатель во всех трех формулах прогонки (20) 1m , 2m , m строго
меньше нуля, т.е. в ноль не обращается, а формулы прогонки корректны. Утверждение 3
доказано.
Замечание 3. В работе [4] показано, что достаточными условиями корректности
формул прогонки симметричной пятидиагональной матрицы является полуторное
абсолютное диагональное преобладание
ее элементов. В данном случае утверждение 3 указывает достаточные условия
корректности прогонки той же матрицы, но более слабые, чем даже абсолютное
диагональное преобладание ее элементов.
Рассмотрим равномерную норму погрешности процесса инициализации, т.е.
1
разности численного решения u m , полученного по формулам (13), (15), (16), и точного
решения первой части тестового примера 1 (для однородного уравнения)
u1m cos sin hm
sin 2 sin 2hm
2
, m 0, M , m u1m u1m .
Норма Чебышева определяется формулой max m max u1m u1m , программа
m1, M
m1, M
возвращает норму погрешности norma C = 5.174140550234796E-006 при M 200 и norma C =
6.465012549750071E-007
при
M 400 ,
тогда
200
400
5.174140550234796E-006
8.003 23
6.465012549750071E-007
алгебраический порядок погрешности алгоритма(13), (15), (16) равен
p 3,
т.е.
подтверждает приближение формулы (13) O 3 .
Последовательный алгоритм инициализации сначала на первом этапе по формулам
(13), (15), (16), а затем по формулам (14), (18), (19) с помощью программы дает
значение равномерной нормы norma C = 8.299974534053955E-008 при M 200 и norma C
= 5.173976233563415E-009 M 400 , тогда
200
400
8.299974534053955E-008
16.04 24 .
5.173976233563415E-009
То есть
162
алгебраический порядок погрешности алгоритма (13), (15), (16) и (14), (18), (19) равен
четырем ( p 4 ), что подтверждает формулу (14), а именно O 4 .
Построим явную разностную схему для решения однородного уравнения, учитывая
(3) для параметра z 1
n1
n
n
n
n
n 1
n
n
n 1
(20)
um
2um
z um
1 um1 2um um um1 um1 um , n 2, N , m 1, M 1.
Отметим, что формула (20) имеет бесконечный порядок аппроксимации, т.е. не
вносит дополнительной погрешности аппроксимации дифференциального уравнения
разностным уравнением.
Программа с учетом алгоритма инициализации по формулам (13), (15), (16), а затем
по формулам (14), (18), (19) явной формуле (20) для первой части задачи (однородного
уравнения) тестового примера 1
u1tt u1xx , x (0, ), t 0
u1 ( x, 0) sin( x), u1t ( x, 0) sin(2 x), x [0, ]
u1 (0, t ) u1 (, t ) 0, t 0
с точным решением u1 ( x,0) cos t sin x
sin 2t sin 2 x
2
, x [0, ], t 3 9.42477796
возвращает
равномерную норму относительной погрешности 7.214666558239686E-016 при M 50 и
норму 5.275261571720079E-015 при M 100 , t = 9.42477796076938.
Это означает что, во-первых, норма погрешности по формуле (20) не зависит от шага
сетки при z 1 , во-вторых, с увеличением вычислений при меньшем шаге накапливается
только большая абсолютная погрешность. В программе предусмотрен масштабный
параметр l 10 (в приведенном примере). Данный параметр позволяет экономить время
счета в l 2 100 раз, а, главное, число арифметических операций в l 2 100 , т.е. уменьшить
абсолютную погрешность, пропорциональную числу арифметических операций.
Сначала инициализация проводится с шагом по времени по формулам (13), (15),
(16), а затем по формулам (14), (18), (19), далее по явной формуле (20) с минимальными
шагами сетки h, решается волновое уравнение u1nm1 u1nm1 u1nm1 u1nm1, n 2, l , m 1, M 1
во временном промежутке 0,l , n 0, l . Среди решения в слое u1 (mh, l ), m 0, M и среди
начального слоя
выбираются узлы более редкой сетки
u1 (mh,0), m 0, M
и
решение
на
той
же
сетке
xm1 h l m1, m1 0, M / l , tn1 l n1, n1 0,1 ,
u1 (m1 h l ,0), u1 (m1 h l , l ), m1 0, M / l .
Далее
используется
формула
(20)
с
крупным
вектором
шага
l h, l ,1 z 2a2 / h2 h / a
u1nm111 u1nm111 u1nm111 u1nm111, n1 2, N / l , m1 1, M / l 1 .
(21)
Рассмотрим вторую задачу инициализации c использованием условий на трех
временных слоях ( x) 0, x [a, b], ut ( x,0) ( x,0) 0, f ( x, t ) 0 ,
u2tt u2 xx sin( x)sin(t ), x (0, ), t 0
sin t t cos t sin( x)
u2 ( x, t )
.
u2 ( x, 0) 0, u2t ( x, 0) 0, x [0, ]
2
u2 (0, t ) u2 (, t ) 0, t 0,
Формула (13) перейдет в u(2) u 2 3u0 4u1 2u 4u1 , с учетом (3) получим
n1
n1
n
n
n
2 2
1
1
1
2
1
um
um
2 1 z um
z um
1 um1 f m,n , um um 2 1 z um z um1 um1 f m,1 4um
zu1m1 2
1 z
u1m
zu1m1
f m,1
2
um
f m,1 .
2
(22)
В трехдиагональной матрице системы уравнений (22) коэффициенты
Am z, Cm 2 1 z , Bm z, Fm um
f m,12
163
обеспечивают условие корректной прогонки вперед Cm Am Bm 0 2 1 z 2 z 0 [3,
с. 45].
Программа с использованием метода прогонки для алгоритма инициализации
(23) относительно точного решения u2 ( x, )
sin cos sin( x) дает равномерную
2
норму погрешности
norma C = 1.291625408111898E-006 при M 200 и norma C = 1.614815612291833E-007 при
M 400 ,
откуда
200
400
1.291625408111898E-006
7.9986 23
1.614815612291833E-007
алгебраический
порядок
погрешности p 3 .
Рассмотрим вторую задачу инициализации на четырех временных слоях, с учетом
формул (14), (3) получим
u(3) u3
откуда
11 0
9
9
u 9u1 u 2 3u 9u1 u 2 ,
2
2
2
n1
n1
n
n
n
2
3
1
2
2
2
2
um
um
2 1 z um
z um
1 um1 f m,n um um 2 1 z um z um1 um1 f m,2
9 2
5
2
2
2
2
9u1m um
8u1m 2 z um
z um
1 um1 f m,2
2
2
5
8u1m 2 z um
2 1 z u1m z u1m1 u1m1 f m,12
2
1
1
1
2
1
1
1
2
2
z um
1 2 1 z um1 z um 2 um f m1,1 um1 2 1 z um1 z um um2 f m1,1 f m,2
1
1
z 2u1m2 z 4 z 2 u1m1 u1m 3 z 6 z 2 z 4 z 2 u1m1 z 2u1m 2
2
2
2
5
f m,2 2 z f m,1 z f m1,1 f m1,1 .
2
(23)
Для параметра z 1 уравнение (23) переходит в уравнение (24)
9
9
9
u1m2 u1m1 10u1m u1m1 u1m 2 f m,2 f m,1 f m1,1 f m1,1 2 .
2
2
2
(24)
Отметим, что коэффициенты пятидиагональной матрицы системы уравнений (24)
Am1, Am2 , Cm , Bm1, Bm2 :
9
9
9
Am1 1, Am2 , Cm 10, Bm1 , Bm2 1, Fm f m,2 f m,1 f m1,1 f m1,1 2
2
2
2
совпадают с коэффициентами матрицы системы (18) за исключением Fm . Однако
корректность формул прогонки для пятидиагональной матрицы (18), которая
определяется только коэффициентами Am1, Am2 , Cm , Bm1, Bm2 , доказана с помощью
утверждения 3, следовательно, корректность формул прогонки для системы уравнений
(24) также доказана.
Программа с использованием формул (16), (22), а затем (19), (24) в двухэтапном
алгоритме инициализации относительно точного решения u2 ( x, )
sin cos sin( x)
2
возвращает равномерную норму погрешности norma C = 2.028797013322345E-008 при
M 200 ,
M 400 ,
а
norma
C
=
1.268260177248376E-009
при
откуда
200
400
2.028797013322345E-008
15.997 24 16 ,
1.268260177248376E-009
т.е. алгебраический порядок погрешности
для указанного алгоритма инициализации методом прогонки равен четырем ( p 4 ).
Наконец, нужно написать основную рекуррентную разностную формулу для
решения неоднородного уравнения с нулевыми начальными условиями. Для параметра
z 1 преобразуем формулу (3)
164
n1
n1
n
n
n
2
n1
n
n
2
n
um
um
2 1 z um
z um
1 um1 f m,n um um1 um1 f m,n R(um ) .
(25)
В формуле (25) невязку аппроксимации неоднородного волнового уравнения (1)
разностным уравнением (2) запишем согласно формуле (8) для z 1 n 2, N , m 1, M 1
n 1
n
n
n 1
2
um
um
1 um 1 um f m,n
2
2
2 4 2 f m, n f m, n
a
4!
x 2
t 2
2 6 4 f m , n
4 f m, n 4 f m, n
a4
a2
6!
x 4
x 2 t 2
t 4
6
6 f m, n
6 f m, n 6 f m, n
28 6 f m,n
a
a4
a2
8!
x6
x 4 t 2
x 2 t 4
t 6
8
8
8
8
8
2 8 f m, n
6 f m, n
4 f m, n
2 f m, n f m, n
a
a
a
a
10!
x8
x6 t 2
x 4 t 4
x 2 t 6
t 8
10
(26)
10
10 f m,n
10 f m,n
10 f m,n
10 f m, n 10 f m, n
212 10 f m,n
a
...
a8
a6
a4
a2
12!
x10
x8t 2
x6 t 4
x 4 t 6
x 2 t 8
t10
Для примера 1 f ( x, t ) sin( x)sin(t ), a 1 согласно формуле (26) получим
явную
разностную схему
2 24 36 48 510 612
n 1
n
n
n 1
um
um
... .
1 um1 um 2 f m,n
6!
8!
10! 12!
2! 4!
Поскольку 1 cos()
2 4 6
d
2 24 36 48 510 612
...
... , то
1 cos()
2! 4! 6!
2 d
2! 4!
6!
8!
10! 12!
n1
n
n
n1
n
n
n1
um
um
1 um1 um sin f m,n um1 um1 um sin sin(mh)sin(n) ,
(27)
n 1, N , m 1, M 1 .
В формуле (27) для бесконечного функционального ряда получена производящая
функция sin fm,n .
Аналогично алгоритму (21) можно провести укрупнение шага в неоднородном
уравнении. Сначала инициализация проводится с шагом по времени по формулам (16),
(22), а затем по формулам (19), (24), далее по явной формуле (26) с минимальными
шагами
сетки
решается
волновое
уравнение
h,
1
1
u2nm
u2nm1 u2nm1 u2nm
sin sin(mh)sin(n), n 2, ll , m 1, M 1
во временном промежутке
0,l , n 0, l . Среди решения в слое u2 (mh, l ), m 0, M и среди начального слоя
выбираются
узлы
более
редкой
сетки
u2 (mh,0) 0, m 0, M
xm1 h l m1,
m1 0, M / l , tn1 l n1, n1 0,1 и решение на ней u2 (m1 h l ,0) 0, u2 (m1 h l , l ), m1 0, M / l .
Далее используется формула (27) с крупным шагом l h, l , 1 z 2a2 / h2 h / a
u2n1m11 u2n1m11 u2n1m11 u2n1m11 l sin l sin(m1 h l )sin(n1 l ), n1 2, N / l , m1 1, M / l 1 .
(28)
Программа с учетом алгоритма укрупнения шага для тестового примера 1
u2tt u2 xx sin( x)sin(t ), x (0, ), t 0,
sin t t cos t sin( x)
u2 ( x, t )
u2 ( x, 0) 0, u2t ( x, 0) 0, x [0, ],
2
u2 (0, t ) u2 (, t ) 0, t 0,
sin t t cos t sin( x)
, x [0, ], t 3 9.42477796
с точным решением u2 ( x, t )
2
возвращает
равномерную норму относительной погрешности norma C = 3.769546289141946E-015
при M 100, l 10 , t = 9.42477796076938.
165
Для суммы решений
u ( x, t )
sin t t cos t sin( x)
2
cos t sin x
sin 2t sin 2 x
2
программа
возвращает равномерную норму относительной погрешности norma C =
7.578604648156152E-016. Следовательно, мы можем сказать, что приведенные нами
алгоритмы численного решения волнового неоднородного уравнения на отрезке имеют
двойную точность относительной погрешности 10-16.
Таблица 1.
x
0.000000000000000E+000
0.314159265358979
0.628318530717959
0.942477796076938
1.25663706143592
1.57079632679490
1.88495559215388
2.19911485751286
2.51327412287183
2.82743338823081
3.14159265358979
exact
0.000000000000000E+000
1.14719128466915
2.18208749344321
3.00338577486150
3.53069173081718
3.71238898038469
3.53069173081718
3.00338577486150
2.18208749344321
1.14719128466915
4.546215133239269E-016
numerical
0.000000000000000E+000
1.14719128466915
2.18208749344321
3.00338577486150
3.53069173081718
3.71238898038469
3.53069173081718
3.00338577486150
2.18208749344321
1.14719128466915
0.000000000000000E+000
В таблице используются следующие обозначения: x – координата узла; exact,
numerical – точное и численное решения для примера 1.
Тестовый пример 2.
utt u xx sin( x)t , x (0, ), t 0
u ( x, 0) sin( x), ut ( x, 0) sin(2 x), x [0, ]
u (0, t ) u (, t ) 0, t 0.
Можно проверить, что решением последней задачи является функция
u ( x, t ) cos t sin x
sin 2t sin 2 x
2
sin x t sin t .
Применяя формулу (27) для неоднородной части f ( x, t ) sin( x)t , a 1 , получим
2 4 6 8 10 12
n 1
n
n
n 1
um
um
...
1 um1 um 2 f m,n
2! 4! 6! 8! 10! 12!
n
n
n1
n
n
n1
um
1 um1 um 2 1 cos f m,n um1 um1 um 2 1 cos sin(mh)(n), m 1, M 1, n 1, N 1.
В данном случае мы получили другую производящую функцию 2 1 cos fm,n .
Повторяя вычислительные алгоритмы для примера 1, получим, что программа при
M 100, l 10 , t = 9.42477796076938 для примера 2 возвращает для суммы решений
u( x, t ) cos t sin x
sin 2t sin 2 x
2
sin x t sin t
равномерную
норму
относительной
погрешности norma C = 3.005569483512412E-015.
Относительная погрешность определяется как дробь, числитель которой есть равномерная
норма абсолютной погрешности на последнем временном слое, а знаменатель равен
среднему арифметическому по всем узлам от модуля точного решения. Прямое
использование ряда в виде формулы
2 4 6 8 10 12
n 1
n
n
n 1
um
um
... дает значение относительной
1 um1 um 2 f m,n
2! 4! 6! 8! 10! 12!
погрешности norma C = 2.337665153842987E-015, т.е. не хуже, чем с помощью
166
производящей функции. Очевидно, применение производящих функции экономнее для
решения волнового уравнения в двухмерном и трехмерном случаях.
Таблица 2. (для примера 2)
x
0.000000000000000E+000
0.314159265358979
0.628318530717959
0.942477796076938
1.25663706143592
1.57079632679490
1.88495559215388
2.19911485751286
2.51327412287183
2.82743338823081
3.14159265358979
exact
0.000000000000000E+000
2.60339956371325
4.95196023917890
6.81578854409794
8.01243997792951
8.42477796076938
8.01243997792951
6.81578854409794
4.95196023917890
2.60339956371325
1.031703662030091E-015
numerical
0.000000000000000E+000
2.60339956371325
4.95196023917890
6.81578854409794
8.01243997792951
8.42477796076938
8.01243997792951
6.81578854409794
4.95196023917889
2.60339956371325
0.000000000000000E+000
Тестовый пример 3.
utt u xx sin( x) ch t , x (0, ), t 0
u ( x, 0) sin( x), ut ( x, 0) sin(2 x), x [0, ]
u (0, t ) u (, t ) 0, t 0.
Точным решением последнего примера является функция
u ( x, t ) cos t sin x
sin 2t sin 2 x
2
sin x ch t cos t
2
,
отметим, что неоднородная часть уравнения
f ( x, t ) sin( x) ch t , a 1
однородному волновому уравнению (9) комплексного аргумента a 2
2 f
x 2
удовлетворяет
2 f
t 2
0, a 2 0 .
В
этом случае согласно формуле (11) запишем невязку
4k 2 f m,n
n
n
n 1
2
um
1 um1 um f m,n
4k
4
k
2
!
t
k 1
4k
n 1
n
n
n 1
2
um
um
1 um1 um f m,n 2
4
8
12
2 6 10 14
26 f m,n 210 f m,n 214 f m,n
n
n
n 1
... um
u
u
2
f
...
1
m1
m
m,n
4
8
12
6! t
10! t
14! t
2! 6! 10! 14!
1
e e
cos()
2
2 4
1
2 2 4
2 k
2 k
e e cos() 1 ...
... 1 ... (1) k
2
2
2! 4!
2k ! 2! 4!
2k !
6 10 14
2 4 k
2 2
...
... .
6! 10! 14!
2 4k !
sin x ch t cos t
sin 2t sin 2 x
s
Для точного решения u( x, t ) cos t sin x
программа
2
2
в примере 3 для M 100, l 10 , t = 9.42477796076938 возвращает норму относительной
n
n
n1
um
1 um1 um f m,n ch() cos() ,
так как ch() cos()
погрешности norma C = 2.557857845110683E-015. Производящая функция равна
f m,n ch() cos() .
Таблица 3. (для примера 3)
x
exact
numerical
167
0.000000000000000E+000
0.314159265358979
0.628318530717959
0.942477796076938
1.25663706143592
1.57079632679490
1.88495559215388
2.19911485751286
2.51327412287183
2.82743338823081
3.14159265358979
0.000000000000000E+000
957.152937976024
1820.61307750630
2505.85892405305
2945.81383976773
3097.41197215405
2945.81383976773
2505.85892405305
1820.61307750630
957.152937976024
3.793110381505353E-013
0.000000000000000E+000
957.152937976022
1820.61307750629
2505.85892405305
2945.81383976773
3097.41197215405
2945.81383976773
2505.85892405305
1820.61307750630
957.152937976023
0.000000000000000E+000
Программа для решения волнового уравнения на отрезке написана на языке Fortran.
В ней используются условия из первого примера. Помимо численного решения, если
известно аналитическое решение, с помощью программы можно вычислить норму
Чебышева для невязки как на этапе инициализации, так и на последнем временном слое
решения. Норма относительной погрешности невязки выводится по отдельности для
частных подзадач с неоднородными волновым уравнением и начальными условиями, а
также относительной погрешности для общей задачи. Если аналитическое решение не
известно, то в первом столбце таблицы выводятся координаты узлов сетки, в третьем
столбце – численное решение. Вычисление норм в этом случае не определено.
program wave
integer(8), parameter::n=100,n1=10,ll=n/n1,m=3;integer(8)::i,j,k
real(8):: num(0:n+1,0:m*n+1),num0(0:n+1,0:m*n+1)
real(8)::par(0:n+1),sum,s,tay2,f00(0:n+1)
real(8)::res1(0:n+1),l(0:n+1),f0(0:n+1),aa33(0:n+1), res2(0:n+1)
real(8):: aa(0:n+1),bb(0:n+1),cc(0:n+1),ff(0:n+1),ccc(0:n+1),otv(0:n+1),otv0(0:n+1)
real(8)::eps(0:n+1),nu(0:n+1),eps0(0:n+1),f11(0:n+1),f22(0:n+1)
real(8)::a1(0:n+1), a2(0:n+1), b1(0:n+1), b2(0:n+1),aa11(0:n+1),cc11(0:n+1),bb11(0:n+1)
real(8)::eps00(0:n+1),otv00(0:n+1), l1(0:n+1),l2(0:n+1),res3(0:n+1)
real(8):: aa1(0:n+1),bb1(0:n+1),aa2(0:n+1),bb2(0:n+1),aa3(0:n+1),bb3(0:n+1)
real(8)::max1,max2,max3,max4,max44,epss(0:n+1);real(8)::max5,ch,t,yy,max55,mm,tay1,c1
real(8)::u1,u0,f1,f2,fan,z,vel,x,y,a,b,c,d,pi,h1,tay,tt,x1,x2,x3,x4,hh,fy
!ch(t)=(dexp(t)+dexp(-t))/2d0;
fy(x,tay)=dsin(x)*dsin(tay);u1(x)=dsin(2d0*x);u0(x)=dsin(x)
fan(x,t)=dsin(x)*dcos(t)+dsin(2d0*x)*dsin(2d0*t)/2d0;f1(x,tay)=-2d0*u0(x)-2d0*tay*u1(x)
f2(x,t)=dsin(x)*(dsin(t)-t*dcos(t))/2d0;pi =2d0*dasin(1d0);a=0d0;b=pi;
z=1d0;vel=1d0;max1=-100d0;max2=-100d0;max4=-100d0;max44=-100d0
max5=-100d0;max55=-1000d0;mm=-100d0;h1=(b-a)/dfloat(n);tay=dsqrt(z)*h1/vel
do k=0,n;x=a+h1*dfloat(k);x2=x+h1;x1=x-h1;x4=x+2d0*h1;x3=x-2d0*h1
aa(k)=1d0;bb(k)=1d0;cc(k)=4d0;f0(k)=f1(x,tay);ff(k)= 3d0*u1(x)*tay+u0(x1)+u0(x2)+u0(x)
a1(k)=1d0;a2(k)=-4.5d0;b2(k)=1d0;b1(k)=-4.5d0;ccc(k)=-10d0;aa1(k)=1d0
bb3(k)=1d0;f11(k)=-fy(x,tay)*tay*tay;aa11(k)=z;bb11(k)=z;cc11(k)=2d0+2d0*z
f22(k)=-((fy(x1,tay)+fy(x2,tay))+fy(x,2d0*tay)-4.5d0*fy(x,tay))*tay*tay
enddo;nu(0)=0d0;nu(n)=0d0;l(0)=0d0;l(n)=0d0;res1(0)=nu(0);res1(n)=nu(n)
do k=1,n-1;x=a+h1*dfloat(k);f0(k)=f1(x,tay);nu(k)=(aa(k)*nu(k-1)-f0(k))/(cc(k)-aa(k)*l(k-1))
l(k)= bb(k)/(cc(k)-aa(k)*l(k-1));enddo;do k=n-1,1,-1;res1(k)= l(k)*res1(k+1)+nu(k);enddo
do j=0,n;x=a+h1*dfloat(j);par(j)=fan(x,tay);eps(j)= par(j)-res1(j)
if( eps(j)<=0d0 )then;eps(j)=-eps(j);else;endif;enddo;do j=0,n
if( eps(j)>=max1 )then;max1= eps(j);endif;enddo;print*,"norma C1=",max1
do k=0,n;res2(k)= res1(k);enddo
168
l1(0)=0d0;l1(1)=0d0;l2(0)=0d0;l2(1)=0d0;l1(n)=0d0;l2(n)=0d0;l1(n-1)=0d0
l2(n-1)=0d0;nu(n-1)=res2(n-1);nu(n)=res2(n);nu(1)=res2(1);nu(0)=res2(0);do j=2,n-2,1
l1(j)=(a1(j)*l1(j-2)*l2(j-1)+a2(j)*l2(j-1)+b1(j))/(ccc(j)-a1(j)*l1(j-2)*l1(j-1)-a2(j)*l1(j-1)a1(j)*l2(j-2))
l2(j)=b2(j)/(ccc(j)-a1(j)*l1(j-2)*l1(j-1)-a1(j)*l2(j-2)-a2(j)*l1(j-1))
nu(j)=(a1(j)*l1(j-2)*nu(j-1)+a2(j)*nu(j-1)+a1(j)*nu(j-2)-ff(j))/(ccc(j)-a1(j)*l1(j-2)*l1(j-1)a1(j)*l2(j-2)-a2(j)*l1(j-1)); enddo
do j=n-2,0,-1;res2(j)=l1(j)*res2(j+1)+l2(j)*res2(j+2)+nu(j);enddo;do j=0,n
x=a+h1*dfloat(j);par(j)=fan(x,tay);eps(j)= par(j)-res2(j);if( eps(j)<=0d0 )then
eps(j)=-eps(j);else;endif;enddo;do j=0,n;if( eps(j)>=max1 )then;max1= eps(j);endif;enddo
do j=2,n-2;if(eps(j)>=max2)then;max2=eps(j);endif;if(mod(j,n1)==0)then;endif;enddo
print*,"norma C2=",max2;do i=0,n;if(mod(i,n1)==0)then;endif;enddo
do j=0,n1;x=a+h1*dfloat(j);num0(0,j)=0d0;num0(n,j)=0d0;num0(j,0)=u0(x);num0(j,1)=res2(j)
enddo;do j=1,n1-1;do i=1,n-1
num0(i,j+1)=num0(i+1,j)+num0(i-1,j)-num0(i,j-1);enddo;enddo;tay1=tay*dfloat(n1)
hh=h1*dfloat(n1);t=dfloat(n*m)*tay;num0(0,1)=0d0;num0(ll,1)=0d0;num0(0,0)=0d0;num0(ll,0)=0d
do i=0,ll;x=a+hh*dfloat(i);num0(i,1)=num0(i,n1);num0(i,0)=u0(x)
num0(0,i)=0d0;num0(ll,i)=0d0;otv(i)=fan(x,t);enddo
do j=0,ll*m;num0(0,j)=0d0;num0(ll,j)=0d0;enddo
do j=1,ll*m-1;do i=1,ll-1;num0(i,j+1)=num0(i+1,j)+num0(i-1,j)-num0(i,j-1);enddo;enddo
do i=0,ll;eps0(i)=num0(i,ll*m)-otv(i);if(eps0(i)<0d0)then;eps0(i)=-eps0(i);endif
if(eps0(i)>max44)then;max44=eps0(i);endif
s=s+abs(otv(i));enddo;print*,"norma C404=",max44,max44*dfloat(ll)/s
nu(0)=0d0;nu(n)=0d0;l(0)=0d0;l(n)=0d0;res1(0)= nu(0);res1(n)= nu(n)
do k=1,n-1;x=a+h1*dfloat(k);nu(k)=(aa11(k)*nu(k-1)-f11(k))/(cc11(k)-aa11(k)*l(k-1))
l(k)= bb11(k)/(cc11(k)-aa11(k)*l(k-1));enddo;do k=n-1,1,-1;res1(k)=
l(k)*res1(k+1)+nu(k);enddo
do j=0,n;x=a+h1*dfloat(j);par(j)=f2(x,tay);eps(j)= par(j)-res1(j)
if( eps(j)<=0d0 )then;eps(j)=-eps(j);else;endif;enddo;do j=0,n
if( eps(j)>=max4 )then;max4= eps(j);endif;enddo;print*,"norma C101=",max4;do k=0,n
res2(k)= res1(k);enddo;l1(0)=0d0;l1(1)=0d0;l2(0)=0d0;l2(1)=0d0
l1(n)=0d0;l2(n)=0d0;l1(n-1)=0d0;l2(n-1)=0d0;nu(n-1)=res2(n-1)
nu(n)=res2(n);nu(1)=res2(1);nu(0)=res2(0);do j=2,n-2,1
l1(j)=(a1(j)*l1(j-2)*l2(j-1)+a2(j)*l2(j-1)+b1(j))/(ccc(j)-a1(j)*l1(j-2)*l1(j-1)-a2(j)*l1(j-1)a1(j)*l2(j-2))
l2(j)=b2(j)/(ccc(j)-a1(j)*l1(j-2)*l1(j-1)-a1(j)*l2(j-2)-a2(j)*l1(j-1))
nu(j)=(a1(j)*l1(j-2)*nu(j-1)+a2(j)*nu(j-1)+a1(j)*nu(j-2)-f22(j))/(ccc(j)-a1(j)*l1(j-2)*l1(j-1)a1(j)*l2(j-2)-a2(j)*l1(j-1))
enddo ;do j=n-2,0,-1;res2(j)=l1(j)*res2(j+1)+l2(j)*res2(j+2)+nu(j);enddo
do j=0,n;x=a+h1*dfloat(j);par(j)=f2(x,tay);eps(j)= par(j)-res2(j);if(mod(j,n1)==0)then;endif
if( eps(j)<=0d0 )then;eps(j)=-eps(j);else;endif;enddo;do j=0,n
if( eps(j)>=max5 )then;max5= eps(j);endif;enddo;do
j=0,n;if(eps(j)>=max5)then;max5=eps(j);endif;enddo
print*,"norma C202=",max5;do j=0,n;x=a+h1*dfloat(j);num(j,0)=0d0;num(j,1)=res2(j);enddo
do j=1,n1-1;do i=1,n-1;x=a+h1*dfloat(i);y=tay*dfloat(j)
num(i,j+1)=num(i+1,j)+num(i-1,j)-num(i,j-1)+fy(x,t)*tay*dsin(tay);enddo;enddo
do i=0,n;res3(i)=num(i,n1);enddo;t=tay*dfloat(n*m);print*,"t=",t
do i=0,ll;x=a+hh*dfloat(i);num(i,1)=res3(i*n1);num(i,0)=0d0;otv(i)=f2(x,t);enddo
do j=0,ll*m;num(0,j)=0d0;num(ll,j)=0d0;enddo;do j=1,ll*m-1;do i=1,ll-1
x=a+hh*dfloat(i);t=tay1*dfloat(j)
num(i,j+1)=num(i+1,j)+num(i-1,j)-num(i,j-1)+fy(x,t)*tay1*dsin(tay1);enddo;enddo;s=0d0
169
do i=0,ll;eps(i)=num(i,ll*m)-otv(i);if(eps(i)<=0d0)then;eps(i)=-eps(i);endif
if(eps(i)>=max55)then; max55=eps(i);endif;if(otv(i)>=maax)then;maax=otv(i);endif;enddo
print*,"norma C505=",max55,max55*dfloat(ll)/maax;t=tay1*dfloat(m*ll);s=0d0
do i=0,ll;otv00(i)=num(i,ll*m)+num0(i,ll*m);x=a+hh*dfloat(i);res3(i)=f2(x,t)+fan(x,t)
epss(i)=otv00(i)-res3(i);if(epss(i)<0d0)then;epss(i)=-epss(i);endif
s=s+res3(i);if(epss(i)>mm)then;mm=epss(i);endif;print*,x,res3(i),otv00(i)
enddo;print*,"eps=(norma C)/abs(m)_=",mm*dfloat(ll)/s,"abs(m)_=",s/dfloat(ll);end program
wave
В работе получены результаты:
1) Показано, что явная разностная схема задачи (2) аппроксимирует одномерное
однородное волновое уравнение на отрезке задачи (1) с оптимальным параметром сетки
z 1 с бесконечным алгебраическим порядком аппроксимации, при этом явная разностная
схема спектрально устойчива.
2) Для неоднородного волнового уравнения с параметром z 1 невязка разностной
схемы может быть учтена и явно выражена только через двойную сумму от частных
производных правой части неоднородного уравнения (7).
3) Введено понятие волнового уравнения комплексного аргумента и рассмотрены
свойства его решения. Если правая часть неоднородного волнового уравнения является
решением однородного волнового уравнения комплексного аргумента, то невязка
упрощается от суммы по двум индексам до суммы по одному индексу (11), что
качественно уменьшает число вычислений.
4) Построен алгоритм инициализации задачи, то есть аппроксимация второго
временного слоя решения по известным начальным данным (начальным смещению и
скорости точек отрезка).
5) Инициализация сводится к решению СЛАУ с симметричной трехдиагональной
матрицей
с погрешностью
аппроксимации
затем
к
симметричной
O 3 ,
пятидиагональной матрице погрешностью аппроксимации O 4 . Найдены ослабленные
достаточные условия корректности формул прогонки для пятидиагональной матрицы
(условия более слабые, чем диагональное преобладание элементов матрицы).
6) погрешностью аппроксимации O 4 . Найдены ослабленные достаточные условия
корректности формул прогонки для пятидиагональной матрицы (условия более слабые,
чем диагональное преобладание элементов матрицы).
7) Предложен алгоритм масштабирования узловой решетки по числу узлов в l 2 раз,
что сокращает число вычислений в сотни раз при сохранении вычислений с двойной
точностью (15-16 первых десятичных знаков результата).
8) Программа тестировалась тремя построенными аналитическими примерами.
Показано, что в примерах бесконечный функциональный ряд в разностной схеме
относительно временного шага можно заменить производящей функцией от , что
качественно снижает время вычислений и увеличивает их точность. С помощью
программы показано, что построенный алгоритм дает решение 3 примеров с двойной
точностью. В самом общем случае с помощью формулы (26) в виде двойного ряда можно
достичь 14-го порядка погрешности (приближение O 14 ), причем формула (26) имеет ту
же относительную погрешность решения, как и с применением производящей функции,
т.е. с двойной точностью.
170
ЛИТЕРАТУРА
1.
2.
3.
4.
5.
6.
7.
8.
Пикулин, В.П. Практический курс по уравнениям математической физики : учеб.
пособие / В.П. Пикулин, С.И. Похожаев. – М. : Наука,1995. – 224 с.
Методы ускорения газодинамических расчетов на неконструированных сетках / К.Н.
Волков [и др.]. – М. : Физматлит, 2013. – 536 с.
Самарский, А.А. Численные методы решения обратных задач математической
физики : учеб. пособие / А.А. Самарский, П.Н. Вабищевич. – М. : Изд-во ЛКИ, 2014. –
480 с.
Бахвалов, Н.С. Численные методы в задачах и упражнениях : учеб. пособие / Н.С.
Бахвалов, А.В. Лапин, Е.В. Чижонков. – 2-е изд., перераб. и доп. – М. : БИНОМ.
Лаборатория знаний, 2010. – 240 с. : ил.
Киттель, Ч. Введение в физику твердого тела : учеб. руководство : пер. с англ. / Ч.
Киттель. – 4 изд. – М. : Наука, 1978. – 792 с.
Вакуленко, С.П. К методу оценки состояния железнодорожного полотна / С.П.
Вакуленко, К.А. Волосов, Н.К. Волосова // Мир транспорта. – 2016. – Т. 14, № 3 (64). –
С. 20–35.
Пастухов, Д.Ф. Аппроксимация уравнения Пуассона на прямоугольнике повышенной
точности / Д.Ф. Пастухов, Ю.Ф. Пастухов // Вестник Полоцкого университета. Серия
С, Фундаментальные науки. – 2017. – № 12. – С. 62–77.
Пастухов, Д.Ф. Задача построения поля линий тока по температурному разрезу / Ю.Ф.
Пастухов, Д.Ф. Пастухов // Вестник Полоцкого университета. Серия С,
Фундаментальные науки. – 2015. – № 4. – С. 27–36.
Поступила 28.02.2018
OPTIMUM PARAMETER TO APROXIMATIONS RAZNOSTNOY SCHEMES
OF THE WAVE EQUATION ON LENGTH
D. PASTUKHOV, Y. PASTUKHOV, N.VOLOSOVA
The Offered algorithm of the decision initial- marginal problem for lumpy wave equation
on length with double accuracy. The Algorithm is founded on choice of the optimum parameter,
providing endless algebraic order to approximations to uniform equation. For decision of the
system of the linear equations with five diagonal matrixes with marginal condition Dirihle is
proved sufficient conditions to correctness molded racing onward more weak, than condition of
the diagonal prevalence her(its) element. Using the algorithm of the integration cell nets and use
the method producing function gives double accuracy to relative inaccuracy of the decision even
rough net with number of the nodes equal 300.
Keywords: method producing function, initializing the problem, weak sufficient conditions
to correctness molded racing symmetrical five diagonal matrixes.
171
Приложение2
УДК 517.6 517.958
АППРОКСИМАЦИЯ УРАВНЕНИЯ ПУАССОНА НА ПРЯМОУГОЛЬНИКЕ
ПОВЫШЕННОЙ ТОЧНОСТИ
Пастухов Д.Ф., Пастухов Ю.Ф.
Аннотация: Предложен алгоритм решения уравнения Пуассона на прямоугольнике
повышенной точности с восьмым алгебраическим порядком погрешности. Для
симметрической пятидиагональной матрицы получены формулы прогонки системы
линейных уравнений с краевым условием Дирихле. Доказаны достаточные условия
корректности формул прогонки вперёд для пяти диагональной симметрической
матрицы. Разложение в ряд с симметричным шаблоном для оператора Пуассона
содержит только частные производные чётного порядка по каждой из координат.
Ключевые слова: численные методы решения эллиптических уравнений математической
физики, достаточные условия корректности формул прогонки пятидиагональной матрицы.
THE APROXIMATION of the EQUATION of the POISSON ON RECTANGLE RAISED
ACCURACY
Pastuhov D.F., Pastuhov YU.F.
The Abstract: is Offered algorithm of the decision of the equation of the Poisson on rectangle
raised accuracy with eighth algebraic rather inaccuracy. Formulas of the dugout of the system of
the linear equations are received For symmetrical five diagonal matrixes with marginal condition
Dirihle. It Is Proved sufficient conditions to correctness molded the dugout for five diagonal
symmetrical matrixes onward. The Decomposition in row Taylor symmetrical pattern for
operator of the Poisson contains only quotient of the derived even order on each of coordinates.
The Keywords: the numerical methods of the decision of the elliptical equations mathematical
physicists, sufficient conditions to correctness molded the dugout five diagonal matrixes.
Введение. Задачи с численным решением уравнения Пуассона встречаются во многих
физико-технических приложениях, большой класс краевых задач математической физики
также сводится к уравнению Пуассона на прямоугольнике. В статье[1] Блохина Н.С.
исходную гидродинамическую задачу сводит к замкнутой системе четырёх уравнений в
частных производных относительно функций тока и вихря жидкости, три из которых
являются уравнениями параболического типа, а четвёртое представляет уравнение
Пуассона относительно функции тока, а правая часть уравнения равна функции вихря.
Система данных уравнений решается многократно по циклу методом чередующихся
направлений. Следовательно, точность аппроксимации уравнения Пуассона является
актуальной задачей в прикладной математике. Важно выработать численные алгоритмы
решения уравнения Пуассона с большим алгебраическим порядком погрешности для
экономии времени счёта и сохранения небольшой нормы погрешности. На стр.227[2]
приведена явная разностная формула на девяти точечном шаблоне, позволяющая найти
решение уравнения Пуассона методом простой итерации. Симметричным
девятиточечным шаблоном можно покрыть весь прямоугольник по общим границам, и он
является универсальным внутри прямоугольника и на его сторонах (границах).
Приведенная авторами формула простой итерации даёт четвёртый порядок невязки
уравнения Пуассона в равномерной норме и общую относительную погрешность
10 5 10 6 . Такой же порядок относительной погрешности приводится в программах для
решения эллиптических уравнений у А.А. Самарского[3].
В данной работе нами предложен алгоритм для решения уравнения Пуассона. По
формуле простой итерации и с шестым порядком погрешности находятся узловые
значения решения вблизи четырёх вершин прямоугольника. Методом прогонки с
трёхдиагональной матрицей, устойчивость которой обеспечивает частично неявная
172
разностная формула с шестым порядком погрешности, находятся приграничные узловые
значения численного решения. Внутренние узловые значения решения на следующем
итерационном слое находятся по частично неявной итерационной формуле с десятым
порядком погрешности на симметричном 25 точечном шаблоне с пятидиагональной
матрицей прогонки. Кроме вывода аппроксимирующих формул с указанными порядками
погрешности нами получено достаточное условие корректности метода прогонки с
пятидиагональной матрицей. Приведенный нами алгоритм даёт восьмой порядок (при
числе узлов порядка 1600) невязки уравнения Пуассона в равномерной норме и общую
относительную погрешность 10 13 10 14 при одних и тех же параметрах задачи, что и в
работе[2]. Приведен пример, решённый аналитически, и написана программа на языке
FORTRAN, поддерживающем максимальные размерности массивы решения.
Пользователи языка C++ могут запускать программу из оболочки Microsoft Visual Studio
общей с FORTRAN и с C++.
В качестве теста для разностной схемы решим уравнение Пуассона на
прямоугольнике:
2u 2u
x 2 y 2 sin( x), 0 x, y
(1)
u 0, y u , y sin y
u x,0 u x, sin x
0 x, y
Проведём редукцию линейной задачи (1)[4]. Т.е. сведём решение (1) к сумме решений 3
простых систем:
ux, y u1 x, y u 2 x, y u 3 x, y . Первая система содержит одно неоднородное краевое
условие:
2 u1 2 u1
0, 0 x, y
2
2
x
y
1) u1 0, y u1 , y sin y
u x,0 u x, 0
1
1
x
,
y
Решаем задачу 1) методом разделения переменных ux, y X ( x)Y ( y), X ''Y XY '' 0
Выберем функцию Y y sin y , совпадающую с неоднородным граничным условием на
первой части границы и автоматически обращающее в 0 решение на второй части
границы. Тогда для X x :
X '' X 0
X '' sin y X sin y 0
(2)
X 0 X 1
Общее решение последней краевой задачи находим на множестве гиперболических
e x ex
e x ex
, chx
функций X x Ashx Bch x , shx
.
2
2
Используя граничные условия:
1 ch
X 0 Ash0 Bch 0 B 1; X Ash ch 1 A
sh
1 ch
shx chx sin y
Запишем решение 1) частной задачи: u1 x, y
sh
Ищем решение второй частной задачи
173
2u2 2u2
0, 0 x, y
2
2
x
y
2) u 2 0, y u 2 , y 0
u x,0 u x, sin x
2
2
0 x, y
Аналогично, разделяя переменные, выбираем функцию X x sinx , автоматически
удовлетворяющую первому граничному условию 2) и совпадающую
со вторым
граничным условием.
Y '' Y 0
Y '' sin x Y sin x 0
(3)
Y 0 Y 1
Краевые задачи (3) и (2) совпадают с точностью до замены переменных
X Y , x y .Поэтому выписываем ответ для задачи 2):
1 ch
sh y ch y sin x
u 2 x, y
sh
Находим решение третьей задачи с уравнением Пуассона и однородными краевыми
условиями:
2u3 2u3
sin( x), 0 x, y
2
2
x
y
3) u 3 0, y u 3 , y 0
u x,0 u x, 0
3
3
0 x, y
Разделяя переменные, выбираем функцию x и повторяющую неоднородность
уравнения
Пуассона X x sinx , ux, y sinx Y y .
При
этом
автоматически
выполняется первое краевое условие задачи 3), решение подставим в уравнение
Пуассона:
sinx Y Y '' sinx sinx Y '' Y 1
Y '' Y 1
Y 0 Y 0
Находим частное решение дифференциального уравнения краевой задачи (4).
Y part y 1 . Общее решение однородного уравнения следующее:
(4)
Y y Ash y Bch y
Общее решение неоднородного ОДУ есть сумма частного неоднородного и общего
однородного уравнений.
Yн y 1 Ash y Bch y
Теперь нужно выполнить краевые условия задачи (4)
Yн 0 1 Ash0 Bch 0 B 1 0 B 1
1 ch
Yн 1 Ash ch 0 A
sh
Тогда решение краевой задачи (4) есть
1 ch
sh y ch y sin x
u3 x, y 1
sh
Решение исходной задачи (1) есть сумма решений 3 частных задач:
174
1 ch
shx chx sin y
ux, y u 1 x, y u 2 x, y u 3 x, y
sh
1 ch
1 ch
sh y ch y sin x 1
sh y ch y sin x
(5)
sh
sh
Подстановкой формулы (5) в три уравнения системы(1) убеждаемся, что она
является решением задачи (1), а в силу теорем существования и единственности для
эллиптического уравнения [4] её единственным решением.
Нам придётся раскладывать в ряд Тейлора сумму узловых значения функций на
симметрично расположенных узлах с центральным значением u 0, 0 . Для сокращения
выкладок докажем:
Утверждение 1. Пусть множество узлов шаблона с центром (0,0) можно разбить на
прямоугольники с вершинами в данных узлах и сторонами параллельными координатным
осям, тогда разложение оператора Лапласа имеет только производные с чётным
порядком по каждой из координат.
Доказательство. Обозначим координаты 4 вершин прямоугольника
h1 , h2 , h1 ,h2 , h1 ,h2 , h1 ,h2 соответственно с узловыми значениями
u1, 2 , u1, 2 , u 1, 2 , u1, 2 . В силу равно удаления узлов от центра и симметрии шаблона
аппроксимация оператора Лапласа содержит узловые значения u1, 2 , u1, 2 , u 1, 2 , u1, 2 с
равными весами. По формуле Ньютона - Лейбница имеем:
mk
m
m
1 k k mk m u
1
mu
k k mk
u1, 2 u1, 2 u 1, 2 u 1, 2 C m h1 h2
C
h
h
m 1 2
x k y mk k 0 m!
x k y mk
m 0 k 0 m!
m
1m C k h k h mk
k 0
1 1
4u 0,0
m 1
m!
mk
2
m
1 C k h k h mk m u
mu
m 1 2
x k y m k k 0 m!
x k y m k
1 1
m
k
k
m1! C
m
m0 k 0
C 22ls 2 s 2l 2 s
2l u
4
h1 h2
x 2 s y 2l k
l 1 s 0 2l !
h h2m k
k k
m 1
m 1 k k mk m u
С m h1 h2
m0 k 0 m!
x k y m k
1 1k 1 1k 0, m 2l 1
u
0, k 2s 1
k
k
mk
x y 2 2 1
, m 2l
4, k 2s
m
2l
(6)
2l u
В формуле(6) частные производные
вычисляются в центральном узле
x 2 s y 2l k
(0,0). Множество узлов шаблона разбивается на четверки вершин, и согласно формуле
(6) разложение в ряд Тейлора содержит производные только чётного порядка 2l (и чётного
порядка по каждой переменной 2s,2l 2s ). Тогда разложение оператора Лапласа в ряд с
учётом всех узлов шаблона содержит только производные чётных порядков 2s,2l 2s
(хотя каждая четвёрка вершин имеет свой весовой коэффициент в квадратурной формуле).
Что и завершает доказательство утверждения 1.
Для аппроксимации уравнения Пуассона на внутренних узлах равномерной
прямоугольной сетки исследуем симметричный 25 точечный шаблон, центральный узел
указан белым кружком, ось y направим вниз, ось x вправо, координаты узлов в
масштабах h1 , h2 отмечены на рисунке целыми числами:
175
2,2
2,1
1,2
1,1
0,2
0,1
1,2
1,1
2,2
2,1
2,0
2,1
1,0
1,1
0,0 1,0 2,0
0,1 1,1 2,1
2 2 1. 2 0,2 1,2 2,2
Для удобства выберем одинаковый шаг сетки по обеим переменным, т.е. случай
h1 h2 h . Тогда равномерная сетка на прямоугольнике имеет различное число узлов на
его сторонах. Аппроксимируем оператор Лапласа линейной квадратурной формулой:
1
u xx u yy u f x, y 2 C0 u 0,0 C1 u 0,1 u 0, 1 u1,0 u 1,0 C2 u1,1 u1, 1 u1, 1 u 1, 1
h
C3 u0, 2 u0, 2 u 2,0 u 2,0 C4 u1, 2 u 2,1 u1, 2 u 2,1 u 1, 2 u 2, 1 u 1, 2 u 2, 1
C5 u 2, 2 u 2, 2 u 2, 2 u 2, 2
(7)
Формула (7) использует все 25 узловых значений шаблона. Разложим в ряд Тейлора
суммы четвёрок узловых значений с точностью до O h10 по формуле (6):
2u 2u h 4 4u 4u
u 0,1 u 0, 1 u1,0 u 1,0 4u 0,0 h 2 2 2 4 4
y 12 x
y
x
h 6 6u 6u
h8 8u 8u
6 6
8 8 Oh10
360 x
y 20160 x
y
(8)
2
2u h 4 4u
4u
4u
2 u
u
u
u
u
4
u
2
h
6
Аналогично: 1,1
1,1
1, 1
1, 1
0, 0
x 2 y 2 6 x 4
x 2 y 2 y 4
h 6 6u
6u
6u 6u h8 8u
8u
8u
8u 8u
6 15 4 2 15 2 4 6
8 28 6 2 70 4 4 28 2 6 8 Oh10 (9)
180 x
x y
x y y 10080 x
x y
x y
x y y
Заменим в (8) h 2h и получим сразу формулу (10)
2 u 2 u 4h 4 4 u 4 u
u 0, 2 u 0, 2 u 2,0 u 2,0 4u 0,0 4h 2 2 2
3 x 4 y 4
y
x
8h 6 6u 6u 4h8 8u 8u
6 6
8 8 O h10
45 x
y 315 x
y
Далее имеем:
(10)
4 12 2 2 2 2 u 2 u
h 2 2
2!
y
x
6
4u 4u
h4 4
4u h 6 6
6u
6 u
4 1 2 4 4 4 4 6 12 2 2 2 2 12
4
1
2
x
x 6 y 6 4 15
24
y
x 2 y 2 720
6u
8u 8u
8u 8u
6u
h8 8
4 1 28 8 8 4 28 16 2 2 12 2 6 8 8
12 2 4 2 2 14 4 2 2 4
x
x
x y 40320
y
y
x y
8
2
8u
2u
4 4
4 4 u
10
2 u
4 70 1 2 1 2 4 4 4 4 O h 8u 0,0 10h 2 2
y x
y
x y
x
u1, 2 u 2,1 u1, 2 u 2,1 u 1, 2 u 2, 1 u 1, 2 u 2, 1 8u 0,0
h4
6
4u 4u
6u
4u h 6 6u 6u
6u
17 4 4 48 2 2
65 6 6 300 4 2 2 6
x y
x
y
x y 180 x
y
x y
176
8u 8u
8u
h8
8u
8u
257 8 8 1904 6 2 2 6 2240 4 4 O h10
x
x y
10080
y
x y
x y
(11)
Заменим в (9) h 2h и получим формулу (12):
2 u 2 u 8h 4 4 u
4u
4u
4 6 2 2 4
u 2, 2 u 2, 2 u 2, 2 u 2, 2 4u 0,0 8h 2 2 2
y 3 x
x y
y
x
8u
16h 6 6 u
6u
6u
6 u 8h 8 8 u 8 u
8u
8u
8 8 28 6 2 2 6 70 4 4
6 15 4 2 15 4 2 6
x y
45 x
x y
x y
y 315 x
y
x y
x y
(12)
O h10
Подставляя в формулу(7) разложения (8)-(12), группируя слагаемые по степеням h ,
получим:
u 0, 0
u f x, y 2 C0 4C1 4C 2 4C3 8C 4 4C5 uC1 2C 2 4C3 10C 4 8C5
h
4
4
u C1 C 2 4C3 17C 4 8C5
4u
2 u
h 4 4
2 2 C 2 8C 4 16C5
3
6
3 x y
y 12 6
x
6 u 6 u C1 C 2 8C 3 65C 4 16C 5 6 u
6 u 15
300
16
h 6 6
C2
C 4 C 5
4 2 2 4
45 x y x y 180
180
3
x y 360 180 45 180
4
8u 8u C1
C2
4C 257C4 8C5 8u
8u 28
1904
224
h6 8 8
3
C2
C4
C5
6 2 2 6
10080
315
x y 20160 10080 315 10080 315 x y x y 10080
8u 70
2240
560
C2
C4
C5 O h8
4 4
x y 10080
10080
315
(13)
Замечание 1. Формула(13) аппроксимирует уравнение Пуассона с точностью до O h8 .
Левая и правая части формулы(13) должны быть равны с точностью до O h8 . В пределе
u 0,0
при h 0 коэффициент C0 4C1 4C2 4C3 8C4 4C5 0 при 2 равен 0, иначе
h
первое слагаемое правой части стремится к бесконечности. Коэффициент при u равен
единице для тождественности (13) с нулевой степенью по h 0 :
C1 2C2 4C3 10C4 8C5 1 . Так как
2u 2u 4u
4u
2 2u 2u 4u
4u
2 2 4 2 2 , f yy 2 2 2 4 2 2 ,
y x
x y
y x
y y
x y
x
2
то в скобке при h могут присутствовать только частные производные f xx , f yy (частные
производные чётного порядка и по x и по y ), следовательно, получаем уравнение:
f xx
2
x 2
4C 17C 4 8C5
C C
2 1 2 3
C 2 8C 4 16C5
3
6
3
12 6
Учитывая операторное равенство для 3u , сведём к нему коэффициент в (13) при h 4 :
3
6
2
6
2
6 6
4 f
4 f
4 f
3
2
u f 2 2 u 6 3 4 2 2 4 6 u 4 2 2 2 4 ,
y
x y y
x
x y
y
x
x y
x
получим условие на коэффициенты
8C
C
65C 4 16C5 15
300
16
C
3 1 2 3
C2
C 4 C5
180
45 180
180
3
360 180 45
Учитывая операторное равенство для 4u , сведём к нему коэффициент в (13) при h 6 :
177
8
2
8
2
8
8
8
u f 2 2 u 8 4 6 2 2 6 6 4 4 8 u ,
y
x y
x y
y
x
x y
x
Получим два уравнения на коэффициенты
4C
C2
257C 4 8C5
28
1904
224
C1
4
3
C2
C4
C5
10080
315
20160 10080 315 10080 315 10080
4
4
3
4C
C2
257C 4 8C5
70
2240
560
C1
6
3
C2
C4
C5
10080
315
20160 10080 315 10080 315 10080
Соберём все написанные условия на коэффициенты в неоднородную систему
линейных уравнений, предварительно приводя элементарные преобразования:
C 0 4C1 4C 2 4C3 8C 4 4C 5 0
C 2C 4C 10C 8C 1
2
3
4
5
1
C1 4C 2 16C3 14C 4 64C 5 0
(14)
C1 8C 2 64C3 70C 4 512C5 0
C1 12C 2 256C3 438C 4 3072C 5 0
3C1 64C 2 768C 3 698C 4 16384C5 0
Система линейных неоднородных уравнений (14) имеет единственное решение
173
8
8
1
4
1
C0
, C1 , C2 , C3 , C4
, C5
(15)
70
21
45
30
315
2520
Используя явный вид коэффициентов (15) перепишем формулу (7):
C1 C2 4C3 17C 4 8C5 1
4
16
8
1
C 2 8C4 16C5
12 6
3
6
3
2
45 315 2520 7
8
C
16
C
C1
C
65C 4
1 15
300
16
8
40
16
4
5
2 3
C2
C 4 C5
360 180 45
180
45
3 180
180
3
1620 5670 22680 315
4C 257C 4 8C 5 1 28
C1
C
1904
224
1
68
1
1
2 3
C2
C4
C5
20160 10080 315 10080 315 4 10080
10080
315 8100 113400 14175 1260
6
f 4h 4
f 2 h f 3 12 173 u 0,0 8 u 0,1 u 0,1 u1,0 u 1,0 8 u1,1 u1,1 u1,1 u 1,1
7 315
1260
21
45
h 70
1
u0,2 u0,2 u 2,0 u2,0 4 u1,2 u2,1 u1,2 u2,1 u1,2 u2,1 u 1,2 u2,1
30
315
1
u2,2 u 2,2 u 2,2 u 2,2 O h8
(16)
2520
Замечание 2. Из формулы (16) видно, что квадратурная формула уравнения Пуассона для
внутренних узлов сетки содержит степенной ряд относительно аргумента h 2 f результат того, что точный дифференциальный оператор u заменяется приближённой
квадратурной формулой с точностью O h 2l , как видно из (16), старшая степень
степенного ряда равна l 1 .
Выразим из формулы(16) центральное узловое значение u0, 0 и присвоим ему
верхний индекс итерации на единицу больше, чем остальным узловым значениям
решения, тогда получим формулу простой итерации:
70 8
8
k 1
k
k
k
k
k
k
k
k
u 0, 0
u 0,1 u 0, 1 u1,0 u 1,0
u1,1 u1, 1 u1, 1 u 1, 1
173 21
45
1
4
k
k
k
k
k
k
k
k
k
k
k
k
u 0, 2 u 0, 2 u 2,0 u 2,0
u1, 2 u 2,1 u1, 2 u 2,1 u 1, 2 u 2, 1 u 1, 2 u 2, 1
30
315
f 0, 0 h 2
178
1
4h 4
h6
k
k
k
k
2
2
2 f
f
f 3 O h10 (17)
u 2, 2 u 2, 2 u 2, 2 u 2, 2 h f 0,0 h
2520
7 315
1260
С точки зрения устойчивости численного решения предпочтительнее использовать
неявные итерационные формулы[3], тем более что, тождественно преобразуя формулу
(16), мы не изменим порядок её погрешности. Запишем узловые значения
k 1
k 1
k 1
k 1
k 1
u0, 2 , u0, 1 , u0,0 , u0,1 , u0, 2 (в вертикальном разрезе, проходящем через узел(0,0)) в
левой части уравнения на k 1 слое итерации, а в правую часть перенесём все остальные
слагаемые, в которой узловые значения решения находятся в слое с номером итерации k :
1
8
173 k 1 8
1
8
1
k 1
k 1
k 1
k 1
k
k
k
k
u 0, 2 u 0, 1
u 0,0 u 0,1 u 0, 2 u 1,0 u1,0
u 2, 0 u 2, 0
30
21
70
21
30
21
30
8
4
k
k
k
k
k
k
k
k
k
k
k
k
u1,1 u1, 1 u1, 1 u 1, 1
u1, 2 u 2,1 u1, 2 u 2,1 u 1, 2 u 2, 1 u 1, 2 u 2, 1
45
315
6
1
f 4h 4
k
k
k
k
f 2 h f 3 O h10
u 2, 2 u 2, 2 u 2, 2 u 2, 2 h 2 f 0,0 h 2
(18)
2520
7 315
1260
Неоднородная линейная система уравнений (18)относительно неизвестных узловых
k 1
значений u j ,i имеет пяти диагональную матрицу системы, которую можно решить
методом прогонки. Рассмотрим сетку (множество из n 1 произвольных узлов)
n1 x0 x1 ... xn . Запишем систему линейных уравнений с пяти диагональной
матрицей в общем виде:
A1k xk 2 A2k xk 1 Ck xk B1k xk 1 B2k xk 2 Fk , k 2, n 2
(19)
Граничными условиями для (20) являются заданными значения решения в двух
приграничных слоях, т.е. x0 , x1 , xn1 , xn - известны, xk , k 2, n 2 подлежит решению с
использованием (19). В разностном уравнении (19) максимальная разность индексов равна
4, что соответствует краевой задаче для обыкновенного дифференциального уравнения 4
порядка, а задание 4 приграничных значений функций является аналогом граничного
условия 1 рода (Дирихле) для уравнения 2 порядка с 2 известными концевыми значениями
функции на отрезке.
Решение (19) ищем в виде: xk 1k xk 1 2k xk 2 k , k n 2,2
(20)
Тогда из(20): xk 1 1k 1 xk 2k 1 xk 1 k 1 , xk 2 1k 2 xk 1 2k 2 xk k 2
(21)
Выразим и подставим xk 2 , xk 1 в (19) используя (21):
A1k 1k 2 1k 1 xk 2k 1 xk 1 k 1 2k 2 xk k 2 A2k 1k 1 xk 2k 1 xk 1 k 1
xk 1 B1k A2 k 2 k 1 A1k 1k 2 2 k 1
C k xk B1k xk 1 B2 k xk 2 Fk xk
C k A1k 1k 2 1k 1 A1k 2 k 2 A2 k 1k 1
xk 2 B2 k
A A1k k 2 A2 k k 1 Fk
1k 1k 2 k 1
(22)
C k A1k 1k 2 1k 1 A1k 2 k 2 A2 k 1k 1 C k A1k 1k 2 1k 1 A1k 2 k 2 A2 k 1k 1
Сравнивая формулы(20),(22) получим значения прогоночных коэффициентов:
B1k A2 k 2 k 1 A1k 1k 2 2 k 1
B2 k
1k
, 2 k
,
C k A1k 1k 2 1k 1 A1k 2 k 2 A2 k 1k 1
C k A1k 1k 2 1k 1 A1k 2 k 2 A2 k 1k 1
A1k 1k 2 k 1 A1k k 2 A2 k k 1 Fk
, k 2, n 2
C k A1k 1k 2 1k 1 A1k 2 k 2 A2 k 1k 1
Кроме того, из формул (20)( k 0,1 ) следует, что
x0 10 x1 20 x2 0 , x1 11x2 21x3 1 ,
k
(23)
(24)
xn2 1n2 xn1 2n2 xn n2
179
Из формул (24) видно, что x0 , x1 принимают фиксированные значения (условие
Дирихле) при любых соседних узловых значениях, если положить
0 x0 , 10 20 0, 1 x1 , 11 21 0
После
определяются
коэффициентов 0 , 10 , 20 1 , 11, 21
определения
коэффициенты 1k , 2 k , k
остальные
по
формулам(23)
прогонки
(формулы
вперёд
k 2, n 2 ). Зная xn1 , xn по формуле(24) находим xn 2 , так как 1n2 , 2n2 , n2 найдены по
формуле(23) прогонкой вперёд. Используя (20) находим все неизвестные узловые
значения (формулы прогонки назад k n 2,2 ). Доказано:
Утверждение 2. Решение линейной системы уравнений с пяти диагональной матрицей
(19) и известными фиксированными значениями x0 , x1 , xn1 , xn даётся алгоритмом –
формулы прогонки вперёд(23) с краевыми
условиями ( 0 x0 , 10 20 0, 1 x1 , 11 21 0 ) и формулы прогонки назад(20).
Коэффициенты неявного разностного уравнения(18) свяжем с прогоночными
коэффициентами (19):
1
8
173
8
1
8
1
k
k
k
k
A1k , A2 k , Ck
, B1k , B2 k , Fk
u 1,0 u1,0
u 2, 0 u 2, 0
30
21
70
21
30
21
30
8
4
k
k
k
k
k
k
k
k
k
k
k
k
u1,1 u1, 1 u1, 1 u 1, 1
u1, 2 u 2,1 u1, 2 u 2,1 u 1, 2 u 2, 1 u 1, 2 u 2, 1
45
315
1
4h 4
h6
k
k
k
k
2
2
2 f
f
f 3 , k 2, n 2
u 2, 2 u 2, 2 u 2, 2 u 2, 2 h f 0,0 h
(25)
2520
7 315
1260
Утверждение 3. Пусть пяти диагональная матрица линейной системы уравнений(19) с
краевым условием Дирихле (известны x0 , x1 , xn1 , xn 10 11 20 21 0 ) является:
1) симметрической: A1k B2k , A2k B1k , k 2, n 2 A1k 0, A2k 0
3
3
2) A1k A2 k B1k B2 k C k k 2, n 2 , A21 B11 B21 C1 k 1,
2
2
3
B10 B20 C0 k 0, 3 A1n1 A2n1 B1n1 Cn1 k n 1, 3 A1n A2n Cn k n
2
2
2
второе условие можно назвать строгим полуторным диагональным преобладанием
Тогда:
1) 1k 1, 2 k 1, k 2, n 2
2) Формулы прогоночных коэффициентов (23) корректны.
Доказательство 1) утверждения проведём по индукции. Для базы индукции k 0,1,2 из
(23) имеем:
B12 A2221 A121021
B
C
10 11 0 1, 12
12 2 1
C 2 A121011 A1220 A2211
C2
C2
20 21 0 1, 22
B22
B
C
22 2 1
C 2 A121011 A1220 A2211
C2
C2
Если 1k 1 1, 2k 1 1, 1k 2 1, 2k 2 1 , то согласно (23) и утверждению 3 при
k 3, n 2 :
180
2k
1k
B2 k
C k A1k 1k 2 1k 1 A1k 2k 2 A2k 1k 1
B1k A2 k 2 k 1 A1k 1k 2 2 k 1
C k A1k 1k 2 1k 1 A1k 2 k 2 A2 k 1k 1
B2 k
B2 k
B2 k
1
1
B2 k
B1k B2k B1k A1k A2k
2
B1k A2 k A1k
B1k A2 k A1k
1
C k B2 k A1k A2 k
B1k B2 k B1k A1k A2 k
2
C k B2k A1k A2k
B1k A2 k A1k
1 . Т.е. из 1k 1 1, 2k 1 1, 1k 2 1, 2k 2 1 1k 1, 2k 1
B1k A1k A2 k
Что и требовалось доказать.
2) Для корректности формул (23) достаточно, чтобы знаменатель формул не обращался в
0.
С учётом доказанного первого утверждения 10 11 0 1, 20 21 0 1 ,
1k 1, 2k 1, k 2, n 2 имеем k 2, n 2 :
1
B2k B1k A1k A2k 0
2
Другими словами, знаменатели трёх формул (23) сохраняют знак и в 0 не
обращаются. Что и т.д.
Замечание 3. Непосредственной проверкой убеждаемся коэффициенты линейной
системы уравнений (25) удовлетворяют условию корректности (утверждение 3):
173
3 1
8
2.471 2 1.242
- неявная система разностных уравнений (25) с
70
2 30 21
пятидиагональной симметрической матрицей устойчива относительно прогоночных
формул(20),(23),(24).
Аппроксимация граничного оператора
Для шаблона граничного оператора рассмотрим симметричный 15 точечный
шаблон, координатные оси x, y направлены вверх и вправо, центральный узел с
координатами (0,0) выделен светлым кружком Границей квадрата является его левая
сторона и 5 узлы с x 1 , расположенные на ней.
1,2
0,2 1,2
1,1
0,1
1,1
1,0
0,0 1,0
1,1 0,1 1,1
1 2 0,2 1,2
Рассмотрим случай с одинаковым шагом сетки по обоим переменным h1 h2 h .
Аппроксимируем оператор Лапласа линейной квадратурной формулой:
1
u xx u yy u f x, y 2 C0 u 0,0 C1 u 0,1 u 0, 1 u1,0 u 1,0 C2 u1,1 u1, 1 u1, 1 u 1, 1
h
C3 u0, 2 u0, 2 C4 u1, 2 u 1, 2 u 1, 2 u1, 2
(26)
Используем формулу (6) для разложения в ряд Тейлора суммы 4 узловых значений в
вершинах прямоугольника
Ck A1k 1k 2 1k 1 A1k 2k 2 A2k 1k 1 Ck B2 k A1k A2k B1k
181
2u
2 u h 4 4 u
4u
4 u
u 1, 2 u 1, 2 u 1, 2 u 1, 2 4u 0,0 2h
4
24
16
x 2
y 2 6 x 4
x 2 y 2
y 4
h6 6u
6u
6u
6u
h8 8u
8u
8u
8u
8u
6 60 4 2 240 4 2 64 6
8 112 6 2 1120 4 4 1792 2 6 256 8
180 x
x y
x y
y 10080 x
x y
x y
x y
y
2
O h10
(27)
u 4h u 8h u 4h u
O h10
(28)
2
4
6
8
3 y
45 y
315 y
y
Подставим разложения (27),(28),(8),(9) в формулу (26) и сгруппируем слагаемые по
степеням h 2l :
u 0, 0
u f x, y 2 C0 4C1 4C 2 2C3 4C 4 uC1 2C 2 2C 4 u yy 4C3 6C 4
h
4
u C C
C 4u C C
8C
4
4u
h 2 4 1 2 4 4 1 2 С3 4 2 2 C 2 4C 4
6 y 12 6 3
3 x y
x 12 6
u 0, 2 u 0, 2 2u 0,0 4h 2
2
6u C C C 6u
h 4 6 1 2 4 4 2
x 360 180 180 x y
4
4
6
6
С 6u
15
С2 4 2 4
3 x y
180
8
8
4С 6 u C C 8C 64C 4
15
C2 4 6 1 2 3
3 y 360 180 45 180
180
8 u C1
C2
C4
8 u 28
112
8 u 70
1120
h6 8
C2
C4 4 4
C2
C4
6 2
10080 x y 10080
10080
x 20160 10080 10080 x y 10080
8u 28
1792 8u C1
C
4C 256C4
8
C
C4 8
2 3
O h
2
2 6
x y 10080
10080 y 20160 10080 315 10080
(29)
Левая и правая части формулы(29) должны быть равны с точностью до O h8 . В
u 0,0
пределе при h 0 коэффициент C0 4C1 4C2 2C3 4C4 0 при 2 равен 0, иначе
h
первое слагаемое правой части стремится к бесконечности. Коэффициент при u равен
единице для тождественности (13) с нулевой степенью по h : C1 2C2 2C4 1 .
Коэффициент при u yy должен быть равен 0, т.е. 4C3 6C4 0 . Все остальные слагаемые
в (13) необходимо выразить через частные производные чётного порядка (и по x и по y )
от правой части уравнения Пуассона – функции f x, y . Так как в скобке при h 2 могут
присутствовать только частные производные f xx , f yy , то в общем случае получаем:
4u
4u
4u
4u
4u
4u
4u
B1 f xx B2 f yy B1 4 2 2 B2 4 2 2 B1 4 B1 B2 2 2 B2 4
x y
x y
x
x y
y
x
y
В силу последнего уравнения в (29)имеем связь:
C1 C 2 C 4 C1 C 2 4
8C
С3 4 C 2 4C 4
12 6
6 12 6 3
3
Найдём связь коэффициентов в (29) с h 4 . Вообще говоря, сумма со всеми чётными
производными f ( x, y) :
B1
6u
6u
6u
4 f
4 f
4 f
6u
6u
6u
B
B
B
B
B
2
3
1
2
3
6
4
2
4
2
x 4
x 2 y 2
y 4
x 4 y 2
x 2 y 4
y 6
x
x y
y x
B1
6u
6u
6u
6u
B
B
B
B
B
1
2
2
3
3
x 6
x 4 y 2
x 2 y 4
y 6
В силу последнего уравнения в скобке с h 4 в(29) получаем уравнение связи:
182
8C 64C 4
С C
C
C 15
4С C
C
15
С2 4 1 2 4
C2 4 1 2 3
32С3 117С 4 0
180
3 360 180 180 180
3 360 180 45
180
По сравнению с формулой(13),у которой восьмой алгебраический порядок
погрешности погрешность (29) равен шести, т.е. h 6 . Соберём все условия на
коэффициенты в систему линейных уравнений, предварительно приводя элементарные
преобразования:
C 0 4C1 4C 2 2C3 4C 4 0
C 2C 2C 1
2
4
1
4
C
6
C
(30)
3
4
C 4C 8C 7C 0
2
3
4
1
32С3 117С 4 0
Система линейных неоднородных уравнений (30) имеет единственное решение
C C
C
10
2
1
1 C
1 15
1
(31)
C0 , C1 , C2 , C3 0, C4 0, 1 2 , 1 2
,
С2
3
3
6
12 6 12 360 180 360 180
72
Перепишем формулу(29) с найденными коэффициентами (31)
1 10
2
1
u0,0 u0,1 u0, 1 u1,0 u 1,0 u1,1 u1, 1 u1, 1 u 1, 1
2
3
6
h 3
4
4
4
6
6
u 1 u 4 1 u u 1 6 u
6 u
2 1 u
6 6 4 2 2 4 O h 6
u h 4 4
h
2
2
y 6 x y
y 72 x y
x y
12 x
360 x
4
2
4 f 1 4 f
h2
h2
1 4 f
4 1 f
6
4 f
4 4
O h 6 (32)
f f h
O h f 0,0 f h
2
2
2
2
12
12
y 90 x y
360 180 x y
360 x
Из (32) явно выразим u 0,0
k 1
центральное узловое значение на k 1 слое итерации,
остальные узловые значения расположим на k слое итерации
1
1 k
u k 10,0 u k 0,1 u k 0, 1 u k 1,0 u k 1,0
u 1,1 u k 1, 1 u k 1, 1 u k 1, 1
5
20
2
6
4
3
f
f
h
f
h 2 f 0, 0 h 4
h6
Oh 8
(33)
10
40
1200 600 x 2 y 2
Формула простой итерации, приведенная в сборнике[2] Волкова К.Н. и др.,
отличается от полученной нами формулы (33) отсутствием последних двух слагаемых,
поэтому у нас порядок погрешности на 2 выше, а формула точнее. Из формулы (32) легко
образовать неявную формулу для линейной сиcтемы уравнений с трёх диагональной
матрицей прогонки, получаемая как частный случай из (19) ( A1k B2 k 0 ):
f 2 1 4 f
2 k 1 10 k 1 2 k 1 1 k
2 k
h2
k
k
k
k
u0,1 u0,0 u0,1 u1,1 u1,1 u1,1 u1,1 u1,0 u1,0 h2 f0,0 f h4
2 2
3
3
3
6
3
12
360
180
x
y
(34)
2
10
Ak x k 1 C k x k Bk x k 1 Fk , Ak Bk , C k ,
3
3
2
1 k
2 k
h2
1 4 f
k
k
k
k
2
4 f
, k 1, n 1
Fk u1,1 u1,1 u1,1 u1,1 u1,0 u1,0 h f0,0 f h
2 2
6
3
12
360
180
x
y
Из (21),(23) получим формулы прогонки назад: xk k xk 1 k , k n 1,1
Bk
A Fk
k
, k k k 1
, k 1, n 1, 0 0, 0 x0
C k Ak k 1
C k Ak k 1
(35)
(36)
(37)
183
и (37) формулы прогонки вперёд. Условие устойчивости
4 10
Ak Bk C k , k n 1,1
выполнено автоматически[3]. Программа для решения
3 3
уравнения Пуассона написана на FORTRAN:
program puasson;use dfimsl
integer(8),parameter::n=120,n1=60,m=20000; integer(8)::i,j,k,kk
real(8)::u(0:m+1,0:n1+1,0:n+1),a,b,d,pi,x,y
real(8)::res(0:n1+1,0:n+1),delta(0:n1+1,0:n+1),max,fif1(0:n+1),fif0(0:n+1),fif10(0:n+1),fif11(0:
n+1)
real(8)::c1,c2,c3,c4,c5,c6,c7,c8,nu00(0:n+1),ll(0:n+1)
real(8)::c(0:n+1),fif(0:n+1),l1(0:n+1),l2(0:n+1),nu(0:n+1),nu0(0:n+1),l(0:n+1)
real(8)::cch,ssh,a1(0:n+1),a2(0:n+1),b1(0:n+1),b2(0:n+1),f,laplf1,laplf2,laplf
real(8)::h1,h2,h,aa(0:n+1),bb(0:n+1),c0(0:n+1)
real(8)::ss1,ss2,aa1,aa2,bb1,bb2,cc ,c11,c22,c33,c44,c55,c66
cch(x)=(dexp(x)+dexp(-x))/2d0;ssh(x)=(dexp(x)-dexp(-x))/2d0
aa1(x,y)=dsin(y);aa2(x,y)=dsin(y);bb1(x,y)=dsin(x)
bb2(x,y)=dsin(x);f(x,y)=dsin(x)
laplf1(h1,x,y)=-h1*h1*dsin(x);ss1(h1,x,y)=h1*h1*h1*h1*dsin(x)
ss2(h1,x,y)=-h1*h1*h1*h1*h1*h1*dsin(x);laplf(h1,x,y)=-h1*h1*dsin(x)
max=-1000d0;pi=2d0*dasin(1d0);a=0d0;b=2d0*pi;cc=0d0;d=pi
h1=(b-a)/dfloat(n);h2=(d-cc)/dfloat(n1)
do i=1,n-1,1;do j=1,n1-1,1
u(0,j,i)=0d0
enddo;enddo
do k1=0,m,1; do i=0,n,1; do j=0,n1,1
x=a+h1*dfloat(i); y=cc+h1*dfloat(j)
if(i==0.or.i==n.or.j==0.or.j==n1)then
u(k1,0,i)=bb1(x,cc);u(k1,n1,i)=bb2(x,d);u(k1,j,0)=aa1(a,y);u(k1,j,n)=aa2(b,y)
endif; enddo;enddo;enddo
do kk=0,n1,1
a1(kk)=1d0/30d0;a2(kk)=8d0/21d0;b1(kk)=8d0/21d0;b2(kk)=1d0/30d0;c(kk)=173d0/70d0
enddo
do k=0,m,1; do i=1,n-1,1; do j=1,n1-1,1
if((i==1.and.j==1).or.(i==1.and.j==n1-1).or.(i==n-1.and.j==n1-1).or.(i==n-1.and.j==1))then
y=cc+h1*dfloat(j);x=a+h1*dfloat(i)
c1= 2d-1*(u(k,j-1,i)+u(k,j+1,i)+u(k,j,i-1)+u(k,j,i+1))
c2=5d-2* (u(k,j+1,i+1)+u(k,j+1,i-1)+u(k,j-1,i-1)+u(k,j-1,i+1))
c3=-(3d-1)*h1*h1*f(x,y)-(2.5d-2)*h1*h1*laplf(h1,x,y)-ss1(h1,x,y)*h1*h1/1200d0
u(k+1,j,i)=c1+c2+c3
endif;enddo; enddo
l(1)=0d0;l(n1-1)=0d0;ll(1)=0d0;ll(n1-1)=0d0;nu0(1)=u(k+1,1,1)
nu0(n1-1)=u(k+1,n1-1,1);nu00(1)=u(k+1,1,n-1);nu00(n1-1)=u(k+1,n1-1,n-1)
do kk=1,n1-1,1
bb(kk)=240d0; aa(kk)=240d0;c0(kk)=1200d0
enddo
do j=2,n1-2,1
y=cc+h1*dfloat(j);x=a+h1*dfloat(i)
c4=-60d0*(u(k,j+1,2)+u(k,j+1,0)+u(k,j-1,0)+u(k,j-1,2));c5=-240d0*(u(k,j,2)+u(k,j,0))
c6=h1*h1*360d0*f(a+h1,y)+30d0*h1*h1*laplf(h1,a+h1,y)+ss1(h1,a+h1,y)*h1*h1
fif(j)=c4+c5+c6; l(j)=bb(j)/(c0(j)-aa(j)*l(j-1));nu0(j)=(aa(j)*nu0(j-1)-fif(j))/ (c0(j)-aa(j)*l(j-1))
c44= -60d0*(u(k,j+1,n)+u(k,j+1,n-2)+u(k,j-1,n)+u(k,j-1,n-2));c55=-240d0*(u(k,j,n)+u(k,j,n-2))
c66=h1*h1*360d0*f(b-h1,y)+30d0*h1*h1*laplf(h1,b-h1,y)+ss1(h1,b-h1,y)*h1*h1
184
fif1(j)=c44+c55+c66; ll(j)=bb(j)/(c0(j)-aa(j)*ll(j-1));nu00(j)=(aa(j)*nu00(j-1)-fif1(j))/ (c0(j)aa(j)*ll(j-1))
enddo
do j=n1-2,2,-1
u(k+1,j,1)=l(j)*u(k,j+1,1)+nu0(j);u(k+1,j,n-1)=ll(j)*u(k,j+1,n-1)+nu00(j)
enddo
l(1)=0d0;l(n-1)=0d0;ll(1)=0d0;ll(n-1)=0d0;nu0(1)=u(k+1,1,1)
nu0(n-1)=u(k+1,1,n-1);nu00(1)=u(k+1,n1-1,1);nu00(n-1)=u(k+1,n1-1,n-1)
do kk=1,n-1,1
bb(kk)=240d0;aa(kk)=240d0;c0(kk)=1200d0
enddo
do i=2,n-2,1
x=a+h1*dfloat(i);y=cc+h1*dfloat(j)
c4= -60d0*(u(k,2,i+1)+u(k,0,i+1)+u(k,0,i-1)+u(k,2,i-1));c5=-240d0*(u(k,2,i)+u(k,0,i))
c6= h1*h1*360d0*f(x,cc+h1)+30d0*h1*h1*laplf(h1,x,cc+h1)+ss1(h1,x,cc+h1)*h1*h1
fif0(i)=c4+c5+c6; l(i)=bb(i)/(c0(i)-aa(i)*l(i-1));nu0(i)=(aa(i)*nu0(i-1)-fif0(i))/ (c0(i)-aa(i)*l(i-1))
c44= -60d0*(u(k,n1,i+1)+u(k,n1-2,i+1)+u(k,n1,i-1)+u(k,n1-2,i-1))
c55=-240d0*(u(k,n1,i)+u(k,n1-2,i))
c66= h1*h1*360d0*f(x,d-h1)+30d0*h1*h1*laplf(h1,x,d-h1)+ss1(h1,x,d-h1)*h1*h1
fif10(i)=c44+c55+c66; ll(i)=bb(i)/(c0(i)-aa(i)*ll(i-1));nu00(i)=(aa(i)*nu00(i-1)-fif10(i))/ (c0(i)aa(i)*ll(i-1))
enddo
do i=n-2,2,-1
u(k+1,1,i)=l(i)*u(k,1,i+1)+nu0(i);u(k+1,n1-1,i)=ll(i)*u(k,n1-1,i+1)+nu00(i)
enddo
do i=2,n-2,1
l1(0)=0d0;l1(1)=0d0;l2(0)=0d0;l2(1)=0d0;l1(n1)=0d0;l2(n1)=0d0;l1(n1-1)=0d0;
l2(n1-1)=0d0;nu(n1-1)=u(k+1,n1-1,i);nu(n1)=u(k+1,n1,i);nu(1)=u(k+1,1,i);nu(0)=u(k+1,0,i)
do j=2,n1-2,1
x=a+h1*dfloat(i); y=cc+h1*dfloat(j);c1=-(8d0/21d0)*(u(k,j,i+1)+u(k+1,j,i-1))
c2=-(8d0/45d0)*(u(k,j+1,i+1)+u(k+1,j-1,i-1)+u(k,j-1,i+1)+u(k+1,j+1,i-1))
c11=-(1d0/30d0)*(u(k,j,i+2)+u(k+1,j,i-2))
c3=-(4d0/315d0)*(u(k+1,j+1,i-2) + u(k,j+1,i+2) + u(k+1,j-1,i-2) + u(k,j-1,i+2))
c33=-(4d0/315d0)*(u(k+1,j+2,i-1) + u(k,j+2,i+1) + u(k+1,j-2,i-1) + u(k,j-2,i+1))
c22=-(1d0/2520d0)*(u(k,j+2,i+2)+u(k+1,j-2,i-2)+u(k,j-2,i+2)+u(k+1,j+2,i-2))
c5=h1*h1*(f(x,y)
+
(1d0/7d0)*(laplf1(h1,x,y))
+(4d0/315d0)*ss1(h1,x,y)+(1d0/1260d0)*ss2(h1,x,y))
fif11(j)=c1+c2+c11+c3+c33+c22+c5
l1(j)=(a1(j)*l1(j-2)*l2(j-1)+a2(j)*l2(j-1)+b1(j)
)/(c(j)-a1(j)*l1(j-2)*l1(j-1)-a2(j)*l1(j-1)
a1(j)*l2(j-2) )
l2(j)=b2(j)/(c(j)-a1(j)*l1(j-2)*l1(j-1)-a1(j)*l2(j-2) -a2(j)*l1(j-1) )
nu(j)=(a1(j)*l1(j-2)*nu(j-1)+a2(j)*nu(j-1)+a1(j)*nu(j-2)-fif11(j))/(c(j)-a1(j)*l1(j-2)*l1(j-1)a1(j)*l2(j-2) -a2(j)*l1(j-1) )
enddo
do j=n1-2,2,-1
u(k+1,j,i)=l1(j)*u(k,j+1,i)+l2(j)*u(k,j+2,i)+nu(j)
enddo; enddo;enddo
do j=0,n1,1;do i=0,n,1
x=a+h1*dfloat(i);y=cc+h2*dfloat(j)
!c1= (cch(x)+ssh(x)*(1d0-cch(pi))/ssh(pi))*dsin(y)
!c2= dsin(x)*(cch(y)+ssh(y)*(1d0-cch(pi))/ssh(pi))
!c3= dsin(x)*(cch(y)-1d0+ssh(y)*(1d0-cch(pi))/ssh(pi))
185
c1= (cch(x)+ssh(x)*(1d0-cch(2d0*pi))/ssh(2d0*pi))*dsin(y);c2= dsin(x)*(cch(y)+ssh(y)*(1d0cch(pi))/ssh(pi))
c3= dsin(x)*(cch(y)-1d0+ssh(y)*(1d0-cch(pi))/ssh(pi));res(j,i)=c1+c2+c3;delta(j,i)= u(m,j,i)res(j,i)
if( delta(j,i)<0d0)then
delta(j,i)=- delta(j,i);endif
if( delta(j,i)>max)then
max=delta(j,i);endif;enddo;enddo;
print*,"norma C =",max;end program puasson
При n n1 20, m 5000 программа возвращает невязку задачи (1) в равномерной
норме: norma C = 1.1751864209253995e-10, а при n n1 40, m 5000 norma C =
7.476241847825804e-13, что даёт 8 порядок погрешности:
u1 C 1.1751864209253995e - 10
234 2 8 256 (так как алгебраический порядок
u 2 C
7.476241847825804e - 13
погрешности внутреннего разностного оператора(18) равен восьми). Кроме того, при
n n1 100, m 20000 программа возвращает: norma C = 6.61378111e-14 ,близка к 1e-16
двойной точности double, в то время как по формуле простой итерации у авторов[2]
( n n1 100, m 20000 ) получим: norma C =4.567879487049620e-6>1e-8(не достигает
первой точности float и порядок погрешности только четвёртый) ( n, n1 , m - число
интервалов по осям x, y и число итераций). Решим также численно и аналитически
задачу Пуассона на прямоугольнике:
2u 2u
x 2 y 2 sin( x), 0 x 2 , 0 y
u 0, y u 2 , y sin y , 0 y
u x,0 u x, sin x , 0 x 2
С аналитическим решением:
1 ch2
1 ch
1 ch
shx chx sin y
sh y ch y sin x 1
sh y ch y sin x
ux, y
sh
sh2
sh
С учётом того, что высота прямоугольника в 2 раза меньше его ширины:
n 120, n1 60, m 20000
программа возвращает невязку последней задачи в равномерной норме: norma
C=5.972999872483342e-14.
Выводы:
1) Получены формулы прогонки для питидиагональной системы линейных уравнений
с 4 известными узловыми значениями на концах отрезка и соседних к концам узлах
(краевое условие Дирихле).
2) Для симметрической матрицы со строгим полуторным
диагональным
преобладанием имеет место корректность полученных формул прогонки вперёд.
3) Предложен 3 – этапный алгоритм для точного решения уравнения Пуассона на
прямоугольнике. 1. по формуле простой итерации(33) находят 4 значения
u k 11,n1 , u k 11,1 , u k 1n1,1 , u k 1n1,n1 . 2. По формулам(34)-(37) прогонкой находят
u k 11, j , u k 1 n 1,i , u k 1 j ,1 , u k 1 j ,n 1 , i, j 1, n 1 . 3. По формулам(20), (23),(25)
186
методом пятидиагональной прогонки и краевым условием Дирихле определяют
u k 1i , j , i, j 2, n 2 .
4) Доказано утверждение: на симметричных шаблонах аппроксимация оператора
Лапласа выражается через частные производные чётного порядка от неизвестной
функции по каждой переменной.
5) С помощью указанного алгоритма и написанной программы показано, что при
небольшом числе узлов равномерной сетки(1600) алгебраический порядок
погрешности равен восьми.
Литература
1) Влияние ветра на динамику развития термобара в период весеннего прогрева
водоёма. Н.С. Блохина, Д.А.Соловьёв. Вестник Московского университета. Серия
3: Физика. Астрономия. Изд. МГУ им.М.В.Ломоносова.2006.№3. С59-63.
2) Методы ускорения газодинамических расчётов на неконструированных сетках.
К.Н.Волков, Ю. Н. Дерюгин, В.Н.Емельянов, А.Г.Карпенко, И. В. Тетерина.
Москва, Физматлит, 2013, 536 стр.
3) Самарский А.А., Вабищевич П.Н. Численные методы решения обратных задач
математической физики: Учебное пособие. – М.: Издательство ЛКИ, 2014. – 480 с.
4) А.Г.Свешников, А.Н.Боголюбов, В.В.Кравцов. Лекции по математической физике.
– М.: Изд. – во МГУ, 1993 – 332 с.
5) Аппроксимация уравнения Пуассона на прямоугольнике повышенной точности.
Пастухов Д.Ф., Пастухов Ю.Ф. Вестник Полоцкого государственного
университета. Серия С: Фундаментальные науки.2017. №12. С. 62-77.
187
Приложение3
УДК 519.6 517.958
АППРОКСИМАЦИЯ ДВОЙНЫХ И ТРОЙНЫХ ИНТЕГРАЛОВ ВО ВНУТРЕННИХ
ЗАДАЧАХ МАТЕМАТИЧЕСКОЙ ФИЗИКИ
Аннотация: Получены формулы и алгоритмы для составных интегральных квадратур с
равномерным шагом 7-го,11-го,15-го алгебраического порядка погрешности и с 8,12,16
порядком погрешности соответственно во внутренних задачах математической физики.
Найдены аналоги формул для двойных на прямоугольнике и тройных в параллелепипеде
интегралов с сохранением такого же порядка погрешности, что и в одномерном случае.
Построены линейные отображения обобщённых координат с кольца (круга) на
прямоугольник, с шарового слоя (шара) на параллелепипед. Найдены интегральные
квадратуры в полярной и
в сферической системах координат с сохранением
алгебраического порядка точности, что проверено численно. Доказана лемма,
указывающая минимальное число узлов достаточное для вычисления интеграла с двойной
точностью. Приведены соответствующие алгоритмы.
Ключевые слова: алгебраический порядок точности, порядок погрешности, метод
медианной фильтрации, шаровой слой, кольцо, аппроксимация интегралов.
THE APROXIMATION DOUBLE AND TRIPLE INTEGRAL IN MATHEMATICAL
PHYSICIST
The Abstract: are Received formulas and algorithms for component integral squarings with
even at a walk 7-go,11-go,15-go algebraic order to inaccuracy and with 8,12,16 rather
inaccuracy in internal problem mathematical physicists accordingly. Founded analogues molded
for double on rectangle and triple in parallelepiped integral with conservation such order to
inaccuracy, as in univariate event. The linear images of the generalised coordinates will Built
with layer of circle (the circle) on rectangle, with ball layer (the ball) on box, as well as integral
squarings in arctic coordinate system and in spherical coordinate system with conservation of the
algebraic order to accuracy that is checked numerically. The Proved lemma, indicating minimum
number of the nodes sufficient for calculation of the integral with double accuracy. They Are
Brought corresponding to algorithms.
The Keywords: algebraic order to accuracy, order to inaccuracy, method of median to filtering,
ball layer, ring, aproximation integral.
Введение.В задачах математической физики обычно используют области: прямоугольник
(параллелепипед), круг (шар). Например, во внутренней задаче Дирихле для уравнения
Лапласа в круге, во внутренней задаче Дирихле для уравнения Лапласа в шаре [1,2]. В
подобных задачах решение записывается в виде суммы ряда по собственным функциям
выбранной области и уравнения в частных производных. Коэффициенты разложения ряда
находят через двойные интегралы (в прямоугольнике, в круге, кольце) и тройные
интегралы (в параллепипеде, шаре, шаровом слое). В программе коэффициенты
разложения вычисляют по циклу, и их число может достигать несколько тысяч. Что в
свою очередь требует высокой точности расчёта двойных и тройных интегралов в задачах
математической физики.
Как известно, среди интегральных квадратурных формул при заданном числе узлов
аппроксимации на отрезке наибольший алгебраический порядок точности имеют
квадратурные формулы Гаусса [3,стр.44].
Для поиска узлов нужно построить
ортогональный на отрезке [a, b] многочлен степени n с весовой
функцией
p( x) 0, x [a, b] (у многочлена все n корней расположены на отрезке [a, b] ). Согласно
теореме Галуа произвольные многочлены степени больше четвёртой имеют корни, для
которых невозможно указать замкнутую формулу для решений, т.е. формулу,
188
содержащую только арифметические операции и корни произвольной степени. По
теореме Гаусса[3,стр.45]
ортогональный многочлен степени n имеет квадратурную
формулу Гаусса точную для всех многочленов степени не выше 2n 1 (алгебраический
порядок точности). Таким образом, интегральная формула Гаусса с узлами и весовыми
коэффициентами, записанными через радикалы или рациональные дроби, может быть
точна для всех многочленов степени не выше 2n 1 2 4 1 7 .
Следовательно, корни ортогональных многочленов, равные узлам квадратурной
формулы Гаусса (с числом больше четырёх) необходимо искать с двойной точность[6],
например, с помощью формулы касательных Ньютона, что потребует не менее 250
итерации и более 1000 флопов[4]. В работе построены интегральные квадратурные
формулы с равномерным шагом, рациональными узлами и весовыми коэффициентами,
т.е. с двойной точностью. Найденные квадратурные формулы имеют алгебраический
порядок точности соответственно n 7,11,15. Полученные интегральные квадратурные
формулы в одномерном случае могут быть перенесены на двойные и тройные интегралы с
сохранением алгебраического порядка точности. В работе построено линейное
отображение обобщённых координат с прямоугольника (параллелепипеда) на круг,
кольцо, (шар, сферический слой), а квадратурные интегральные формулы в указанных
областях имеют тот же алгебраический порядок точности, что и на отрезке.
Немецкая группа математиков из университета города (Paderbom) создала пакет
программ MuPad Pro 2.5.2, в котором интегралы вычисляются всего с 10 значащими
цифрами, т.е. с точностью меньшей, чем достигнутая в данной работе.
1.Составная формула для отрезка, алгебраический порядок точности.
Аппроксимация определённого интеграла квадратурной формулой с непрерывной
функции
f (x) , x [a, b] , имеет вид:
b
a
n
f ( z )dz Ci f ( xi ) r ( f )
(1)
i 0
где: xi , i 0, n - узлы квадратурной формулы;
Ci весовые коэффициенты; r ( f ) - погрешность аппроксимации.
b
n
a
i 0
Из формулы (1) следует, что r ( f ) f ( z )dz Ci f ( xi ) является
линейным оператором
относительно функции f как разность линейных операторов. Поэтому если формула(1)
точна для всех степенных функций вида x j : r x j 0, j 0, m , то r ( Pm ( x)) 0 для всех
многочленов степени не выше m .
Определение 1. Пусть квадратурная формула(1) точна для всех степенных функций
k
x , k 0, m включительно, т.е. r ( x k ) 0, k 0, m , тогда говорят что алгебраический
порядок точности интегральной квадратурной формулы(1) равен m .
Определение 2. Пусть алгебраический порядок точности квадратурной формулы(1)
равен m , а погрешность r ( f ) формулы (1)отлична от нуля степенной функции
x l , l m 1 , тогда говорят что порядок погрешности формулы(1) равен l . Другими
словами, порядок погрешности формулы (1) - минимальная степень многочлена l такая,
что r ( Pl ( x)) 0 .
Рассмотрим канонический отрезок[-1,1], на котором в силу симметрии узлы
квадратурной формулы расположены симметрично относительно нуля, а весовые
коэффициенты симметричных узлов имеют равные значения. Выберем чётное число
интервалов разбиения n0 2l и нечётное число узлов 2n0 1 во всех квадратурных
189
формулах (в данной работе отрезок[-1,1] разбивается на n0 {6,10,14} число равных
частей).
Пользуясь формулой (1) , определением 1 найдём условия на весовые коэффициенты
Ck в квадратурной формуле с равномерным шагом на отрезке [-1,1](с учётом сказанной
симметрии):
n0 / 2
1
dz
2
С
2
Сk
k 1
1
1
n /2
z 2 s dz 2 /(2s 1) 2 0 C 2k / n 2 s , s 1, n / 2
k
k 1
1
(2)
Решение системы уравнений (2) подставим в квадратурную формулу (1), имеем:
1
f ( z )dz С0 f (0)
1
n0 / 2
C f (2k / n
k
k 1
) f (2k / n0 ) , xk 2k / n0 , k 0, n0 / 2
(3)
Сначала, разделим отрезок [-1,1] на 6 равных частей, т.е. используем 7 равноотстоящих
узлов:
x1 1, x2 2 / 3, x3 1/ 3, x4 0, x5 1/ 3, x6 2 / 3, x7 1 , n0 6
-1
-2/3 -1/3
1/3 2/3
1
x2
С2
x1
С3
x3
С1
x4
С0
x5
С1
x6
С2
x7
С3
Согласно симметрии и квадратурной формуле (3) ( n0 6 )получим:
1
f ( z)dz С
f (0) C1 f (1 / 3) f (1 / 3) C 2 f (2 / 3) f (2 / 3) C3 f (1) f (1)
1
Подставляя в (2) степенные функции, начиная с нулевой степени, используя только
чётные степени (для нечётных степеней имеем тривиальные тождества 0 0 ), запишем
систему уравнений:
f ( z) 1 :
1
1
f ( z )dz
1
1
f ( z) z 2 :
f ( z) z 4 :
f ( z) z 6 :
dz 2 С
1
1
f ( z )dz z
1
1
4
dz
1
1
f ( z)dz z
1
dz
1
1
f ( z )dz z
1
1
2
1
6
2C1 2C2 2C3
2 2
8
C1 C2 2C3 3 C1 4C2 9C3
3 9
9
2
2
32
C1 C2 2C3 81 5C1 80C2 405C3
5 81
81
2
2
128
C1
C2 2C3 729 7C1 448C2 5103C3
7 729
729
решить неоднородную систему 4 линейных уравнений с 4
dz
То есть необходимо
неизвестными.
С0 2C1 2C2 2C3 2
C 4C 9C 3
68
9
18
41
1
2
3
С0
, С1
, С2 , С3
105
140
35
420
5C1 80C2 405C3 81
7C1 448C2 5103C3 729
(4)
Из формул (3)( n0 6 ) и (4) получим формулу (5):
190
1
f ( z)dz S
1
f
68
9
f (1 / 3) f (1 / 3) 18 f (2 / 3) f (2 / 3) 41 f (1) f (1)
f ( 0)
105
140
35
420
(5)
Проверкой убеждаемся, что коэффициенты С0 , С1 , С2 , С3 являются решением
системы уравнений(4), т.е. по определению 1 у квадратурной формулы (5) алгебраический
1
порядок точности равен семи (так как с учётом (4) и z 7 dz 0
1
3
C 2k / 6
k 3
7
k
0 ),
следовательно, по определению 2 порядок погрешности для формулы (5) равен 8. В
1
68
18
41
9
частности, если f ( z ) 1 : f ( z )dz 2
2
, то интеграл равен длине
105
1
6
1
i 0
35
420
Учитывая шаг h 1 / 3 , перепишем
отрезка [-1,1].
1
140
формулу (5) в виде
f ( z )dz 3h C f ( x ) , в общем случае:
i
i
1
hn0 n0
hn0
Ci f ( xi ),
1, xi 1 ih, i 0, n0
(6)
1 f ( z)dz 2
2
i 0
Рассмотрим составную квадратурную формулу для вычисления определённого
интеграла, т.е. формула (6) используется k раз на отрезке [a, b], b a kn0 h . Шаблон
весовых коэффициентов для составной формулы получим из (4) (коэффициенты в
смежных узлах удваиваются), например:
41 18 9 68 9 18 41 18 9 68 9 18 41
. ,
,
,
, ,
, ,
,
,
, ,
( n 12, k 2, n0 6 )
420 35 140 105 140 35 210 35 140 105 140 35 420
А определённый интеграл на отрезке [a, b] отличается от(6) длиной интервала в k n / n0
раз.
b
n0
hn0 n0 *k
ba
f
(
z
)
dz
C
f
(
x
)
,
, xi a ih, i 0, n
(7)
i
i Ci 2, h
a
2 i 0
n
i 0
b
Для функции
f ( z ) 1, f ( z )dz
a
hn0 n0 *k
hn
Ci 0 2k hkn0 b a . Т.е. составная
2 i 0
2
формула (7) является общей, в частности, коэффициенты C i для случая ( n0 6 )
определяются алгоритмом:
если
если
если
если
если
j 0 или j n : С j
41
;
420
18
;
35
9
j 2 mod 6 или j 4 mod 6 : С j
;
140
68
j 3 mod 6 : С j
;
105
41
j 0 mod 6 , j 0, j n : С j
;
210
j 1 mod 6 или j 5 mod 6 : С j
(8)
Аналогично формуле (5) можно разбить канонический отрезок[-1,1] n0 10 равных
частей (из соображений удобства разбиения), используя симметрию весовых
коэффициентов, и получить решение системы уравнений(2) ( n0 10 ), в которой 6
191
неизвестных коэффициентов С0 , С1 , С2 , С3 С4 , С5 являются решением неоднородной
системы n0 / 2 1 6 линейных уравнений с 11 алгебраическим порядком точности:
17807
4825
5675
16175
26575
16067
, С1
, С2
, С3
, С4
, С5
(9)
С0
12474
5544
6237
99792
74844
299376
Проверим на компьютере, что рациональный вид коэффициентов (9)(символьное
решение системы (2) для n0 10 ) удовлетворяет(2) с двойной точностью(16 значащих
цифр). В таблице 1 в левой части указано точное значение интеграла
1
a( s) z s dz, s 0,12 , а справа численное значение правой части уравнений системы (2) 1
b(s) с использованием значений весовых коэффициентов (8) ( s показатель степенной
функции).
Таблица 1
a(0)=2.0000000000000000 b(0)=2.0000000000000004
a(1)=0.0000000000000000 b(1)=0.0000000000000000
a(2)=0.6666666666666666 b(2)=0.6666666666666669
a(3)=0.0000000000000000 b(3)=-0.0000000000000000
a(4)=0.4000000000000000 b(4)=0.4000000000000001
a(5)=0.0000000000000000 b(5)=-0.0000000000000000
a(6)=0.2857142857142857 b(6)=0.2857142857142858
a(7)=0.0000000000000000 b(7)=0.0000000000000000
a(8)=0.2222222222222222 b(8)=0.2222222222222223
a(9)=0.0000000000000000 b(9)=-0.0000000000000000
a(10)=0.1818181818181818 b(10)=0.1818181818181819
a(11)= .0000000000000000 b(11)=-.0000000000000000
a(12)=0.1538461538461539 b(12)= .1554621683809524
Из таблицы 1 видно, что алгебраический порядок точности системы уравнений (2)
при n0 10
равен11,
а
порядок
погрешности
квадратурной
формулы
1
1
10
10
i 0
i 0
f ( z )dz 5h Ci f ( xi ) , где 5h 1, Ci 2, xi 1 ih, i 0,10
равен 12( С i определяются
с помощью (9)).
Из выражения (7) для n0 10 получим составную формулу:
10
(b a )
,
x
a
ih
,
n
10
k
,
Ci 2
i
a
n
i 0
i 0
в которой весовые коэффициенты C i определяются алгоритмом (11):
b
n
f ( z )dz 5h Ci f ( xi ), h
(10)
192
16067
если j 0 или j n : С j 299376 ;
если j 1 mod 10 или j 9 mod 10 : С 26575 ;
j
74844
если j 2 mod 10 или j 8 mod 10 : С 16175 ;
j
99792
5675
(11)
;
если j 3 mod 10 или j 7 mod 10 : С j
6237
4825
если j 4 mod 10 или j 6 mod 10 : С j 5544 ;
если j 5 mod 10 : С 17807 ;
j
12474
если j 0 mod 10 , j 0, j n : С 16067 ;
j
149688
Решение системы уравнений (2) ( n0 14 ), с делением отрезка[-1,1] на 14 равных
частей есть:
101741867
5600756791
789382601
6625093363
С0 13030875 ; С1 833976000 ; С2 156370500 ; С3 2501928000 ;
(12)
С 109420087 ; С 770720657 ; С 44436679 ; С 90241897 .
6
7
4 78185250 5
2501928000
156370500
2501928000
Численно проверим, что весовые коэффициенты (12),- символьное решение системы
(2) (для n0 14 ), удовлетворяет(2) с двойной точностью (16 значащих цифр). Значения
занесём в таблицу 2.
Таблица 2
a(0)=2.0000000000000000 b(0)=2.0000000000000009
a(1)=0.0000000000000000 b(1)=0.0000000000000001
a(2)=0.6666666666666666 b(2)=0.6666666666666665
a(3)=0.0000000000000000 b(3)=0.0000000000000000
a(4)=0.4000000000000000 b(4)=0.4000000000000000
a(5)=0.0000000000000000 b(5)=0.0000000000000000
a(6)=0.2857142857142857 b(6)=0.2857142857142856
a(7)=0.0000000000000000 b(7)=0.0000000000000000
a(8)=0.2222222222222222 b(8)=0.2222222222222221
a(9)=0.0000000000000000 b(9)=0.0000000000000000
a(10)=0.1818181818181818 b(10)=0.1818181818181817
a(11)=0.0000000000000000 b(11)=0.0000000000000000
a(12)=0.1538461538461539 b(12)=0.1538461538461538
a(13)=0.0000000000000000 b(13)=0.0000000000000000
a(14)=0.1333333333333333 a(14)=0.1333333333333333
a(15)=0.0000000000000000 b(15)=0.0000000000000000
a(16)=0.1176470588235294 b(16)=0.1179107308149041
Из таблицы 2 видно, что формула
1
1
14
14
i 0
i 0
f ( z )dz 7h Ci f ( xi ), 7h 1, Ci 2, xi 1 ih, i 0,14
имеет 15 алгебраический порядок точности и 16 порядок погрешности. Используя
формулу (7) ( n0 14 ),получим составную формулу с делением отрезка [a, b] на число
частей кратное 14:
193
(b a )
14
,
x
a
ih
,
n
14
k
,
Ci 2
i
a
n
i 0
i 0
Весовые коэффициенты С i определяются алгоритмом:
90241897
если j 0 или j n : С j 2501928000 ;
если j 1 mod 14 или j 13 mod 14 : С 44436679 ;
j
156370500
если j 2 mod 14 или j 12 mod 14 : С j 770720657 ;
2501928000
109420087
если j 3 mod 14 или j 11 mod 14 : С j
;
78185250
6625093363
;
если j 4 mod 14 или j 10 mod 14 : С j
2501928000
789382601
если j 5 mod 14 или j 9 mod 14 : С j 156370500 ;
если j 6 mod 14 или j 8 mod 14 : С 5600756791 ;
j
833976000
если j 7 mod 14 : С 101741867 ;
j
13030875
90241897
если j 0 mod 14 , j 0, j n : С j
;
1250964000
b
n
f ( z )dz 7h Ci f ( xi ), h
(13)
(14)
Докажем следующее утверждение:
Лемма. Пусть дана функция f ( x ) C ( n0 2) [a, b] и составная квадратурная формула (1)
с равномерным шагом точна для всех многочленов степени равной n0 {6,10,14} . То есть
выполнено условие (формула (7)):
H
hn0 n
t
t
(15)
z
dz
Ci z i , t 0, n0 ,
H
2 i 0
где: c середина отрезка [a, b]
c (a b) / 2, x z c, dx dz, h (b a) / n, H (b a) / 2, x [a, b], z [H , H ]
xi c zi , xi a i(b a) / n a ih, i 0, n
Тогда порядок погрешности r ( f ) составной формулы равен n0 2 , другими словами,
алгебраический порядок точности равен n0 1{7,11,15} .
Доказательство. Разложим функцию f ( x ) C ( n0 2) [a, b] , в ряд Тейлора с центром в точке
xc:
n0
f ( k ) (c) k f ( n0 1) (c) n0 1 f ( n0 2 ) (c ) n0 2
f (c z )
z
z
z
O z n0 3 , z H .
k!
(n0 1)!
(n0 2)!
k 0
b
Покажем, что из условия (15) следует
hn0 n
hn0 n
t
t
t
x
dx
C
x
Ci xi , t 0, n0 , t N .
i i
a
2 i 0
2 i 0
H
t
H s
hn0 n
hn0 n
hn0 n
t
t
s
t
s t s
0, t 0, n0 , s 0, t
x
dx
C
x
(
z
c
)
dz
C
c
z
C
c
z
dz
C
z
i
i
i
i
t
i
i
a
H
2
2 i 0
2 i 0
s 0
i
H
b
t
194
b
т.е. из (15) следует x t dx
a
hn0
2
n
C x
i
i 0
не изменяет алгебраического
биномиальный коэффициент.
b
r( f )
f ( x)dx
a
hn
0
2
n0 2
t n0 1
hn0 n
Ci f ( xi )
2 i0
t
i
, t 0, n0 (параллельный перенос системы координат
порядка
точности
r( f )
f
( n0 2 )
(c )
(n0 2)!
H
n0 f (t ) (c) H t
hn
z dz 0
2
t 0 t! H
( n0 2 )
f
(c) 2 H n0 3 hn0
t
n0 4
C
z
O
H
i i
(n 2)! n 3 2
i 0
n0 3
d z
n
Cts -
n0 f (t ) (c) t f ( n0 1) (c) n0 1 f ( n0 2) (c) n0 2
z
z
z O H n0 4
H
t!
(n0 1)!
(n0 2)!
t 0
n0 f (t ) (c) t f ( n0 1) (c) n0 1 f ( n0 2) (c) n0 2
Ci
zi
zi
z i O H n0 4
(n0 1)!
(n0 2)!
i 0
t 0 t!
H
формулы).
H
n
hn
f ( t ) (c )
z t dz 0
t! H
2
квадратурной
hn
2
0
n0 3 2 H
z
Ci i
H
i 0
n
n0 2
O H ,
n
C z
i 0
i i
n0 2
n
C z
i i
i 0
O H n0 4
t
zi
1
H
(16)
В формуле (16) учтены равенства справедливые в силу соотношений:
H
n
H
i 0
n 1
n 1
z 0 dz 0, Ci zi 0 0, так как Cn / 2 j Cn / 2 j , z n / 2 j z n / 2 j , z n / 2 0, j n / 2, n / 2
2j
i n/2
zi
H , i 0, n, j i n / 2, j n / 2, n / 2, i 0, n, zi H .
H
n
n/2
В формуле (16) последний множитель представляет собой многочлен степени n0 2 ,
которая определяет порядок погрешности r ( f ) составной формулы согласно определению
2, другими словами, алгебраический порядок точности равен n0 1 7,11,15 по
определению 1 . Лемма доказана.
Формулу (16) можно проанализировать и упростить
r( f )
f ( n0 2) (c)
(n0 2)!
H
n0 3
hn
2
0
n0 3 2 H
z
Ci i
H
i 0
n
n0 2
O H n0 4
n 2
n0
2
zi
Ci k 1 справедливо с точностью до 3 знаков (как видно
Выражение
n0 3 i 0 H
из таблицы 2 в случае s 16 a(16) и b(16) отличаются в четвёртой значащей цифре, а из
таблицы 1 в случае s 12 a(12) и b(12) отличаются в третьей значащей цифре). Поэтому
для(16)справедливо:
f ( n0 2) (c) n 3 2
2 f ( n0 2) (c) n 3
r( f )
H 0
OH
H 0 O H n0 4
(n0 2)!
n0 3
(n0 3)!
С другой стороны, суммирование на n kn0 узлах эквивалентно взятию k интегралов на
ba
, j 1, k . Обозначим среднее значение производной
интервалах длиной b j a j
k
a j b j 1 b ( n0 2)
1 k
f ( n0 2) f n0 2
( x)dx . Тогда имеет место оценка
f
k j 1
2
b
a
a
195
n 3
k
2 ba 0
2H n0 3
(17)
f n0 2 x
f n0 2 x
n0 2
n0 2!
n0 3 2k
k n0 3!
Нас будет интересовать порядок погрешности составной квадратурной формулы и
двойная точность относительной погрешности результата интегрирования (16 значащих
цифр).
Вычислим определённый интеграл (ответ с 16 значащими цифрами):
r( f )
[ a ,b ]
k r( f )
[ a j ,b j ]
2
exp( 2 x)dx (exp( 4) 1) / 2 26.79907501657212 ,
N 28, k 2 написанная нами программа с использованием формул (13),(14)
При
возвращает значения ( epsilon (int 1 exact ) / exact ):
int 1 =26.79907501657214delta, exact=26.79907501657212 delta =-0.00000000000002=-2*10
14
epsilon =-0.0000000000000008.
Снова оценим погрешность составной интегральной квадратуры по формуле (17)
2
для интеграла exp( 2 x )dx (exp( 4) 1) / 2 26.79907501657212 :
f
exp(4) 1216 ,
1 ( n0 2)
1
(16)
( x)dx
f
exp( 2 x) 2 dx
4
b a a
2 0 0
b
( n0 2 )
r( f )
1
k n0 2
2
2H n0 3 ( n0 2 )
217 exp( 4) 1
f
( x ) 16
7.5 1014
n0 3!
2 17!
4
Видно, что r( f ) хорошо приближает численное значение delta с избытком.
Достигнув двойной точности с помощью(17), мы получим и двойную точность численное
16
значение. В программе получена двойная точность, т.к. epsilon 8 10 .
2.Построение двумерных и трёхмерных алгоритмов.
Для построения двумерных и трёхмерных квадратурных интегральных формул
рассмотрим сначала случай функций с разделяющимися переменными.
1)
Пусть ( x, y ) [a, b] [c, d ] , воспользуемся дважды составной формулой (7) для
определённого интеграла функции одной переменной:
b d
b
d
h n n0 *k
h n n0 *k
f ( x, y ) f1 ( x ) f 2 ( y ), f ( x, y )dxdy f1 ( x )dx f 2 ( y )dy 1 0 Ci f1 ( xi ) 2 0 C j f 2 ( y j )
2 i 0
2 j 0
a c
a
c
h1h2n02 n0 k n0 k
h1h2n02 n0 k
C
C
f
(
x
)
f
(
x
)
i j 1 i 2 j
Ci , j f xi , y j
4 i 0 j 0
4 i, j 0
(18)
ba
d c
, h2
, i, j 0, n
n
n
2) Пусть ( x, y, z ) [a, b] [c, d ] [e, f ] , воспользуемся трижды составной формулой (7)
для определённого интеграла функции одной переменной:
Ci , j CiC j , f xi , y j f1 xi f 2 y j , xi a ih1, y j c jh2 , h1
b d f
b
d
f
c
e
f ( x, y, z ) f1 ( x ) f 2 ( y ) f 3 ( z ), f ( x, y, z )dxdydz f1 ( x )dx f 2 ( y )dy f 3 ( z )dz
a c e
h1n0
2
n0 k
C f ( x )
i 1
i 0
i
h2n0
2
n0 k
C
j
f2 ( y j )
j 0
h1h2h3n03 n0 k
Ci , j , s f ( xi , y j , zs )
8
i, j,s 0
a
h3n0
2
n0 k
C
s 0
f ( zs )
s 3
3 n0 k n0 k n0 k
1 2 3 0
hh h n
8
C C C
i
j
f ( xi ) f 2 ( y j ) f 3 ( zs )
s 1
i 0 j 0 s 0
(19)
196
Ci , j , s Ci C j Cs , f xi , y j , zs f1 xi f 2 y j f 3 zs , xi a ih1 , y j c jh2 , zs e sh3
h1
ba
d c
d c
, h2
, i, h3
, i, j, s 0, n
n
n
n
Формулы (20),(21),(22)получим подстановкой в (18) n0 6,10,14 соответственно
1)
(b a )
(d c)
, h2
,
n
n
I 2 f ( x, y )dxdy 9h1h2 Ci , j f xi y j , h1
b d
a c
n
n
j 0 i 0
(20)
Ci , j Ci C j ; xi a h1 i, y j c h2 j; i, j 0, n
Где: Ci , C j - весовые коэффициенты определяются формулой (8)
I 2 f ( x, y )dxdy 25h1h2 Ci , j f xi y j , h1
b d
a c
n
n
j 0 i 0
(b a)
(d c)
, h2
,
n
n
(21)
Ci , j Ci C j ; xi a h1 i, y j c h2 j; i, j 0, n
Где: Ci , C j - весовые коэффициенты определяются формулой (11)
I 2 f ( x, y )dxdy 49h1h2 Ci , j f xi y j , h1
b d
n
n
j 0 i 0
a c
(b a )
(d c)
, h2
,
n
n
(22)
Ci , j Ci C j ; xi a h1 i, y j c h2 j; i, j 0, n
Где: Ci , C j - весовые коэффициенты определяются формулой (14)
Формулы
(23)-(25)получим
подстановкой
в
(19)
I 3 f ( x, y, z )dxdydz 27h1h2 h3 Ci , j ,k f xi y j z k , h1
b d f
a c e
n
n
n
k 0 j 0 i 0
n0 6,10,14 соответственно
(b a)
(d c)
( f e)
, h2
, h3
n
n
n
(23)
Ci , j ,k Ci C j Ck ; xi a h1 i, y j c h2 j, z k c h3 k ; i, j, k 0, n
Где: Ci , C j , Ck - весовые коэффициенты определяются формулой (8)
b d f
I 3 f ( x, y, z )dxdydz 125h1h2 h3 Ci , j ,k f xi y j z k , h1
a c e
n
n
n
k 0 j 0 i 0
(b a )
(d c)
( f e)
, h2
, h3
(24)
n
n
n
Ci , j ,k Ci C j Ck ; xi a h1 i, y j c h2 j, z k c h3 k ; i, j, k 0, n
Где: Ci , C j , Ck - весовые коэффициенты определяются формулой (11)
b d f
I 3 f ( x, y, z )dxdydz 343h1h2 h3 Ci , j ,k f xi y j z k , h1
a c e
n
n
n
k 0 j 0 i 0
(b a )
(d c)
( f e)
, h2
, h3
n
n
n
(25)
Ci , j ,k Ci C j Ck ; xi a h1 i, y j c h2 j, z k c h3 k ; i, j, k 0, n
Где: Ci , C j , Ck - весовые коэффициенты определяются формулой (14)
Теорема 1: Формульные пары (20)-(8);(21)-(11);(22)-(14);(23)-(8);(24)-(11);(25)-(14)
справедливы для любой функции
f ( x, y ) С n0 2 [1,1] [1,1] f x, y, z С n0 2 [1,1] [1,1] [1,1]
необязательно
с
разделяющимися переменными. Порядок погрешности двумерной (трёхмерной)
интегральной квадратурной формулы совпадает с порядком погрешности одномерной
квадратурной формулы (равен 7,11,15 соответственно для алгоритмов (8),(11),(14)).
Доказательство: проведём в два этапа:
Утверждение 1. Для двойного интеграла на каноническом квадрате x, y [1,1] [1,1]
и тройного интеграла на каноническом кубе x, y, z [1,1] [1,1] [1,1] равноудалённые
от центра точки имеют равные весовые коэффициенты.
197
Не теряя общности, доказательство рассмотрим для двумерного случая, выберем
каноническую область квадрат ( x, y ) [1,1] [1,1] со стороной 2.
1.1) Сделаем линейную замену переменных в интеграле
x'
1
y 1, y '
1
1
1
x 1; dx ' dy; dy ' dx
1
1
h1h2 n02 n0
h1h2 n02 n0
Ci , j f xi , y j
C j,i f y j , xi
f ( x, y )dxdy 1 1 f ( y , x )dy dx 1 1 f ( y , x )dx dy 4 i
4 i , j 0
, j 0
1 1
Последняя формула означает инвариантность интеграла от произвольной функции
при зеркальном отражении канонического квадрата относительно прямой y x . Что в
свою очередь для f xi , y j 1 приводит к симметрии (равенству) весовых коэффициентов
1 1
1 1
1 1
'
'
'
'
'
'
'
'
C j ,i Ci , j , i, j 0, n0 .
1.2) Рассмотрим инверсию канонического квадрата относительно центра (поворот на 1800 )
x'
1
1
1
1 1
1 1
x 1 , y'
1
1
1
y 1 ; dx ' dx; dy ' dy
1 1
f ( x, y )dxdy f ( x ' , y ' )d x ' d y ' f ( x ' , y ' )dx ' dy '
1 1
1 1
1 1
hh n
h1h2n02 n0
f ( x , y )dx dy
Cn0 i , n0 j f xn0 i , yn0 j
Ci , j f xi , y j 4 i
4 i, j 0
, j 0
11
Равенство интегралов означает инвариантность интеграла при повороте
канонического квадрата на 1800 (преобразование инверсии), а в случае f xi , y j 1 для
1 1
'
'
'
n0
2
1 2 0
'
интегральных сумм Ci , j Cn0 i ,n0 j , i, j 0, n0 .
1.3) Рассмотрим поворот канонического квадрата на 900 .
x'
1
y 1 , y '
1
1
1
1
x 1; dx ' dy; dy ' dx
1
f ( x, y )dxdy f ( y , x )d y dx
1 1
'
1 1
1 1
1 1
1 1
1 1
'
'
1 1
f ( y ' , x ' )d x ' dy '
'
f ( y , x )dy dx
'
'
'
'
1 1
1 1
f ( y , x )dy dx
'
'
'
'
1 1
h1h2n02 n0
h1h2n02 n0
C
f
x
,
y
i, j i j
Cn j ,i f yn0 j , xi
4 i, j 0
4 i, j 0 0
Равенство интегралов означает инвариантность интеграла при повороте
канонического квадрата на 900 , а в случае f xi , y j 1 для интегральных сумм
Ci , j Cn0 j ,i , i, j 0, n0 .
На целочисленной решётке с координатами
x , y
i
j
квадрат с фиксированным
расстоянием до центра есть xi y j const , поэтому решением этого же уравнения будут
2
2
пары чисел: xi , y j , xi , y j , xi , y j , xi , y j , y j , xi , y j , xi , y j , xi , y j , xi .
Последние 4 пары отличаются от первых четырёх преобразованием симметрии
1.1.Первая и четвертая пары, а также вторая и третья пары отличаются друг от друга
преобразованием инверсии 1.2. Наконец, первая и шестая пары совмещаются поворотом
относительно центра на 900 (преобразование 1.3). Следовательно, в силу 1.1-1.3 весовые
коэффициенты на всех восьми (или четырёх) указанных точках имеют равные значения.
198
Доказанное утверждение 1 справедливо независимо от вида алгоритма построения
весовых коэффициентов (8),(11),(14).
Утверждение 2. Квадратурные интегральные формулы (18) для двойного интеграла и
(19) для тройного интеграла справедливы для произвольной непрерывной функции (не
обязательно с разделяющимися переменными). Порядок погрешности в двойной
интегральной квадратурной формуле (18) и в тройной (19) тот же, что и в одномерной
квадратурной формуле (7).
Доказательство для определённости проведём для двойного интеграла
в
простейшем случае n0 6 .На квадрате x, y [1,1] [1,1] с равномерной сеткой для
случая n0 6 имеем
n0 12 49
узлов (соответственно 49 весовых коэффициентов
Ci , j , i, j 0, n0 ). Квадратурная формула для двойного интеграла (аналог (6)) имеет вид:
1 1 1 1
1 1 1 1
f ( x, y)dxdy C f 0,0 C f 3 ,0 f 3 ,0 f 0, 3 f 0, 3 C f 3 , 3 f 3 , 3
1 1
1
2
1 1
2
1 2
2
1 1
1 1
2
2
2 1
f , f , C3 f ,0 f ,0 f 0, f 0, С 4 f , f ,
3
3 3
3 3
3
3
3 3
3
3 3
2 2 2 2
2 1 1 2 1 2 2 1 2 1 1 2
f , f , f , f , f , f , С5 f , f ,
3 3 3 3 3 3 3 3 3 3 3 3
3 3 3 3
2 2 2 2
f , f , С6 f 0,1
3 3 3 3
1
1
1
f ,1 f ,1 f 1,
3
3
3
1 1 1
f 0,1 f 1,0 f 1,0 С7 f ,1 f 1, f 1,
3 3 3
2
1
1
2
2
f 1, f ,1 С8 f ,1 f 1, f 1,
3
3
3
3
3
2 2 2 2
2
f ,1 f 1, f ,1 f ,1 f 1, С9 f (1,1) f (1,1) f (1,1) f (1,1) (26)
3 3 3 3
3
В формуле(26) согласно утверждению 1 сгруппированы с одинаковым весом все
узлы, равно - удалённые от центра канонического квадрата x, y [1,1] [1,1] как видно
из формулы (26), число таких узлов 4 либо 8, за исключением центра.
Аналогично одномерной интерполяционной задаче (2) можно поставить двумерную
на каноническом квадрате и трёхмерную на каноническом кубе задачи интерполяции:
n0
1 1
dxdy
Ci , j 4
i , j 0
1 1
(27)
1 1
n
x 2 s y 2l dxdy 0 C x 2 s y 2l ,2s 2l 0, n
i, j i j
i , j 0
1 1
В формуле (27) f ( x, y ) С n0 2 [1,1] [1,1] используется множество линейно
независимых степенных функций двух переменных
1, x, y, x 2 , xy, y 2 ,...x n0 , x n0 1 y,...xy n0 1 , y n0 . Здесь n0 - алгебраический порядок точности
квадратурной формулы (27). Из-за симметрии, как и в задаче (2) нетривиальные условия
на коэффициенты получим при условии, что степени x, y чётные, учитывая формулу (26),
получим:
1) f ( x, y ) 1 :
1 1
dxdy 4
1 1
n0
C
i , j 0
i, j
С0 4С1 4С2 4С3 8С4 4С5 4С6 8С7 8С8 4С9
2) f ( x, y) x 2 (для f ( x, y) x 2 в силу симметрии получим тот же результат):
199
1 1
4
2
x dxdy 3 9 С
2
1
1 1
4
8
20
16
40
52
С2 С3 С4 С5 2С6 С7 С8 4С9
9
9
9
9
9
9
3) f ( x, y) x 4 (для f ( x, y) y 4 в силу симметрии получим тот же результат):
1 1
4
2
x dxdy 5 81 С
4
1
1 1
4
32
68
64
328
388
С2 С3 С4 С5 2С6
С7
С8 4С9
81
81
81
81
81
81
4) f ( x, y) x 2 y 2 :
1 1
x
2
4 4
32
64
8
32
С2 С4 С5 С7 С8 4С9
9 81
81
81
9
9
y 2 dxdy
1 1
5) f ( x, y) x 6 (для f ( x, y) y 6 в силу симметрии получим тот же результат):
1 1
4
2
x dxdy 7 3
6
6
С1
1 1
4
128
260
256
2920
3172
С2 6 С3 6 С4 6 С5 2С6 6 С7 6 С8 4С9
6
3
3
3
3
3
3
4
4
6) f ( x, y ) x y (для f ( x, y) x 2 y 4 в силу симметрии получим тот же результат):
1 1
x
4
y 2 dxdy
1 1
4
4
80
256
360
1872
6 С2 6 С4 6 С5 6 С7 6 С8 4С9
15 3
3
3
3
3
7) f ( x, y) x8 :
1 1
4
2
x dxdy 9 3
8
8
С1
1 1
4
512
1028
1024
26248
27268
С2 8 С3 8 С4 8 С5 2C6
С7
С8 4С9
8
8
3
3
3
3
3
38
8) f ( x, y) x 6 y 2 (для f ( x, y) x 2 y 6 в силу симметрии получим тот же результат):
1 1
x
6
y 2 dxdy
1 1
4
4
272
1024
2952
13968
8 С2 8 С4 8 С5 8 С7 8 С8 4С9
21 3
3
3
3
3
9) f ( x, y) x 4 y 4 :
1 1
x
4
y 4 dxdy
1 1
4
4
128
1024
648
1296
8 С2 8 С4 8 С5 8 С7 8 С8 4С9
25 3
3
3
3
3
Если верно утверждение 2 с формулой весов Сi , j Ci C j , i, j 0, n0 и сохранением
алгебраического порядка точности таким же, как и в одномерном случае (равен семи для
n0 6 ), то условия 1)-6) должны выполняться тождественно, а условия 7),8),9) имеют
погрешность. Учитывая(8) получим
2
2
4624
68 9
612
81
68
9
С0 С3С3
; С1 С3С4
; С2 С 4 С 4
;
105 140 14700
105 11025
140 19600
2
68 18 1224
9 18 162
324
18
С3 С3С5
; С4 С4С5
; С5 С5С5
;
105 35 3850
140 35 4900
35 1225
С6 С3С6
68 41
2788
9 41
369
18 41
738
; С7 С4С6
; С8 С5С6
;
105 420 44100
140 420 58800
35 420 14700
2
1681
41
С9 С6С6
420 176400
(28)
Подставим коэффициенты(28) Сi i 0,9 в интегральную квадратурную формулу
(26) для двойного интеграла от произвольной непрерывной функции f ( x, y ) проверяя
справедливость Сi , j Ci C j , i, j 0, n0 . Результаты проверки собраны в таблице 3.
Таблица 3
200
f ( x, y ) 1
num(1) 3.9999999999999996
num(2) 1.3333333333333333
exact (1) 4.0000000000000000
exact (2) 1.3333333333333333
f ( x, y ) x 4
num(3) 0.4444444444444444
exact (3) 0.4444444444444444
f ( x, y ) x 2 y 2
num(4) 0.7999999999999999
exact (4) 0.8000000000000000
f ( x, y ) x
num(5) 0.5714285714285714
exact (5) 0.5714285714285714
f ( x, y ) x 4 y 2
num(6) 0.2666666666666666
exact (6) 0.2666666666666667
f ( x, y ) x 8
num(7) 0.4707818930041152
exact (7) 0.4444444444444444
f ( x, y ) x 6 y 2
num(8) 0.1904761904761905
exact (8) 0.1904761904761905
f ( x, y ) x 4 y 4
num(9) 0.0905820105820106
exact (9) 0.1600000000000000
f ( x, y ) x
2
6
В первом столбце указана функция, во втором - численное значение правой части
(26), в третьем столбце точное значение интеграла от указанной функции (левая
часть(26)). Из таблицы 3, что квадратурная интегральная формула (26) имеет седьмой
алгебраический порядок точности по определению 2 (учитывая тривиальное тождество
0=0 для функции f ( x, y ) x l y s , l s 7 (27)) .
n0 6
Нами показано, что с использованием тождества Сi , j Ci C j , i, j 0, n0
двухмерная квадратурная формула (26) имеет седьмой алгебраический порядок точности
для произвольной функции f ( x, y ) С n0 2 [1,1] [1,1] и этот порядок совпадает с
порядком одномерной формулы.
Замечание; Из формул (18),(19) для функций с разделяющимися переменными следует
равенство алгебраических порядков точности двойных(18) (тройных(19)) квадратурных
формул с учётом Ci , j CiC j (Ci , j , s CiC jCs ), i, j, s 0, n0 алгебраическому порядку точности
одномерной квадратурной формулы(7) . Действительно, перемножая интегральные
суммы, точные для многочленов степени m , получим двойные или тройные интегральные
суммы точные для многочленов того же порядка.
Проверим численно, используя в программе формулы (20),(8) для тройного
интеграла, что сохраняется алгебраический порядок точности такой же, как и в
однократном интеграле, т.е. равный семи,
2 2 2
2
y5 z6 x
211
e 1 e2 1
436,1595630203324 ( 16 знач. цифр).
30
30
0 0 0
Для небольших N численно получим:
Если N 18 , программа возвращает значение eps=0.0000000000245057
int 3 =436.1595630310208100, exact=436.1595630203324300 delta =0.0000000106883
Если N 36 , программа возвращает значение eps=0.0000000000000989
int 3 =436.1595630203755700, exact=436.1595630203324300 delta =0.0000000000431
Определим порядок погрешности формул(20),(8) - при уменьшении шага сетки в 2 раза
погрешность уменьшится в число раз:
delta 2 0.0000000106883
248 256 28 т.е. порядок погрешности равен 8(согласно
delta1
0.0000000000431
определению 2).
3. Интерполяция интегралов в полярной и сферической системах координат
x 4 5
e y z dxdydz
201
Рассмотрим равновеликое отображение обобщённых координат - полярных в кольце
(круге) на прямоугольник в декартовой системе координат, сохраняющее площади фигур
и равномерный шаг сетки вдоль всех координатных линий:
b r2 r1, a r2 r1 ,
где: r2 ,r1 внешний и внутренний радиусы кольца,
a, b стороны прямоугольника,
Тогда площадь кольца равна S ab r22 r12 , где
r r
x
a
r2 r1
0 x a,0 y b,
, y r r1 , dx
d , dy dr , h1
, h2 2 1 .
a 2
2
n
n
При таком отображении оба берега разреза кольца вдоль радиуса
0 x 0; 2 x a переходят в вертикальные стороны прямоугольника,
внутренняя и внешняя окружности r1 const y 0; r2 const y r2 r1 переходят в
горизонтальные стороны прямоугольника.
По теореме 4(стр.282) [5]отображение x(r, ), y(r, ) должно обладать следующими
a
Dx, y xr , x
a
свойствами: якобиан замены координат
2
0 во всех точках
Dr , yr , y
2
1 0
рассматриваемой области; частные производные xr , x , yr , y непрерывны во всех точках
области; отображение x(r, ), y(r, ) взаимно однозначно в силу линейности
отображения обобщённых координат. Все требования выполнены, если область
интегрирования - кольцо ( r1 0 ). В случае круга ( r1 0 ) выполнены первые 2 требования
из трёх Третье - неоднозначность отображения в точке r1 0 - не выполнено, что в данном
интеграле несущественно, так как мера интеграла в полярных координатах в окрестности
указанной точки dI 2 f r, rdrd f 0, 0drd 0 .
r2 2
b a
I 2 f r , rdrd
r1 0
2
r2 r1
0 0
r2 r1 r2 r1
2
2
2
f y r1 ,
x y r1 dy dx
a
a
a
2
2
f y r1 , x (r1 y)dydx
r2 r1
a
r2 r1 r2 r1
r2 r1 r2 r1
2
f y r1 ,
x (r1 y)dydx
a
2
f y r1 , x (r1 y)dydx
a
n
2 n0h1 n0h2
2
n0 h1h2
2
(29)
C
f
r
y
,
x
(
r
y
)
Ci , j f r1 jh2 , ih1 (r1 jh2 )
i, j
1
j
i
1
j
r2 r1 2 2 i 0 j 0
a
2r2 r1 i 0 j 0
a
Рассмотрим пример (ответ с 16 значащими цифрами):
10
2
10 2
2
sin 2
r10 1
8
2
9
r
sin
rdrd
1
cos
2
d
10
109 3141592653.589793
0 0
10 0 2 0
4 0
n
n
2
n
Программа для двойных интегралов в полярной системе координат с учётом
формул(29),(13),(14):
при n1 5, r1 0.0, r2 10.0 возвращает значения (в программе N n ):
n=14
k=1
numerical=3141521192.673302
exact=3141592653.589793
delta
=71460.916492n=14
epsilon 14)=0.0000227467161950
n=28 k=2 numerical=3141592655.167346 exact=3141592653.589793 delta =-1.577553n=28
epsilon (28)=-0.0000000005021507
n=42 k=3 numerical=3141592653.589776 exact=3141592653.589793 delta =0.000017n=42
epsilon (42)=0.0000000000000055
n=56 k=4 numerical=3141592653.589798 exact=3141592653.589793 delta =-0.000005n=56
202
epsilon (56)=-0.0000000000000015
n=70 k=5 numerical=3141592653.589792 exact=3141592653.589793 delta =0.000001n=70
epsilon (70)=0.0000000000000005
v(1)=3141521192.673302
v(2)=3141592653.589776
v(3)=3141592653.589792
v(4)=3141592653.589798
v(5)=3141592655.167346
result: k (opt ) =5 epsilon (5) =-0.0000000000000005
int(polar) =3141592653.589792, exact=3141592653.589793 delta =-0.000001.
Мы видим, что значение интеграла в круге r1 0, r2 10 достигает двойной точности
epsilon 5 *1016 и n 70 . Часто на практике неизвестно точное значение интеграла,
например, оно не может быть выражено через элементарные функции. Поэтому в
программе использован алгоритм медианной фильтрации, позволяющий из нескольких
значений интеграла при малых параметрах N 14k выбрать значение с наименьшей
относительной ошибкой, соответствующее центральному элементу окна фильтра (элемент
массива v[n1 1 / 2], n1 5 ), как видно по результату программы. Медианная фильтрация
применима здесь благодаря знакопеременности относительной погрешности epsilon [7].
Получаемая численная погрешность не является случайной величиной и повторяет своё
значение при запуске программы. Оптимальное значение числа узлов k (opt )
с
наименьшей относительной ошибкой может быть найдено предварительно и
фиксироваться в цикле при вычислении нескольких тысяч интегралов. В алгоритме(14)
мы видим рациональные весовые коэффициенты с 10 значащими цифрами, тогда
используя формулы (22),(25) получим произведение весовых коэффициентов с 20 и 30
значащими цифрами соответственно. Распространённые компиляторы обеспечивают
только двойную точность(16 значащих цифр) относительной погрешности epsilon .
Использование компиляторов с 32 верными знаками обеспечит эффективное применение
алгоритма(14) без потери точности. Оценим порядок точности(22),(14) по первым 2
значениям delta :
delta (14) 71460.916492
45300 216 65536 ,т.е. погрешность пары (25),(13) имеет
delta (28)
- 1.577553
тот же 16 – ый порядок, что и порядок погрешности интегральных квадратур 15-го
алгебраического порядка точности на отрезке и прямоугольнике, согласно замечанию 3
леммы, но применённым уже в полярной системе координат.
10 2
10
r10
1010 510 / 10 3138524692.01402
Рассмотрим пример: r sin rdrd
10 5
5 0
8
2
Для параметров n1 5, r1 5.0, r2 10.0 программа возвращает значения:
result: k(opt)=4 epsilon (4)=0.0000000000000024
int(polar) =3138524692.0140295, exact=3138524692.014022 delta =0.0000076
То есть в кольце формульная пара(29),(14)обеспечивает двойную точность относительной
погрешности.
Рассмотрим равновеликое отображение обобщённых координат - сферической
системы в шаре (шаровом слое) на декартовую систему в параллелепипеде, сохраняющее
объёмы тел и равномерный шаг сетки вдоль всех координатных линий:
2
2
4 r r1r2 r1
, c r2 r1 ,
a r2 r1 , b 2
3
r2 r1
где: r2 ,r1 внешний и внутренний радиусы шарового слоя,
a, b, c стороны параллелепипеда
203
4
Тогда объём шарового слоя V abc r23 r13 , где
3
x y
a
b
0 x a,0 y b,0 z c,
, , z r r1 , dx
d , dy d , dz dr
a 2 b
2
с
b
a
z k kh1 , h1 ; y j h2 j, h2 j; xi h3i, h3 i; i, j, k 0, n
n
n
n
При отображении x(r, , ), y(r, , ), z(r, , )
внутренняя и внешняя сфера
переходят
в
нижнюю
и
верхнюю
грани
параллелепипеда
Сечения:
r1 const z 0; r2 const z r2 r1 .
0 x 0; 2 x a; 0 y 0, y b . По теореме 9 (стр.298)[5]
отображение x(r, , ), y(r, , ), z(r, , ) должно обладать свойствами:
a
0 0
2
xr , x , x
D x, y , z
b
ab
1) якобиан перехода
yr , y , y 0
0 2 0 во всех точках
Dr , ,
2
zr , z , z
1 0 0
рассматриваемой области;
2) частные производные xr , x , x , yr , y , y , zr , z , z непрерывны во всех точках области;
3)отображение x(r, , ), y(r, , ), z(r, , ) взаимно однозначно.
Первые два требования выполнены всегда.
В сферическом слое или шаре не выполнено третье условие (однозначность
отображения) в 2 азимутальных направлениях 1 0,2 (особые направления) и в
центре шара r 0 . Мы можем проколоть сферический слой насквозь вдоль выбранных
направлений, что топологически эквивалентно сфере с 1 ручкой. Сжать указанную
область от полюсов к экватору так, что получится торообразный слой с плоскими
боковыми гранями, разрезать его от оси симметрии плоскостью 0 и разогнуть
полученное тело в параллелепипед. Вдоль особых направлений неоднозначность
отображения нарушается, что, однако, не сказывается на мере интеграла в сферических
координатах, так как во всех точках направлений 0, , f r, , r 2 sin( )drd 0 .
Для шара имеем ещё одну особую точку r1 0 , выполнены первые 2 требования гладкой
замены переменных интегрирования кроме третьего (неоднозначность отображения в
точке r 0 ). Что для интеграла несущественно, так как мера интеграла в сферических
координатах в окрестности указанной точки:
dI3 f r , , r 2 dr sin dd f 0, , 02 dr sin dd 0 .
r2 2
y 2
I 3 f r , , r 2 dr sin dd f r1 z, ,
b a
r1 0 0
0 0 0
c b a
4 r2 2 r1r2 r12
r2 r1
r
r
2 2 1 3
2
ab
3
2
2 r2 r1r2 r1
2
r r
2 1
y 2
y
2
f r1 z, ,
x r1 z sin dzdydx
b a
b
2
2
4 r2 r1 r2 r1
3
r
r
2
1
r2 r1
y 2
2
x r1 z dz sin dy dx
a
b b
r r
2
1
y 2
y
2
f r1 z, ,
x r1 z sin dzdydx
b a
b
204
y j 2
y j
2
f r1 z k ,
, xi r1 z k sin
b a
2 r2 r1 r2 r1
i 0 j 0 k 0
b
3
n
n
n
3n0 h1h2 h3
2
2
Ci , j ,k f r1 kh1 , h2 j,
h3i r1 kh1 sin h2 j
2
2
b
a
16 r2 r1r2 r1 i0 j 0 k 0
b
Рассмотрим пример:
3
2
2
10 2
n0 h1 n0 h2 n0 h3
2 2
2
n
n
n
C
i, j ,k
10
2
(30)
2
r10 1
1
10
10
r
sin
sin
r
dr
sin
d
d
1
cos
2
d
1
cos
2
d
10
5
5 0 0
10 5 2 0
2 0
20
Программа для тройных интегралов в сферической системе координат с учётом формул
(11),(30):
возвращает значения (в программе N n ):
n=10
k=1
numerical=4914074506.509758
exact=4929983057.770709
delta =15908551.260951
epsilon (10)=-0.0032373443340911
n=20 k=2 numerical=4929989554.759921 exact=4929983057.770709 delta =6496.989212
epsilon (20)=0.0000013178505025
n=30 k=3 numerical=4929983057.770734 exact=4929983057.770709 delta =0.000025
epsilon (30)=0.0000000000000050
v(1)=4914074506.509758 v(2)=4929983057.770734 v(3)=4929989554.759921
result: n(opt)=3 eps(3)=0.0000000000000050
int =4929983057.770734, exact=4929983057.770709 delta =0.000025.
По первым 2 значениям delta при малых N оценим порядок погрешности
формул(26),(10):
delta (10) -15908551.260951
2028 211
2449 212 4096 , что является хорошим
delta (20)
6496.989212
подтверждением леммы для алгоритма(11) и квадратур с алгебраическим порядком
точности равным 11, но применённым уже к тройному интегралу в сферической системе
координат.
Выводы:
1) Получены формулы и алгоритмы для составных интегральных квадратур с
равномерным шагом,(7),(8);(10),(11);(13),(14) с 7,11,15 алгебраическим порядком
точности соответственно.
2) Найдены аналоги формул (20)-(22), (23) – (25) для двойных на прямоугольнике и
тройных в параллелепипеде интегралов с сохранением порядка погрешности, что и
в одномерном случае.
3) Построены линейные отображения обобщённых координат с кольца (круга) на
прямоугольник, с шарового слоя (шара) на параллелепипед, а также интегральные
квадратуры(29) в полярной системе координат и(30) в сферической системе
координат с сохранением алгебраического порядка точности, что проверено
численно.
7
2
2
Литература
1)Тихонов А.Н., Самарский А.А. Уравнения математической физики. – М.:Наука, 2008.
2)Пикулин В.П.,Похожаев С.И. Практический курс по уравнениям математической
физики. – М.:Наука,1995.
3)Н.С.Бахвалов, А.В.Лапин, Е.В.Чижонков. Численные методы в задачах и упражнениях.
– М.:БИНОМ. Лаборатория знаний,2010.
205
4)Голубева О.В.,Ехилевский С.Г., Пастухов Ю.Ф., Пастухов Д.Ф. Об эффективном поиске
безусловного экстремума гладких функционалов в конечномерных задачах. Вестн. Полоц.
гос. ун-та. Сер. С. Фундаментальные науки. – 2016. – № 4 . –С. 119 – 131.
5) Бутузов В.Ф., Н.Ч.Крутицкая, Г.Н.Медведев, А.А.Шишкин. Математический анализ в
вопросах и задачах, – М. Физико – математическая литература, 2001 – 480 с.
6)Бартеньев О.В. “Математическая библиотека IMSL”.:(Ч1). – М .:Диалог МИФИ,2001. –
457 с.
7) Пастухов Ю.Ф., Пастухов Д.Ф. Задача построения поля линий тока по температурному
разрезу. Вестн. Полоцкого государственного ун-та. Серия С. Фундаментальные науки. –
2015. – № 4 . –С. 27 – 36.
206
ЛИТЕРАТУРА
1.Бахвалов Н.С. Численные методы. - М.:Наука, 1975.Андерсон Д. Дискретная
математика и комбинаторика.: Пер. с англ. – М.: Издательский дом «Вильямс»,
2004. – 960 с.: ил.
2.Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы. – 6-е изд. –
М.:БИНОМ. Лаборатория знаний,2008.
3.Калиткин Н.Н. Численные методы. – М.:Изд. Наука,1977.
4.Бахвалов Н.С., Лапин А.В., Чижонков Е.В. Численные методы в задачах и
упражнениях: учебное пособие. – М.:БИНОМ. Лаборатория знаний,2010. – 240 с.
5.Самарский А.А. Теория разностных схем. – М.:Наука, 1983.
6. Самарский А.А., Вабишевич П.Н., Самарская Е.А. Задачи и упражнения по
численным методам. – М.: Эдиториал УРСС, 2000.
7.Марчук Г.И. Методы вычислительной математики. – М.:Наука, 1980.
8.Воеводин В.В., Кузнецов Ю.А. Матрицы и вычисления. – М.:Наука,1984.
9.Голуб Дж., Ван Лоун Ч. Матричные вычисления. – М.:Мир, 1980.
10.Демидович Б.П., Марон И.А., Шувалова Э.З. Численные методы анализа. –
М.:ФИЗМАТЛИТ,1962.
11.Самарский А. А., Вабищевич П. Н. Вычислительная теплопередача. — М.:
Едиториал УРСС, 2003. — 784 с.
12.Алгоритмы. Просто как дважды два / И. В. Красиков, И. Е. Красикова. — М.:
Эксмо, 2007. — 256 с.
13.Тихонов А.Н., Самарский А.А. Уравнения математической физики. – М.:Наука,
2008.
14.Самарский А.А., Вабишевич П.Н. Численные методы обратных задач
математической физики. – М.:Издательство ЛКИ, 2014.- 480 с.
15.Андерсон Д., Таннехилл Дж., Плетчер Р. Вычислительная гидромеханика и
теплообмен: В 2-х т. Т. 2: Пер. с англ. — М.: Мир, 1990. — 728—392 с, ил.
16.Бахвалов Н.С., Корнев А.А., Чижонков Е.В. Численные методы. Решения задач и
упражнения. – М.:Дрофа.2009.
17.Годунов С.К., Рябенький В.С. Разностные схемы. – М.:Наука, 1977.
18. Уилкинсон Дж.Х. Алгебраическая проблема собственных значений. – М.:Наука,
1970.
207
УДК 517. 6
Численные методы. Лекции. Численный практикум.
кандидат физико-математических наук Пастухов Дмитрий Феликсович
кандидат физико-математических наук Пастухов Юрий Феликсович
Полоцкий государственный университет
2018
208