Справочник от Автор24
Поделись лекцией за скидку на Автор24

Численные методы. Нормированные пространства. Аппроксимация функций и производных. Обыкновенные дифференциальные уравнения

  • ⌛ 2018 год
  • 👀 493 просмотра
  • 📌 434 загрузки
  • 🏢️ ПГУ (Полоцкий государственный университет)
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Численные методы. Нормированные пространства. Аппроксимация функций и производных. Обыкновенные дифференциальные уравнения» pdf
Министерство образования Республики Беларусь Учреждение образования «Полоцкий государственный университет» Д.Ф. Пастухов, Ю.Ф. Пастухов ЧИСЛЕННЫЕ МЕТОДЫ. ЛЕКЦИИ. ЧИСЛЕННЫЙ ПРАКТИКУМ. Учебное пособие к лекционным и практическим занятиям для студентов специальности 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 , xm1 )   ( xm1 , xm2 )     ( xn1 , xn )  ( m1   m1     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  mx 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 ,..., xim11 , 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 ,..., xim11 , xim 1 ,..., xnm11 , 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  2e20  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  2e1.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 103 , а значение функционала в экстремальной точке с точностью порядка 103  106 6 значащими цифрами. Зададим шаг итерации h  0.001 с начальным расстоянием между первым приближением и стационарной точкой на 100 единиц. Понадобится число 102 / 103  105 итераций (если градиент по модулю 1, иначе точность оценки ещё хуже или число итераций ещё больше), в то время как можно получить решение и экстремальное значение гладкого функционала с абсолютной точностью 1015 всего за 30 шагов итерации с тем же начальным удалении от стационарной точки. Число арифметических операций и ошибка округления пропорциональны размерности цикла. Одним из эффективных методов численного решения системы уравнений является метод Зейделя[2]. Даже более эффективным по сравнению с формулой касательных Ньютона (в случае если метод Зейделя и метод Ньютона применимы одновременно). В матричном методе Ньютона нужно вычислить n 2 элементов матрицы Якоби, погрешность дополнительно увеличивается при отыскании обратной матрицы к матрице Якоби:    1      1 x m1  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 x1m1, x2m1,..., xim1,..., xnm   0 , i  1, n представляет    уравнение с одной неизвестной xim1 переменной, а все остальные переменные при фиксированной итерации остаются “замороженными”, т.е. постоянными. В этом случае можно для нахождения 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 ,..., xim11 , xim 1 ,..., xnm11 , xnm ) ' Fn x n ( x1m 1 , x2m 1 ,..., xim11 , xim 1 ,..., xnm11 , xnm )  Обозначим вектор x m  x1 ,x2 ,...,xn  (4) Fi ( x1m 1 , x2m 1 ,..., xim11 , xim ,..., xnm ) , ' Fi xi ( x1m 1 , x2m 1 ,..., xim11 , xim ,..., xnm ) m m  m   x m 1   x1, x2m  x2 ,..., xnm  xn , аналогично: x m1  x1m1,x2 m1,...,xn m1  x1m1  x1, x2m1  x2 ,..., xnm1  xn  ,где вектор ( x1, x2 ,..., xn ) представляет стационарную искомую точку решения системы (2)  (5), т.е.:  lim x1m1  lim x1m  x1 , f x'1 ( x1 , x2 ,..., xn )  0,..., lim xnm1  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 x1m1, x2m1,..., xim1,..., xnm   Fi x1m1, x2m1,..., xim1,..., 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 : xkm1  xk  xkm1 , 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  xim11 , xi  xim ,..., xn  xnm ) f x'i' xi ( x1  x1m 1 , x2  x2m 1 ,..., xi 1  xim11 , xi  xim ,..., xn  xnm ) (6) , .... f x' n ( x1  x1m 1 , x2  x2m 1 ,..., xn 1  xnm11 , xn  xnm ) f x' 'n x n ( x1  x1m 1 , x2  x2m 1 ,..., xn 1  xnm11 , 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  x1m1, x2  x2m1,..., xi 1  xim11, 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  O1 x m    f x'1' x j ( x )x mj  O1 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 ) j2 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 j2  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 j2 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 ) : j2 M 1,1  x m q1  x m q  x m (8.1) M 2,1 3) Для произвольного i  го уравнение системы (6) продолжим. По индукции предположим выполнение неравенств xkm1  x m , k  1, i  1 , тогда повторяя x1m 1  x m преобразование с i  м уравнением системы: 22 i 1 n 2 f x'i ( x1m1 , x2m1 ,..., xim ,..., xnm )  f x'i ( x1 , x2 ,..., xn )   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 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 x  x   m1 i m i f x'i ( x1  x1m1 ,..., xi1  xim11 , xi  xim ,..., xn  xnm ) f x''i xi ( x1  x1m1 ,..., xi1  xim11 , 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  xim11 , 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 mj1   f x''i x j ( x)x mj f ( x1  x ,..., xn  x ) m1 1 '' xi xi m n 2  O x m      i 1 1 i 1  f j 1 '' xi x j ( x )x mj1  n f j i 1 '' xi x j  xim  f j 1 f ( x1  x ,..., xn  x ) f Сокращая промежуточные записи, получим: m1 1 '' xi xi m n i 1 xim 1  xim  xim   f x'i' x j ( x)x mj1  j 1  f x'i' x j ( x )x mj1  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 mj1   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 mj1  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 m1 1 '' xi x j ( x )x mj ,..., xn  x ) m n 2  O  x m    2  O  x m  ,или:   2  O  x m    (*) Обозначение последней формулы отличается от общей нумерации в виду её важности. Учитывая индуктивное предположение xkm1  x m , k  1, i  1 , получим: i 1 xim1  f j 1 ( x ) x '' xi x j m1 j  n f j i 1 '' xi x j ( x ) x f ( x1  x ,..., xn  x ) '' xi xi xim 1  x m m1 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  m1 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 m1  max xim1  x m q  x m . i 1, n Таким образом, сходимость при выполнении условий теоремы доказана. 4) Оценим погрешность метода. Пусть x m1  x m q  x m1 q2  ...  x1 qm  x 0 qm1  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 m1 и x m , а расстояния между последовательными итерациями x m , x m 1 (рис.1). Из неравенства треугольника получим: x m  x m1  x m  x m1  x  x m  x   x m1  x m  x m  x m1  (1  q) x m , учитывая неравенство x m 1  q x m и используя неравенство треугольника, получим после m итераций: x m  x  x m  x m1  x m1  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  q2 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 m1  Ax m аналогом формулы (*), где A линейный оператор, и A - сжимающее отображение, т.е. x m1  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  x1m1   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  1015, 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, yx2   y2 , yxn   yn .Рассмотрим условия при которых данная задача имеет единственное решение. Запишем задачу в виде системы уравнений: а0  a1 x0  a 2 x02    a n1 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 n1  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 n1 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 xn21 xnn11 xnn1 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  xn21  xn 1 x0 xnn11  x0n  2 x0 xnn1  xnn11 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  xn21  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 n2 1 n2 2 n2 n2 n n 1 n 2 n n 1 n n  xnn11 x0 1 x1 x12 x1n 1 1 x2 x22 x2n 1 x1  x0 x2  x0 xn  x0  1 xn 1 xn21 xnn11 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) ni  j 0 Таким образом, если все узлы интерполяции xi и x j попарно различны, то определитель Вандермонда не равен нулю, т.е. интерполяционная задача (1) имеет единственное решение. Замечание: Благодаря единственности решения интерполяционной задачи после приведения подобных слагаемых интерполяционный многочлен будет задан единственным образом, независимо от метода его построения ( методом Лагранжа или методом Ньютона или ещё каким – то другим методом). Интерполяционный многочлен Лагранжа. Рассмотрим задачу интерполяции многочленами наименьшей степени функции y (x ) на сетке   a  x1  x2    xn  b, произвольной Ln (x ) принимающей заданные узловые значения y(a)  y1, yx2   y2 , yxn   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 )  An ( 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)  An ( 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 , xi01 , i  1, n . Следовательно, xi1  (a, b), i  1, n . Повторяя рассуждения для второй производной найдутся ( 2) n ( xi2 )  0, xi2  xi1, xi11 , 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] ab ba x  z, z  [1,1], x  [a, b],1  a,1  b 2 2 ab ba ba z  zi , i  1, n xi   zi , zi  [1,1], xi  [a, b], x  xi  2 2 2 n n ba ba  max  x  xi     max  z  zi     max n ( z ) x[ a ,b ]  2  z[ 1,1] i1  2  z[ 1,1] i 1 n n C n (7) Рассмотрим погрешность интерполяции на равномерной сетке, в которой соседние узлы находятся равном расстоянии. Первый случай – два узла: d ( z ) z1  1, z2  1, 2 ( z )  z  1z  1  z 2  1, 2  0  2 z  0, max 2 ( z )  2 (0)   1  1 z[ 1,1] dz b  a  y ( 2) 1ba 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) 1ba 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 ba 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   cosx sin t dt, x  [0,1], a  0, b  1, n  3 . В данном примере переменная x – параметр под знаком интеграла. Воспользуемся формулой(9) b  a  f (3) 1 ba 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    cosx 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)  yx1   x  x1 yx1, 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)  yx1   y ( x2 , x1 )  x  x2  yx1 , x2 , x  , откуда x  x1 (3) y( x)  yx1   x  x1 yx1, x2   x  x1 x  x2 yx1, x2 , x  Сравнение формул (1),(2), (3) показывает, что приближённую формулу аппроксимации функции можно получить, отбросив последнее слагаемое с разделённой разностью(в (3) y x1, x2 , x  ) , содержащей свободную переменную x , что эквивалентно в предыдущем разложении переменную x заменить на следующий узел (в (2) x на x2 ). Поэтому для yx1 , x   исходной сетки   x1, x2 ,... xn  получим: y( x)  yx1   x  x1 yx1, x2   x  x1 x  x2 yx1, x2 , x3   ...  x  x1 x  x2 x  xn 1 yx1, x2 ,..., xn  Последняя формула носит имя Исаака Ньютона. Свойства разделённых разностей. 1)Явная формула для разделённой разности: (4) 34 n 1 yx1 , 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 , xn1 по определению имеем:    n1  n yx2 ,..., xn , xn1   yx1 , x2 ,..., xn  1 yi yi   yx1 , x2 ,..., xn , xn1     n  n1  xn1  x1  xn1  x1   i2 x  x  i1 x  x    i j  i j  j 1, j i  j  2 , j i      n1   n n yi yi y 1 1    yi xi  x1  xi  xn1   n   n n1    n n 1    xn1  x1   i2 x  x  i1 x  x   xn1  x1   i2 xi  x j  xn1  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 yx1 , 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 , xn1  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 1f1  f 2   n 1 f1  f 2   n 1  f 1   f 2  n 1 f 1  n 1 f 2   n1f1  n1f 2  n1 f1  n1 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   n1 f x1   hn1 n  1! f ( x1 ,..., xn )  hn1 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)  yx1   x  x1 yx1 , x2   x  x1 x  x2 yx1, x2 , x3   ...  x  x1 x  x2 x  xn1 yx1 , x2 ,..., xn   ...   yx1  x  x1  x  x2  2 yx1  x  x1  x  x2  x  xn1  n1 yx1  y( x)  yx1   x  x1    ...    ...  n  1! h h h 2! h h h x  x1  2 yx1  n1 yx1  y( x)  yx1   yx1      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 xTn1 ( x)  Tn2 ( x) (1) Интерполяционный многочлен Чебышева 2 рода(обозначение U n (x) ) – U 0 ( x)  1,U1 ( x)  2 x,U n ( x)  2 xU n1 ( x)  U n2 ( 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)  cosn arccos( x), n  0 (2) Покажем эквивалентность формул (2) и (1). Действительно Tn ( x)  2 xTn1 ( x)  Tn2 ( x)  cosn arccos( x)  2 x cosn  1arccos( x)  cos(n  2) arccos( x) y  arccos( x), cosny   2 cos y cosn  1y   cos(n  2) y   cosny   cos(n  2) y   cosny   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)  cosn arccos( x)  1 . 3)Разностное уравнение. Решение рекуррентного уравнения Tn ( x)  2 xTn1 ( x)  Tn2 ( 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  2n1 .Действительно n=1, T2 ( x)  2 x 2  1, a0  2  221 . Пусть старший коэффициент в Tn (x) равен a0  2n1     Tn1 ( x)  2 xTn ( x)  Tn1 ( x)  2 x 2n1 x n  ...  2n2 x n1  ...  2n x n  Pn1 ( x) Свойство доказано методом математической индукции. 6)Нули многочлена Чебышева Tn ( x)  cosn arccos( x)   0, y  arccos( x), x  cos y, cos(ny)  0  ny  y  2  k , k  Z   2k  1     2k 2k  1 , k  Z , x  [1,1], y  [0,  ]  yk   , k  1,2,..., n  xk  cos     2n 2n   2n   (4) 7)Точки экстремума многочлена Чебышева. Tn ( x)  cosn arccos( x)   1, n arccos( xk )  k ,0  arccos( xk )  k  k    , xk  cos , k  0, n n  n     k    k Tn ( xk )  cosn arccos xk   cos n arccos  cos     cosk    1 , k  0, n (5) n       8)Определение. Приведенным многочленом Чебышева 1 рода называется многочлен Tn ( x)  Tn ( x)21n  21n cosn arccos( x)  x n  ...  an  21n an  1, x  [1,1] (6) Старший коэффициент у приведенного многочлена Чебышева первого рода равен 1, как следует из свойства 5). Нули приведенного многочлена совпадают с нулями многочлена   2k  1   Чебышева. xk  cos    , k  1, n .Точки экстремума   2n      k    k Tn ( xk )  21n cosn arccos xk   21n cos n arccos  cos     21n cosk   21n  1 , k  0, n   n   9)Теорема (Чебышев). Среди всех многочленов степени n на отрезке [-1,1]со старшими коэффициентами равным единице наименее уклоняются от нуля (т.е. имеют минимальную равномерную норму) являются приведенные многочлены Чебышева 1 рода. Доказательство. Проведём от противного. Требуется доказать, что 1 min  max Pn ( x)   min  max x n  a1 x n1  ...  an1 x  an   max Tn ( x)  21n  n1 a1 ,a2 ,...an  x[ 1,1]  a1 ,a2 ,...an  x[ 1,1]  x[ 1,1] 2 Предположим, что существует многочлен Pn ( x)  x n  a1 x n1  ...  an1 x  an степени n со старшим коэффициентом равным единице на отрезке[-1,1] и нормой меньше чем 21n . Pn ( x) C  21n . Но тогда и в точках экстремума приведенного многочлена Чебышева также  k   max Pn ( xk )  21n  Tn ( xk ) , xk  cos , k  0, n . x[ 1,1]  n  n1 Рассмотрим разность двух многочленов Q( x)  Tn ( x)  Pn ( x)  b1 x  ...  Pn1 ( 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  21n приведенный многочлен Чебышева первого рода имеет наименьшую равномерную норму среди всех многочленов степени n и старшим коэффициентом равным 1 на отрезке [-1,1] или наименее уклоняется от нуля. Доказательство завершено. 10) В качестве узлов сетки аппроксимационного многочлена Лагранжа можно выбрать корни многочлена Чебышева на отрезке [a,b]. Тогда разность искомой функции и многочленом Лагранжа в благоприятном случае представляет собой многочлен наименее уклоняющийся от нуля. Проведём оценку погрешности аппроксимации в случае отрезков [-1,1] и [a,b]. По формуле Лагранжа на сетке n1  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] нужно сделать линейную замену переменных, взаимно однозначно отображающую отрезки в друг друга ab ba ab ba  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 ba x  xi   z  zi , zi [1,1], xi [a, b], i  1, n  2  n n n y (n) y (n) ba 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 ba C 1n  b  a  C  z  zi    2  ,     n!      2 n ! 2 n ! 22 n1    i 1 C y (n) n C   2i  1    Qn1 ( z ), zk  cos    , i  1, n, i 1   2n   Используя формулу(8) получим координаты узлов Чебышева на произвольном отрезке n  z  z   z n i   2k  1   ab ba ab ba ab ba  zi   zk   cos   (9)  , k  1, n 2 2 2 2 2 2   2n   Получим формулу приведенного многочлена Чебышева на произвольном отрезке[a,b] с 2x  a  b , единичным старшим коэффициентом z  ba n  2x  a  b  ba n1 n1 Tn ( z )  2 Tn ( z )  2 Tn  , Tn ( x)  x  x1 ...x  xn     z  z1 ...z  zn    ba   2  xi  40 b  a  b  a   2 x  a  b  ba ba (10)   z  z1 ...z  zn     Tn ( z )  n1 n Tn ( z )  2 n1 Tn   2 2 2  2   2   ba  Рассмотрим пример[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 n1 C C n! 2 2 n y ( 6) n 2  06 n n 22*6 2 1 1 1   10 p   10 p  p  2 2*61 2*61 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  ci1  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  i1 i  i i1 i  i i1  i i1 i , i  1, n  1 hi hi 3 hi 3 a  a 2c  c h y  yn1 2cn hn bn  n1 n  n n1 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  i1 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 ( xi1 )  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 n2 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) xn1  n1xn  n1, xn  n xn1  n  xn  n n1xn  n1   n Откуда xn  n n 1   n , 1  n 1n 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, n1   n1  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 103 , их частное даёт 4,9 103  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 ) - норма Чебышева в пространстве равномерно – непрерывных на xa , 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 , R1  0, Rx   0, R x 2  0,..., R x n 1  0 (2) Для простоты квадратурные формулы строим на отрезке [1,1] , затем переходим к произвольному отрезку [a, b] с помощью замены переменных: b  a  , f ( x)dx  b  a  f xz 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  ab 1 f ( z )dz  2 f (0)  a f ( x)dx  b  a  f  2  1 b (3) Построим составную формулу по системе равноотстоящих узлов xi , i  1, n  с шагом ba  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 ) ab 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  ba 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  ba     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)  Oh5  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 ba  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)  Oh 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)  ba  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 : ch 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)  Oh  b (11) f (c  h )  f (c  h )  2 f (c ) h2 ( 4) ''  f ( c )  f (c)  Oh 4  ,из последних двух формул получим: h2 12 ch 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     ch h h5 ( 4 ) 5 c  h f ( x)dx  3  f (c  h)  f (c  h)  4 f (c)  90 f (c)  oh  b R( f )   f ( x )dx  a 5 h  f (c  h)  f (c  h)  4 f (c)   h f ( 4) (c)  oh5  3 90 Погрешность составной формулы( k  n ba  ): 2 2h  b  a  h5   h5 ba  max f ( 4 ) ( x )  oh5   h 4  R( f )  k  max f ( 4 ) ( x )  oh5   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)  Pnr ( x) x  xi  ,где многочлен Pnr (x) не имеет корней на [a, b]. Тогда i 1 r многочлен Qnr ( x)   n ( x) Rr ( x)  Pnr ( x) x  xi  2 не меняет знака на [a, b]. Но: i 1 b r a i 1 Rr ( x), n ( x)   p( x)Pnr ( 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 n1  x n1 x x 0 e x dx  0 dx x dx   e x  0 ne x dx  n0 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  1dx  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  1dx  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 xTn1 ( x)  Tn2 ( 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  22  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 меньше 1016 , выполнение асимптотики (порядок аппроксимации 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  xx i Lu h разностным разностный оператор Lh берут с неопределёнными коэффициентами, затем раскладывают в ряд узловые значения относительно выбранного узла xi , затем группируют множители при uxi , 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    Cii x  (2) i 1 Рассмотрим минимизирующий функционал F (u)  Lu, u   2 f , u   F (uC )  LuC , uC   2 f , uC , F (uC )  min  F (u C )  u C  u C    u C      L , uC    LuC ,   2 f , 0 C C   C   C   C (3) 88 u C    uC   uC     2 LuC ,   2 f ,   0  2 LuC   f ,   0  LuC   f , i x   0, i  1, n C   C  C    LuC ,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  2Lu, h  2 f , h  0  Lu  f , h  0, h  Lu  f Рассмотрим вторую производную по Фреше функционала(3)  2 F , h    F , h  2 Lu, h  2Lh, 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  L1 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  L1 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)  С11 ( x)  С2 2 ( x)  0.239131  x 2   0.057071  x 2  С2  0.05707 u ( y  x 2 ) num  0.239131  y   0.057071  y  , 2 du du  2x  dx dy  0,1  x  0  2 x 0.23913  0.114141  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  e0 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    Cii 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)   Cii ( x) , i 1 которое подставим в формулу(2). Пользуясь линейностью дифференциального оператора и линейностью скалярного произведения, меняя в полной сумме индекс i  j получим: 90  n  n  L Cii ( x), i x    C j L j ( x), i x    f , i x , i  1, n   i0  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  L1 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)  С11 ( x)  С2 2 ( x)    128 С  512 С  32 С2  0.14583  105 1 315 2 35  0.555561  x 2   0.145831  x 2  2 u ( y  x 2 ) num  0.555561  y   0.145831  y  , 2 du du  2x  dx dy  0,1  x  0  2 x0.55556  0.291661  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)  ab 3 интегральной формулой центральных прямоугольников  f ( x)dx  b  a  f    O b  a   2  a b i1/ 2  i1/ 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 i1/ 2  i1 i  O h3 , i1/ 2  i i1  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  ui1  ui1  ui  hu 'i      ui  hu 'i     Oh5  2 6 24  2 6 24  3 u u h 2u '''i i  i1 i1  u 'i   Oh 4   u 'i  i  Oh 2  2h 6 i1/ 2  i1/ 2 ui1  ui1  2ui u u   (qii  pi ui  f i )  O h 2  qi i1 i1  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   Oh3  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) с трёхдиагональной матрицей допускает решение методом прогонки ui1  ui1  2ui u u  q h  q h  qi i1 i1  pi ui  f i  ui1 1  i   2  pi h 2 ui  ui1 1  i    f i h 2 , i  1, N  1 2 h 2h 2  2    u N  0, u1  u0 1  h1  h1 В последней формуле выполнено условие абсолютного диагонального преобладания при достаточно малом коэффициенте 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 k21 ( 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 yk21 ( x )    K ( x, s ) yk2 ( s )ds  f ( x ), k  0,1, a yk21 ( 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 yk21  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 yk21  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 ba , 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  ab ba 1 , a  0, b  1  y(a)  4 y   y(b) ,  C1  C3     , C2  6  6  2   6  6  a 00 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 11 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  Ay  0, y  0  det I  A  0 (7) Рассмотрим пример.   y( x)   sin( x  s) y( s)ds  y( x)   sin( x) coss   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  cos2s d 2s       , 4 4 0 2 4     2 1   2s sin 2s   a21   A1 (s) B2 (s)ds   sin (s)ds   1  cos2s 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) coss   cos( x) sin s  y( s)ds  cos x  4  2 4  2       2  2 2 4 sin( x)  cos( x)   sin( x) coss   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)   Cii ( 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)   Cii ( x)    K ( x, s) Cii ( 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   Cii ( x)    K ( x, s) Cii ( 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)   Cii ( 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)   Cii ( 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)   Cii ( x)  f ( x) (2) i 1 Данное разложение подставим в уравнение(1) b n  n  C  ( x )  f ( x )   K ( x , s )   Cii ( s)  f ( s) ds  f ( x)  i i  i 1  i1  a Запишем невязку уравнения для последнего уравнения b n  n  r ( y)   Cii ( x)    K ( x, s)  Cii ( s)  f ( s) ds i 1  i1  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 rn1 ( x)  rn1 2 L2    j n1   j ( x)  j , r  y( x)  и верна теорема Стеклова b  j , r x   0,  j , r x    j ( x)r ( x)dx 2 j n1 n a b  j , r  0   j ( x)r ( x)dx  0, j  1, n  a b  b n   n   j ( x)  Cii ( x)    K ( x, s)  Cii (s)  f (s) ds dx  0, j  1, n   i1   a  i1 Поменяем порядок интегрирования и суммирования местами, получим систему из 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)  C11 ( x)  C22 ( 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)   Cii ( x), i ( x)i 1 , n i 1 Система известных линейно – независимых функций. Неизвестные коэффициенты найдем из условия равенства нулю невязки уравнения (1) в заданных точках отрезка[a,b] точках коллокации. n b n i 1 a i 1  Cii ( xk )    K ( xk , s) Cii (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  1x  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)   Cii ( x)  C11 ( x)  C22 ( x)  C33 ( 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   0sds  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)  C11 ( x)  C22 ( x)  C33 ( 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 узлов разбиения: ba ba 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) n0 Из начальных условий(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 mn1  u mn1  2u mn  z u mn 1  u mn 1  2u mn  h n 1 n n n u m  zum1  zum1  2u m 1  z   u mn1 (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     41  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     41  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 mn1  zumn 1  zumn 1  2u mn 1  z   u mn1 u mn1  u mn1  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 mn1  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 верна оценка Oh 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). Действительно, если Lu( x, y) - линейный дифференциальный оператор, то общая дифференциальная задача(2):  Lu   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 Эквивалентна трём простейшим задачам, каждая из которых в системе содержит только одно уравнение с неоднородной правой частью:  Lu 3   0, x, y   D  Lu1   F ( x, y ), x, y   D  Lu 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), учитывая их линейность, получим, что  Lu1  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). ux, 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   Решаем задачу методом разделения переменных ux, 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  ex e x  ex , chx   функций X x   Ashx   Bch x , shx   . 2 2 Используя граничные условия: 1  ch  X 0  Ash0  Bch 0  B  1; X    Ash   ch   1  A  sh    1  ch     shx   chx  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   sinx  , автоматически удовлетворяющую первому граничному условию 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   sinx , ux, y   sinx Y  y  . При этом автоматически выполняется первое краевое условие задачи 3), решение подставим в уравнение Пуассона:  sinx Y  Y '' sinx   sinx   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  Ash0  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    shx   chx  sin  y   ux, 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   xy  6  x y x y xy 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 xy 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 xy 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 xy 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 xy 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  xy  6  x 3 y x y xy 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 xy 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 xy 5 y 6  135   2u  2u  2 u  h 3   3u  3u  3u  3u   2  2  2     3  3 2  3   xy  6  x y x y xy 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 xy 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 xy 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  u1,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  u1,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  u1,1   3 h2  2 f0,0  1  f0,1  f0,1  f1,0  f 1,0   1 u0,1  u0,1  u1,0  u1,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 )  e4t cos(2 x ) . Действительно: u( x, t )t  u( x, t ) xx  4 cos(2 x)e4t ,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) преобразуем к виду: umn1  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 , um1, um1 в формулу(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) res0 j   res1 j , resN  j   resN  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 t0,  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 108 , Другими словами, равномерная норма разности имеет четвертой порядок погрешности относительно шага 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 1010 в то время как h 4  3 109 , и равномерная норма невязки также не превышает четвертой порядка степени шага сетки h . В общем случае, для определения (оценки) порядка сходимости разностной схемы, как определяет А.А.Самарский 3 , стр. 57, необходимо требовать уменьшение погрешности (нормы разности приближенного и точного решений) в 16 раз при уменьшении шага сетки h в 2 раза (увеличении N в 2 раза) – для сходимости с четвертым порядком. В данной разностной схеме при увеличении N в 2 раза (с 200 до   3 109 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 достаточные условия корректности формул прогонки, более слабые, чем диагональное преобладание элементов матрицы. Алгоритм инициализации дает приближение второго слоя решения по начальным условиям с относительной погрешностью не хуже чем 1010 при числе узлов 500. Инженерный американский продукт ANSYS Fluent завершает решение задач с относительной точностью 103 , и с более грубой точностью на процессе инициализации задачи, т.е. с точностью 101  102 . Благодаря применению спектрально устойчивых разностных схем относительная погрешность начальных данных уменьшается от значения 108  1010 до величины 1015 . В работе нами построен алгоритм укрупнения ячеек сетки (масштабирования) с коэффициентом масштабирования l  1 , позволяющий сократить число вычислений в сотни раз ( l 2 раз). Неоднородная начально-краевая задача при числе узлов 300 на редкой координатно-временной сетке решается с помощью указанных здесь методов с двойной точностью 1015 (т.е. первые 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 ba 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)  n1 n1 n n n n 2 n n n 2 um  um  2um  z um 1  um1  2um  f ( xm , tn )  z um1  um1  2um  f m,n  . в (3) Потребуем, чтобы разностное уравнение (3) аппроксимировало первое уравнение системы (1) с максимальным алгебраическим порядком, далее разложим узловые значения n1 n1 n n um , um , um1, 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 m1 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 , p2. (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 28  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 212  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 x8t 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  i0   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 26   f m,n  2  2  f m, n  f m , n a  a2  6!  t 4 x 2  x 2 t 2        2 2 28   4  2  f m,n  f m,n a  8!  t 4  x 2 t 2    8 2 2 210   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 26  f m,n 210  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 umn1  umn1  2umn  z umn1  umn1  2umn  fm,n 2 . Вычитая из последнего   выражения уравнение (3) получим однородное уравнение относительно невязок в каждом внутреннем узле сетки (m, n): n1 nm1  m  2nm  z nm1  nm1  2nm .   Подставляя в последнее уравнение ошибку округления вида nm  n ()eim , получим спектральное уравнение          1/   2  z ei  ei  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  2C2  , 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  2u . (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  2C2  3C3  , 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  3u . 2 2 (14) Формула (14) имеет четвертый порядок погрешности, т.е. погрешность имеет вид O  .   4 В первой задаче инициализации c использованием формул (3), (13) fm,n  0 для трех временных слоев имеем:     n1 n1 n n n n 2 2 1 1 1 um  um  2um  z um 1  um1  2um  f m,n   um  um  2 1  z  um  z um1  um1   3um  4u1m  2u   zu1m1  2 1  z u1m  zu1m1    2um  2u , m  1, M  1. (15) Система линейных уравнений (15) представляет трехдиагональную матрицу с коэффициентами Am  z, Cm  2 1  z  , Bm  z, Fm  2um  2u относительно неизвестных u1m1, u1m , u1m1 . Решить систему уравнений (15) можно методом прогонки, например, с помощью формул [3, с. 44], [7, с. 68], прогонки вперед 159 m  Bm A  F , m  m m1 m , m  1, M  1, 0  0, 0  u10 Cm  Am  m1 Cm  Am m1 и формул прогонки назад u1m  mu1m1  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)     n1 n1 n n n n 2 3 1 2 2 2 um  um  2um  z um 1  um1  2um  f m,n   um  um  2 1  z  um  z um1  um1    11 0 9 2 11 0  5  2 1 2 2 um  9u1m  um  3um um  3um   8um     2 z  um  z um1  um1    2 2 2  2   5   8u1m     2 z  um  2 1  z  u1m  z u1m1  u1m1   2     1 1 1 1 1 1  z  um 1  2 1  z  um1  z  um 2  um   um1  2 1  z  um1  z  um  um2       5  5  5   z 2u1m2  (2 z (1  z )  z   2 z )u1m1  u1m  8    2 z  2 1  z   2 z 2   (2 z (1  z )  z   2 z )u1m1  z 2u1m 2  2  2  2    11  5 1 1   0   2 1 2 1 1 2 2 1 2 1   2 z  um  3um   zum1  zum1  z um 2   z  4 z  um1  um 3  z  6 z   z  4 z  um1  z um 2   2  2  2      1  1   z 2u1m2   z  4 z 2  u1m1  u1m 3  z  6 z 2   z  4 z 2  u1m1  z 2u1m 2  (3  2 z )um  zum 1  zum1  3um . 2  2  (17) Для оптимального параметра z  1 формула (17) перейдет в формулу 9 9 u1m2  u1m1  10u1m  u1m1  u1m 2  um  um 1  um1  3um . 2 2 (18) Отметим, что трехдиагональная матрица (15) и пятидиагональная матрица (18) систем линейных уравнений в данном случае используются для аппроксимации второго временного слоя, а не для решения основной задачи, как в работах [7, 8]. Линейная система уравнений (19) имеет пятидиагональную матрицу прогонки относительно неизвестных u1m2 , u1m1, u1m , u1m1, u1m2 , обозначим ее коэффициенты 9 9 Am1  1, Am2   , Cm  10, Bm1   , Bm2  1, Fm  um 1  um  um1  3um  . 2 2 Для решения системы уравнений (18) используем формулы прогонки [7, с. 70], формулы прогонки вперед: 1m  B1m  A2m  2m1  A1m 1m2  2m1 B2m ,  2m  Cm  A1m 1m2 1m1  A1m  2m 2  A2m 1m 1 Cm  A1m 1m 2 1m 1  A1m  2m 2  A2 m 1m 1 A    A1m  m2  A2m  m1  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  1mu1m1  2mu1m2  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. Пусть квадратная пятидиагональная матрица коэффициентов линейной системы уравнений A1mu1m2  A2mu1m1  Cmu1m  B1mu1m1  B2mu1m2  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  2m1  A1m 1m2  2m1 Cm  A1m 1m2 1m1  A1m  2m2  A2m 1m1  A2m  A2m 2m1  A1m 1m2 2m1 Cm  A1m 1m2 1m1  A1m 2m2  A2m 1m1 1/ 2  2m1  0, 1/ 2  2m1  1  1, 0  1m1  1,  A2m  A2m 1  2m1    A2m / 2,  A1m / 2  A1m1m22m1  0 ,  A2m  A1m / 2  A2m 1  2m1   A1m1m22m1   A2m / 2  0 ,  A1m   A1m1m21m1  0 , 0   A1m2m2  A1m / 2, 0   A2m1m1  A2m , Cm  A1m  Cm  A1m1m21m1  A1m2m2  A2m1m1  Cm  A1m / 2  A2m  0 , A2m / 2 Cm  A1m / 2  2m   1m  A2m 1  2m1   A1m 1m2 2m1 Cm  A1m 1m2 1m1  A1m 2m2  A2m 1m1 B2m Cm  A1m 1m2 1m1  A1m  2n2  A2m 1m1   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  A1m1m21m1  A1m2m2  A2m1m1  Cm  A1m / 2  A2m   A2m  A1m / 2  0 , A2m 1  2m1   A1m1m22m1   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  A1m1m21m1  A1m2n2  A2m1m1  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 , программа m1, M m1, 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 n1 n n n n n 1 n n n 1 (20) um  2um  z um 1  um1  2um  um  um1  um1  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,   решается волновое уравнение u1nm1  u1nm1  u1nm1  u1nm1, 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 u1nm111  u1nm111  u1nm111  u1nm111, 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  2u  4u1 , с учетом (3) получим     n1 n1 n n n 2 2 1 1 1 2 1 um  um  2 1  z  um  z um 1  um1  f m,n  , um  um  2 1  z  um  z um1  um1  f m,1  4um   zu1m1  2 1  z  u1m  zu1m1   f m,1 2  um   f m,1 . 2 (22) В трехдиагональной матрице системы уравнений (22) коэффициенты Am  z, Cm  2 1  z  , Bm  z, Fm  um  f m,12 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  3u  9u1  u 2 , 2 2 2     n1 n1 n n n 2 3 1 2 2 2 2 um  um  2 1  z  um  z um 1  um1  f m,n   um  um  2 1  z  um  z um1  um1  f m,2     9 2 5  2 2 2 2  9u1m  um  8u1m    2 z  um  z um 1  um1   f m,2   2 2  5   8u1m    2 z  um  2 1  z  u1m  z u1m1  u1m1  f m,12  2            1 1 1 2 1 1 1 2 2  z um 1  2 1  z  um1  z um 2  um  f m1,1  um1  2 1  z  um1  z um  um2  f m1,1   f m,2     1  1   z 2u1m2   z  4 z 2  u1m1  u1m 3  z  6 z 2   z  4 z 2  u1m1  z 2u1m 2  2 2       2 5     f m,2    2 z  f m,1  z f m1,1  f m1,1   . 2      (23) Для параметра z  1 уравнение (23) переходит в уравнение (24) 9 9 9   u1m2  u1m1  10u1m  u1m1  u1m 2    f m,2  f m,1  f m1,1  f m1,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 m1,1  f m1,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   n1 n1 n n n 2 n1 n n 2 n um  um  2 1  z  um  z um 1  um1  f m,n   um  um1  um1  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 28  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  212  10  f m,n a   ...  a8  a6  a4  a2  12!  x10 x8t 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 24 36 48 510 612  n 1 n n n 1 um  um       ...  . 1  um1  um  2 f m,n   6! 8! 10! 12!  2! 4!  Поскольку 1  cos()  2 4 6  d 2 24 36 48 510 612    ...       ... , то 1  cos()    2! 4! 6! 2 d 2! 4! 6! 8! 10! 12! n1 n n n1 n n n1 um  um 1  um1  um   sin    f m,n  um1  um1  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  u2nm1  u2nm1  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 u2n1m11  u2n1m11  u2n1m11  u2n1m11   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  um1  um  2 f m,n    2! 4! 6! 8! 10! 12!  n n n1 n n n1  um 1  um1  um  2 1  cos     f m,n  um1  um1  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  um1  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  um1  um  f m,n   4k 4 k  2 !   t k 1  4k n 1 n n n 1 2 um  um 1  um1  um  f m,n   2   4 8 12  2 6 10 14  26  f m,n 210  f m,n 214  f m,n n n n 1    ...  um  u  u  2 f     ...   1 m1 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 n1  um 1  um1  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 простых систем: ux, 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) методом разделения переменных ux, 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  ex e x  ex , chx   функций X x   Ashx   Bch x , shx   . 2 2 Используя граничные условия: 1  ch  X 0  Ash0  Bch 0  B  1; X    Ash   ch   1  A  sh    1  ch     shx   chx  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   sinx  , автоматически удовлетворяющую первому граничному условию 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   sinx , ux, y   sinx Y  y  . При этом автоматически выполняется первое краевое условие задачи 3), решение подставим в уравнение Пуассона:  sinx Y  Y '' sinx   sinx   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  Ash0  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    shx   chx  sin  y   ux, 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 с равными весами. По формуле Ньютона - Лейбница имеем: mk   m m  1 k k mk  m u  1  mu k k mk  u1, 2  u1, 2  u 1, 2  u 1, 2     C m h1 h2  C h h   m 1 2 x k y mk k 0 m! x k y mk m 0  k 0 m! m   1m C k h k h mk k 0 1   1  4u 0,0 m 1 m! mk 2 m  1 C k h k h mk  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 m0 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 mk  m u      С m h1 h2   m0  k 0 m! x k y m k    1   1k  1   1k  0, m  2l  1   u   0, k  2s  1 k k mk  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   Oh10  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   Oh10  (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   uC1  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  u2,0   4 u1,2  u2,1  u1,2  u2,1  u1,2  u2,1  u 1,2  u2,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 произвольных узлов) n1  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 , xn1 , 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) xn2  1n2 xn1  2n2 xn   n2 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 ). Зная xn1 , xn по формуле(24) находим xn 2 , так как 1n2 , 2n2 , n2 найдены по формуле(23) прогонкой вперёд. Используя (20) находим все неизвестные узловые значения (формулы прогонки назад k  n  2,2 ). Доказано: Утверждение 2. Решение линейной системы уравнений с пяти диагональной матрицей (19) и известными фиксированными значениями x0 , x1 , xn1 , 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 , xn1 , 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  A1n1  A2n1  B1n1   Cn1 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  A2221  A121021 B C 10  11  0  1, 12   12  2  1 C 2  A121011  A1220  A2211 C2 C2  20  21  0  1, 22   B22 B C  22  2  1 C 2  A121011  A1220  A2211 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   uC1  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   Oh 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  u1,1  u1,0  u1,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  u1,1  u1,0  u1,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  ch2      1  ch       1  ch   shx   chx  sin  y     sh y   ch y  sin x     1   sh y   ch y  sin x  ux, y      sh     sh2      sh      С учётом того, что высота прямоугольника в 2 раза меньше его ширины: n  120, n1  60, m  20000 программа возвращает невязку последней задачи в равномерной норме: norma C=5.972999872483342e-14. Выводы: 1) Получены формулы прогонки для питидиагональной системы линейных уравнений с 4 известными узловыми значениями на концах отрезка и соседних к концам узлах (краевое условие Дирихле). 2) Для симметрической матрицы со строгим полуторным диагональным преобладанием имеет место корректность полученных формул прогонки вперёд. 3) Предложен 3 – этапный алгоритм для точного решения уравнения Пуассона на прямоугольнике. 1. по формуле простой итерации(33) находят 4 значения u k 11,n1 , u k 11,1 , u k 1n1,1 , u k 1n1,n1 . 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 ba 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] , в ряд Тейлора с центром в точке xc: 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 i0 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  OH   H 0  O H n0  4 (n0  2)! n0  3 (n0  3)!   С другой стороны, суммирование на n  kn0 узлах эквивалентно взятию k интегралов на ba , 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 ba 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)  1216 ,  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  1014 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) ba 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  ba 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 11 Равенство интегралов означает инвариантность интеграла при повороте канонического квадрата на 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  12  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 Dx, y  xr , x a свойствами: якобиан замены координат   2    0 во всех точках Dr ,  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  2r2  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 *1016 и 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 во всех точках Dr , ,    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( )drd  0 . Для шара имеем ещё одну особую точку r1  0 , выполнены первые 2 требования гладкой замены переменных интегрирования кроме третьего (неоднозначность отображения в точке r  0 ). Что для интеграла несущественно, так как мера интеграла в сферических координатах в окрестности указанной точки: dI3  f r , , r 2 dr sin dd  f 0, , 02 dr sin dd  0 . r2  2 y 2  I 3    f r , , r 2 dr sin dd   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 3n0 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 i0 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
«Численные методы. Нормированные пространства. Аппроксимация функций и производных. Обыкновенные дифференциальные уравнения» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ
Получи помощь с рефератом от ИИ-шки
ИИ ответит за 2 минуты

Тебе могут подойти лекции

Смотреть все 938 лекций
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot