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

Численные методы

  • ⌛ 2019 год
  • 👀 272 просмотра
  • 📌 213 загрузок
  • 🏢️ Полоцкий государственный университет
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Численные методы» pdf
Министерство образования Республики Беларусь Учреждение образования «Полоцкий государственный университет» Д.Ф. Пастухов, Ю.Ф. Пастухов ЧИСЛЕННЫЕ МЕТОДЫ. ЛЕКЦИИ. ЧИСЛЕННЫЙ ПРАКТИКУМ. Учебное пособие к лекционным и практическим занятиям для студентов специальности 1-40 01 01 Программное обеспечение информационных технологий 1-98 01 01 Компьютерная безопасность Новополоцк ПГУ 2019 УДК 519.6 ББК 22.193 Рецензенты: А.А. Козлов, кандидат физико-математических наук, доцент, Заведующий кафедрой высшей математики и дифференциальных уравнений Полоцкого государственного университета Пастухов Д.Ф., Пастухов Ю.Ф. Численные методы.Лекции.Численный практикум: учебное пособие /Д.Ф. Пастухов, Ю.Ф. Пастухов, - 2 - ое изд.,дополненное - Новополоцк: ПГУ, 2019. – 227 с. Материал учебного пособия соответствует требованиям Государственного образовательного стандарта по математике. В книге содержатся основные главы теории по численным методам для студентов программистов(специальностьпрограммное обеспечение информационных технологий) и численный практикум по основным разделам курса численные методы. Для студентов университетов, педагогических вузов, а также для студентов технических вузов, преподавателей, инженеров, программистов использующих в своей практической деятельности численные методы. УДК 519.6 ББК 22.193 Одобрено и рекомендовано к изданию методической комиссией факультета информационных технологий В качестве учебного пособия Кафедра технологий программирования © Оформление УО «Полоцкий государственный университет», 2019 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. Интерполяция функций кубическими сплайнами. 40 Практическая работа 5. Интерполяционный функций кубическими сплайнами. 43 Глава 3. Интерполяция интегралов. Интегральные квадратурные формулы. 49 Лекция 8. Метод неопределённых коэффициентов. Формулы Котесса – Ньютона. 49 Лекция 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. Решение волнового уравнения с помощью явной разностной схемы. 126 Лекция 19. Уравнение Пуассона. 132 Практическая работа 16. Интегрирование уравнения Пуассона на прямоугольнике на пяти точечном шаблоне. 137 Практическая работа 17. Интегрирование уравнения Пуассона на прямоугольнике на девяти точечном шаблоне. 140 Лекция 20. Согласование порядков аппроксимации дифференциального и граничного операторов. Практическая работа 18. Согласование порядков аппроксимации. 144 Глава 7. Приложения. Приложение 1. Оптимальный порядок аппроксимации разностной схемы волнового уравнения на отрезке. 151 Приложение 2. К вопросу о редукции неодноролной краевой задачи Дирихле для волнового уравнения на отрезке. 174 Приложение 3. Аппроксимация уравнения Пуассона на прямоугольнике повышенной точности. 191 Приложение 4. Аппроксимация двойных и тройных интегралов во внутренних краевых задачах математической физики. 207 Литература. 226 4 Предисловие Предлагаемое учебное пособие создано на основе чтения авторами курса лекций Численные методы в течение ряда лет в Полоцком государственном университете студентам специальности 1-40 01 01 (Программное обеспечение информационных технологий). Была выбрана последовательность оглавления, составленная профессором Бахваловым Н.С. на механико - математическом факультете Московского государственного университета. Курс состоит из двух частей – лекционной и практической. Лекции охватывают основные шесть разделов курса Численные методы для инженеров – программистов. Большая часть лекционных примеров взята также из учебного пособия Бахвалова Н.С. Однако есть новые задачи. Например, краевые задачи, решённые методом Ритца, Галёркина, выведены формулы матричных коэффициентов для интегральных уравнений для метода коллокации и с помощью них решён пример. Вторая часть представляет численный практикум, составленный нами на основе работы со студентами и программы по основным разделам математики, преподаваемых в ПГУ и численным методам. Мы не разделили по отдельности практическую и лекционную части. Ядро численного практикума составляет 5 работ, написанных для журнала Вестник Полоцкого государственного университета по уравнениям в частных производных и методам оптимизации, затем разбитых на части и упрощённых. В связи с этим представленное пособие можно использовать для чтения лекционного курса и проведения со студентами численного практикума, в работах которого присутствуют идеи А.А. Самарского. Авторы прежде всего выражают глубокую признательность и благодарность кандидату физико-математических наук, заведующему кафедрой высшей математики и дифференциальных уравнений Полоцкого государственного университета Александру Александровичу Козлову, настоящему учёному, посвятившему свою жизнь математике, за обсуждение и прочтение всех статей, вынесенных в приложение и представляющих в данном издании самостоятельный интерес. Так в приложении доказано несколько утверждений, связанных с достаточными условиями корректности метода прогонки системы линейных уравнений с пятидиагональной матрицей, хотя численные методы алгебры вынесены в самостоятельный на факультете предмет. Основная задача работ практикума заключается в проверке идей функционального и численного анализа на простых тестовых примерах. Работа по времени рассчитана на 2 академических часа, как правило, работы самостоятельны и не зависимы. В то же время программы и алгоритмы, написанные в приложении, преследуют прежде всего цель достигнуть высокого порядка точности аппроксимации пусть даже на простых геометрических областях. В последнее время намечается тенденция использовать в численном практикуме готовые программные пакеты, например, MATCAD, ANSYS и другие, в которых фактически отсутствует возможность проверить применимость данного алгоритма и проверить соответствие порядка сходимости метода в программе теоретическому значению порядка. Значительно важнее получить в работе не конкретное значение ошибки, а порядок аппроксимации погрешности, т.е. во сколько раз уменьшается норма погрешности при измельчении сетки в фиксированное целое число раз. Можно пользоваться алгоритмом с четвёртым порядком погрешности, но при написании программы получить всего лишь первый порядок погрешности. Такая простое несоответствие часто связано с ошибкой в цикле. Студентам следует научиться определить источник ошибки и приблизить порядок погрешности его максимальному теоретическому пределу. Можно сказать, что численный анализ вырос, как совокупность методов изучить законы поведения разности между аналитическим и численным значением различных математических объектов и методов попытки уменьшить эту разность. Пастухов Д.Ф., Пастухов Ю.Ф. 5 Глава 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 - образы A x, A y  R находятся на расстоянии (1)  ( 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 отображение 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 . Обозначим n n 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 )   (1       n m  n 1 )  ( x1, x0 )   (1       n m  n 1  n  ( x1, x0 )  )  ( x1, x0 )  1  6  ( 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   ( x , x ) 1 0    Поскольку число Что и означает по определению фундаментальность последовательности {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   ' x n  y n  x n   ' x n   ( x n , 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 1 sign(F(x)) -1 +1 +1 -1 +1 То есть корни расположены на интервалах [-3,-2],[-1,0],[0,1]. d 1) x   ( x)  3  1 / x 2  xn 1  3  1 / xn 2 ,  ( 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)   3 2 * * 1  xn 1  xn xn 1   , x0  1, x2  0.6527036 , xn 1  , x0  1, x3  0.532088886 3 3 3 3 7 Нормы и нормированные пространства. 1)Действительные числа    . 2)Векторы x  x1,...xn  Rn . a) x C  max xi - равномерная норма(норма Чебышева) i 1, n 1/ 2 1/ p 1 n 1 n 1 n 2 p x l n   xi , x l n    xi  , x l n    xi  b) 1 2 p n i 1  n i 1   n i 1  n пространство l p с нормой x l n . , конечномерное векторное 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 b  p   , p 1  f ( x ) dx p L  (b  a)   a   Утверждение 2. Справедливо неравенство f L  f L  ...  f L  ...  f C f 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 f L  p (b  a) a 3)Нормы матриц p  max f ( x)  p 1 p   max f ( x)  dx   x[ a ,b ] f ( x) dx    (b  a) a  x[ a ,b ] (b  a) b p b  dx  n C  f Lp  f a  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 p f 2 1/ 2     i 1, n 8 C Первые две нормы не имеют специального названия, третья называется максимальной, четвёртая сферическая, пятая спектральная. Определение 4. Норма матрицы A называется согласованной с нормой вектора x , если верно: Ax  A x , x  X Определение 5. Норма матрицы A согласованная с векторной нормой x подчиненной векторной норме x обозначение A  sup Ax x называется , то есть если * Ax *  x  Rn : A  . * x Пример. Ax n n n  max  ai , j x j  max  ai , j x j  max  ai , j max x j  A C x C , x  R n , C i 1,n i 1,n j 1 i 1,n j 1 j 1,n j 1 другими словами, матричная норма A C согласована с векторной нормой x C . AC  * Ax x C   * , x j  sign ai0 , j  1, j  1, n , i 1,n C   * * i 1,n C i 1,n j 1 j 1 n n j 1 j 1 поскольку i 1,n C n * Ax AC  i 1,n n  max  ai , j   ai0 , j тогда получим  max x j  max sign ai0 , j  max  1  1 , A x x n где i0 : max  ai , j   ai0 , j , C * x  max  ai , j i 1,n j 1 1 n   ai0 , j  A C . То есть мы показали, что матричная норма j 1 C A C является подчинённой к векторной норме x C . Лекция 2. Численное решение нелинейных уравнений и систем нелинейных уравнений. Рассмотрим нелинейное уравнение с однородной правой частью f ( x)  0 (1) на интервале (a, b) , содержащем единственный корень уравнения. В случае нескольких корней необходимо разбить (a, b) на интервалы единственного изменения знака функции, то есть изолировать корни уравнения по одному на интервал f (a) f (b)  0 . Будем считать, что начальная точка xi0 итерации находится на изолированном интервале с единственным корнем xi  (ai , bi ), f ai  f bi   0, i  1, n . В случае сходимости итерации к корню начальную точку можно располагать слева или справа от корня (можно   выбирать во всех смежных точках интервалов x  ai , i  1, n, bn ). Итерационная формула касательных Ньютона имеет вид: f xk k 1 k (2) x x  ' k f x     9   f xk Y X * x k 1 x xk Рис.1 График функции f x  Корнем уравнения (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 . Вычтем из обеих частей формулы * f xk (2) решение x , получим x k 1  x k  ' k , k  0,1,2,... . (3) f x Определение 1. Говорят, что числовая последовательность x k сходится к предельному     значению * xс порядком p 0, если существуют такие положительные числа   f ''  x    . С  0, h  0, n  N такие, что x  h, k  N :  lim  C ,С  k 1 p k  * ' x 2 f  x   Формулы (2) и (3) связаны тождественным преобразованием и, следовательно, эквивалентны. Справедливо следующее утверждение   * Теорема 1. Итерационная формула касательных Ньютона (2) при условии, что  f '  x   0      сходится со вторым порядком скорости. Имеет место оценка погрешности * k x k 2 ( k 1) x k 1  С k 1 x 0 Доказательство. Преобразуем формулу(3) 10   * ''   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   2 *   f '  x 1   *  O x k       f ' x        *   ''   k f x  x     * * '  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     ' k ' k 2         f  x 1  O x  f  x 1  O x  * *    '  '      f  x f  x                               * * *      * ''   k ''   k ''   k  f ''  x x k    f  x x  f  x x f  x x k k k 2  k 2  k k k 2           x  x 1   O x  1   O x   x  x 1    O x  * * * *      '  '  '  '  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  2 f  x 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)   (6) x k 1  С x k  С 2 x k 1  ...  С k x1  С k 1 x 0 0 , С * k  '  2 f  x   k 1 начальное удаление от решения, x - удаление от решения после k  1 итерации. *  Замечание 3. При выводе формулы (4) использовалось условие f  x   0 , следовательно,   * итерация (4) сходится не к произвольной точке, а к решению x (удаление x k 1 * отсчитывается от решения x ). 11 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 x  k 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  (9) x k 1  x k  ' k , k  0,1,2,... 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 x k  f x k  1 f x k  f ' x k  k (10) x k 1  x k  ' k  x k  ' k  x  ' k 2 k ' k F x  f x   f ' x k 2  f x k  f ' x k         f x  f x f x   ' k 2     f x   Таким образом, мы показали, что итерационная формула (10) сходится к тому же корню, что и итерация (2), но в отличие от (2) всегда со вторым порядком при любой кратности корня. Теорема 2 доказана. Формулу (10) называют также модифицированной формулой Ньютона. Для функции нескольких переменных формула (2) , решающей одновременно систему несколько уравнений, другими словами, вектор – уравнение 12  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 * * *   dx  dx1, dx2 ,..., dxn    x1  x1, x2  x2 ,..., xn  xn    Формула (13) эквивалентна (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 при x  a , y (16) F (u1 )  F (u2 )  F ' (u2 )u1  u2   a2 u2  u1 Y   2 H при u1, u2  a . (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 ) . 13 Однако на практике удобно пользоваться не матричной формулой (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 и решение *  * *  x1 , x2 , ,..., x n   A (решение системы уравнений (11)). Функция F ( x), x  A конечного числа   n переменных: 1) Дважды непрерывно дифференцируема F ( x )  C 2 ( A) 2) Матрица Якоби Fi ( x )  M 1,i  xi n  j 1, j i Fi ( x ) i, j  1, n обладает x j диагональным преобладанием: 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 q m (1  q)q m m m 4) x  x  x   l0 , где l0  x1  x 0 - расстояние между 2 1 q 1  q   начальными итерациями x 0 , x1 , x  x1  x1, x2  x2 ,..., xn  xn . Доказательство теоремы 4 дословно повторяет доказанную нами теорему 1 во второй лабораторной работе (для матрицы Гессе) куда мы делаем ссылку и оправляем читателя. 14 Кроме достаточных условий сходимости итерационных формул (2),(19)необходимо получить условие задания открытой области A  Rn , в которую мы будем помещать начальную точку итерации. Для этого воспользуемся формулой простой итерации, которую сведём к формуле Ньютона – Зейделя. Метод простой итерации пишут в виде формулы: (20) x k 1  g x k , k  0,1,2,... Из формулы (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   g x   x  ' k  g ' x k   1  f x   f ' x k 2  f ' x k 2 2 x k 1 g x ' k k  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, x 02  0 . Воспользуемся формулой (23) g ' x   2e2 x , g '  10  2e20  1 - в точке x 01  10 достаточные условия выполнены, g x ' k  f x k  f ' ' x k     2  x  e 2 x  1  4e 2 x   2x 2 , g ' 10  0.99999998  1 в точке x 01  10 f x 1  2e достаточные условия также выполнены. 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 .   ' k     15 #include #include 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 ). 1) Рассмотрим пример с системой нелинейных уравнений[2]:  F1 ( x, y )  x 3  y 2  1  0  x3  y 2  1   (24)  3 3   xy  y  4  F2 ( x, y )  xy  y  4  0 Составим для приведенной вектор – функции матрицу Якоби 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  F1x ( x, y ) 3x 2    3  y k 1  y k  F2' ( x, y )  y k 1  y k  xy  y  4   F2 y ( x, y ) 3xy 2  1 запишем программу #include #include 16 int main() { 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 Для начальной точки x 03, 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. Для начальной точки x 04, 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 с. 17 Лекция 3. Эффективный поиск точек экстремума и точек перевала гладких функционалов Введение. Градиентные методы являются не достаточно эффективными с точки зрения точности. Действительно, пусть необходимо найти решение с абсолютной точностью 103 , а значение функционала в экстремальной точке с точностью порядка 10  3 2  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]: 18     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'i , f x'' x переменные с порядком m и i i m  1 выразим через переменные x , x m k m 1 k : xkm1  xk  xkm1 , xkm  xk  xkm , k  1, n 19  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 переменных: Трижды непрерывно дифференцируема f ( x )  C 3 ( A) 2) Матрица вторых частных производных (матрица Гессе) обладает диагональным 1) преобладанием f x'i' x j ( x )i, j  1, n : f x'i' xi ( x )  M 1,i  3) n  j 1, j i f x'i' x j ( x ) , i  1, n, x  A Диагональные элементы матрицы Гессе равномерно не вырождены: 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 q m (1  q)q m m m 4) x  x  x   l0 , где l0  x1  x 0 - расстояние между 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: 20 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  f '' x1 x1 j 2 m 1 '' x1 x j ( x1  x , x2  x ,..., xn  x ) m n x1m 1   f '' x1 x1 '' x1 x j ( x1 , x2 ,..., xn )x mj f x'1' x1 ( x1 , x2 ,..., xn ) n m 2 f j 1 ( 3) x1x1x j f ( x )x mj n f  x1m  x1m  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 ) j2  x m 2    x m 2   ''  O  O    f x'' x ( x1  x1m , x2  x2m ,..., xn  xnm )  f x1 x1 ( x1  x1m , x2  x2m ,..., xn  xnm ) 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  м уравнением системы: 21 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 f x'i ( x1  x1m1 ,..., xi 1  xim11 , xi  xim ,..., xn  xnm )  x   m1 i m i 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 f '' xi x j '' xi xi ( x )x m1 j  n f j i 1 ( x1  x m1 1 '' xi x j ( x )x f j 1  xim  ,..., xn  x ) m n f j 1 f 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 ) i 1 m j xim '' xi x j '' xi xi ( x )x m1 j  n f j i 1 ( x1  x m1 1 '' xi x j ( x )x mj ,..., xn  x ) m n 2  O  x m    Сокращая промежуточные записи, получим: i 1 xim 1  xim  xim  i 1 xim 1   f j 1 f '' xi x j '' xi xi  f x'i' x j ( x)x mj1  j 1 f '' xi xi ( x )x mj 1  ( x1  x m 1 1 n f j  i 1 ( x1  x m 1 1 '' xi x j n f j  i 1 '' xi x j ( x )x mj ,..., xn  x ) ( x )x mj ,..., xn  x ) m n m n 2  O  x m  ,или:   2  O  x m    (*) Обозначение последней формулы отличается от общей нумерации в виду её важности. Учитывая индуктивное предположение xkm1  x m , k  1, i  1 , получим: i 1 xim1   j 1 f x'i' x j ( x ) x mj1  n  j i 1 f x'i' x j ( x ) x mj f ( x1  x ,..., xn  x ) '' xi xi xim 1  x m m1 1 m n n  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) 22 где x 0  max xi0  max xi0  xi i 1, n начальное i 1, n приближение стационарной точки, начальная точка x 0  x10 , x20 ,..., xn0  A . x x m 1 xm На практике известны не величины x m 1 Рис.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 3 1. 2 Согласно(*):  m 1 f x1 x 2 x1 , x2 x2m 2 3 2  m 1 9 m 1  x    O  x m    x2m  1 m m x1  x1  O  x m    2 f x   x , x   x  x1 x1 1 1 2 2     4   m 2 f x 2 x1 x1 , x2 x1  m 1 x2m 1  9 x2m 1  O  x m    x m 2    3 x m  x    O  2 1 m  1 m     4   2 f x 2 x 2 x1  x1 , x2  x2  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,...  2 2  x2m 1  9 x2m 1  O x m   x2m  9 x2m  2  O x m 1         4  4         23 Откуда видно, что во всех чётных и нечётных итерациях каждый раз удаляются от стационарной точки, т.е. итерация расходится. Замечание 2. Формула ( * ) выполняется локально, т.е. условия Т.1 должны выполняться обязательно в окрестности стационарной точки. Так как условия Т.1 выполняются абсолютно во всей области A  Rn , то они выполнены и локально в точке x , x ,,..., x  A . 1 2 n Замечание 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 ,  x1  x1  2  2 x2m  x1m1   m 1 m  x2  x2  2  m  m 1 2 x3  2 m 1  x3  x3  2  24 Из (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     2   1  q     1  q      1  q   ln q   x 0 ln  m  x   1  q      1  q   ln 1 / q (11) ln 1 / q (12)  17  58 итераций. Выберем x m  1015, x 0  102 N  ln 10 * 3 ln 2 Практическая работа №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; } double fx3(double x1,double x2,double x3) 25 { 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 с. 26 Глава 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  a2 x02    an 1 x0n 1  an x0n  y0  2 n 1 n а0  a1 x1  a2 x1    an 1 x1  an 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 2 n 1 n 1 n 1 n n 1 n 1  0 1 n 1 2 n 1 n а0  a1 xn  a2 xn    an 1 xn  an xn  yn 1 x0 x02 x0n 1 Или в матричном виде: n 1 1 n 1 2 n 1 n 1 n 1 n 2 1 2 2 2 n 1 2 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 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 xn  x0 2 1 2 2 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 27 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 (1) Ln ( x)   yiФi ( x); гдекоординатные функции Фi ( x)    i 1 j 1, j i xi  x j  0, x  xk   xk  xi  n x  x j  n  1 попарно одинаковых Действительно, если x  xi в произведении  i 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) 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 28 2) n  k  1, Lk 1 ( x )  Lk ( x )   yk 1  Lk ( xk )  Lk 1 ( xi )  Lk ( xi )   yk 1  Lk ( xk ) k ( x ) k ( xk ) k ( xi )  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 )   y2  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  пока произвольная константа. (3) В силу постановки задачи интерполяции Ln ( xi )  y( xi ) и n ( xi )  0, i  1, n Тогда  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) Таким образом, функция  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 соседних   ' 1 1 корней  n (z ) существует корень первой производной  n ( xi )  0, xi  xi , xi1 , i  1, n . 1 Следовательно, xi  (a, b), i  1, n . Повторяя рассуждения для второй производной найдутся 29 ( 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) ( n) ( n) ( n)  ( )  L ( )  y ( )  An! 0  y ( )  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) (5) 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 ) ( ) (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) Тогда с учётом(6),(7) получим  2 C   1  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  2 (8)  max 3 ( z )  max 3 ( z1 ) , 3 ( z2 )    z[ 1,1] 1 1  2   1  3 3  3 3 b  a  y (3) (9) 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   3 Тогда с учётом(6),(7) получим 3 3    30 z1  0, z2,3     5  1 16  16 , max 4 ( z )  max 4 ( z1 ) , 4 ( z2,3 )  max  ,   3 z[ 1,1]  9 81 81 1 ba d 4 y( x) 16 b  a  ( 4) (10) max  y   C C 4!  2  x[  a ,b ] dx 4 81 1944 Рассмотрим пример[1,3.14.1]. Функция f (x) приближается интерполяционным многочленом Лагранжа по n равноотстоящим узлам. Найти наибольшее целое p в оценке погрешности вида  n 10 p для случая 4 Тогда с учётом(6),(7) получим  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  cos t 3   sin 1      0   sin x sin t sin t  dt  sin t dt   1  cos t d cos t   cos t  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 dx  0 C   1 f ( 3) 72 3 2 C  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 рассмотрим задачу x1  1, x2  0, x3  1 интерполирующей функцию y( x ) | x | по трём узлам y1  1, y 2  0, y3  1 Программа на узлах функции x1  1, x2  0, x3  1 возвращает узловые значения соответственно: L(1.000000)  1.000000 L(0.000000)  0.000000 L( 1.000000)  1.000000 31 Для не узловой интерполяции получим 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; if(!(j==i)) { p=p*(x-mx[j])/(mx[i]-mx[j]); } else { for(i=1;i<=n;i++) { p=1.0; for(j=1;j<=n;j++) { { p=p; } } sum=sum+my[i]*p; } printf(“L(%lf)=%lf/n”,x,sum); } Литература 1)Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы. – 6-е изд. – М.:БИНОМ. Лаборатория знаний. 2)Бахвалов Н.С., Лапин А.В., Чижонков Е.В. Численные методы в задачах и упражнениях: учебное пособие. – М.:БИНОМ. Лаборатория знаний,2010. – 240 с. 32 Лекция 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  Последняя формула носит имя Исаака Ньютона. (4) Свойства разделённых разностей. 1)Явная формула для разделённой разности: n 1 yx1 , x2 ,..., xn , xn 1    i 1 n 1 yi (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 разделённой разности и следует из определения 33 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 n1 1 1    yi xi  x1  xi  xn1         n 1 n xn1  x1   i2 n x  x  i1 n x  x   xn1  x1   i2  i j  xi  x j   xn1  x j    i j 1  j 1, j i j 1, j  i j  2, j i  j 1, 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 n 1 yi  n 1 yl  j 1, j  i n 1 yk  x  x   x  x   x i j j 1, j  i 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  y2i n 1  x  x  i j 1, j  i  y1  y2 x1 , x2 ,..., xn , xn 1  j j 1, j  i Конечные разности. Связь с разделёнными разностями. Определение. Конечной разностью первого порядка функции в точке ) называется разность , Конечной разностью порядка n функции в точке (обозначение разность ( ) (обозначение ) называется 34 Замечание. Как следует из определения, при постоянном шаге сетки h, конечную разность можно определить только на равномерной сетке, в отличие от разделённой разности. Свойства конечных разностей. 1)Линейность n f1  f 2   n f1  n f 2 . (1) Доказательство проведём по индукции. Для базы индукции 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    f1   f 2   f1   f 2   f1   f 2 .Доказано. 2)На равномерной сетке связь между конечной и разделенной разностями порядка n: n f x1   hn n! f x1, x2 ,...xn xn 1 , xi 1  xi  h, i  1, n . (2) Доказательство проведём по индукции. Для базы индукции n=1, имеем f ( x2 )  f ( x1 ) f ( x2 )  f ( x1 ) f  h1! f x1, x2   h h  f ( x2 )  f ( x1 ) - верно. x2  x1 h n 1 n 1 n 1 n 1 n n Пусть для произвольного 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 )   f ( x2 ,..., xn 1 )  f ( x1,..., xn )   hn 1 n  1! f ( x1  h,..., xn  h)  f ( x1 ,..., xn )   hn 1 n  1!nh 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   ...  x  x1  x  x2  x  xn1  n1 yx1   ...  yx1  x  x1  x  x2  2 yx1    ...  n  1! h h h 2! h h h 2 n 1 x  x1   yx1   yx1  y( x)  yx1   yx1      1  ...     1  n  2  ...,  (3) n  1! 2! h y( x)  yx1   x  x1  4)Явная формула конечной разности n n f x    Cnk  1 nk f x  kh (4) k 0 Доказательство формулы(4) проведем по индукции. 1 А)База индукции(n=1). Имеем по(4) f x    C1k  1 n k f x  kh   f ( x)  f ( x  h) - верно k 0 n В)Пусть верна формула (4) n f x    Cnk  1 nk f x  kh . Тогда имеем k 0 n n1 f x   n f x    Cnk  1 k 0 nk n f x  kh   Cnk  1 n k  f x  k  1h  f x  kh  k 0 35 n   Cnk  1 nk k 0 n f x  k  1h   Cnk  1 nk i k 1 n 1 f x  kh  k 0 n   i 1  Cnn f ( x  (n  1)h)   Cni 1  Cni  1 i 1  Cn01  1 n 1 n   f ( x)   Cni 1  1 i 1 n1i  C  1 n i 1 i 1 n n i 1 n 1   n i 1 f x  ih   i 0 f x  ih   Cn0  1 n 1 n f x  ih    Cni  1 f x  ih    Cni 1  1 n1i f ( x)  Cnn11 f ( x  (n  1)h)  f x  ih  , так как i 0 n! n! n! i  n  i  1  n  1!  Cni 1   (i  1)!(n  i  1)! (i)!(n  i)! i!(n  i  1)! i!(n  1  i)! Формула(4) доказана. В силу единственности решения интерполяционной задачи будем рассматривать интерполяционный многочлен Лагранжа Ln (x) степени n  1 для интерполяции неизвестной функции y(x). Cni 1  Cni  Практическая работа №4. Интерполяционный многочлен Ньютона. Рекомендации для программы: 1) При составлении интерполяционного многочлена Ньютона необходимо воспользоваться формулами (4), (5). 2) Использовать библиотеки # include  stdio.h  # include  math.h  3) Использовать 3 вложенных цикла 4) При задании массива выбираем размерность массива на единицу больше Примерный текст программы приведен ниже: # include  stdio.h  # include  math.h  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;} printf("P(%.16lf)  %.16lf \ n", x, sum1);} Программа возвращает значения P(3.000000)  9.000000 . 36 Лекция 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 x 3  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)Разностное уравнение. Решение рекуррентного уравнения n Tn ( x)  2 xTn1 ( x)  Tn2 ( x) ищем в виде Tn ( x)  С . Тогда подставляя в(1), получим характеристическое уравнение   2 x  1    2 x  1  0, 1, 2 2 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  2 k 1 2 k 1 2 k 1 2k 1 1     x  x2 1 T2 k 1 ( x)    x  x 2  1   x  x2 1  x  x 2  1   T2 k ( x)   2  2  n n1 5)Коэффициент в Tn (x) при старшем члене x равен a0  2 .Действительно                   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) Свойство доказано методом математической индукции. 37 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 . C x[ 1,1]  n  Рассмотрим разность двух многочленов Q( x)  Tn ( x)  Pn ( x)  b1 x n1  ...  Pn1 ( x) представляющую собой многочлен степени n-1 по построению обоих многочленов с единичным старшим коэффициентом. Тогда k Q( xk )  Tn ( xk )  Pn ( xk ), signQ( xk )  sign Tn ( xk )  Pn ( xk )  sign Tn ( xk )   1 , k  0, n Многочлен Q(x) как разность двух многочленов является непрерывной функцией, Pn ( xk )  Tn ( 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 38 может иметь одновременно степень n и n-1)доказывает, что Pn ( x) C  Tn ( x) C  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 x  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 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    , k  1, n 2 2 2 2 2 2   2n   Получим формулу приведенного многочлена Чебышева на 2x  a  b , отрезке[a,b] с единичным старшим коэффициентом z  ba xi  (9) произвольном ba Tn ( z )  2 n1Tn ( z ), Tn ( x)  x  x1 ...x  xn     z  z1 ...z  z n    2  n b  a  b  a   2 x  a  b  ba ba   z  z1 ...z  zn     Tn ( z )  n1 n Tn ( z )  2 n1 Tn   2 2 2  2   2   ba  n n n n (10) 39 Рассмотрим пример[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 y (6) 2  06 2 2*6 2 1 1 1 6     10  p   10  p  p  2 2*61 2*61 6! 2 6!2 720 3 360 3 1)Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы. – 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 yi ( xi )  ai  bi hi  ci hi  di hi  yi 1 ( xi )  ai 1, i  1, n  1 , n  1 условий 2 3 3 (2) 3) непрерывность первой производной в смежных узлах y 'i ( xi )  bi  2ci hi  3di hi  y 'i 1 ( xi )  bi 1, i  1, n  1, n  1 условий 2 (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 линейных неоднородных уравнений. c c c Из формулы (4) выразим di  i1 i , i  1, n  1, d n   n (5) 3hi 3hn ' Подставим (5) в (3) hi ci  ci 1   y i 1 ( xi )  bi 1  bi , i  1, n  1 (6) 40 ci 1  ci и выразим 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 В (2) подставим d i  (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     b  0 . I (u )     dx, I u  S3     2  dx  , a  2  2 2 dx dx dx dx dx     a a b S3 ( x)  A  Bx  Cx 2  Dx3 Составим разность 2 2 2 2  d 2u   d 2 S3  d 2u d 2 S 3  d 2u   d 2 S3    I (u  S3 )  I (u )  I ( S3 )    2    2   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 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 ) , т.е. среди 41 всех возможных интерполяционных функций именно кубический сплайн доставляет 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 - формулы вперёд Ck  Ak k 1 Ak k 1  Ck Ck  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) 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 Рассмотрим пример интерполяции функции с равномерной сеткой 42 yk  cos(ih ), i  0, n, h  b  a  , b  2 , a  0, n  100, h  h n i  hi 1  0.01 . Из (9) получим h2 3 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 (17) 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; 43 Рис.1 Сплайн 3-го порядка для функции y( x)  cos( x) по 10 исходным точкам, каждый сплайн дополнительно рисуется по 10 точкам. Рис.2 График функции y( x)  cos( x) по 100 точкам Примерный текст программы на языке с: #include #include const int n =10; main() { 44 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; } a3[1]=y[0]; 45 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 print*,"i=",i,"x=",x(i) 46 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) if (status/=0)then 47 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 48 Глава 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   z, z  [1.1]  x  [a, b], dx  dz . a 2 2 2 2 1 Наиболее употребительные квадратурные формулы: 1) Формула центральных прямоугольников (по одному узлу n  1 ) b 1 x 1  f ( z )dz  Cf (0) , в силу условий (2) получаем 1 уравнение: 1 49 f ( z )  1, 1 1 f ( z )dz   dz  2  C *1   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 2 f ' ' (c )  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 '' 5 R( f )  f (c )  O (b  a )  f (c )  O h5 24 24 Для составной формулы (4) получим 3 3  b  a   h '' R( f )  n f (c)  O h5   M  O h 4  O h 2 , где 2 24n  24  24 ( 4)   (5)       (6) оценку погрешности   M  max f ' ' (c) , т.е. составная формула (4) имеет второй порядок аппроксимации x[ a , b ]   2 Oh . 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 1 50 h ba (7)  f (a )  f (b)   f (a )  f (b) 2 2  a соответствует формуле площади трапеции. Шаблон для составной формулы трапеций 1, 2, 2,,2, 1   1 ,1,...,1, 1    2 2 2 b   f (a )  f (b) n 1   f (a  h  i )  Составная формула трапеций  f ( x )dx h (8) 2 i  1   a Оценим погрешность формулы (7), разлагая функцию f (x ) в ряд Тейлора с центром x  c в точках x  a и x  b : b a h x  a, y  x  a 0  x  a 0 b  f ( x)dx   h   b  y 2 '' y 3 ( 3)  2  '   O h 4 , откуда f     f (c )  yf (c )  f (c )  f (c )  h 2 6 a      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 hf (c)   f ( x )dx  a b  a 3 24   b f '' (c)  O h5 , R( f )   f ( x )dx  a   h  f (a)  f (b)  hf (c)  h  f '' (c)  2 24 3   h '' h 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   3 3 (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  f ( z )dz   dz  2  C 1 1 f ( z )  z, 1  f ( z )dz  1 1 f ( z)  z 2 ,  zdz  0  1 C 1 2 2 1 1 b  f ( z )dz  3  f (1)  4 f (0)  f (1)   1  1  0 C2  1 C3  C3  C1 1 1  f ( z)dz   z dz  3  1  C 1 1 C2  C3 a 1 4  0 C2  1  C3  C3  C1  , C2  3 3    a  b  f (a)  4 f    f ( b)  ba  2   f ( x )dx   3  2   h  (b  a )   a  b  a  b  f (a)  4 f    f ( b)    f ( a )  4 f    f ( b)  6   2   2   3  (10) 51 Шаблон для составной формулы Симпсона: 1,4,2,4,2,, 2,4,1 (используется 3 чётное число интервалов n  2k ). Получаем составную формулу Симпсона из (10): b 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  k  b  a    f (a)  4  k 1  f (a  h(2i  1))  2 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 (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   h5 b  a  h5 ba ( 4) 5    max f ( 4 ) ( x )  oh5   h 4  R( f )  k  max f ( x )  oh   f ( 4 ) ( x )  o(h 4 )  xmax x  [ a , b ] x  [ a , b ]  [ a , b ]  180   90  2h  90  Т.е. порядок погрешности составной формулы равен 4. 52 Лекция 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 Важную роль при построении квадратурных формул Гаусса имеют многочлены, ортогональные на отрезке [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) произвольному многочлену низшей степени Pl (x) при l  0,1,2,..., k  1 . Действительно, 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 a l l  i 0  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. 53 Пример 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 Найденные величины подставляем в квадратуру. 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 e x dx   0 0 dx x dx   e x  0 ne x dx  n0 e x dx  ...  n!0 e dx   n!e  n! x n 54 n 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 Наконец, для многочлена 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]. Построить квадратуру Гаусса с двумя узлами для вычисления интеграла: 55 I f   /2  cos( x) f ( x)dx  / 2 Решение: Согласно указанному алгоритму строим ортогональный многочлен второй    степени на отрезке  ,  с весом p( x)  cos( x)  2 2 P0 ( x)  1 Составим таблицу вспомогательных интегралов  /2  /2  cos( x) xdx   cos( x) x dx  0  3  /2  /2 в силу нечетности подынтегральной функции и симметричности пределов подстановки в пределах интегрирования   /2  cos( x)dx  sin x   /2  /2  /2  / 2   , . 2 2 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    / 2 dx 2 2  / 2  / 2 P1 ( x)  x  a :  /2  /2  /2  /2  /2  cos( x) P ( x) P ( x)dx  0   cos( x)( x  a)dx   a cos( x)dx  2a  0  / 2 1 Откуда 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  Легко находим корни ортогонального многочлена 56  1  2 2 x1, 2     4    2 2 2 4  Переходим ко второму действию алгоритма 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. Запишем 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. 2 1  x  /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   3 3 , x2  0, x3  . 2 2 57   3 3   C2 f 0  C3 f   dx  C1 f x1   C2 f x2   C3 f x3   C1 f     2  2 1  x2     1 I f    f ( x) 1 Неизвестные веса 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 2 2 f ( x)  x , I ( f )   dx   dx    1  x dx   dx  2 2 2 1 x 1 1  x 1 1 1 1  x   2    2  3 С1  С3  4 В первом интеграле обозначим x  cos y, dx   sin ydy, 1  x 2  sin y,   1  cos 2 y  1  dy   sin 2 y  2 2 4 2 x 1  y  ,  1  x 2 dx    sin y  dy   1 1 1 2  Решаем систему уравнений  С1  С2  С3       С1  С3   С2  С3  С1  0 3 3 4   С1  С3   2 3  3  3    f   f ( )  f   2   2  2  3  / 2 1  x      По теореме Гаусса данная квадратура точна для всех многочленов степени 2n-1=5. Пример 6[1,№10.24]. Построить квадратурную формулу с двумя узлами вычисления интегралов Запишем ответ: I  f    /2 f ( x) dx     для  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 Тогда 58     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     ответ:    1 2  1 2  f 2 2   I  f    e  x f ( x)dx     2 2 f 2 2 2 2       По теореме Гаусса квадратурная формула точна для всех многочленов степени не выше 3. Литература 1. Н.С.Бахвалов, А.В.Лапин, Е.В. Чижонков. Численные методы в задачах и упражнениях. – М.:БИНОМ. Лаборатория знаний,2010. 59 Практическая работа №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 C положительные числа С  0, h0  0, h  h0 : f ( x )h  f h  Ch p  lim 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); } 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 int main() { int i ,n; 60 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-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); } 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); } 61 При 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 1  f ( z)dz  С x1 x2 С3 С2 x3 x4 x5 x6 x7 С1 С0 С1 С2 С3 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 ) степенные мономы, начиная с нулевой степени, используя только чётные степени мономов, получим систему уравнений: f ( z )  1, 1 1 1 1 1  f ( z)dz   dz  2  С f ( z)  z 2 , f ( z)  z 4 ,  1 f ( z )dz  1 1 2  2C1  2C2  2C3 2  z dz  3  9 C 2 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 C2  2C3  729  7C1  448C2  5103C3 729 1 1 Необходимо решить систему линейных уравнений с 4 неизвестными.  f ( z)dz   z dz  7  729 C 6 1  62 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) 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 (5) 41  f (a)  f (b), С j  41 ; 420 420 k 1 k 1  18  18 2)если j  1mod 6 или j  5 mod 6 : S2    f a  h(1  6s)   f a  h(5  6s), С j  35  s  0 35 s 0  1)если j  0 или j  n : S1  3)если j  2 mod 6 или j  4 mod 6 : S3  4)если j  3 mod 6 : S4  k 1  9  k 1 9   f a  h(2  6s)   f a  h(4  6s), С j  140  s  0 140 s 0  (5.1) (5.2) (5.3)  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 . 63 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 9 b 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); } 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); 64 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 ) можно ожидать при eps  1015 . Практическая работа 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 Где: 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). 65 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  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 (7) 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); bac1=0.0; sum=0.0; sum1=0.0; sum2=0.0; sum3=0.0; for(s=0;s<=k-1;s++) 66 { 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 4 5 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; y=c+h2*double(j); sum=0.0; sum1=0.0; sum2=0.0; 69 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,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() { int s,j;  7 2  2   77 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++) { vv[s]=v[s]; } 78 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; 85 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; 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); } 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 86 #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 с. Лекция 12. Краевые задачи. Методы построения схем. Задача, содержащая обыкновенное дифференциальное уравнение называется краевой, если дополнительные условия для определения произвольных постоянных в решении заданы в нескольких разных точках отрезка(на границе рассматриваемой области в многомерном случае для уравнений в частных производных). Следовательно, как правило, уравнения имеют второй порядок и выше. 87 1. Метод неопределённых коэффициентов. Для локальной аппроксимации дифференциального оператора Lu h разностным Lhuh в узле сетки xi в выражении Lu h  Lhuh  xx i разностный оператор 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) 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) абсолютный минимум. 88 Рассмотрим пример. 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  1  Проверим применимость метода Lu, u     u ''  u udx  u 'u 1 Lu, v     u 1 1 ''  1    u vdx   u v   u ' v  uv dx   v u ' 1 1 ' ' 1 1 1 1  1 1 1     u '2  u 2 dx  0 , 1  1     u ' v  uv dx    v ''  v udx  Lv, u  ' 1 1 Находим коэффициенты для уравнения Lu  u ''  u  f ( x)  x 2  1 1 1   a1,1  L1 x 1 x     (1 x   1 x )dx    4 x  1  x '2 2 1 2 1 1 1  2 2 1 4 2 x5  56 dx   x 3  x  x 3     3 5  1 15 3           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 3 1 1 1 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 2 1 1  1   f1   f x 1 x    x 2  1 1  x 2 dx   1 3 64 21 64 21   1  x  dx   1024 315 2 1 2 4    2 16 32 , f 2   f x  2 x    x 2  1 1  x 2 dx   15 35 1 64 16  56  15 С1  21 С 2   15    64 С  1024 С   32  21 1 315 2 35 С1  0.23913   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    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] Точное решение приведенного примера есть 89 u ( x)  2 u( x)  u( x) num C ch( x) 2 e0  e0  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 получим:  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    1 Lu, u    (u 1 ''  u )udx  u u ' 1 1 1      u 2  u '2 dx вообще говоря, не является знакоопределённым. 1 90 Используем формулы(3) для нахождения коэффициентов. 1 a1,1  L1 x 1 x     1     (1 x   1 x )dx    4 x  1  x 1 ' 1 1 1 '2 2 1 2  2 2 1 1  x5  8 dx    2 x 3  x     5  1 5  1 a1, 2  L 2 x 1 x    2' 1   (1 x  2 x   1 x  2 x )dx  1 ' 1 1        8x 1  x  1  x 2 2  1 1  11 11 x7  128 dx    x 3  x  x 5      a2,1 5 7  1 105  3 2 3 1 a2, 2  L 2 x  2 x    2'  2 ' 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   1   3 16 32 dx  , f 2   f x  2 x    1  x 2 dx  15 35 1 128 16  8  5 С1  105 С2  15 С  0.55556  1  u ( x)  С11 ( x)  С2 2 ( x)   128 512 32 С   . 14583  2  С  С   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 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. Интегро – интерполяционный метод Заключается в сведении дифференциальной краевой задачи к алгебраической задаче методом интегрирования и интерполяции функций на отрезке разбитом на 91 интервалах. Рассмотрим 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 '' (1) Обозначим ( x)  u' ( x) , на интервале xi  h / 2, xi  h / 2заменим интеграл квадратурной   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 ui1  ui u u  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   i1/ 2    ui1  ui1 h 2u '''i ' i  ui   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 Интерполируем граничное условие с той же точностью O h 2 на интервале[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  f 0  O(h) u  u h  p0u0  f 0  h u' (0)  u0'  1u(0)  1 : u'1/ 2 u'0  q0u'1/ 2  p0u0  f 0   Oh 2   u'1/ 2  1 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) формулы прогонки корректны     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  92 Глава 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) - ядро интегрального оператора. Уравнение(1.1) носит название Фредгольма второго рода. Уравнение вида 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 рода. 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] и нормой 1 f g L2 2 2 b     f ( x )  g ( x )  dx  a    Справедлива следующая Лемма 1: Лемма 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 ) сжимающих отображений    (b  a ) max (формула (1)) сжимающий и последовательность 93 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 ] 1 k 1 max ( x , s )([ a , b ][ a , b ]) 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 Колмогорова  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 94 (неравенство треугольника для функционала нормы) b 1 2 2) ( g , q)   g ( s )q( s )ds  ( g , g ) (q, q) 1 2 a неравенство Коши - Буняковского с нормой функции q(x ) 1 2 b q L  ( q, q)    q( s )2 ds  2 a  то функция yk 1 ( x ) имеет норму в L2 [a, b] т.е. yk 1 ( x )  L2 [a, b] : 1 2 yk 1 L2  K yk L2 L2  f (По условию леммы 2 числа K L2 L2 (k  0,1,) , y0 L2 , f L2 существуют) Рассмотрим две функциональных последовательности y1k 1 ( x), y1k 1 ( x )  L2 [a, b] : b y1k 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  K ( x, s )  y b 2 k ( s )  y1k ( s )ds a 2  b y y   y ( x )  y ( x ) dx     K ( x, s )yk2 ( s )  y1k ( s )ds   a a  (Используя неравенство Коши – Буняковского, продолжим преобразование) 2 1 k 1 L 2 2 k 1 2 b 2 k 1 1  b   dx  K ( x, s )2 ds  a a  b 2  K 2 yk2  y1k 2 L2 1 b b  b 2 2 2   yk ( x )  y1k ( x ) ds    2  K ( x, s )2 dsdx  yk2 ( s )  y1k ( s ) ds    a a a  2 L2 yk21  y1k 1 Короче, 2 1 k 1 L2  K L2 yk2  y1k L2 b Отображение Gb y ( x )   K ( x, s ) y ( s )ds будет сжимающим в L2 [a, b]  a y 2 k 1 y 1 k 1 L 2  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] ). Поскольку b b K 2 L2 2    K ( x, s) dsdx  (b  a) 2 a a max ( x ,s )[ a ,b ][ a ,b ] K ( x, s)  (b  a) 2 K 2 C 95 K L2  (b  a ) K C  L2  1 1  K L (b  a ) K 2 Другими словами, L 2  C C C область сходимости в пространстве L2 [a, b] не уже области сходимости в пространстве функций 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) – система n y( xi )    C j K ( xi , s j ) y( s j )  f ( xi ), xi  a  hi, s j  a  hj, h  линейных уравнений относительно неизвестных y( xi ), y(s j ) . Формула(4) удобна для аналитического решения интегральных уравнений, так как число неизвестных узловых значений функции совпадает с числом узлов квадратурной формулы. В матричном виде(4): 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) Рассмотрим пример. Найти приближённое решение интегрального уравнения методом замены интеграла квадратурной формулой Симпсона и оценить его погрешность. 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 96 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   b n 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 , то  называется характеристическим числом интегрального ядра. А также найти собственные векторы, соответствующие  из уравнения: 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)   По формуле(6) находим коэффициенты: a11   A1 (s) B1 (s)ds   sin( s) cos(s)ds    cos(2s)  0, 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 . Решаем систему уравнений 97 2   2    D  D   D  2  2 2 2 2 D1  2 D2  2 D1  a11D1  a12 D2   f1 4  2       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             Проверим, что полученное решение является точным:  2 2 cos( x)  sin( x)  cos( x)   sin( x) coss   cos( x) sin s  y( s)ds  cos x  4  2 4  2      2 2 sin( x) coss   cos( x) sins  2 2 sin(s)  4 2 cos(s) ds  sin( x )  cos( x )  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   0    12        1   det I  A  0  det  1, 2 2 2   1     2      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 98 Потребуем, чтобы норма невязки 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 C1 ,..., Cn  L2 Ci ( r 2 2r r L2 C1 ,..., Cn  Ci L2  0 , если r L2 0 0 удобнее дифференцировать, чем r L2 переменных: L2 ) 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   b В первом множителе можно заменить индекс суммирования i  j . Относительно неизвестных коэффициентов C j получаем неоднородную систему n линейных уравнений b b b  b     b        C  ( x )   K ( x , s )  ( s ) ds  ( x )   K ( x , s )  ( s ) ds dx  f ( x )  ( x )   K ( x, s)i ( s)ds dx    j   j j i i i         a  j 1 a a a    a   Таким образом, имеем матричное уравнение AC  f вида n n a j 1 i, j C j  f i , i  1, n (3) где ai , j симметрическая матрица, как следует из формул для коэффициентов. b 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   (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 1   Невязка уравнения r ( x)  C1  C2 x  x   xs  x 2 C1  C2 s ds 1 99 Так как неизвестных коэффициентов всего два, проще повторить весь алгоритм сначала, не вычисляя коэффициенты 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 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.Метод Петрова – Галеркина Рассмотрим уравнение Фредгольма второго рода 100 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   rn1 ( x)  rn1 2 L2    j n1   j n1 j ( x)  j , r  y( x)  и верна теорема Стеклова b  j , r x   0,  j , r x    j ( x)r ( x)dx 2 n a b  j , r  0   j ( x)r ( x)dx  0, j  1, n  a b  n  n     ( x ) C  ( x )   K ( x , s ) C  ( s )  f ( s )  ds dx  0, j  1, n    j i i i i a   i1  i1   a  Поменяем порядок интегрирования и суммирования местами, получим систему из n линейных уравнений b b b b n b    Ci   j ( x)i ( x)dx     K ( x, s)i ( s) j ( x)dsdx      K ( x, s) f ( s) j ( x)dsdx, j  1, n  i 1 a a a a a  (3) Запишем (3) в матричном виде b 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 101 Мнемоническое правило для запоминания (в формулах (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 1 1 2 1  x2 s3 2 x2 2 2s   a1,1   1  xdx  1    xs  x s  1dsdx   x x dx   0 2 1 1 3 1 2 1  3 2 1 1 1 1   1 1 1 1 1 3 1 4 1 3 1  x s 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   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 1 3 1 3 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   a2,1C1  a2, 2C2  f 2  2 C  0C  0  C  0 1 2 1  9 y( x)  f ( x)  C11 ( x)  C22 ( x)  1  6 x 2 Проверим, что данное решение является точным 1 3  xs 2 s4 2 2 s  y ( x)  1    xs  x 1  6s ds  1    x s  6x  6x  4 3  1  2 1 1 1  2x 2  4x 2  1  6x2 1 1  2  2  102 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   1 1 1 1 1 1 4 1 3 1  x4 2 x4 3 2 2 2s 3s   a1, 2   x dx  1    xs  x s  xdsdx   x x dx   0   4 4 3 3 4 1 1 1 1  1 1 1  1 1 1 1 a2,1   x dx  1    3 1  1 1  x4 xs  x s  x dsdx  4 2 2 2  s3 1 3 4s   x x  3 2 1  1 1 1 1 4  dx   2 x  3 4 1  1 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 a C  a C  f  1,1 1 1, 2 2 1   a2,1C1  a2, 2C2  f 2 0C  2 C  4  C  6 1 2 2 15 5  103 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 i 1 a n  Cii ( xk )    K ( xk , s) Cii (s)ds  f ( xk ), k  1, n  i 1 b    Cii ( xk )    Ci  K ( xk , s)i ( s)ds  f ( xk ), k  1, n   Ci i ( xk )    K ( xk , s)i ( s)ds   f ( xk )  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 n b n Пример[1,№30.8].Найти приближение решение интегрального уравнения 1 1 4 4 y ( x)  1  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;   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 В качестве системы координатных функций имеем три многочлена Лежандра P2 ( x)  x 2  bx  c  x 2  104 1 ( x)  1; 2 ( x)  x,3 ( x)  x 2  1 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 Находим коэффициенты системы по формуле(2) K ( x, s)  xs 2  x  1 a1,1  1 ( x1 )   K ( x1 , s)1 ( s)ds 1   1 1  2 1 1 1 1  s4 s2   s  1 sds  1      1 2  1  4  1 a1, 2   2 ( x1 )   K ( x1 , s) 2 ( s)ds   1    2 1 2 1 2  s5 s3 s3 s  34   3 ( x1 )   K ( x1 , s)3 ( s)ds     s 2  1  s 2  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  1  1 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 1 a2,3  3 ( x2 )   K ( x2 , s)3 ( s)ds   1 1 1 1 1    0 s 2  ds   3 1  3 3 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 Покажем, что полученное решение является точным 105 1 1  s3  4 4 4 2 2 z ( x)  1  1  x   xs  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, x N  b, h   2k n 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) yk 1 ( x j )    k 1 (3)  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 ] 106 1 2 b yk 1  y L    ( yk 1 ( x )  y ( x ))2 dx  2 a  Кроме того, для вычисления нормы yk 1  y L2 , т.е. при вычислении интеграла используется формула Симпсона. В качестве теста для программы рассмотрим пример 2 1 1 y ( x )  e x   x e s y ( s )ds 20 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 ) L  2 1 1 1  2  1 2 1 2s  2  1 1 2s 1  2  1 2 b b 2 2     dx  K ( x, s ) ds     x dx  e 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] ещё не следует отсутствие этой сходимости. После основного тела программы, в конце, вынесены функции, написанные с двойной точностью, k ( x, s ) - ядро интегрального уравнения, f (x ) - неоднородная часть уравнения, ff (x ) - точное решение. # include  stdio.h  # include  math.h  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 (ouble(n1) / double(n))  1; int main() { int i, j, ii , j1, j 2, j3, j 4; double yy[n1  1], y1[n1  1], y 2[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;  1 2 107 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  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 ]; else c  c  y1[ j ] * yadro; } y 2[i ]  (h * lambda * c) / 3.0  f ( xx ); } //  for ( j1  0; j1  n1; j1  ) { // переприсвоение вектора y1[ j1]  y 2[ j1]; } } for ( j 2  0; j 2  n1; j 2  ) { x  a  double( j 2) * h; // разность между точным и численным решениями delta [ j 2]  y 2[ j 2]  yy[ j 2]; } for (i  0; i  n1; i  ) 108 { 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 ], y 2[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]  norma || delta [ j3]  norma))) norma  delta [l 3]; } if (norma  0.0) norma  norma; else norma  norma; printf (" norma(C[a, b])  %.16lf \ n", (norma)); printf (" h  %lf , h * h * h * h * h  %lf \ n", h, h * h * h * h); //===================== // норма в L2 [a, b] cc  0.0; for ( j 4  0; j 4  n1; j 4  ) { x  a  double( j 4) * h; bac  ( y 2[ j 4]  yy[ j 4]) * ( y 2[ j 4]  yy[ j 4]); if ( j 4  2 * int (double( j 4) / 2.0)  1& & j 4  1& & j 4  n1  1) { cc  cc  4.0 * bac; } else if ( j 4  2 * int (double( j 4) / 2.0)  0 & & j 4  1& & j 4  n1  1) { cc  cc  2.0 * bac; } else { cc  cc  bac; } cc  (cc * h) / 3.0; } cc  sqrt(cc ); printf (" norma( L2[a, b]  %.16lf \ n", cc ); //  } double k (double x, double s) { 109 return x * exp( s); } double ff (double x) { return x  exp(  x); } double f (double x) { return exp(  x); } // программа завершена Кроме всего нас будет интересовать скорость сходимости итерационной формулы (3) и порядок ее сходимости. Результаты норм невязки сведем в таблицу 1. Таблица 1 ( n1  100, n2  10, n  10 ): n2(k ) yk 1  x  e  x y  x  e x k 1 10 11 12 13 14 15 16 17 18 19 20 C 0,00049 0,0024 0,00012 0,000061 0,00003 0,000015 0,0000076 0,0000038 0,0000019 0,00000095 0,00000048 L2 0,000028 0,000014 0,0000070 0,0000035 0,0000018 0,00000088 0,00000044 0,00000022 0,00000011 0,000000055 0,000000028 Из которой видно что приближенное решение сходится к точному в обоих пространствах, во–вторых, при увеличении k на единицу норма невязки уменьшается в 2 раза, что означает линейную скорость сходимости (теорема о неподвижной точке гарантирует скорость сходимости не хуже линейной p  1 ). Обозначим неотрицательное число (норму невязки схемы)  . (k , h)  yk ( x)  y( x) Функционал  . ( k , h) зависит от трех параметров – порядка итерации k шага разностной схемы h и вида нормы . (если норма фиксирована, то ее можно не считать параметром). Все свойства невязки можно определитьчерез символ  . (k , h) все характеристики разностной схемы 1) Скорость сходимости разностной схемы p по ЖБК [1]  положительные числа С, p и натуральное число N , такие что  k  N    ( k  1, h)  ( k  1, h)   lim .  max .  C   C  h 0  . p (k , h)  p  . p (k , h)   2) Порядок сходимости разностной схемы p по Бахвалову Н.С.[2]  положительные числа C, p, h0 , такие что  h  h0 110  (k , h)  (k , h)     lim . p  max . p  C   C  p  h 0 h h   3) Порядок сходимости разностной схемы p (по Самарскому А.А.[3])  положительное число p и l  1 , такие что верно:  . (k , h) lim  l p (l  1) h 0  p (k , h / l ) . Отметим что 1) есть предел по направлению k   , а 2) и 3) пределы по направлению h  0 . Для данного примера скорость сходимости p  1 можно взять C  3 . Найдем порядок сходимости по h в двух пространствах, используя определение 3) ( l  2 ), дополнив таблицу значениями 1  1     C 10,   0,00049;  L2 10,   0,000020;  200   200  1  1     C 10,   0,00049;  L2 10,   0,000014;  400   400  1  1    Кроме того, из таблицы  C 10,   0,00049;  L2 10,   0,000028;  100   100  1  1     C 10,   C 10,   100    200   20  1( p  0) в пространстве C[a, b] Получим 1  1     C 10,   C 10,   200   400  1  1     L2 10,   1  C 10, 1  100   28  1.4  2 2 ,  200   20  1.43  2 2 , p  1 ; в пространстве L [a, b] . 2 1  20 1  14 2    L2 10,  C 10,    200   400  Порядок сходимости можно увеличить, если в формуле 3) пользоваться не формулой Симпсона по 3 узлам, а квадратурной формулой по 4 или 5 узлам. Наконец, приведем рекорд (на границе машинной точности 10 16 ) ( n1  1000, n2  50, n  100 ) 1  1    16 16 C  50,   429 *10 ;  L2  50,   8 *10 1000 1000     Литература 1)Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы. – 6-е изд. – М.:БИНОМ. Лаборатория знаний. 2)Бахвалов Н.С., Лапин А.В., Чижонков Е.В. Численные методы в задачах и упражнениях: учебное пособие. – М.:БИНОМ. Лаборатория знаний,2010. – 240 с. 3) Самарский А.А., Вабишевич П.Н. Численные методы обратных задач математической физики. – М.:Издательство ЛКИ, 2014.- 480 с. Глава 6. Уравнения в частных производных 111 Лекция 16. Аппроксимация и устойчивость разностных схем для уравнений в частных производных. Уравнения в частных производных содержат производные неизвестной функции, зависящей от двух и более независимых переменных. Отдельно различают уравнения, содержащие временную переменную, в качестве параметра описывающую различные последовательные состояния неизвестной функции. Построение разностных схем уравнений в частных производных (УЧП) как и обыкновенных дифференциальных уравнений начинают с аппроксимации узловых значений функции на всех узлах шаблона относительно выбранного центрального узла. Шаблоны и схемы, содержащие временную переменную делят на явные и неявные. Это связано с ориентацией шаблона вдоль временной оси и противоположно временной оси. Если на одной из ориентации шаблона содержится больше узлов на старшем временном слое, чем на противоположной ориентации шаблона, то такой шаблон и разностную схему называют неявной. Кроме УЧП для которых можно провести аппроксимацию на внутренних узлах пространственной области, необходимо аппроксимировать начальные и граничные условия на узлах, принадлежащим границе области, желательно с тем же порядком погрешности, что и на внутренних узлах. Кроме аппроксимации линейной разностной схемы необходимо решить вопрос устойчивости, например, спектральной устойчивости разностной схемы, содержащей временную переменную, например, для уравнений параболического и гиперболического типов, таких как уравнение теплопроводности, переноса и волновое уравнение. Устойчивая разностная схема даёт ограниченное сеточное решение. В то время как неустойчивая схема увеличивает даже небольшую погрешность, например, ошибку округления, по закону геометрической погрешности. Устойчивая схема уменьшает ошибку округления и ошибку начальных данных по геометрической прогрессии если с достаточно большим порядком аппроксимированы начальные и граничные условия. Для устойчивой схемы конечная абсолютная ошибка зависит от порядка аппроксимации внутреннего и граничного операторов и растёт по арифметической прогрессии, т.е. прямо пропорциональна количеству выполненных элементарных арифметических операций. К аналитическому решению УЧП в классическом смысле предъявляют требования – существование решения – единственность решения – непрерывность решения по начальным и граничным условиям и непрерывность решения относительно неоднородной правой части уравнения. Спектральная устойчивость Рассмотрим линейную разностную схему с постоянными коэффициентами bk ,l Lhumn   bk ,l umnkl  0, (1) k ,l Выберем частные решения (1) в виде n umn     eim (2) Разностное уравнение(1) линейное, возьмём вариацию от уравнения, где вариация umn kl моделирует ошибку в m+l узле на n+k временном слое. Lhumn  Lhumn   bk ,lumnkl  0 , umn    n eim ,  bk ,l   nk ei ml   0 k ,l k ,l Последнее уравнение равносильно уравнению, называемое спектральным  bk ,l   k eil   0 (3) k ,l 112 Вообще говоря, число    представляет точку на комплексной плоскости и описывает замкнутую кривую при увеличении угла 0    2 . Определение 1. Разностное уравнение(1) спектрально устойчиво, если решение спектрального уравнения при заданных законах h,  0,     1  [0,2 ] .  n n 0,     q  1 Определение 1 корректно. Действительно, umn     eim       n 1,     1,    И в этом случае сеточная функция ограничена по модулю. Определение 2. Разностное уравнение(1) спектрально устойчиво, если при заданных законах h,  0 существует константа 0  С   не зависящая h, , что для любого угла 0    2 ,     eC Определение 2 переходит в Определение 1 в частном случае при С=0. Корректность определения 1 показана. Оценим сеточную функцию по модулю сверху n n umn     eim      eCn  eCt , t  n . Определение 2 подразумевает существование закона h,  0,  f h  : C    const f h  Другими словами ошибка округления с использованием определения(2) может расти со временем не быстрее чем показательная функция eCt . В этом случае решение разностного уравнения (1) будет ограниченным по модулю. Однако нижняя оценка локальной ошибки может быть значительно ниже верхней оценки. Например, в волновом уравнении на узловое значение u mn могут влиять ошибки округления со всех узлов ограниченных прямыми mh  cn  m1h, mh  cn  m2 h, n  0 , c - скорость волнового фронта, т.е. ошибки всех узлов внутри треугольника с вершинами cn cn (m, n), (m   m1 ,0), (m   m2 ,0) . Если ошибки быстро меняются по величине и h h знаку по координате и времени, то суммарный их вклад в узловое значение u mn может быть ничтожно малым. Пример 1. Исследовать разностную схему на спектральную устойчивость, коэффициент a считать постоянным[1,№26.11] u n  u n  umn1  umn un  un a n  a m1 m1  0, z   umn1  umn  z m1 m1  0, umn     eim   2h h 2 ei  ei   0    1  iz sin    1  zi 2i Последнее уравнение является спектральным для данной разностной схемы. Найдём модуль комплексного числа z2 z4 z2 z 2 a 2 2 a 2   1  z sin   1  z  1  z   1   e 2  eC , C     const 4 2 2 h 2 2 h 2 2 2 2 2 2 То есть при законе стремления h,  0,  h2  const Разностная схема в примере спектрально устойчива. Мы использовали определение 2 спектральной устойчивости. Пример 2. Исследовать разностную схему на спектральную устойчивость, коэффициент a считать постоянным[1,№26.14] umn1  umn umn1  umn11 a n a  0, z   umn1  umn  z umn 1  umn 1   0, umn     eim   h h 113   1  z 1  e i   0    1 1  , i 1 z 1 e 1  z 1  cos    iz sin    1 1 1    2     2 2 2 4 2 2 2    2 2 2 1  2 z sin  iz sin  1  4 z sin  4 z sin  4 z sin cos 1  2 z sin   z sin  2 2 2 2 2 2   1 1   1 2  2 4  2 2  2  2  2 2  1  4 z sin  4 z sin  4 z sin cos 1  4 z sin  4 z sin 2 2 2 2 2 2  1  4 z sin 2  2  4 z 2 sin 2  2  1  4 sin 2  2 z z  1  0  [0,2 ]  z   ,1  0,  . В последнем примере было использовано определение 1 спектральной устойчивости. 1)Бахвалов Н.С., Лапин А.В., Чижонков Е.В. Численные методы в задачах и упражнениях: учебное пособие. – М.:БИНОМ. Лаборатория знаний,2010. – 240 с. Лекция 17. Уравнение теплопроводности. Уравнение теплопроводности является уравнением в частных производных второго порядка с первой частной производной по времени и содержит оператор, div ( grad (u)) применяемый к неизвестной скалярной функции u : u  div (k grad (u )) , где k - коэффициент температурной проводимости. t В одномерном случае получим уравнение u ( x, t )    (k x  (u ( x, t ))) t x x Наиболее просто записывается уравнение теплопроводности для однородной среды u ( x, t )  2 u ( x, t )  k x  (1) t x 2 Уравнение теплопроводности описывает распространение тепла в сплошной среде. Метод прогонки для линейной неоднородной системы линейных уравнений с трёхдиагональной матрицей Решается уравнение вида Ak xk 1  Ck xk  Bk xk 1  Fk , k  1, n  1 (2) Предположим, что на границах справедливы формулы x0  0 x1  0 , xn  n xn 1  n (3) И справедлива итерационная формула решающая (2) xk  k xk 1   k , k  0, n  1 (4) Из (4) получим xk 1  k 1 xk   k 1 , k  1, n , которое подставим в (2), имеем Ak k 1 xk  k 1   Ck xk  Bk xk 1  Fk , откуда xk   Bk xk 1 F  Ak k 1  k , k  1, n  1 Ak k 1  C k Ak k 1  C k 114 Т.е. k  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 (5) Где 0 , 0 определяются формулой(3)(из начальных условий). По формуле(4)и (3) 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 определяют из начальных условий (3) xk  k xk 1  k , k  0, n  1 (6) Формулы (6) называются прогонкой назад Запишем для численной схемы (2) (достаточное условие корректности по И.В.Красикову) Ck  Ak  Bk , Bk  0, Ak  0, k  1, n  1, 0  1, n  1 (7) Докажем утверждение (7): Теорема. Пусть выполнено условие (7), тогда: (1) k  1, k  1, n  1 (2) формулы прогонки (5), (6) корректны, т.е. знаменатели формул (5),(6) знакопостоянны и не обращаются в 0. Доказательство первой части теоремы проведём по индукции: 1)Для базы индукции k  1 получим B1 B1 B1 B1  С1  A1  B1   1 1  , 1    C1  A10 C1  A10 C1  A1 0 C1  A1 2)Пусть при k  1 k  1 , тогда согласно формуле(7) k 1  Bk 1 Bk 1 Bk 1 , k 1    C k 1  Ak 1k C k 1  Ak 1k C k 1  Ak 1 k  Bk 1 C k 1  Ak 1 С k 1  Ak 1  Bk 1   1, k  1, n  2, т.е. k  1, k  2, n  1 Объединяя 1) и 2), получим , k  1, k  1, n  1 - первая часть теоремы доказана Для формулы(6) получим её корректность, т.к. , n1  1 и если n  1 , то 1  n 1n  0 и x n  n n1   n корректна(знаменатель больше нуля) 1  n 1n Ak k 1  Fk , k  1, n  1, C k  Ak k 1  C k  Ak k 1  C k  Ak  Bk  0 C k  Ak k 1 A   Fk , k  1, n  1 также корректны. Теперь формулы  k  k k 1 C k  Ak k 1 Теорема доказана. Рассмотрим пример в качестве теста к программе: (2)  k  ut  u xx , x  0,   u( x,0)  sin(3x ), x  [0, ] u(0, t )  u( , t )  0, t  0  (8) 115 Разделим переменные u( x, t )  X ( x)T (t ) и подставим в первое уравнение (8) T ' X ''    , в силу независимости переменных последнее уравнение T X возможно тогда и только тогда, если   const , решаем каждое уравнение порознь, сначала задачу Штурма – Лиувилля (для функции X (x ) ): T ' X  TX ''       X n ''  n X n  0  X n ( x)  An cos n x  Bn sin n x  An  0, n   n  n  n 2 , n  0,1,2,...   X n (0)  X n ( )  0 X n ( x)  Bn sinnx , n  0,1,2,... Решаем второе ОДУ:  T '  n 2T  0  T (t )  Cn exp  n 2t , u( x, t )   Cn exp  n 2t sin( nx ) . n0 Используя начальное условие (второе уравнение (7)), получим решение задачи (7) u( x, t )  exp  9t sin(3x) (9) Составим численную схему задачи с полностью неявной схемой уравнения теплопроводности (явная и неявная схемы уравнения отличаются лишь ориентацией шаблона и соответственно верхним индексом координатной части дифференциального оператора). umn 1  umn u n 1  u n 1  2umn 1   m 1 m 21 , где :  , h,  шаг времени, шаг координаты и  h     коэффициент температуропроводности соответственно. Обозначим параметр z   и h2 перепишем уравнение в канонической для прогонки форме: zumn11  2 z  1u mn1  zumn11  u mn , m  0, N , n  0, N1, h   / N ,  t1 / N1 n 1 m n 1 m n 1 m n 1 m (10) Сравнивая (1) и (9), имеем A  z, B  z, C  1  2 z, F  u (11) Заметим, что условие устойчивости (7) выполняется автоматически 1  2 z  z  z  2 z0  1 . Исследуем спектральную устойчивость численной схемы (10) относительно ошибки округления, выбирая функцию ошибки в виде u mn  n e im и подставим её в (10): n m 1   (12) z e i  2  e i     1  z 2(cos   1)  4 z sin 2      1    2 2  1  4 z sin   2 Из формулы (12) видно, что численная схема(10) безусловно устойчива, т.к. 1 1     1  0  z,   [0,2 ]   1 1  4 z sin 2   2 Исследуем также аппроксимацию неявной численной схемы (10), для чего разложим узловые значения функций u mn11 , u mn1 , u mn11 относительно узлового значения u mn : 1 1 u mn 11  u mn  u t  hu x   2 u tt  2hu tx  h 2 u xx   3 u ttt  3 2 hu ttx  3h 2 u txx  h 3u xxx  2 6 1 4   utttt  4 3 hutttx  6 2 h 2 uttxx  4h 3utxxx  h 4 u xxxx  O  5  h 5 24 1 1 n 1 u m1  u mn  ut  hu x   2 utt  2hutx  h 2 u xx    3uttt  3 2 huttx  3h 2 utxx  h 3u xxx   2 6 1 4   utttt  4 3 hutttx  6 2 h 2uttxx  4h 3utxxx  h 4u xxxx  O  5  h 5 24             116   1 1 2umn1  2umn  2ut   2utt   3uttt   4utttt  O  5 3 12 1 1 1 u mn1  u mn  ut   2 utt   3uttt   4 utttt  O  5 2 6 24 Тогда, приравнивая обе части уравнения, получим:  3 4  2h2 h4 z u mn11  u mn11  2u mn 1  z 2u t   2 u tt  h 2 u xx  u ttt  h 2 u txx  u tttt  u ttxx  u xxxx  3 12 2 12      1 1 1 1 1     2ut   2 utt   3uttt   4 utttt    u mn1  u mn  ut   2 utt   3uttt   4 utttt 3 12 2 6 24      2h2 h4 1 1 1 z h 2u xx  h 2utxx  uttxx  u xxxx   ut   2utt   3uttt   4utttt  O  5 2 12 2 6 24     Упростим формулу (13), учитывая, что z   , ut  u xx , utt   2 u xxxx , utxч  (13) utt  h Скомпенсируем слагаемые в правой и левой частях уравнения (13) по степеням малости  zh 2 1  1 zh 2 u xx  ut  u xx  z  2 , zh 2 utxx  utt   2 utt  z  2  1  ,  2 2 h 2h полученное противоречие показывает, что неявная численная схема (10) аппроксимирует уравнение ut  u xx с погрешностью O h 2   (делим уравнение(13) на  ).  2  Практическая работа №14. Решение неявного уравнения теплопроводности методом прогонки. Программа позволяет не только получить таблицу численного решения задачи (8), но и геометрически построить неизвестную функцию двух переменных на прямоугольнике, используя цифровые символы. Таким образом, мы получаем трёхмерное описание функции (её численное значение в виде цифры от 0 до 4 в момент времени t с координатой x ). Отметим, что в языке С++ нет графических приложений и символьное описание функции является единственным возможным её графическим представлением. Для удобства колебания функции (разность max min ) разбивается на интервалы, разделённые пустыми промежутками для удобного зрительного восприятия волновой поверхности. В программе число nx равно числу символов "1" в 1 строке экрана монитора, и зависит от разрешения экрана монитора, операционной системы. Число nx определяется экспериментально участком программы for(i=1;i<=80;i++) { printf("1"); } до тех пор, пока первая строка экрана заполнится единицами без пробелов. Выбираем N  80 (определяется экспериментально для каждого монитора и правильного t1 zh2   отображения графики ), t1  0.1 с. Учитываем формулу связи N1  Параметры l1, l 2 служат для масштабирования графики (с не очень большими значениями). 117 Рекомендации для программы 1) Подобрать параметр N для правильного отображения графики 2) Написать программу для задачи (7) в соответствии с формулами (1) – (6),(9) – (11) 3) Получить тестовую таблицу Один из возможных вариантов программы #include #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]; 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]; } for(k=0;k<=N;k++) { l[k]=0.0; nu[k]=0.0; 118 } 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; 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 Обратим внимание, что диффузия с течением времени приводит к выравниванию первоначально неоднородных по температуре областей к средней температуре для всей рассматриваемой области (исчезают области 0,3,4). Delta=0.001696, N=80, N1=150 (норма Чебышева для невязки точного и приближённого решений) Delta=0.000232, N=160, N1=150 Delta=delta=0.000018, N=320, N1=150 Оценим порядок погрешности Delta80  0.001696 Delta160  0.000232   2 2  7,3  2 3   2 3  12,8  2 4 Delta160  0.000232 Delta320  0.000018 Порядок аппроксимации имеет смысл в данном случае при определённом законе (связи) h, и их одновременном стремлении к нулю. Очевидно, что во всех приведенных примерах порядок погрешности численной схемы не менее 2  u C ~ h 2 ,так как  const O  h 2   Oh 2  h2 Литература: 1) А.А.Самарский, П.Н.Вабищевич. Численные методы. Решения обратных залач математической физики. – М.: ЛКИ . 2013. – 478 с. 2) И.В. Красиков, И.Е. Красикова. Алгоритмы просто как дважды два. – М.:Эксмо, 2007. – 2007ю – 256 с. 3) В.П.Пикулин, С.И.Похожаев. Практический курс по уравнениям математической физики. – М.: Наука. – 1995. – 223 с.  ~ h2 , z  Лекция 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 ) получаем задачу Штурма – Лиувилля  ' ' n Xn  2 Xn  0 (2) c    X n (0)  X n ( )  0, n  0,1,2,... Задача (2) имеет общее решение 123        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     2 2 n  с n , 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) получаем единственный ненулевой коэффициент разложения (6) C2  1, u( x, t )  sin(2 x) cos(2ct ) - решение задачи (1) Построим разностную схему для уравнения (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 (8) u m  zum1  zum1  2u m 1  z   u mn1 Поскольку уравнения (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 При z  1 разностная схема расходится, т.е. 1, 2  1 , например, при   2  2 (рассмотрим случай с положительным дискриминантом): 124 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 c 2 2  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 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  0,1,2,... Т.е. k 1 k 1 (10) 125 в разложении в ряд Тейлора слагаемое со степенью  2 k  2 в левой её части компенсирует слагаемое со степенью h 2 k  2 в правой её части. В итоге можно выбрать параметр z  1 , так как он кроме того удовлетворяет условию спектральной устойчивости численной схемы относительно ошибок округления. Волновое уравнение (уравнение колебаний) содержит вторую частную производную по времени и вторые частные производные по координатам. Следовательно, для однозначного описания задачи кроме двух граничных условий задачи(1) необходимо два начальных условий (начальные значения координат u m0 струны и начальные значения скорости всех точек струны u t m ). Эти начальные условия эквиваленты заданию 2 первых слоёв по времени узловых значений неизвестной функции. Если использовать начальные условия задачи (1) для аппроксимации второго временного слоя, то получим (11) u 1m  u m0  ut m - аппроксимация с первым порядком погрешности второго временного слоя по начальной скорости всех узлов 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=80, 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); //return 0; 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); } 128 else{printf(" "); } }} Рис.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 Приблизим второй временной слой, используя значение первого временного слоя и временную производную на первом слое формулой res[i][1]=res[i][0]+pro[i]*dt (что является достаточно грубым приближением с первым порядком погрешности по dt). Тогда конечное решение также имеет погрешность с первым порядком по dt . Абсолютно точным приближением второго временного слоя является формула res[i][1]=res0[i][1]; Можно проверить численно, что для параметра 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   x , y C2  f 2  x, y    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 2  x, y   x , y C2  0 u 3 x, y   x , y C2  f 2 x, y  u1 x, y   x , y C2  0     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  133   1  ch     shx   chx  sin  y  Запишем решение частной задачи 1) u1 x, y       sh    Ищем решение второй частной задачи   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   (5) Y 0  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  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 (6)      Y  Y    Находим частное решение дифференциального уравнения краевой задачи (6). Y part  y   1 Общее решение однородного уравнения следующее: 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) есть 134    1  ch   sh y   ch y  sin x  u3 x, y     1    sh     Решение исходной задачи 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 :    u u  h 2   2 u  2 u  2 u  h 3   3u  3u  3u  3u     3  3 2  3  u1,1  u 0,0  h     2  2  2  xy  6  x 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  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  xy  6  x y x y xy 2 y 3   x y  2  x 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 u  h 2   2 u  2 u  2 u  h 3   3u  3u  3u  3u     3  3 2  3  u 1, 1  u0,0  h     2  2  2  2 3   x  y 2  x  y 6  x  y  x  x  y  x  y  y       135  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    2u  2u  2 u  h 3   3u  3u  3u  3u   2  2  2     u 1,1  u 0,0 3 2 3  xy  6  x 3 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  h      x y  2  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  В сумме получим:   2u  2u  h 4   4u  4u  4u  u1,1  u1,1  u1,1  u1,1  4u 0,0  2h 2  2  2    4  6 2 2  4   y  6  x x y y   x 5 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    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  2u  h 4   4u  4u  h 6   6u  6u    6  6    O h 8  C1  4u 0,0  h 2  2  2    4  4   12 360  x  y  x  y 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 (8) u k 10,0  u k 0,1  u k 0, 1  u k 1,0  u k 1,0   , k  0,1,2,... 4 4   Практическая работа№16. Интегрирование уравнение Пуассона на прямоугольнике. 136 Используя формулу (8), напишем программу для решения задачи (1) на С++. Программа определяет норму погрешности (максимальное значение модуля разности между численным и точным значениями по всем узлам сетки на прямоугольнике) после, 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 ; 137 } } 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.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++) 138 { 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; } 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.00912 При n=20 программа возвращает норму погрешности: delta (20)  0.00223 delta (10) 0.00912   4.089  2 2 . Следовательно, у итерации (8) второй порядок delta (20) 0.00223 погрешности. Практическая работа №17. Интегрирование уравнение Пуассона на прямоугольнике(9 точечный шаблон). 2) девяти точеный шаблон 139 u   1 h2  2u  2u 1  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   2 x y h 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     x 2 y 2  12  x 4 y 4  360  x 6 y 6                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   C   4u  4u  C   4u  4u  4u   h2  u  h 2  1  4  4   2  4  6 2 2  4    f  f 12 y  6  x 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   1 1 3  h2  u 0,1  u 0, 1  u1,0  u 1,0   u1,1  u1, 1  u1, 1  u 1, 1   h 2  f  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 2  h 8 f 0,0  f 0,1  f 0, 1  f1,0  f 1,0  (10) 40 Используя формулу (10) составим программу для задачи (1)      140 #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 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++) { 141 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) ); } } } 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] ); } 142 } 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 (10)  0.0000242 При n=20 программа возвращает норму погрешности: delta (20)  0.00000152 delta (10) 0.0000242   15.92  2 4 . Следовательно, у итерации (10) четвёртый порядок delta (20) 0.00000152 погрешности. 143 Лекция №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) Говорят, что разностная схема (3), (4) аппроксимирует на решении u с порядком аппроксимации p  min( p1, p2 ) дифференциальную задачу (1), (2) , если существуют такие положительные постоянные h0 , c1, p1, c2 , p2 , не зависящие от h , что при всех h  h0 , справедливы неравенства: lh (u)  h Ф  с2h p2 Lh (u)  f h F  c1h p1 , 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)  144 Разложим узловые значения umn 1, umn 1, umn 1 в формуле (8) в ряд Тейлора для получения максимального порядка аппроксимации с центром разложения u mn : (umn )  2  2 (umn )   o( 2 ) 2 t 2 t n (u m ) h 2  2 (u mn ) h 3  3 (u mn ) h 4  4 (u mn ) n  um  h     o( h 4 ) 2 3 4 x 2 x 6 x 24 x umn 1  umn   u mn 1 (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 Подставляя разложения для um , um1, umn 1 в формулу(8), получим: umn 1  umn  h  2  2 (umn ) h 4  4 (umn )  (umn )  2  2 (umn )   o( 2  h 4 )    z h  (9) 2 2 4  t 2 t x 12 x   Потребуем по отдельности равенства первых и вторых слагаемых в формуле (9) по отдельности: n (umn ) (umn )  2 (umn ) 2  (um )   zh  , , используя первое уравнение системы уравнений (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    um    (um )  2 2 (um )  4 (um ) t 2 t  t    x 2  x 2 t x x x Учитывая последнее равенство и требование: 2 2   (umn ) h 4  4 (umn ) 2 h4  h4 h2 h2 1  z   z       z . (10) 2 4 2 2 t 12 x 2 12 h 12 12 6 6 Итак, максимальный порядок аппроксимации дифференциального оператора (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 . Комплексное число  ( ) определяет замкнутую кривую на комплексной плоскости при изменении  . В качестве функций n im возмущения численной схемы выберем um   ( ) e n [1] и подставим в (8) :  ( )n 1 eim   ( )n eim  z ( )n eim (ei  ei  2) n Разделим последнее уравнение на  ( ) eim : 2 2         ( ( )  1)  2 z(cos( )  1)  4 z sin     ( )  1  4 z sin     2    2  1 Если параметр 0  z  , то справедливо из (12) :  1   ( )  1   ( )  1. 2 (12) 145 1 численная схема (11) имеет не только максимальный 6 порядок аппроксимации, но и является устойчивой. Построим схему граничного оператора lhuh  h для граничного условия lu   Таким образом, при z  - третьего уравнения системы (6) : ux (0, t )  ux ( ,0) с тем же порядком точности: p2  p1  4 . Составим квадратурную формулу для граничного оператора (производной u функции в нуле (0, t ) ) методом неопределенных коэффициентов[1]: x u 1 (0, t )  au0n  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 )  невязка квадратуры. Потребуем равенства нулю остатка 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 146 Так как, по условию задачи (6) u (0, t )  0 , то выразим из (15) u0n : x 1 (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 2 2 M ~ N  T  M  N    ~ 1. Окончательно, выпишем разностные уравнения 6 6 численной схемы, соответствующей дифференциальной задаче (6) : u0n  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  stdio.h  # include  math.h  int N  100, N1  N * N ; int main(){ int k , j; double resN  1N1  1, xN  1; double pi, h, dt; pi  2.0 * a sin(1.0); h  pi / double( N ); h*h dt  ; 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));} 147 for ( j  1; j  N1; j  ) { for (k  1; k  N  1; k  ) {  1.0  resk  j     * resk  1 j  1  resk  1 j  1  4.0 * resk  j  1 ;  6.0  }}  1.0  res0 j     48.0 * res1 j   36.0 * res2 j   16.0 * res3 j   3.0 * res4 j ;  25.0   1.0  resN  j     48.0 * resN  1 j   36.0 * resN  2 j   16.0 * resN  3 j   3.0 * resN  4 j ; (21)  25.0  pr int f (" x axact resolve \ n " ); for (k  0; k  N ; k  ) { if (k  10 * int(double(k ) / double(10))  0) { pr int f (" x  %lf axact  %.14lf res  %.14lf \ n", h * double(k ), x(k ), resk N1) ( 20) }} pr int f (" h  %lf h * h * h * h  %lf \ n", h, h * h * h * h); } Результаты численного решения Покажем, насколько важно требовать согласование порядков аппроксимации 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 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 -0.00042898213940 -0.00112308982151 -0.00138821536422 -0.00112308982151 -0.00042898213940 0.00042898213940 0.00112308982151 0.00138821536422 resolve -0.00116477704469 -0.00141598028627 -0.00208561646036 -0.00291666632857 -0.00359015697326 -0.00384758973613 -0.00359015697326 -0.00359015697326 -0.00208561646036 -0.00141598028627 -0.00116477704469 delta -0.00255299240891 -0.00255282114823 -0.00255264003627 -0.00255244911732 -0.00255224843765 -0.00255203804554 -0.00255181799127 -0.00255158832706 -0.00255134910711 -0.00255110038758 -0.00255084222654 h  7.853981633974483E - 003, h4  3.805042618515720E - 009 Сравнивая значения exact и resolv в таблице 1, видим, что приближенное решение даже не сходится к точному, так как приближенное решение всегда отрицательно, в то время как точное 148 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 ) axact x resolve delta 0.00000000 0.00138821536422 0.00138821868693 0.00000000332271 0.31415927 0.00112308982151 0.00112309312266 0.00000000332223 0.62831853 0.00042898213940 0.00042898540013 0.00000000332168 0.94247780 -0.00042897892418 0.00000000332107 0.00042898213940 1.25663706 -0.00112308982151 -0.00112308664158 0.00000000332039 1.57079633 -0.00138821536422 -0.00138821219752 0.00000000331964 1.88495559 -0.00112308982151 -0.00112308664158 0.00000000331883 2.19911486 -0.00042898213940 -0.00042897892418 0.00000000331796 2.51327412 0.00042898213940 0.00042898540013 0.00000000331702 2.82743339 0.00112308982151 0.00112309312266 0.00000000331602 3.14159265 0.00138821536422 0.00138821868693 0.00000000331495 N2 m u 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) axact x 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 . 149 В общем случае, для определения (оценки) порядка сходимости разностной схемы, как определяет А.А.Самарский 3 , стр. 57, необходимо требовать уменьшение погрешности (нормы разности приближенного и точного решений) в 16 раз при уменьшении шага сетки h в 2 раза (увеличении N в 2 раза) – для сходимости с четвертым порядком. В данной разностной схеме при увеличении N в 2 раза (с 200 до   3 109 400) погрешность по норме Чебышева уменьшается примерно в  10  30  16  раз.  10  Необходимо выбирать большие 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 к решению   2 дифференциальной задачи u( x, t )  uh ( x, t ) ~ o(h ) (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) ~ , lnN То u( x, t )  uh ( x, t ) ~ N/lnN   , N  . Что доказывает расходимость задачи в последнем случае. Литература 1) Бахвалов Н.С., Лапин А.В., Чижонков Е.В.Численные методы в задачах и упражнениях. – М.:БИНОМ, Лаборатория знаний, 2010. 2) Пикулин В.П., Похожаев С.И. Практический курс по уравнениям математической физики. – М: Наука, ФИЗМАТЛИТ, 1995. 3) Самарский А.А., Вабишевич П.Н. Численные методы решения обратных задач математической физики. Учебное пособие. – М.: Издательство ЛКИ, 2014 – 480 с. 4) Герец А.Ю., Зеленкевич А.А., Гурьева Н.А.,Пастухов Ю.Ф.,Пастухов Д.Ф. Согласование порядков аппроксимации дифференциального и граничного оператров в краевой задаче для уравнений в частных производных. Вестник Полоцкого государственного университета, серия С, №12,2015, стр.102. 150 Приложение1 УДК 517.6: 517.958 ОПТИМАЛЬНЫЙ ПАРАМЕТР АППРОКСИМАЦИИ РАЗНОСТНОЙ СХЕМЫ ВОЛНОВОГО УРАВНЕНИЯ НА ОТРЕЗКЕ Д.Ф.Пастухов, Ю.Ф.Пастухов (Полоцкий государственный университет) Н.К. Волосова (Московский государственный технический университет им. Н.Э. Баумана) Предложен алгоритм решения начально - краевой задачи для неоднородного волнового уравнения на отрезке с двойной точностью. Алгоритм основан на выборе оптимального параметра, обеспечивающего бесконечный алгебраический порядок аппроксимации однородному уравнению. Для решения системы линейных уравнений с симметрической пятидиагональной матрицей с краевым условием Дирихле доказаны достаточные условия корректности формул прогонки вперед более слабые, чем условия диагонального преобладания её элементов. Применение алгоритма укрупнения ячеек сетки и использование метода производящих функций даёт двойную точность относительной погрешности решения даже на грубой сетке с числом узлов несколько сотен. Ключевые слова: метод производящих функций, инициализация задачи, слабые достаточные условия корректности формул прогонки симметричной пятидиагональной матрицы. Введение. Задачи с численным решением волнового уравнения встречаются во многих физико-технических приложениях, большой класс краевых задач математической физики также сводится к неоднородному волновому уравнению на отрезке, на прямоугольнике, в параллелепипеде[1-5]. В последнее время в численных методах появилось направление ускоренных расчётов[2], которое достигается либо за счёт увеличения порядка аппроксимации разностных схем[2,3,4] либо, например, за счёт геометрии удачного выбора узлов сетки (“суперузлов”) [6]для решения уравнения Пуассона в эллиптической области значительно снижается объём вычислений. В данной работе решается одномерное неоднородное уравнение с ускорением расчёта путём увеличения порядка аппроксимации и путём выбора оптимального параметра аппроксимации разностной схемы. Найденная параметризация обеспечивает однородному разностному уравнению бесконечный алгебраический порядок аппроксимации, а для неоднородной начально - краевой задачи позволяет выразить невязку уравнений только через частные производные от известной правой части волнового уравнения. Более того, применение производящих функций, как функций временного шага, заменяет вычисление бесконечного ряда слагаемых для невязки в разностных уравнениях на конечное число арифметических вычислений с двойной точностью в неоднородной начально – краевой задаче. В данной работе нами построен алгоритм инициализации задачи, т.е. аппроксимация второго временного слоя решения по начальным данным задачи. Алгоритм сводится к прогонке либо трёхдиагональной СЛАУ, либо к прогонке трёхдиагональной, а затем пятидиагональной СЛАУ. Найдены также достаточные условия корректности формул прогонки, более слабые, чем диагональное преобладание элементов матрицы. Алгоритм инициализации даёт приближение второго слоя решения по начальным условиям с относительной погрешностью не хуже, чем 1010 при числе узлов 500. В то время как инженерный американский продукт ANSYS Fluent завершает решение задач с относительной точностью 103 и тем более с грубой точностью на процессе 151 инициализации задачи, т.е. 101  102 . Благодаря применению спектрально устойчивых разностных схем относительная погрешность начальных данных уменьшается от 108  1010 до 1015 . Нами построен также алгоритм укрупнения ячеек сетки (масштабирования), что позволяет сократить число вычислений в ll 2  100 сотни раз. Неоднородная начально – краевая задача при числе узлов 300 на грубой координатно – временной сетке решается с помощью указанных здесь методов с двойной точностью 1015 (т.е. первые 15 десятичных знаков аналитического и численного решения на последнем временном слое во всех координатных узлах совпадают). Некоторые двухмерные и трёхмерные колебания в приложениях часто сводятся к одномерным, двум или трём независимым одномерным волновым уравнениям на отрезке[5]. Например, в прямоугольном кристалле колебания атомных параллельных плоскостей порождают одномерные звуковые волны и др. Поэтому, решаемая нами численно задача полезна и в многомерных случаях. Постановка задачи. Рассмотрим начально – краевую задачу для неоднородного волнового уравнения на отрезке [a, b] . 2   2u 2  u  a  f ( x, t ), a 2  0, ( x, t )  (a, b)  (0, T )  t 2 2 x u ( x,0)   ( x), x  [a, b] (1)  u ( x,0)   ( x), x  [a, b]  t u (a, t )  u (b, t )  0, x  [a, b] Где u ( x, t ) - точное аналитическое решение задачи(1). f ( x, t ), ( x), ( x) - функции внешнего источника, начальное смещение и начальная скорость точек струны с закреплёнными концами на отрезке соответственно заданы в условии задачи ( x, t ) [a, b]  [0,T ] . Аналитической задаче(1) сопоставим разностную задачу на равномерной сетке, используя пятиточечный шаблон – крест n n n  u mn1  u mn1  2u mn 2 u m 1  u m 1  2u m  a  f ( xm , t n ),  2 2  h   xm  a  mh, t n  n , [m, n]  [1, M  1]  [1, N  1],  (2) u (mh,0)   (mh), m  [0, M ], u (mh, )   (mh), m  [0, M ],  ( x)  F  ( x), ( x) , 1 1 1  u (0, n )  u ( N , n )  0, n  [0, N ].   ba T ,  Где h  - временной и координатный шаг сетки, a 2 - квадрат фазовой N M скорости волны. Задание начальных условий в линейной аналитической задаче(1) эквивалентно заданию значений двух начальных временных слоёв решения u(mh,0)   (mh)  um0 , u(mh, )  1 (mh)  u1m , m [0, M ] , поскольку их запрашивает узловое значение um2 в первой рекуррентной формуле системы(2) . a 2 2 и перепишем разностное уравнение(2) в эквивалентном виде h2 umn1  umn1  2umn  z umn 1  umn 1  2umn  f ( xm , tn ) 2  z umn 1  umn 1  2umn  f m,n 2 (3) Обозначим параметр z      152 Потребуем, чтобы разностное уравнение(3) аппроксимировало первое уравнение системы(1) с максимальным алгебраическим порядком точности, далее разложим узловые значения umn 1, umn 1 в ряд Тейлора в центральном узле (m, n) : u n 1 m u n 1 m 2 n  2  2 k umn 2 k 2  2 k umn 2 k 2  um  2u       2k t 2 k  2 2k ! t 2 k k 1 2k ! t  n m   2  2umn 2  2 k umn 2 k   z u  u  2u  f m, n  z h  h   f m, n 2 2 2k k  2 2k ! x  x  Приравняем правые части последних двух выражений, используя тождество 2 n  2umn 2  um  a  f m, n имеем: t 2 x 2   2u n  2  2 k umn 2 k 2 2  2umn 2  2 k umn 2 k 2  2 2m      a  f      m, n 2k 2k t x 2 k  2 2k ! t k  2 2k ! t  n m 1 n m 1 n m  2    a 2 2  2  2umn 2  2 k umn 2 k  2  2 k umn 2 k 2  2 k umn 2 k 2   h  h  f     z h (4)    2k 2k  m, n     h 2  x 2 k  2 2k ! x 2 k 2 k !  t 2 k !  x k  2 k  2  Невязка первого уравнения системы(2) равна невязке уравнения(4), т.е. разности левой и правой частей уравнения (4):   2   2 k umn 2 k  2k u n  2 k   z 2 km h 2 k  R(umn )   (5) x k 2 2k !  t   2  2u a 2 2 2  u и волновое уравнение однородное,  1  a h2 t 2 x 2 2k n  2u n  2umn  2 k umn 2 k  um то из его записи для произвольного узла сетки 2m  a 2 следует ,  a t x 2 t 2 k x 2 k тогда в формуле(5) 2k n 2k 2k 2k n   2 k umn 2 k  2 k umn 2 k 2 k  um   a 2 k  um     z h  h  z  h z k  z  0 . Другими словами, 2k 2k 2k  2k 2k  t x x  h x  Замечание1. Если параметр z    для параметра z  1 однородное одномерное волновое уравнение имеет бесконечный порядок аппроксимации! В этом случае разностная схема(3) с f m, n  0, z  1 точна для многочленов произвольной степени, другими словами, равномерная норма погрешности аппроксимации первого уравнения задачи(1) первым уравнением разностной задачи(2) не зависит от шага сетки h (аппроксимация происходит с двойной точностью даже для крупного шага сетки). Для упрощения формулы(5) докажем Утверждение 1. Для неоднородного одномерного волнового уравнения 2 n  2umn 2  um  a  f m, n справедлива формула t 2 x 2 2 ( p 1) p 1 2p n f m, n  2 pumn 2 p  um 2l   a  a , p2 (6)  2p 2p 2l 2 ( p  l 1) t x x t l 0 Доказательство. Проведём по индукции. Для базы индукции имеем p  2 : 2 2 2 n 4 n  2 f m, n    2 f m, n  4umn  2  2  2umn 2   2  um 4  um 2  f m, n      a  f  a a  f   a  a  m, n  m, n  t 4 t 2  x 2 x 2  x 2 t 2 x 4 x 2 t 2   что верно – получаем формулу (6) для p  2 . 153 Пусть справедлива также формула 2 ( p 2 ) 2 ( p 1) n f m ,n  2( p1)umn u m p 2 2 l  2 ( p 1)   a  a , тогда  2 ( p 1) 2 ( p 1) 2l 2 ( p l 2 ) t x x t l 0 2 ( p 2 ) 2 ( p 1) 2 ( p1) f m ,n  f m ,n  2 pumn  2  2( p1)  2( p1)umn p2 2l   2umn p2 2l  2 ( p 1)    a  a  a  a    2p 2  2 ( p 1) 2l 2 ( p l 2 )  2 ( p 1) 2 2l 2 ( p l 1) t t  x x t x t x t l 0 l 0   a 2( p1) a2 p 2 ( p 1) 2p n f m,n p2 2l  2( p1) f m,n  p2 2l  2( p1) f m,n  2( p1)  2  2umn 2 p  um 2 ( p 1)    a  f  a  a  a  a  m ,n   2l 2 ( p l 1) x 2( p1)  x 2 x 2 p x 2( p1) x 2l t 2( pl 1) l 0  l 0 x t 2 ( p 1) f m, n  2 pumn p 1 2l   a  2p 2l 2 ( p  l 1) , x x t l 0 т.е. формула(6)(утверждение 1) доказана для произвольного p  2 . Используя формулу(6), преобразуем невязку разностного уравнения(3), подставив её в формулу(5):   2  2 k  2 k  2 k umn k 1 2l  2( k 1) f m,n   2 k umn 2 k   2k u n 2   2 k umn 2 k   z 2k h   2 k   z 2 km h 2 k      a  a  x x 2 k l 0 x 2l t 2( k l 1)  x k 2 2k !  t  k 2 2k !     R(umn )   2 ( k 1) 2 ( k 1) f m ,n   2  2 k k f m,n   z1  2 k umn 2k k 1 2l  2  2k   2k a 2k   2k umn 2k k 1 2l      2k  z  2k    a h  h z  z   a   2 l 2 ( k  l  1 ) 2 k 2 l 2 ( k l 1)    k 2 2k !  x t  x  x  t k 2 2k !  l 0 l   h  x            Выпишем несколько первых слагаемых для невязки R(umn ) из формулы(7):  z 1  2 ( k 1) f m ,n 2  2 k k 1 2l   a   2 l 2 (  x t k l 1) k 2 2k !  l 0  R(umn )  (7) 2 2 4 4  4 f m, n  2 4  2  f m, n  f m, n  2 6  4  f m, n 2  f m, n a      a  a  4!  x 2 t 2  6!  x 4 x 2t 2 t 4   6 6 6  6 f m, n  2 8  6  f m, n 4  f m, n 2  f m, n a   a  a  8!  x 6 x 4t 2 x 2t 4 t 6   8 8 8 8 8 f m, n  2 10  8  f m, n 6  f m, n 4  f m, n 2  f m, n a   a  a  a  10!  x8 x 6t 2 x 4t 4 x 2t 6 t 8   10 10 10 10 10 10 f m, n  2 12  10  f m, n 8  f m, n 6  f m, n 4  f m, n 2  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  (8) Определение 1. Одномерное уравнение в частных производных 2 f 2 f (9) a 2 2  2  0, a 2  0 x t 2 f 2 f по аналогии с волновым уравнением 2  a 2 2  0, a 2  0 t x Назовём волновым уравнением комплексного аргумента. Рассмотрим свойства решений(9). Утверждение 2(свойства волнового уравнения комплексного аргумента). 1) Уравнения являются уравнениями xi  at  C1  const , xi  at  C2  const характеристик для(9). Действительно 154 f  f a i 0   f       x t 2  f a   0   a  i  a  i  f  0    x 2 t 2  x t  x t  a f  i f  0 t  x  dx dt a  i  xi  at  C1  x  iat  iC1  C1    xi  at  C2  x  iat  iC 2  C2  dx  dt  a  i 2)Решением волнового уравнения комплексного аргумента является линейная комбинация произвольных дважды дифференцируемых функций на комплексных характеристиках (10) f ( x, t )  C1u( x  iat )  C2v( x  iat ), u(), v()  C 2 Z  : 2 2 2 f 2 f  2  a 2 C1u '' ( x  iat )  C2v '' ( x  iat )   (ia )2 C1u '' ( x  iat )  (ia ) 2 C2v '' ( x  iat )  0 2 x t 3)Пусть функция f x  iat   f1 x, t   if 2 x, t  комплексного аргумента ( x  iat ) - решение уравнения(9), тогда функции действительного аргумента f1 ( x, t ), f 2 ( x, t ) , т.е. действительная и мнимая части f x  iat  также являются решениями уравнения (9). Действительно, имеем: a2 2  2 f x  iat   2 f x  iat   2  f1 ( x, t )  if 2 ( x, t )  2   f1 ( x, t )  if 2 ( x, t )     a  0 x 2 t 2 x 2 t 2  2  2 f1 ( x, t )  2 f1 ( x, t ) a  0 2   2  f1 ( x, t )  if 2 ( x, t )   x 2 t 2 2   f1 ( x, t )  if 2 ( x, t )  a   0  i *0   2 2 x 2 t 2 a 2  f 2 ( x, t )   f 2 ( x, t )  0  x 2 t 2  То есть показано, что функции f1 ( x, t ), f 2 ( x, t ) - решения уравнения(9). Последняя система уравнений следует из определения равенства двух комплексных чисел. Утверждение 2 доказано. Приведём функции из класса решений волнового уравнения комплексного аргумента, используя Утверждение 2. Пример 1. f1 ( x, t )  Re ( x  iat ) 2  x 2  a 2t 2 . Действительно, a2  2 x 2  a 2t 2   2 x 2  a 2t 2    2 a 2  2a 2  0 x 2 t 2 Пример 2. f 2 ( x, t )  Im ( x  iat ) 4  4 x3at  4 xa 3t . Действительно, a2  2 4 x3at  4 xa 3t 3   2 4 x3at  4 xa 3t 3  a   24a3 xt  24a3 xt  0 2 2 x t Пример3. f3 ( x, t )  Im exp ( x  iat )  exp x sinat  . Действительно, 2  2 exp x sinat   2 exp x sinat    a 2  a 2 exp x sinat   0 x 2 t 2 Замечание 2. Если правая часть f ( x, t ) неоднородного волнового уравнения действительного аргумента задачи(1) удовлетворяет однородному волновому уравнению мнимого аргумента, то порядок невязки разностной схемы задачи(2) увеличивается со второго порядка до четвёртого. Более того, невязку в этом случае удаётся выразить через частные производные по одной независимой переменной x . Нужно учесть, что невязка уравнения (3) на 2 порядка больше невязки уравнения(2). Действительно, из формулы(8) получим a2 155 4 2  2  2 f m, n  2 f m, n   2 6   f m, n 2  a   R(u )  a  6!  t 4 x 2  x 2 t 2   n m  2 2 2 2 2 8   4  2  f m,n  f m,n  4  4  2  f m,n  f m,n   a   a a   8!  t 4  x 2 t 2  x 4  x 2 t 2   8 2 2 2 2 2 10   f m,n  6  2  f m,n  f m,n  6  6  2  f m,n  f m,n   2  a a  a a   ...  10!  t 8 x 2t 4  x 2 t 2  x 6  x 2 t 2   4 8 4k  2 6  f m, n 2 10  f m, n  4 k  2  f m, n    ...  2 (11) 4k 6! t 4 10! t 8 k 1 4k  2 ! t Кроме аппроксимации важен вопрос об устойчивости разностного уравнения (3), так как неустойчивая схема накапливает ошибку округления по геометрической прогрессии, что ведёт к неограниченному численному решению. В то время как устойчивая схема суммирует ошибки округления по арифметической прогрессии и норма невязки пропорциональна количеству элементарных операций. Проверим разностное уравнение n (3) на спектральную устойчивость. Учтём, что численное решение u m ( x, t ) удовлетворяет также уравнению(3) как и проекция аналитического решения на узлы сетки u( x, t )nm  umn ,  mn  u m  umn n1 n n1 n  n1 n1 n  u m  u m  2u m  z u m  u m  2u m  f m,n 2 . Вычитая из последнего уравнения уравнение (3) получим однородное уравнение относительно невязок в каждом внутреннем узле сетки(m,n)  mn 1   mn 1  2 mn  z mn 1   mn 1  2 mn  Подставляя в последнее уравнение ошибку округления вида  mn  n ( )eim , получим спектральное уравнение         1/   2  z ei  ei  2  4 zsin2    2  21  2 zsin2     1  0 (12) 2  2     umn  0   ( )  1   [0,2 ] (определение спектральной устойчивости[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 zsin2     1  2 zsin2     1 зависит от  .  2   2    Следовательно, имеем пару комплексно сопряжённых корней 2         1, 2  1  2 zsin2     i 1  1  2 zsin2    ,  2   2    2 2         1, 2  1  2 zsin2     1  1  2 zsin2     1   [0,2 ] ,  2   2    выясним условия, при которых дискриминант отрицательный 2 2           1  2 zsin2     1  0  1  4 zsin2    4 z 2 sin 4    1  4sin 2   z z  1  0   2  2 2 2  z  (0,1], z  0,  [0,2 ] , то есть с параметром z  1 разностное уравнение(3) является спектрально устойчивым. 156 Тестовый пример 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  Сведём исходную задачу к 3 u1 ( x, t ), u2 ( x, t ), u3 ( x, t ) : простым u( x, t )  u1 ( x, t )  u2 ( x, t )  u3 ( x, t ) , где u1tt  u1xx  sin( x) sin(t ), x  (0,  ), t  0 u2tt  u2 xx , x  (0,  ), t  0   (a) u2 ( x,0)  sin( x), u2t ( x,0)  0, x  [0,  ] (b) u1 ( x,0)  0, u1t ( x,0)  0, x  [0,  ] u (0, t )  u ( , t )  0, t  0 u (0, t )  u ( , t )  0, t  0 1 2  1  2 u3tt  u3 xx , x  (0,  ), t  0  u3 ( x,0)  0, u3t ( x,0)  sin(2 x), x  [0,  ] (с) u (0, t )  u ( , t )  0, t  0 3  3 Выбираем решение задачи (a) в виде u1 ( x, t )  f1 (t )sin( x) , удовлетворяющее граничным условиям u1 (0, t )  u1 ( , t )  0 , подставляя в первое уравнение системы, получим: ''   f1  f1  sint  '   f1 (0)  f1 (0)  0 общее решение однородного уравнения есть f1oo (t )  Asint  B cos t . Частное решение неоднородного уравнения ищем в виде f1ч (t )  (a  bt )cost , f '1ч  bcost  (a  bt )sint , f ''1ч  2bsint  (a  bt )cost подставляем значения f1ч (t ), f ''1ч в первое уравнение системы:  2bsint  sint  b  1/ 2, a  0, f1 (t )  f1oo (t )  f1ч (t )  Asint  B cost   tcost ' , f1 (0)  f1 (0)  0 2 sint  tcost  , u ( x, t )  f (t )sin( x)  sint  tcost sin( x) B  0, A  1/ 2  0, f1 (t )  1 1 2 2 Решение задачи(b) ищем в виде u2 ( x, t )  f 2 (t )sinx  ,которое подставим в уравнения системы(b) ''   f2  f2  0  '   f 2 (0)  1, f 2 (0)  0 f 2 (t )  A1sint  B1cost , f 2 (0)  1  B1  1, f ' 2 (0)  0  A1  0 Получим u2 ( x, t )  f 2 (t )sinx  costsinx Решение задачи(c) ищем в виде u3 ( x, t )  f3 (t )sin2 x  ,которое подставим в уравнения системы(c) ''   f3  4 f3  0  '   f3 (0)  0, f3 (0)  1 f3 (t )  A2 sin2t   B2cos2t , f3 (0)  0  B2  0, f '3 (0)  1  2 A2  1 sin2t sin2 x  u3 ( x, t )  f 3 (t ) sinx   . Решение исходного примера есть 2 sint   tcos t sin( x)  cost  sinx   sin2t sin2 x  u ( x, t )  u1 ( x, t )  u2 ( x, t )  u3 ( x, t )  2 2 157 Инициализация задачи Инициализацией задачи назовём определение второго временного слоя решения по начальным данным задачи, т.е. определения функции 1 ( x) в задаче (2). u ( x,0)   u (mh, )  1 (mh), m  [0, M ],1 ( x)  F  ( x)  u ( x,0), ( x)  . t   Аппроксимируем первую производную решения в начальный момент времени (x) . Рассмотрим два случая инициализации разностной задачи(2): 1)в задаче (2) первое уравнение однородное  ( x)  0, ( x)  0 ,2) в задаче (2) первое уравнение неоднородное  ( x)  0, ( x)  0 . В этих двух случаях инициализация задачи существенно отличается. Построим квадратурную формулу для функции (x) , связывающую узловые значения функции в одном узле в трёх временных слоях, с момента времени t  0 точную для многочленов максимальной степени 1 1 u (0)  C0u (0)  C1u ( )  C2u (2 ), u (t )  1 : u (0)  0  C0  C1  C2   u (t )  t : u (0)  1   1  0C0  C1  2C2 , u(t )  t 2 : u (0)  0  1 02 C0   2C1  2 2 C2   Решаем систему линейных уравнений C0  C1  C2  0 C0  3 / 2 1 3 1    u (0)    u 0  2u1  u 2  откуда  C1  2 C1  C2 2  1  2 2  C  C 4  0 C  1 / 2 2  1  2 (13) u(2 )  u 2  3u 0  4u1  2u Формула(13) имеет третий алгебраический порядок погрешности, т.е. погрешность имеет вид O 3  Получим аналогичную формулу, связывающую четыре временных слоя: 1 1 u (0)  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 Решаем систему линейных уравнений:  C0  C1  C2  С3  0 C0  11 / 6 C  2C  3С  1 C  3 1  11 3 1   1  2 3  1 u (0)    u 0  3u1  u 2  u 3    6 2 3  C1  4C2  9С3  0 C2  3 / 2 C1  8C2  27С3  0 C3  1 / 3   11 0 9 u  9u1  u 2  3u (14) 2 2 Формула(14) имеет четвёртый порядок погрешности, т.е. погрешность имеет вид 4 O  . В первой задаче инициализации c использованием формул (3),(13) f m, n  0 для трёх временных слоёв имеем: umn 1  umn 1  2umn  z umn 1  umn 1  2umn  f m, n 2  um2  um0  21  z u1m  z u1m 1  u1m 1  откуда u (3 )  u 3       3um0  4u1m  2u  zu1m 1  21  z u1m  zu1m 1  2um0  2u , m  1, M  1 (15) Система линейных уравнений(15) представляет трёхдиагональную матрицу с коэффициентами Am  z , Cm  21  z , Bm  z , Fm  2um0  2u относительно неизвестных 158 u1m 1 , u1m , u1m 1 . Решить систему уравнений (15) можно методом прогонки, например, с помощью формул [7,стр.68] прогонки вперёд Bm A   Fm m  ,  m  m m 1 , m  1, M  1, 0  0, 0  u01 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]. Поскольку формула(13) точна для всех многочленов второй степени, т.е. имеет погрешность Oh3 с третьим алгебраическим порядком, то и погрешность решения системы уравнений(16) также Oh3 , т.е. формулу(15) можно считать начальным этапом инициализации задачи. Используя формулы (3),(14) f m, n  0 , построим второй этап инициализации задачи(2)     umn 1  umn 1  2umn  z umn 1  umn 1  2umn  f m, n 2  um3  u1m  21  z um2  z um2 1  um2 1     11 0 9 11  5  um  9u1m  um2  3um0   8u1m     2 z um2  z um2 1  um2 1  um0  3um0   2 2 2  2      5  8u1m     2 z   u m0  21  z u1m  z u1m 1  u1m 1   2        z  um0 1  21  z u1m 1  z u1m  2  u1m  um0 1  21  z u1m 1  z u1m  u1m  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    2 z um0  3um0   zum0 1  zum0 1   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)um0  zum0 1  zum0 1  3um0  2  2  (17) Для оптимального параметра z  1 формула(17) перейдёт в формулу 9 9 u1m2  u1m1  10u1m  u1m1  u1m2  um0  um0 1  um0 1  3um0  2 2 (18) Отметим, что трёхдиагональная матрица(15) и пятидиагональная матрица(18) систем линейных уравнений в данном случае используется для аппроксимации второго временного слоя, а не для решения основной задачи, как в работах[7,8]. Линейная система уравнений(19) имеет пятидиагональную матрицу прогонки относительно неизвестных u1m2 , u1m1 , u1m , u1m1, u1m2 , обозначим её коэффициенты 9 9 Am1  1, Am 2   , Cm  10, Bm1   , Bm 2  1, Fm  um0 1  um0  um0 1  3um0  2 2 Для решения системы уравнений(18) используем формулы прогонки [7,стр.70]: 159 1m  B1m  A2 m2 m 1  A1m1m  22 m 1 B2 m , 2 m  Cm  A1m1m  21m 1  A1m2 m  2  A2 m1m 1 Cm  A1m1m  21m 1  A1m2 m  2  A2 m1m 1 m  A1m1m  2 m 1  A1m m  2  A2 m m 1  Fm , m  2, M  2 Cm  A1m1m  21m 1  A1m2 m  2  A2 m1m 1 (формулы прогонки вперёд) u1m  1mu1m 1  2mu1m  2   m , m  M  2,2 (19) u01  10u11  20u12   0 , u11  11u12  21u31  1, u1M  2  1M  2u1M 1  2 M  2u1M   M  2 (формулы прогонки назад). Из последней формулы видно, что u01 ,u11 принимают фиксированные значения (краевое условие Дирихле - краевые значения u , u , u1M 1, u1M заданы) при любых соседних 1 1 1 узловых значениях, если положить  0  u01 , 10  20  0,1  u11, 11  21  0 . Коэффициенты последней системы уравнений не имеют даже нестрогого (абсолютного) диагонального преобладания, так как 9   Cm  10  Am1  Am 2  Bm1  Bm 2  21    11 . Однако, недиагональные элементы  2 матрицы Am1, Am 2 , Bm1, Bm 2 являются знакопеременными и удовлетворяют требованию условного диагонального преобладания: Cm  10  Am1  Am 2  Bm1  Bm 2  21  9 7 2 Определение 2. Говорят, что квадратная матрица коэффициентов ai , j имеет условное диагональное преобладание, если для любой её строки ai ,i  n a j 1, j  i i, j , i  1, n . Оказывается, что для корректности формул прогонки вперёд(19) при решении системы уравнений(18) достаточно выполнить условие более слабое, чем абсолютное диагональное преобладание элементов матрицы ai ,i  n a j 1, j  i i, j  Cm  2 A2 m  A1m    10  2  9 / 2  1  11 , но более сильное, чем условное диагональное преобладание элементов матрицы (для коэффициентов левой части уравнения (18)) ai ,i  n a j 1, j  i i, j  Cm  2 A2 m  A1m    10  2  9 / 2  1  7 ,а именно Cm  2 A2 m  A1m . Утверждение 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 160 2)удовлетворяет условию (условию подчинения коэффициентов): Cm  2 A2m  A1m  Cm  2 A2m  A1m , A2 m  2 A1m . Тогда в краевой задаче Дирихле:  0  u01 , 10  20  0, 1  u11 , 11  21  0 1) 0  1m  1,  1 / 2  2m  0, m  0, n  2 2) формулы прогонки вперёд(19) для коэффициентов 1m , 2 m , m корректны. Доказательство утверждения 3 проведём по индукции. 1)для базы индукции m=2 имеем: 12  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 22  A A12 A12 B22 A 2 1  12  0, 12     C2  A121011  A1220  A2211 C2 C2 2 A22  A12 5 / 2 A12 5 2 A  A  sign(12 )  sign 22   1, sign(22 )  sign 12   1 .База индукции проверена. Пусть верно  C2   C2  A  A  1 1k  1, 2 k  , sign(1k )  sign 2 k   1, sign(2 k )  sign 1k   1, k  2, m  1 2  Ck   Ck  Тогда 1m  B1m  A2 m2 m 1  A1m1m  22 m 1 A2 m  A2 m2 m 1  A1m1m  22 m 1  Cm  A1m1m  21m 1  A1m2 m  2  A2 m1m 1 Cm  A1m1m  21m 1  A1m2 m  2  A2 m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 A2 m  A1m / 2 A  A1m / 2 A2m 1  2m1   A1m1m22m1  1m    2m 1 Cm  A1m / 2 Cm  A1m1m21m1  A1m2m2  A2m1m1 Cm  A1m / 2  A2 m A2m  A1m / 2 2 m  B2 m A1m A1m 2 1     Cm  A1m1m  21m 1  A1m2 n  2  A2 m1m 1 A2 m  A1m / 2 5 / 2 A1m 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) Ввиду доказанной части 1) имеем 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 161 Поэтому знаменатель во всех трёх формулах прогонки (20) 1m , 2 m , m строго меньше нуля, т.е. в ноль не обращается, а формулы прогонки корректны. Утверждение 3 доказано. Замечание 3. В работе[4] показано, что достаточными условиями корректности формул прогонки симметричной пятидиагональной матрицы является полуторное абсолютное диагональное преобладание её элементов. В данном случае утверждение 3 указывает достаточные условия корректности прогонки той же матрицы, но более слабые, чем даже абсолютное диагональное преобладание её элементов. Рассмотрим равномерную норму погрешности процесса инициализации, т.е. 1 разности численного решения u m , полученного по формулам(13),(15),(16) и точного решения первой части тестового примера 1 (для однородного уравнения) u1m  cos sinhm  1 sin2 sin2hm , m  0, M ,  m  u m  u1m 2 1 Норма Чебышева определяется формулой   max  m  max u m  u1m , программа m 1, M m 1, M возвращает норму погрешности norma C= 5.174140550234796E-006 при M  200 и norma C= 6.465012549750071E-007при M  400 , тогда 200 5.174140550234796E - 006   8.003  23 алгебраический 400 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 8.299974534053955E - 008   16.04  24 . То есть алгебраический порядок 400 5.173976233563415E - 009 погрешности алгоритма(13),(15),(16) и (14),(18),(19) равен p  4 ,что подтверждает 4 приближение формулы(14) O  . Построим явную разностную схему для решения однородного уравнения, учитывая (3) для параметра z  1   umn 1  2umn  z umn 1  umn 1  2umn  umn 1  umn 1  umn 1  umn 1, n  2, N , m  1, M  1 (20) Отметим, что формула(20) имеет бесконечный порядок аппроксимации, т.е. не вносит дополнительной погрешности аппроксимации дифференциального уравнения разностным уравнением. Программа с учётом алгоритма инициализации по формулам (13),(15),(16), а затем по формулам (14),(18),(19), явной формуле(201) для первой части задачи (однородного уравнения) тестового примера 1 u1tt  u1xx , x  (0,  ), t  0  u1 ( x,0)  sin( x), u1t ( x,0)  sin(2 x), x  [0,  ] u (0, t )  u ( , t )  0, t  0 1  1 162 sin2t sin2 x  , x  [0,  ], t  3  9.42477796 2 возвращает равномерную норму относительной погрешности 7.214666558239686E-016 при M  50 и норму 5.275261571720079E-015 при M  100 t= 9.42477796076938. Это означает что, во – первых, норма погрешности по формуле(20) не зависит от шага сетки при z  1 , во – вторых, с увеличением вычислений при меньшем шаге накапливается только большая арифметическая погрешность. В программе предусмотрен масштабный параметр ll  10 (в приведенном примере). Данный параметр позволяет экономить время счёта в ll 2  100 раз, а, главное, число арифметических операций в ll 2  100 и обогнать волну арифметической погрешности[3]! с решением u1 ( x,0)  cost sinx  точным Сначала инициализация проводится с шагом  по времени по формулам (13),(15),(16), а затем по формулам (14),(18),(19), далее по явной формуле(20) с минимальными шагами сетки h,  решается волновое уравнение u1nm1  u1nm 1  u1nm 1  u1nm1, n  2, ll , m  1, M  1 во временном промежутке 0, ll *  n  0, ll . Среди решения в слое u1 (mh, ll * ), m  0, M и среди начального слоя u1 (mh,0), m  0, M выбираются узлы более редкой сетки xm1  h * ll * m1, m1  0, M / ll , tn1   * ll * n1, n1  0,1 , и решение на редкой сетке u1 (m1* h * ll ,0), u1 (m1* h * ll , ll * ), m1  0, M / ll . Далее используется формула(20) с крупным вектором шага ll * h, ll * ,1  z   2a2 / h2    h / a u1nm111  u1nm111  u1nm111  u1nm111, n1  2, N / ll , m1  1, M / ll  1 . (21) Рассмотрим вторую задачу инициализации c использованием условий на 3 временных слоях  ( 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 sint  tcost sin( x)  , u 2 ( x, t )  u2 ( x,0)  0, u2t ( x,0)  0, x  [0,  ] 2 u (0, t )  u ( , t )  0, t  0 2  2 формула(13) перейдёт в u (2 )  u 2  3u 0  4u1  2u  4u1 , с учётом(3) получим     umn1  umn1  21  z umn  z umn 1  umn 1  f m,n 2 , um2  um0  21  z u1m  z u1m1  u1m1  f m,1 2  4u1m  zu  21  z u  zu   f m,1  u   f m,1 В трёхдиагональной матрице системы уравнений (22) коэффициенты Am  z, Cm  21  z , Bm  z, Fm  um0  f m,1 2 1 m 1 1 m 1 m 1 2 m 2 (22) обеспечивают условие корректной прогонки вперёд, Cm  Am  Bm  0  21  z   2 z  0 [3]. Программа с использованием метода прогонки для алгоритма инициализации (23) sin    cos  sin( x) даёт равномерную норму относительно точного решения u2 ( x, )  2 погрешности norma C= 1.291625408111898E-006 при M  200 и norma C=1.614815612291833E-007 при M  400 откуда 200 1.291625408111898E - 006   7.9986  23 алгебраический порядок погрешности 400 1.614815612291833E - 007 p  3. Рассмотрим вторую задачу инициализации на 4 временных слоях , с учётом формул(14),(3) получим 163 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 um  um  21  z um  z um1  um1  f m,n  um  um  21  z um2  z um2 1  um2 1  f m,2 2  u (3 )  u 3        9 5   9u1m  um2  8u1m    2 z um2  z um2 1  um2 1   f m, 2 2  2 2      5  8u1m    2 z   um0  21  z u1m  z u1m 1  u1m 1  f m,1 2  2   z  um1  21  z u1m1  z u1m2  u1m  f m1,1 2  um0 1  21  z u1m1  z u1m  u1m2  f m1,1 2   f m,2 2          1  1  5  z 2u1m2   z  4 z 2 u1m1  u1m 3  z  6 z 2   z  4 z 2 u1m1  z 2u1m2   f m,2    2 z  f m,1  z  f m1,1  f m1,1  2 2  2  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, Am 2 , Cm , Bm1, Bm 2 9 9 9   Am1  1, Am 2   , Cm  10, Bm1   , Bm 2  1, Fm   f m, 2  f m,1  f m 1,1  f m 1,1  2 2 2 2   совпадают с коэффициентами матрицы системы(18) за исключением Fm . Однако корректность формул прогонки для пятидиагональной матрицы(18)доказана с помощью утверждения3, которая определяется только коэффициентами Am1, Am 2 , Cm , Bm1, Bm2 , следовательно, корректность формул прогонки для системы уравнений (24) также доказана. Программа с использованием формул(16),(22), а затем(19),(24) в двухэтапном sin    cos  sin( x) алгоритме инициализации относительно точного решения u2 ( x, )  2 возвращает равномерную норму погрешности norma C= 2.028797013322345E-008 при M  200 , а norma C= 1.268260177248376E-009 при M  400 , откуда 200 2.028797013322345E - 008   15.997  24  16 .т.е. 400 1.268260177248376E - 009 алгебраический порядок погрешности для алгоритма инициализации методом прогонки по формулам(16),(22), а затем(19),(24) равен четырём p  4 . Наконец, нужно написать основную рекуррентную разностную формулу для решения неоднородного уравнения с нулевыми начальными условиями. Для параметра z  1 имеем из(3)   umn1  umn1  21  z umn  z umn 1  umn 1  f m,n 2  umn1  umn 1  umn 1  f m,n 2  R(umn ) (25) В формуле (25)невязку аппроксимации неоднородного волнового уравнения(1) разностным уравнением(2) запишем согласно формуле(8) для z  1 n  2, N , m  1, M  1 u n1 m u n m1 u n m1 u n1 m 2 2 4 4  4 f m ,n  2 4  2  f m,n  f m,n  2 6  4  f m,n 2  f m ,n   f m,n  a   a a 2 2  4!  x 2 t 2  6!  x 4 x t t 4  2 164  6 6 6  6 f m ,n 2 8  6  f m,n 4  f m ,n 2  f m,n a  a  a  8!  x 6 x 4 t 2 x 2 t 4 t 6     8 8 8  f  f  f 8 f m, n    a 6 6 m, n2  a 4 4 m, n4  a 2 2 m, n6  x t x t x t t 8   8 2 10  8  f m, n a 10!  x8  10 10 10 10 10 10 f m, n  2 12  10  f m, n 8  f m, n 6  f m, n 4  f m, n 2  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  (26) Для примера1 f ( x, t )  sin(x)sin(t), a  1 согласно формуле(26) получим явную разностную схему   2 2 4 3 6 4 8 5 10 6 12  umn 1  umn 1  umn 1  umn 1  2 f m, n        ... 4! 6! 8! 10! 12!  2!  Поскольку 1  cos ( )  2 2!  4 4!  6 6!  ...  2 4 6 8 10 12  d 1  cos ( )    2  3  4  5  6  ... 2 d 2! 4! 6! 8! 10! 12! То umn 1  umn 1  umn 1  umn 1  sin  f m, n  umn 1  umn 1  umn 1  sin sin(mh)sin(n ) (27) n  2, N , m  1, M  1 В формуле(27) для бесконечного функционального ряда получена производящая функция sin  f m, n . Аналогично(21) можно провести укрупнение шага в неоднородном уравнении. Сначала инициализация проводится с шагом  по времени по формулам (16),(22), а затем по формулам (19),(24), далее по явной формуле(26) с минимальными шагами сетки h,  решается волновое уравнение u2nm1  u2nm 1  u2nm 1  u2nm1  sin sin(mh)sin(n ), n  2, ll , m  1, M  1 во временном промежутке 0, ll *  n  0, ll . Среди решения в слое u2 (mh, ll * ), m  0, M и среди начального слоя u2 (mh,0)  0, m  0, M выбираются узлы более редкой сетки xm1  h * ll * m1, m1  0, M / ll , t n1   * ll * n1, n1  0,1 , и решение на редкой сетке u2 (m1* h * ll ,0)  0, u2 (m1* h * ll , ll * ), m1  0, M / ll Далее используется формула(27) с крупным шагом ll * h, ll * ,1  z   2a 2 / h2    h / a u2nm111  u2nm1 11  u2nm1 11  u2nm111    ll  sin  ll sin(m1 h  ll )sin(n1  ll ), n1  2, N / ll , m1  1, M / ll  1 (28) Программа с учётом алгоритма укрупнения шага для тестового примера 1 u2tt  u2 xx  sin( x) sin(t ), x  (0,  ), t  0 sint  tcost sin( x)  , u 2 ( x, t )  u2 ( x,0)  0, u2t ( x,0)  0, x  [0,  ] 2 u (0, t )  u ( , t )  0, t  0 2  2 с точным решением u2 ( x, t )  sint  tcost sin( x) , x  [0, ], t  3  9.42477796 возвращает 2 равномерную норму относительной погрешности norma C= 3.769546289141946E-015 при M  100, ll  10 , t= 9.42477796076938, для суммы решений 165 u ( x, t )  sint  tcost sin( x)  cost sinx  sin2t sin2 x  программа возвращает равномерную 2 2 норму относительной погрешности norma C= 7.578604648156152E-016. Поэтому мы можем сказать, что приведенные нами алгоритмы численного решения волнового неоднородного уравнения не отрезке имеют двойную точность относительной погрешности( ~ 1e  16 ). Таблица 1. (x – координата узла, точное – exact, численное – numerical решения для примера1) x exact numerical 0.000000000000000E+000 0.000000000000000E+000 0.000000000000000E+000 0.314159265358979 1.14719128466915 1.14719128466915 0.628318530717959 2.18208749344321 2.18208749344321 0.942477796076938 3.00338577486150 3.00338577486150 1.25663706143592 3.53069173081718 3.53069173081718 1.57079632679490 3.71238898038469 3.71238898038469 1.88495559215388 3.53069173081718 3.53069173081718 2.19911485751286 3.00338577486150 3.00338577486150 2.51327412287183 2.18208749344321 2.18208749344321 2.82743338823081 1.14719128466915 1.14719128466915 3.14159265358979 4.546215133239269E-016 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; 166 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 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 167 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)=0d0 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) 168 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;pause 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*,"norma C=",mm*dfloat(ll)/s,s/dfloat(ll);end program wave Конец программы. Тестовый пример 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 )  cost sinx  sin2t sin2 x   sinxt  sint  2 Применяя формулу(27) для неоднородной части f ( x, t )  sin( x)t , a  1 , получим   2  4  6  8  10  12  umn 1  umn 1  umn 1  umn 1  2 f m, n        ...   2! 4! 6! 8! 10! 12!   umn 1  umn 1  umn1  21  cos  f m,n  umn 1  umn 1  umn1  21  cos sin(mh)(n ), m  1, M  1, n  1, N  1 В данном случае мы использовали другую производящую функцию 21  cos   f m, n . Повторяя вычислительные алгоритмы для примера 1 получим, что программа при M  100, ll  10 , t= 9.42477796076938 для примера 2 возвращает для суммы решений sin2t sin2 x  u( x, t )  cost sinx   sinxt  sint  равномерную норму относительной 2 погрешности 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,т.е. не хуже, чем с помощью производящей функции. Очевидно, применение производящих функции экономнее для решения волнового уравнения в двухмерном и трёхмерном случаях. Таблица 2. (x – координата узла, точное – exact, численное - numerical решения для примера 2) x exact numerical 0.000000000000000E+000 0.000000000000000E+000 0.000000000000000E+000 170 0.314159265358979 2.60339956371325 2.60339956371325 0.628318530717959 4.95196023917890 4.95196023917890 0.942477796076938 6.81578854409794 6.81578854409794 1.25663706143592 8.01243997792951 8.01243997792951 1.57079632679490 8.42477796076938 8.42477796076938 1.88495559215388 8.01243997792951 8.01243997792951 2.19911485751286 6.81578854409794 6.81578854409794 2.51327412287183 4.95196023917890 4.95196023917889 2.82743338823081 2.60339956371325 2.60339956371325 3.14159265358979 1.031703662030091E-015 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  Точным решением последнего примера является функция sin2t sin2 x  sinx cht   cos t  u ( x, t )  cos t  sinx    , отметим, что неоднородная часть 2 2 уравнения f ( x, t )  sin( x)cht , a  1 удовлетворяет однородному волновому уравнению(9) комплексного аргумента a 2 2 f 2 f   0, a 2  0 . В этом случае согласно формуле(11) x 2 t 2 запишем невязку u n 1 m  u n m 1 u n m 1 u n 1 m   f m, n  2 2 k 1 4k  4 k  2  f m, n 4k  2! t 4k  umn 1  umn 1  umn 1  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    ...  u  u  u  2 f     ...  m1 m1 m m ,n  4 8 12  6! t 10! t 14! t  2! 6! 10! 14!  umn 1  umn 1  umn 1  f m, n ch( )  cos ( ) , так как ch( )  cos ( )     1  e  e  cos ( )  2   1  e  e  cos ( )  2   2 4 2 2 4  2k  2k  2 1    ...      ...  1    ...  (1)k 2k !   2! 4! 2k !  2 2! 4!   6  10  14   2 4 k  2    ...   ... . 2  4k !   6! 10! 14! Для точного решения u ( x, t )  cost sinx  sin2t sin2 x  sinx cht   cos t  s 2 2 программа в примере 3 для M  100, ll  10 , t= 9.42477796076938 возвращает норму относительной погрешности norma C= 2.557857845110683E-015. Производящая функция равна f m,n ch( )  cos ( ) . 171 Таблица 3.(x – координата узла, точное – exact, численное – numerical решения для примера 3) x exact numerical 0.000000000000000E+000 0.000000000000000E+000 0.000000000000000E+000 0.314159265358979 957.152937976024 957.152937976022 0.628318530717959 1820.61307750630 1820.61307750629 0.942477796076938 2505.85892405305 2505.85892405305 1.25663706143592 2945.81383976773 2945.81383976773 1.57079632679490 3097.41197215405 3097.41197215405 1.88495559215388 2945.81383976773 2945.81383976773 2.19911485751286 2505.85892405305 2505.85892405305 2.51327412287183 1820.61307750630 1820.61307750630 2.82743338823081 957.152937976024 957.152937976023 3.14159265358979 3.793110381505353E-013 0.000000000000000E+000 В работе получены результаты: 1) Показано, что явная разностная схема задачи(2) аппроксимирует одномерное однородное волновое уравнение на отрезке задачи(1) с оптимальным параметром сетки z  1 с бесконечным алгебраическим порядком аппроксимации, при этом явная разностная схема спектрально устойчива. 2) Для неоднородного волнового уравнения с параметром z  1 невязка разностной схемы может быть учтена и явно выражена только через двойную сумму от правой части неоднородного уравнения(7). 3) Введено понятие волнового уравнения комплексного аргумента и рассмотрены свойства его решения. Если правая часть неоднородного волнового уравнения является решением однородного волнового уравнения комплексного аргумента, то невязка упрощается с суммы по двум индексам до суммы по одному индексу(11), что качественно уменьшает число вычислений. 4) Построен алгоритм инициализации задачи, то есть аппроксимация второго временного слоя решения по известным начальным данным (начальным смещению и скорости точек отрезка). 5) Инициализация сводится к решению СЛАУ с симметричной 3-х диагональной матрицей с погрешностью аппроксимации O 3  затем к симметричной пяти диагональной матрице с погрешностью аппроксимации O 4  . Найдены ослабленные достаточные условия корректности формул прогонки для пятидиагональной матрицы (условия более слабые, чем диагональное преобладание элементов матрицы). 6) Предложен алгоритм огрубления узловой решётки в ll 2 раз, что сокращает число вычислений в 100 раз при сохранении вычислений с двойной точностью(15-16 первых десятичных знаков результата). 7) Программа тестировалась 3 построенными аналитическими примерами. Показано, что в примерах бесконечный функциональный ряд в разностной схеме относительно временного шага  можно заменить производящей функцией от  , что 172 качественно снижает время вычислений и их увеличивает точность. С помощью программы показано, что построенный алгоритм даёт решение 3 примеров с двойной точностью. В общем случае, производящую функцию нужно заменить формулой(26) (приближение O 14 ), дающую ту же относительную погрешность решения как и с помощью производящей функции, т.е. с двойной точностью. ЛИТЕРАТУРА 1) Практический курс по уравнениям математической физики: учебное пособие/В.П. Пикулин, С.И. Похожаев. – М.: Наука.1995. – 224 с. 2) Методы ускорения газодинамических расчетов на неконструированных сетках / К. Н. Волков [и др.]. – М.: Физматлит, 2013. – 536 с. 3) Самарский, А.А. Численные методы решения обратных задач математической физики : учеб. пособие / А.А. Самарский, П.Н. Вабищевич. – М.: Изд-во ЛКИ, 2014. – 480 с. 4) Численные методы в задачах и упражнениях: учебное пособие/Н.С. Бахвалов, А.В.Лапин, Е.В.Чижонков. – 2-е изд., перераб. и доп. – М.:БИНОМ. Лаборатория знаний,2010. – 240 с.: ил. 5) Введение в физику твёрдого тела: учебное руководство/ Ч.Киттель. – перевод с 4 изд. – М.: Наука.1978. 792 с. 6) Явление “сверхсходимости” в задаче Прандтля для уравнения Пуассона/ А.Н. Хомченко, Н.В. Колесникова// Моделирование объектов систем управления. – 2008. – С.15-18 7) Аппроксимация уравнения Пуассона на прямоугольнике повышенной точности/ Д.Ф.Пастухов, Ю.Ф.Пастухов // Вестник Полоцкого университета. Серия С, Фундаментальные науки. – 2017. – № 12. – С. 62–77. 8) Задача построения поля линий тока по температурному разрезу/ Ю.Ф.Пастухов, Д.Ф.Пастухов // Вестник Полоцкого университета. Серия С, Фундаментальные науки. – 2015. – № 4. – С. 27–36. OPTIMUM PARAMETER to APROXIMATIONS RAZNOSTNOY SCHEMES of the WAVE EQUATION ON LENGTH D. PASTUHOV, Y. PASTUHOV, 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. 173 Приложение 2 УДК 517.6: 517.958 К ВОПРОСУ О РЕДУКЦИИ НЕОДНОРОДНОЙ КРАЕВОЙ ЗАДАЧИ ДИРИХЛЕ ДЛЯ ВОЛНОВОГО УРАВНЕНИЯ НА ОТРЕЗКЕ Д.Ф. Пастухов, Ю.Ф. Пастухов (Полоцкий государственный университет), Н.К. Волосова (Московский государственный технический университет им. Н.Э. ) Баумана Предложен алгоритм решения общей начально-краевой задачи неоднородного волнового уравнения на отрезке с неоднородными краевыми условиями. Определено понятие краевой функции. Исходная задача с неоднородными краевыми условиями редуцируется к двум простым модифицированным задачам, т.е. к задаче с модифицированной правой частью и к задаче с модифицированными начальными условиями, но с однородными граничными условиями. Получено разложение невязки задачи в самом общем виде для оптимального параметра аппроксимации разностной схемы z=1. Формула невязки определяется производными четного порядка по времени и координате от правой части уравнения и производными чётного порядка по времени от краевой функции. Написана программа на основе алгоритма редукции, решены точно и численно три тестовых примера, показывающие, что неоднородные краевые условия Дирихле сохраняют все свойства задачи с однородными краевыми условиями при использовании модифицированных условий и краевой функции. Ключевые слова: краевая функция, модифицированные начальные условия и правая часть уравнения, неоднородно-краевая задача волнового уравнения на отрезке, согласование начальных и краевых условий. Введение Рассмотрим произвольную неоднородную начально-краевую задачу для волнового уравнения на отрезке с краевыми условиями Дирихле. Обычно задачи математической физики решают для однородных граничных условий, подразумевая, что возможна редукция задачи с неоднородными граничными условиями к задаче с однородными граничными условиями[1-4]. С другой стороны, отметим важность особенностей граничных условий в задачах математической физики, если границы имеют сложную геометрию или граничные функции принадлежат к более слабому классу функций, например, классу кусочно-непрерывных функций на отрезке. Неоднородная краевая задача эквивалентна модифицированной задаче с неоднородными начальными условиями и правой частью уравнения в случае кусочно непрерывных краевых функций можно использовать методы управляемых систем ОДУ[9,10]. Сотрудники семинара Возобновляемых источников энергии в МГУ, который проводил профессор В.В. Алексеев, д. ф. м. н., академик РАЕН, считали, что в задачах математической физики определяющую роль играют граничные условия. Данная статья, являясь продолжением работы[1] на случай неоднородных краевых условий на отрезке, численно решает волновое уравнение в самой общей постановке задачи. Отметим, что уравнения математической физики, использованные в данной работе и в работах[1,5] , решаемые предложенными в них алгоритмами с двойной точностью, открывают путь для применения уравнений математической физики в новой области математики - стеганографии (метод впервые предложен Н.К. Волосовой, сотрудником МГТУ им. Н.Э. Баумана)[6-8]. Уравнения математической физики, являясь следствием вариационных методов и методов решения ОДУ, могут использовать новые результаты, полученные в работах[11,12,13]. 174 Постановка задачи Рассмотрим начально-краевую задачу для неоднородного волнового уравнения на отрезке: 2   2u 2  u  t 2  a x 2  f ( x, t ), x  (a, b), t  (0, T )  u x,0   ( x), x  [a, b] (1)  u x,0    x , x  [a, b]  t  u (a, t )  1 (t ), u (b, t )   2 (t ), t  [0, T ] В задаче(1) a 2 - квадрат фазовой скорости волны, f ( x, t ) - неоднородная правая часть волнового уравнения на отрезке [a, b] ,  ( x), x  - неоднородные начальные условия, 1 (t ), 2 (t ) - неоднородные граничные условия, ( x, t ) - координата и время соответственно. Проведём линейную редукцию задачи(1). Построим простейшую линейную функцию, удовлетворяющую краевым условиям: Определение 1. Пусть   кусочно гладкая граница области  ,   компакт. Дважды непрерывно дифференцируемую функцию V , T   С 2 , T , V :   T  R1 непрерывную на границе области V   С и определённую во всей области задачи :  xa bx V ( x, t )    2 (t )    1 (t ) ba ba назовём краевой функцией для исходной задачи(1), если 1) V (a, t )  1 (t ),V (b, t )  2 (t ), t [0,T ], V (i , t )  i ri , t , i  1, l (2) То есть граничная функция V (, t ) , на i-ой компоненте i границы с переменными ri , равна i -ой функции граничных условий V (i , t )  i ri , t , i  1, l , l - параметр связности. 2) V ( x, t ) является одним из 3 слагаемых численного решения задачи(1) в замкнутой области . . Преимущество линейной краевой функции V ( x, t ) по координате x заключается в том что,  2V ( x, t )  0 т.е. краевая функция даёт нулевой вклад в волновое уравнение задачи(1). x 2 Замечание 1. Задание краевой функции в виде(2) для задачи(1) не единственно, например, a2  xa bx определению(1) удовлетворяет функция V ( x, t )     2 (t )    1 (t ), n, m  N . ba ba Утверждение 1. На гладких элементах границы размерности dim ri  1 существует n m производная краевой функции по нормали ni и вдоль касательного вектора к границе  , которая равна соответствующим производным от граничных условий i ri , t  V ri  ni , t   r , t  V ri  ni , t  1 1  lim ,V  С i , i i  lim ,V  Сn i , i  1, l       ni ni Доказательство. В силу дважды дифференцируемости краевой функции(определение 1) имеем V ri  ni , t   2  2V ri   ni , t  V ri  ni   , t   V ri  ni , t        (0,1)  2  2 V ri  ni   , t   V ri  ni , t  V ri  ni , t    2V ri   ni , t        2  2 V ri  ni   , t   V ri  ni , t  V ri  ni , t  i ri , t  1   lim  lim   V i  С i  , где  , 0      175 ri  ni   -точка удалённая от граничной точки ri по внутренней нормали ni (ri ) на расстояние  и вдоль касательного вектора  (ri ) в граничной точке на расстояние  , ni (ri )i   (ri ) . Аналогично получим V ri  ni  ni , t   V ri  ni , t     V ri  ni  ni , t   V ri  ni , t  V ri  ni , t   2  2V ri   ni , t      (0,1)  2 ni 2 ni  V ri  ni , t    2V ri   ni , t    2 ni 2 ni  V ri  ni  ni , t   V ri  ni , t  V ri  ni , t  i ri , t  1   lim  lim   V i  Сn i   , 0  0  ni ni В точках нарушения гладкости границы векторы ni (ri ) и  (ri ) не определены, не i ri , t  i ri , t  определены и , поэтому можно требовать только более слабых условий , ni  для краевой функции на границе V (i , t )  i ri , t ,V  С  . Доказательство утверждения 1 завершено. Решение системы уравнений(1) с краевой функцией(2) согласно определению 1, разложим в сумму u( x, t )  V ( x, t )  U ( x, t ) (3) Подставим формулу (3) в систему уравнений(1): U tt  Vtt  a 2 U xx  Vxx   f ( x, t )  a 2U xx  f ( x, t ), x  (a, b), t  (0, T )  V ( x,0)  U ( x,0)   ( x), x  [a, b]  Vt ( x,0)  U t ( x,0)   x , x  [a, b] V (a, t )   (t ), U (a, t )  0, V (b, t )   (t ), U (b, t )  0, t  [0, T ] 1 2  Выражая из последней системы уравнений неизвестную функцию U ( x, t ) ,получим (4)   x  a  ''  b  x  '' 2 2 U tt  a U xx  Vtt  f ( x, t )  a U xx   b  a   2 (t )   b  a   1 (t )  f ( x, t ), x  (a, b), t  (0, T )        xa b x   2 (0)    1 (0), x  [a, b] U ( x,0)   ( x)  V ( x,0)   ( x)   ba ba   xa ' b x ' U t ( x,0)   x   Vt ( x,0)   x      2 (0)     1 (0), x  [a, b]  ba ba U (a, t )  0,U (b, t )  0, t  [0, T ]  (4) Как видно из системы уравнений(4), она линейно относительно U ( x, t ) , что даёт возможность провести редукцию линейной задачи U ( x, t )  U1 ( x, t )  U 2 ( x, t ) :   x  a  ''  b  x  '' 2 U 1tt  a U 1xx   b  a   2 (t )   b  a   1 (t )  f ( x, t ), x  (a, b), t  (0, T )      U 1 ( x,0)  0, x  [a, b] U ( x,0)  0, x  [a, b]  1t U 1 (a, t )  0,U 1 (b, t )  0, t  [0, T ] (5) 176 U 2tt  a 2U 2 xx , x  (a, b), t  (0, T )  U ( x,0)   ( x)   x  a  (0)   b  x  (0), x  [a, b] 2 2 1  ba ba  U ( x,0)   x    x  a  ' 2 (0)   b  x  '1 (0), x  [a, b]  2t ba ba  (6) U 2 (a, t )  0,U 2 (b, t )  0, t  [0, T ] Непосредственно подстановкой убеждаемся, используя формулу U ( x, t )  U1 ( x, t )  U 2 ( x, t ) , что построчно сумма соответствующих уравнений систем(5) и (6) даёт такое же соответствующее уравнение из системы уравнений(4). То есть линейная редукция задачи(4) свелась к решению задач(5) и (6), а сумма решений задач(5) и (6) ввиду линейности(4) равна решению системы уравнений(4). Таким образом, исходная задача(1) с неоднородными граничными условиями имеет решение u( x, t )  V ( x, t )  U1 ( x, t )  U 2 ( x, t ) , где краевая функция V ( x, t ) определена формулой(2) и на концах отрезка равна граничным условиям в(1), а U1 ( x, t ),U 2 ( x, t ) решения линейных систем уравнений(5) и (6). Отметим, что в работе[1](формулы(15)(16),(18),(19),(22),(24)) предложен алгоритм инициализации задачи на втором временном слое по начальным условиям задачи(1). Предложен и алгоритм для численного решения задач(5),(6)[1](формулы(20),(27))с однородными краевыми условиями на основном временном отрезке с бесконечным порядком аппроксимации путём выбора оптимального параметра аппроксимации разностной схемы, а также алгоритм масштабирования задачи, сокращающий число элементарных математических операций в(21),(28) l 2 раз. Задача(5) имеет однородные условия, но волновое уравнение содержит модифицированную правую часть, изменённую краевыми условиями задачи(1). По сравнению с задачей(1), задача(6) имеет однородное уравнение и однородные краевые условия, но начальные условия модифицированы краевыми условиями исходной задачи(1). Таким образом, мы свели общую задачу(1) с неоднородными краевыми условиями к двум известным задачам(5),(6) с модифицированной правой частью волнового уравнения и модифицированными начальными условиями соответственно. Но задачи(5),(6) решены алгоритмами, предложенными в работе[1]. Тем не менее, нужно подробнее рассмотреть особенности разностных задач(8),(9). Для создания численного алгоритма неоднородной краевой задачи по аналогии с формулой (2) построим дискретный аналог краевой функции на равномерной сетке для неоднородной краевой задачи  x a  b  xm   mh   b  a  mh  Vmn  V ( xm , t n )   m  2 (t n )   1 (t n )    2 (n )   1 (n ), m  0, M , n  0, N ba  ba   ba   ba  (b  a) T h ,  , xm  a  mh, tn  n M N (7) Используя вспомогательную функцию(7), аналогично задачам (5),(6) получим их разностный аналог с модифицированными неоднородными условиями (для шаблона крест) 177 U 1 nm1  U 1 nm1  2U 1 nm 2 U 1 nm 1  U 1 nm 1  2U 1 nm a  f (a  mh, n ), m  1, M  1, n  1, N  1  2 h2   (b  a) T  mh  ''  b  a  mh  '' n  f (a  mh, n )  f (a  mh, n )   b  a  2 (n )   b  a  1 (n )  f m , h  M ,  N  U 1 0m  0, U 1t 0m  0, m  0, M  n n U 1 0  0, U 1 M  0, n  0, N (8) n n n U 2 nm1  U 2 nm1  2U1nm (b  a) T 2 U 2 m1  U 2 m1  2U 2 m  a ,h  ,  , m  1, M  1, n  1, N  1  2 2  h M N   0  mh   b  a  mh   2 (0)   1 (0)   m , m  0, M U 2 m   (a  mh)   (a  mh)   ba  ba    0  mh  '  b  a  mh  ' U 2t m  0,  (a  mh)   (a  mh)    2 (0)    1 (0)   m , m  0, M ba  ba   U n  0, U n  0, n  0, N 2M  20 n n n  u mn1  u mn1  2u mn (b  a) T 2 u m 1  u m 1  2u m  a  f mn , h  ,   , m  1, M  1, n  1, N  1  2 2  h M N    mh  ''  b  a  mh  '' n  2 (n )     1 (n )  xm  a  mh, t n  n , f m  f (a  mh, n )   ba  ba    u (a  mh,0)  u m0   (a  mh)   (a  mh)   mh  2 (0)   b  a  mh 1 (0)   m , m  0, M  ba  ba   u (a  mh,  )  u1m1  1 (a  mh), m  0, M , 1 ( x)  F ( ( x), ( x))  u (a, n )  u0n  0, u (b, n )  u Mn  0, n  0, N   (a  mh)   (a  mh)   mh   ' 2 (0)   b  a  mh  '1 (0)   ,  ( x)  F ( ( x), ( x)) m 1m m m  ba  ba  (9) (10) umn  Vmn  umn  Vmn  U1m  U 2 m ,Vmn , umn ,U1m ,U 2 m - решения задач (7),(10),(8),(9)соответственно. n n n n Второй временной слой u m2 согласно(10) с использованием модифицированных  m , m условий запрашивает u1m , um0 аналогично формулам((15),(18)[1,стр.175,176]),связывая три (четыре) последовательных временных слоя, для однородного волнового уравнения(9) получим систему линейных уравнений с трёхдиагональной симметрической матрицей, решаемой методом прогонки с оптимальным параметром аппроксимации z=1[1,(15)стр.175]:   U 2 m1  4U 2 m  U 2 m1  2 m  2 m  Fm  O  3 , Am  1, Bm  1, Cm  4, m  1, M  1, U 2 0  0, U 2 M  0 С формулами прогонки вперёд[1,5] Bm A   Fm 1 1 m  , m  m m 1 , m  1, M  1, 0  0, 0  U 20  0, M  0, M  U 2 M  0 Cm  Amm 1 Cm  Amm 1 1 1 1 1 1 И формулами прогонки назад U 2 m  mU 2 m 1   m , m  M  1,1 [1](формула(16), стр.175)) (11) Для оптимального параметра z  1 , связывая пять последовательных временных слоя, выражая их друг через друга, оставляя в записи только 2 первых слоя, получим аналогично(18)[1,стр.176] пятидиагональную СЛАУ 1 1 178     9 1 9 1 1 1 1 U 2 m2  U 2 m1  10U 2 m  U 2 m1  U 2 m2   m   m1   m1  3 m  O  4  Fm  O  4 , 2 2 9 9 Am1  1, Am 2   Bm1   , Cm  10, Bm 2  1, Fm   m   m 1   m 1  3 m , m  2, M  2, 2 2 Получим аналогично (19[5,1,стр.176]) формулы прогонки вперёд B1m  A2 m2 m1  A1m1m22 m1 B2 m 1m  , 2 m  Cm  A1m1m21m1  A1m2 m2  A2 m1m1 Cm  A1m1m21m1  A1m2 m2  A2 m1m1 A    A   A  F  m  1m 1m2 m1 1m m2 2 m m1 m , m  2, M  2 Cm  A1m1m21m1  A1m2 m2  A2 m1m1 (12) (11) (12) (11) 10  0, 20  0, 11  0, 21  0, 0  U 210  0, 1  U 211  U 211 , M  U 21M  0, M 1  U 21M 1  U 2 M 11 (12) (11) 1 Где запись U 21  U 21 читается так значению U 21 в формуле(12) присваивается старое 1 1 1 значение U 21 из формулы(11). Тогда формулы прогонки назад аналогично[1,(19 б) стр.176] имеют вид 1M 1  0, 2 M 1  0, 1M  0, 2 M  0 (12) U 2 m  1mU 2 m 1  2mU 2 m  2   m , m  M  2,2 Проверим, что указанные коэффициенты на границах дают краевые условия Дирихле 1 1 1 1 1 1 1 1 U 20  10U 21  20U 2 2   0  U 20 , U 21  11U 2 2  21U 23  1  U 21 1 1 1 U 2 M 1  1M 1U 2 M  2 M 1U 2 M 1   M 1  U 2 M 1, U 2 M  2  1M  2U 2 M 1  2 M  2U 2 M   M  2 1 1 1 1 1 1 1 U 2 M  1MU 2 M 1  2 MU 2 M  2   M  U 2 M . 1 1 1 1 Коэффициенты матриц СЛАУ в формулах прогонки(11),(12) Am  1, Bm  1, Cm  4 , 9 9 Am1  1, Am 2   Bm1   , Cm  10, Bm 2  1 удовлетворяют условию корректности формул 2 2 прогонки (утверждение 3[1,стр.177]) и совпадают с аналогичными коэффициентами, корректность которых доказана в работе[1]. Запишем явную разностную схему для решения однородного уравнения, учитывая оптимальный параметр z=1 (20)[1,(20)стр.178] c бесконечным порядком аппроксимации. n 1 n 1 U 2 m  U 2 m 1  U 2 m 1  U 2 m , n  2, N , m  1, M  1 (13) n n Возможен также алгоритм масштабирования (укрупнения) ячеек сетки с параметром z=1 и коэффициентом масштабирования l , сокращающим число и время вычислений в l 2 раз. Сначала инициализация проводится с шагом  по времени по формулам (11), а затем по формулам(12), далее по явной формуле(13) с минимальными шагами сетки (h, ) n 1 n 1 решается волновое уравнение U 2 m  U 2 m 1  U 2 m 1  U 2 m , n  2, l , m  1, M  1 во временном n n промежутке t  [2 , l * ] . Среди решения в слое U 2 (mh, l * ), m  0, M и среди начального слоя U 2 (mh,0), m  0, M выбираются узлы более редкой сетки xm1  a  h * l * m1, m1  0, M / l , и решение на редкой сетке U 2 (a  m1* h * l ,0),U 2 (a  m1* h * l , l * ), m1  0, M / l . Далее используется формула(13) с крупным вектором шага (l * h, l * ) n11 n11 1  z   2 a 2 / h 2    h / a, U 2 m1  U 2 m11  U 2 m11  U 2 m1 , n1  2, N / l , m1  1, M / l  1 n1 n1 (14) 179 Рассмотрим вторую задачу инициализации z=1 для системы уравнений (8) c свяжем условия на 3 временных слоях U1 ( x,0)   ( x)  0,U1t ( x,0)   ( x)  0, f ( x, t )  0 , на этапе инициализации по трём (четырём) временным слоям (формула(22) в работе[1,стр.179]) 1 1 n1 U1m1  4U1m  U1m1   f m,1 2  U1m   f m,1 2 , Am  1, Bm  1, Cm  4, Fm   f m,1 2 , m  1, M  1 (15) Воспользуемся затем формулами прогонки(11) с учётом(15) для решения 1 1 1 U1m , m  1, M  1,U10  U1M  0 . Перейдём ко второй задаче инициализации на 4 временных слоях, аналогично формуле(24)([1,стр.180]): 9 1 9 1 9   1 1 1 (16) U1m2  U1m1  10U1m  U1m1  U1m2   f m, 2  f m,1  f m1,1  f m1,1  2  O 4  2 2 2   С коэффициентами 9 9 9   Am1  1, Am 2   Bm1   , Cm  10, Bm 2  1, Fm   f m, 2  f m,1  f m 1,1  f m 1,1  2 , m  2, M  2 2 2 2   (16) (15) (16) (15) 10  0, 20  0, 11  0, 21  0, 0  U110  0, 1  U 111  U 111 , M  U11M  0, M 1  U 11M 1  U 11M 1 используя формулы прогонки(12), получим второй временной слой задачи(8) 1 U1m , m  0, M . Наконец, нужно написать основную рекуррентную разностную формулу для решения неоднородного уравнения с нулевыми модифицированными начальными условиями. Для параметра z=1 имеем ((25)[1,стр.180]) n1   n 1 U1m  U1m1  U1m1  U1m  f m,n 2  R U1m , n  2, N , m  1, M  1 n n f m,n  f m,n  Vm,n tt , n (17)  2Vm,n 0 x 2 Утверждение 2. Остаточный член погрешности в формуле(17) зависит от правой части волнового уравнения и краевой функции и представим в виде   RU n 1m 2  2 k k 1 2l  2( k 1) f mn   2 2 k  2 kVmn   a   x 2l t 2( k l 1)  k 1 2k ! t 2 k k 2 2k ! l 0  Доказательство. Воспользуемся формулой невязки в общем виде для одномерного волнового уравнения на отрезке, полученной в работе[1,стр.180](формула(26)), с учётом формулы(17), получим U n 1 1m z 1 U n 1m 1 U n 1m 1 U n 1 1m 2 2 4  4 f m, n  4 f m, n  2 4  2  f m,n  f m,n  2 6  4  f m,n 2   f m,n  a   a a  4!  x 2 t 2  6!  x 4 x 2 t 2 t 4  2  6 6 6  6 f m ,n  2 8  6  f m,n 4  f m ,n 2  f m ,n  a  a  a  8!  x 6 x 4t 2 x 2t 4 t 6   8 8 8 8  8 f m ,n  2 10  8  f m,n 6  f m ,n 4  f m ,n 2  f m ,n  a  a  a  a  10!  x8 x 6t 2 x 4t 4 x 2t 6 t 8   10 10 10 10 10 10 f m, n  2 12  10  f m, n 8  f m, n 6  f m, n 4  f m, n 2  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  180  U1nm 1  U1nm 1  U1nm1  f m, n 2  2 2 4 4  4 f m, n  2 4  2  f m, n  f m, n  2 6  4  f m, n 2  f m, n a      a  a  4!  x 2 t 2  6!  x 4 x 2t 2 t 4   6  6 f m,n  6 f m,n  6 f m,n  6 f m,n  4 2 a   a  a  6 4 2 2 4 6    x  x  t  x  t  t   8 8 8 8 10   f m,n  f m,n  f m,n  8 f m,n  2  8  f m,n 6 4 2   a  a  a  a  10!  x 8 x 6 t 2 x 4 t 4 x 2 t 6 t 8  10  10 f m,n  10 f m,n  10 f m,n  10 f m,n  10 f m,n  2  2Vm,n 2 12  10  f m,n 8 6 4 2    a  a  a  a  a   12!  x10 x 8 t 2 x 6 t 4 x 4 t 6 x 2 t 8 t 10  t 2 4 6 8 10 12 2 4  Vm, n 2 6  Vm, n 2 8  Vm, n 2 10  Vm, n 2 12  Vm, n       ...  4! t 4 6! t 6 8! t 8 10! t10 12! t12  2  2 k k 1 2l  2( k 1) f mn   2 2 k  2 kVmn n n n1 2   a   U1m1  U1m1  U1m  f m,n   (18) x 2l t 2( k l 1)  k 1 2k ! t 2 k k 2 2k ! l 0  2 8 8!  x  a  ''  b  xm  '' f m ,n  f m , n   m 2 (tn )   1 (tn ) модифицированное  ba   ba  правой части. Утверждение 2 доказано. Где узловое значение Аналогично(14) можно провести укрупнение шага в неоднородной модифицированной правой части волнового уравнения для системы уравнений(8). Сначала инициализация проводится с шагом  времени по формулам (15), а затем по формулам (16), далее по явной формуле(18) с минимальными шагами сетки h,  решается волновое уравнение с навязкой общего вида(18) n1   n1 U1m  U1m1  U1m1  U1m  f m,n 2  R U1m , n  2, N , m  1, M  1 n n n (19) во временном промежутке [0, l * ], n  2, l . Среди решения в слое U1 (a  mh, l * ), m  0, M и среди начального слоя U1 (a  mh,0), m  0, M xm1  a  hl * m1, m1  0, M / l , tn1   * l * n1, n1  0,1 , выбираются узлы более редкой сетки и решение U (a  m1* h * l,0),U (a  m1* h * l, l * ), m1  0, M / l U (a  m1* h * l, t 1 1 1 на n1 редкой сетке  ), m1  0, M / l , n1  0,1 Далее используется формула(19) с крупным шагом (l * h, l * ),1  z   2a 2 / h2    h / a n11 n11   U1m1  U1m11  U1m11  U1m1  f m1,n1l 2 2  R U1m1 , n1  2, N / l , m  1, M / l  1 n1 n1 n1   (20) В n1 последних формулах(19),(20) невязка R U1m1 определяется двумя последними суммами из(28). Рассмотрим тестовый пример 1: utt  u xx  sin(t ) sin( x), x  (0,  ), t  0 u x,0  cos( x), x  [0,  ]  (21)      u x ,  sin 2 x , x  [ ,  ] t   u (0, t )  cos(t )  1 (t ), u ( , t )   cos(t )   2 (t ), t  0 1 sin(2 x) sin(2t ) u( x, t )  V ( x, t )  U1 ( x, t )  U 2 ( x, t )  cos( x) cos(t )  sin(t )  t cos(t ) sin( x)  (22) 2 2 Можно проверить, что решение системы уравнений (21) описывается формулой (22),т.е. удовлетворяет волновому уравнению и 4 условиям(21). 181 К неоднородной краевой задаче(21) можно применить редукцию к однородной задаче, описанную формулами (1)-(6). Воспользуемся формулами(2,)(5),(6) с краевой функцией: 2x   xa b x x   x   V ( x, t )    2 (t )   1 (t )    cos(t )     cos(t )  1   cos(t )   ba ba       И с модифицированной правой частью  2x  f ( x, t )  f ( x, t )  Vtt ( x, t )    cos t  cos t  sin x sin t ,  Vtt ( x, t )  V ( x, t ) и   решением используя формулу (18), получим точным 1   2  4  6   4  6  8  10 6 12 n1 U1m  U1nm1  U1nm1  U1nm1  2 f m,n   2  2  3  4  5   ...  2Vm,n     ...  4! 6! 8! 10! 12!  2!   2! 4! 6!  2 4 6 4 6 8 10 12     d 1  cos( )   sin   1  2  2   3   4   5   6  ... 1  cos( )     ...  2! 4! 6! 2 d 2 2! 4! 6! 8! 10! 12! n1 n n n1 n n n1 U1m  U1m1  U1m1  U1m   sin( ) f mn  2Vm,n 1  cos( )  U1m1  U1m1  U1m    2mh     sin( ) sin(mh) sin(n )  21     cosn 1  cos( ) , n  2, N , m  1, M  1     (23) В первом примере по формуле(23) для бесконечного ряда получена производящая функция  sin( ) f mn  2Vm,n 1  cos( ) , состоящая из двух слагаемых, первое совпадает с аналогичным примером с той же неоднородной правой частью волнового уравнения и однородными краевыми условиями в работе[1,стр. 181] . Второе слагаемое обязано краевой функции из первого примера. Предположим, что аналитическое решение каждой частной задачи(18),(19) представимо в виде бесконечного медленно сходящегося ряда для каждой из подзадач с модифицированными неоднородным уравнением или с модифицированными начальными условиями. Тогда экономнее численно решать каждую из модифицированных подзадач, сравнивая их сумму и сумму с краевой функцией с известным общим точным решением. В таблице 1 по порядку записаны численные решения частных задач (8), (9), краевая функция и сумма всех трёх величин соответственно U1 ( x, t ),U 2 ( x, t ),V ( x, t ),U1 ( x, t )  U 2 ( x, t )  V ( x, t ), t = 25.1327412287183с Таблица 1 V ( x, t ) U1 ( x, t ) U 2 ( x, t ) U1 ( x, t )  U 2 ( x, t )  V ( x, t ) 0.0000000000000E+00 0.0000000000000E+00 1.0000000000000 1.00000000000000 -3.88322207745093 0.151056516295153 0.8000000000000 -2.93216556115578 -7.38632732196183 0.209016994374947 0.6000000000000 -6.57731032758688 -10.1664073846305 0.187785252292473 0.4000000000000 -9.57862213233804 -11.9513286589662 0.109016994374947 0.2000000000000 -11.6423116645913 -12.5663706143592 -7.216449660065E-16 .00000000000E+0 12.5663706143592 -11.9513286589662 -0.109016994374948 -.2000000000000 -12.2603456533412 -10.1664073846305 -0.187785252292473 -0.400000000000 -10.7541926369230 -7.38632732196184 -0.209016994374948 -.6000000000000 -8.19534431633678 -3.88322207745093 -0.151056516295154 -0.800000000000 -4.83427859374609 0.000000000000E+000 0.00000000000E+000 -1.00000000000 -1.00000000000000 Таблица 2 x exact U1 ( x, t)  U 2 ( x, t )  V ( x, t ) numerical 182 0.000000000000000E+000 1.00000000000000 1.00000000000000 0.314159265358979 -2.93216556115578 -2.93216556115578 0.628318530717959 -6.57731032758688 -6.57731032758688 0.942477796076938 -9.57862213233805 -9.57862213233804 1.25663706143592 -11.6423116645913 -11.6423116645913 1.57079632679490 -12.5663706143592 -12.5663706143592 1.88495559215388 -12.2603456533412 -12.2603456533412 2.19911485751286 -10.7541926369230 -10.7541926369230 2.51327412287183 -8.19534431633677 -8.19534431633678 2.82743338823081 -4.83427859374609 -4.83427859374609 3.14159265358979 -1.00000000000000 -1.00000000000000 В первом столбце таблицы 2 с равномерным шагом указаны координаты узлов. Во втором столбце записаны значения решения согласно формуле (22) в узлах координатной сетки 1 sin(2 x) sin(2t ) u ( x, t )  V ( x, t )  U1 ( x, t )  U 2 ( x, t )  cos( x) cos(t )  sin(t )  t cos(t ) sin( x)  2 2 В третьем столбце программа вычисляет сумму краевой функции и численных решений задач (8),(9). Программа с параметрами n=100,l=10,m=8, t=nmτ=25.1327412287183c возвращает норму Чебышева для невязки задачи(7). Норма относительной погрешности имеет порядок 1Е-15, что соответствует двойной точности решения. Последние столбцы таблиц 1 и 2 совпадают. Относительная норма Чебышева равна 1.119445273655962E-015 . Среднее арифметическое от модуля численного решения в конечный момент времени по всем узлам составляет 7.93409415003782 . В примере 1 краевые условия 1 (t )  cos(t ), 2 (t )   cos(t ) линейно зависимы. Тестовый пример 2. utt  u xx  t sin( x), x  (0,  ), t  0 u x,0  sin( x / 2), x  [0,  ]   1 ut x,0  2 cosx / 2, x  [0,  ]  (24) u (0, t )  sin(t / 2)  1 (t ), u ( , t )  cos(t / 2)   2 (t ), t  0 Точное решение, которого есть u( x, t )  t  sin(t )sin( x)  sin( x / 2) cos(t / 2)  cos( x / 2) sin(t / 2)  xa bx x   x  С краевой функцией V ( x, t )   2 (t )   1 (t )    cos(t / 2)    sin(t / 2) и ba ba      модифицированной правой частью x   x  f ( x)  f ( x, t )  Vtt ( x,0)  t sin( x)  cos(t / 2)    sin(t / 2) 4  4  а также с модифицированными начальными условиями x 1   x   ( x)   ( x)  V ( x,0)  sin( x / 2)  , ( x)   ( x)  Vt ( x,0)  cosx / 2     2  2  Тогда модифицированные правую часть волнового уравнения и начальные условия для второго тестового примера подставим в формулу (18) 183   2  4  6  8  10  12   2 4 6 8 U1nm1  U1nm1  U1nm1  U1nm1  2 f m,n        ...  2Vm,n  2  4  6  8   2! 4! 6! 8! 10! 12!   2 2! 2 4! 2 6! 2 8!    10  12    10  12  ...  U1nm1  U1nm1  U1nm1  2 f m,n 1  cos( )   2Vm,n 1  cos    U1nm1  U1nm1  2 10! 2 12!  2      mh      mh     U1nm1  2(n ) sin(mh)1  cos( )   2   cos(n / 2)    sin(n / 2) 1  cos  ,     2      (25) n  2, N , m  1, M  1    Производящая функция 2 f m,n 1  cos( )   2Vm,n 1  cos   в формуле(25) состоит из  2   двух слагаемых, первое слагаемое обусловлено правой частью волнового уравнения, второе определяется краевой функцией. В таблице 3 собраны результаты численного решения примера 2 с параметрами программы n = 100, l = 10, m  8, t  n m  25.1327412287183c Таблица 3 x exact U1 ( x, t)  U 2 ( x, t )  V ( x, t ) numerical 0.000000000000000E+000 -4.898425415289509E-016 -4.898425415289509E016 0.314159265358979 7.92287861994210 7.92287861994209 0.628318530717959 15.0816716382986 15.0816716382986 0.942477796076938 20.7868052690006 20.7868052690006 1.25663706143592 24.4904425702249 24.4904425702249 1.57079632679490 25.8398480099049 25.8398480099049 1.88495559215388 24.7116743123074 24.7116743123074 2.19911485751286 21.2238212934494 21.2238212934494 2.51327412287183 15.7237111602188 15.7237111602188 2.82743338823081 8.75413249549701 8.75413249549700 3.14159265358979 1.00000000000000 1.00000000000000 Относительная норма Чебышева равна 3.004681541631892E-015 . Среднее арифметическое от модуля численного решения в конечный момент времени по всем узлам составляет 16.5534985368844. Норма погрешности имеет порядок 1015 ,т.е. программа работает с использованием алгоритма согласно формулам(11)-(20) с двойной точностью. В примере 2 краевые условия 1 (t )  cos(t / 2), 2 (t )  sin(t / 2) линейно независимы. Тестовый пример 3. utt  u xx  cos(3t ) sin(3x), x  (0,  ), t  0 u x,0  sin x, x  [0,  ]   3  3x  ut x,0  sin , x  [0,  ] 2 2    3t  (26) u (0, t )  0  1 (t ), u ( , t )   sin     2 (t ), t  0 2  Точное решение, которого есть  3x   3t  t u ( x, t )  sin  sin   sin 3x  sin 3t   sin x cos t  2  2 6 184  xa bx  x   3t  С краевой функцией V ( x, t )   2 (t )   1 (t )    sin  ba ba    2  и модифицированной правой частью 9 x  3t  f ( x)  f ( x, t )  Vtt ( x,0)  cos(3t ) sin(3x)  sin  4 2 а также с модифицированными начальными условиями 3  3x  3x  ( x)   ( x)  V ( x,0)  sin x, ( x)   ( x)  Vt ( x,0)  sin   2  2  2 Тогда найденные модифицированные правую часть волнового уравнения и начальные условия для третьего тестового примера подставим в формулу (28)  3 2  2  3 4  4   2 32  4 34  6 36  8 38 10 310 12  U 1nm1  U 1nm1  U 1nm1  U 1nm1  2 f m,n   2 3 4 5 6  ...  2Vm,n        2  2!  2  4! 4! 6! 8! 10! 12!  2!   6 6 8 8 10 10 12 12  3  3  3  3           ...  U1nm1  U1nm1  U1nm1  f m,n 3 sin(3 )  8 2   2  6!  2  8!  2  10!  2  12!    3    2Vm,n 1  cos    2   (27) Поскольку 2 4 6 4 6 3   3   3   ...   d 1  cos(3 )  1 3 2  2 3   3 3   4 3 8  1  cos(3 )  2! 4! 6! 2 d 2! 4! 6! 8! 10 12 2 2 4 4 6 6 8 8 10 10 12 3   6 3   ...  4 2    2 3   3 3   4 3   5 3   6 3   ...  3 sin(3 )  5 10! 12! 2! 4! 6! 8! 10! 12! 2 2 2 4 4 6 6 8 8 10 10 12  3 3 3 3 3  3  2 3 4 5 6  ...  sin(3 )  4 2 2! 4! 6! 8! 10! 12! 2   2 4 6 8 10 12 3  3  3  3  3  3   3             ...  1  cos     2  2!  2  4!  2  6!  2  8!  2  10!  2  12!  2   3   Производящая функция f m,n 3 sin(3 )  8 2  2Vm,n 1  cos   в формуле(27)  2   состоит из двух слагаемых, первое слагаемое обусловлено правой частью волнового уравнения, второе соответствует краевой функции. В таблице 4 показаны результаты численного решения примера 3 с параметрами программы n = 200, l = 20, m  4, t  n m  12.5663706143592с Таблица 4 x exact U1 ( x, t)  U 2 ( x, t )  V ( x, t ) numerical 0.000000000000000E+000 0.000000000000000E+000 0.000000000000000E+000 0.314159265358979 0.309016994374945 0.309016994374945 0.628318530717959 0.587785252292470 0.587785252292472 0.942477796076938 0.809016994374946 0.809016994374947 1.25663706143592 0.951056516295155 0.951056516295152 1.57079632679490 1.00000000000000 0.999999999999998 1.88495559215388 0.951056516295155 0.951056516295152 2.19911485751286 0.809016994374947 0.809016994374948 2.51327412287183 0.587785252292471 0.587785252292473 2 2 6 8 10  12  185 2.82743338823081 0.309016994374946 0.309016994374948 3.14159265358979 8.572244476756629E-016 7.347638122934264E-016 Относительная норма Чебышева равна 7.209524148017449E-015. Среднее арифметическое от модуля численного решения в конечный момент времени по всем узлам составляет 0.631375151467504. Норма погрешности имеет порядок 1015 , т.е. программа работает с использованием алгоритма согласно формулам(11)-(20) с двойной точностью. В примере 3 задано только одно ненулевое краевое условие  3t  1 (t )  0,  2 (t )   sin  . Таким образом, три рассмотренных примера исчерпывают все 2 различные случаи задания неоднородных условий показывающие, что программа, написанная по алгоритму формула (11)-(20)численно решает начально - краевую задачу волнового уравнения на отрезке с двойной точностью. Для классического решения задач математической физики необходимо также согласовать начальные и краевые условия[3,4,стр.43], которые заключаются для постановки задачи(1) в выполнении условий V (a, t )  1 (t ), V (b, t )  2 (t ),  (a)  u(a,0)  1 (0),  (b)  u(b,0)  2 (0) (28) Отметим, что в первых двух примерах условие согласования классического решения выполнено на двух концах отрезка, и как следствие достигнуто меньшее значение нормы погрешности, чем в третьем примере, в котором условие согласования выполнено не левом конце отрезка, но не выполнено на правом его конце.  a   1 (0)  0,  b  2 (0)  1  0 . В результате норма погрешности больше примерно в 10 раз, чем в первых двух примерах, тем не менее, устойчивость всех указанных алгоритмов разностных схем имеет место и в случае рассогласования начальных и граничных условий. Программа написана на языке FORTRAN и использует входные функции тестового примера 2. Опишем входные функции программы, численно решающей произвольную неоднородную начально-краевую задачу для волнового уравнения на отрезке.  x  a  ''  b  x  '' fy ( x, t )  f ( x, t )  vtt ( x, t )  f ( x, t )   2 (t )   1 (t ) - модифицированная ba ba правая часть волнового уравнения;  xa b x  xa ' b x ' u 0( x)   ( x)   2 (0)   1 (0), u1( x)   ( x)    2 (0)   1 (0) ba ba ba ba модифицированные условия для начального смещения точек отрезка струны и модифицированные условия для начальной скорости точек струны. Сумма функций в программе fan( x, t )  ff 0( x, t )  f 2( x, t ) - равна известному точному решению. Если указанные функции найдены, то их записывают в программу (для определения нормы невязки задачи по Чебышеву). Первые два слагаемые представляют частные решения задачи(1), соответствующие неоднородным начальным условиям и неоднородным граничным условиям, третье слагаемое соответствует неоднородной правой части волнового уравнения. Программа написана на языке FORTRAN, её особенностью является m  4k , k  N , быстродействие (время работы) составляет 0,01с. program wave;integer(8), parameter::n=100,n1=10,ll=n/n1;integer(8)::i,j,k;integer(8),parameter::m=8 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) 186 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,ff0 ,v,pi real(8)::u1,u0,f1,f2,fan,z,vel,x,y,a,b,c,d,h1,tay,tt,x1,x2,x3,x4,hh,fy v(x,t)=(x/(2d0*dasin(1d0)))*dcos(t/2d0)+(((2d0*dasin(1d0))-x)/(2d0*dasin(1d0)))*dsin(t/2d0) fy(x,t)=dsin(x)*t+(x/(4d0*(2d0*dasin(1d0))))*dcos(t/2d0)+(((2d0*dasin(1d0))x)/(4d0*(2d0*dasin(1d0))))*dsin(t/2d0) u1(x)=dcos(x/2d0)/2d0-(((2d0*dasin(1d0))-x)/(2d0*(2d0*dasin(1d0)))) u0(x)=dsin(x/2d0)-(x/(2d0*dasin(1d0)));fan(x,t)=0d0;f1(x,tay)=-2d0*u0(x)-2d0*tay*u1(x); ff0(x,t)=dsin(t/2d0)*dcos(x/2d0)+dsin(x/2d0)*dcos(t/2d0);f2(x,t)=dsin(x)*(t-dsin(t)); 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; 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) =0d0 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)) 187 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 !;pause 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)+2d0*fy(x,t)*(1d0-cos(tay))+2d0*v(x,t)*(1d0cos(tay/2d0)) enddo;enddo;do i=0,n;res3(i)=num(i,n1);enddo;hh=h1*dfloat(n1);tay1=tay*dfloat(n1) 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)+2d0*fy(x,t)*(1d0-cos(tay1))+2d0*v(x,t)*(1d0cos(tay1/2d0)) enddo;enddo;s=0d0;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;x=a+hh*dfloat(i);otv00(i)=num(i,ll*m)+num0(i,ll*m)+v(x,t) res3(i)=f2(x,t)+fan(x,t)+ff0(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;print*,res3(i),otv00(i);enddo print*,"norma C=",mm*dfloat(ll)/abs(s),abs(s)/ dfloat(ll);end program wave В работе получены результаты: 1) Линейная неоднородная начально-краевая задача для волнового уравнения на отрезке редукцией сводится к решению двух частных задач с однородными краевыми условиями. Первая имеет однородное уравнение и модифицированные начальные условия. Вторая задача имеет однородные начальные условия и волновое уравнение с модифицированной правой частью. 2) В разностном виде получены формулы(11)-(20) для решения неоднородной краевой задачи, которые переходят в аналогичные формулы работы[1]((15)-(28)) в случае однородных краевых условий. 3) В явном виде получена невязка общего вида (формула(18)), состоящая из двух сумм,- слагаемые первой двойной суммы содержат производные чётного порядка по координате и времени (как и в работе[1,стр.180]формула(26)), слагаемые второй суммы пропорциональны чётным производным по времени от краевой функции. 188 Краевой может быть любая дважды непрерывно дифференцируемая функция, на границе области  равная краевым условиям i (t ), i  1, l и являющаяся одним из 3 слагаемых численного решения в замкнутой области . 4) Все модифицированные функции – правая часть уравнения, начальные условия и общий вид невязки задачи в формуле(18) определяются также краевой функцией, т.е. полученные алгоритмы соответствуют традициям решения задач МФ сотрудниками семинара академика В.В. Алексеева. 5) Написана программа и получены три тестовых примера (21),(24),(26)с точными решениями, при выборе оптимального параметра аппроксимации z=1, с которым как неоднородная краевая задача, так и задача с однородными условиями решаются с двойной точностью. Таким образом, все свойства (точность, масштабируемость алгоритма, метод производящих функций, быстродействие и. т. д.) с оптимальным параметром аппроксимации сохраняются как в однородной краевой задаче, так и в неоднородной задаче с краевыми условиями Дирихле. 6) Благодаря алгоритму инициализации(15)(16),(18),(19),(22),(24)(что проверено программой) численное решение с использованием алгоритма(11) – (20)по норме Чебышева близко к точному решению не только при согласованных начальных и краевых условиях, но и при отсутствии их согласования в классическом смысле решения задач УМФ. 1) 2) 3) 4) 5) 6) 7) 8) 9) ЛИТЕРАТУРА Пастухов, Д.Ф., Пастухов, Ю.Ф., Волосова, Н.К. Оптимальный порядок аппроксимации разностной схемы волнового уравнения на отрезке/ Д.Ф. Пастухов, Ю.Ф. Пастухов, Н.К. Волосова//Вестник Полоцкого университета. Серия С. Фундаментальные науки. – 2018 . - №4. С.167 - 186. Пикулин, В.П. Практический курс по уравнениям математической физики : учеб. пособие /В.П. Пикулин, С.И. Похожаев. – М.: Наука,1995. – 224 с. Тихонов А.Н. Уравнения математической физики./А.Н. Тихонов, А.А. Самарский. – М.: Наука,2008,729 с. А.Г. Свешников. Лекции по математической физике./А.Г. Свешников, А.Н. Боголюбов, В.В. Кравцов. – М.: Издательство МГУ,1993. – 352с. Пастухов, Д.Ф. Аппроксимация уравнения Пуассона на прямоугольнике повышенной точности / Д.Ф. Пастухов, Ю.Ф. Пастухов // Вестник Полоцкого университета. Серия С, Фундаментальные науки. – 2017. – № 12. – С. 62–77. Волосова Н.К. Преобразование Радона и краевой задачи для уравнения Пуассона в стеганографии. Тезисы докладов Международной конференции по дифференциальным уравнениям и динамическим системам. Суздаль, 6-11 июля 2018г. С. 61. Вакуленко С.П. К методу оценки состояния железнодорожного полотна / С.П. Вакуленко, К.А. Волосов, Н.К. Волосова // Мир транспорта. – 2016. – Т. 14, № 3 (64). – С. 20–35. Вакуленко С.П., Волосова А.К., Волосова Н.К. К вопросу о нелинейных волнах в стержнях. / С.П. Вакуленко А. К. Волосова, Н.К. Волосова // Мир транспорта. – 2018. – Т. 16, № 3 (76). – С. 6–17. Козлов А.А. Об управлении показателями Ляпунова двумерных линейных систем с локально интегрируемыми коэффициентами./А.А. Козлов//Дифференциальные уравнения.-2008.-Т.44,№10. С.1319-1335. 189 10) Козлов А.А. Об управлении показателями Ляпунова линейных систем в невырожденном случае./А.А. Козлов//Дифференциальные уравнения.-2007.Т.43,№5. С.621-627. 11) Пастухов Ю.Ф., Пастухов Д.Ф. Группы преобразований сохраняющие вариационную задачу со старшими производными. / Д.Ф. Пастухов, Ю.Ф. Пастухов //Вестник Полоцкого университета.Серия С. Фундаментальные науки. – 2018 . - №4. С.194 - 209. 12) Пастухов Ю.Ф., Пастухов Д. Ф., Чернов С.В. Тензор обобщённой энергии. / Д.Ф. Пастухов, Ю.Ф. Пастухов, С. В. Чернов //Вестник Полоцкого университета. Серия С. Фундаментальные науки. – 2017 . - №12. С.78 - 100. 13) Пастухов Ю.Ф. “ Необходимые условия в обратной вариационной задаче ”, Фундаментальная и прикладная математика, 7:1(2001), 285-288. TO QUESTION ABOUT REDUCTIONS OF THE LUMPY MARGINAL PROBLEM DIRIHLE FOR WAVE EQUATION ON LENGTH D. PASTUHOV, Y. PASTUHOV, N. VOLOSOVA The Offered algorithm of the decision general initial-marginal problem of the lumpy wave equation on length with lumpy marginal condition. The Certain notion to marginal function. The Source problem with lumpy marginal condition is reduced to two simple modified problem i.e. to problem with modified by right part and to problem with modified initial condition, but with uniform border condition. It Is Received decomposition to inaccuracy of the problem in most general type for optimum parameter of the approximations разностной schemes z=1. The First double amount to inaccuracy complies with amount for problem with uniform marginal condition; the second single amount contains the composed proportional derived even order on time from marginal function. The Writtenned program on base of the built algorithm to reductions, are solved exactly and numerically three test examples, showing that marginal conditions Dirihle save all characteristic of the task with uniform marginal condition when use the modified conditions and marginal function. 190 Приложение3 УДК 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]. В данной работе нами предложен алгоритм для решения уравнения Пуассона. По формуле простой итерации и с шестым порядком погрешности находятся узловые значения решения вблизи четырёх вершин прямоугольника. Методом прогонки с трёхдиагональной матрицей, устойчивость которой обеспечивает частично неявная разностная формула с шестым порядком погрешности, находятся приграничные узловые значения численного решения. Внутренние узловые значения решения на следующем 191 итерационном слое находятся по частично неявной итерационной формуле с десятым порядком погрешности на симметричном 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  0  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    Ищем решение второй частной задачи '' 192   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  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  y 2  x 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 частных задач: 193   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 m  1mk C k h k h mk  m u  1  mu u1, 2  u1, 2  u 1, 2  u 1, 2     C mk h1k h2mk k mk   m 1 2 m! x y x k y mk m 0  k 0 m! k 0 m  1m C k h k h mk  m u  m  1k C k h k h mk  m u     m 1 С k h k h mk  m u      m 1 2 x k y mk m 1 2 m 1 2 m! x k y m k k 0 m! x k y m k  m0  k 0 m! k 0  1   1  4u 0,0 mk   1   1 m 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 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  отмечены на рисунке целыми числами: 194  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   (7) C5 u 2, 2  u 2, 2  u 2, 2  u 2, 2  Формула (7) использует все 25 узловых значений шаблона. Разложим в ряд Тейлора суммы четвёрок узловых значений с точностью до O h10 по формуле (6):    u  u h  u  u 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  2 2 4 4 4 (8)   2u  2u  h 4   4u  4u  4u  Аналогично: u1,1  u 1,1  u1, 1  u 1, 1  4u 0,0  2h 2  2  2    4  6 2 2  4   y  6  x x y y   x 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   4  4   u 0, 2  u 0, 2  u 2,0  u 2,0  4u 0,0  4h 2  2  2   3  x  y y     x 8h 6 45   6 u  6 u  4h 8   8 u  8 u   6  6    8  8   O h10  x  y 315 y     x Далее имеем:   (10)   4 12  2 2 2   2 u  2 u  h  2  2   2! y   x   4u  4u    6u  6u  h4  4  4u  h 6  6  41  2 4  4  4   4  612 2 2  2 2 12  2 2    41  2 6  6  6   4 15   x  x 24  y  x y  720  y    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    6u  6u  h8  8  4 1  28 1 2  2  1  4 2  2 4   x y  40320   x y  2 4 2 4     8u  8u   8  8  4  28 16 2 2  12 2 6 y   x     8u  8u   8  8   y   x  2   8u  8u    2u  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  h4 6 4 4 4 4       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      195    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  u  C C  4C 17C 4 8C5   4u h 2   4  4  1  2  3     2 2 C 2  8C 4  16C5   3 6 3  x y y  12 6   x     6 u  6 u  C C 8C 65C 4 16C 5    6 u  6 u  15 300 16   h 4   6  6  1  2  3   C2  C 4  C 5       4 2  2 4  45   x y x y  180 180 3    x y  360 180 45 180    8u  8u  C1 C2 4C 257C4 8C5    8u  8u  28 1904 224   h6   8  8    3  C2  C4  C5       6 2  2 6   x  y 20160 10080 315 10080 315  x  y  x  y 10080 10080 315       8u  70 2240 560  C2  C4  C5   O h8 4 4 x y  10080 10080 315    (13)   Замечание 1. Формула(13) аппроксимирует уравнение Пуассона с точностью до O h8 .   Левая и правая части формулы(13) должны быть равны с точностью до O h . В пределе 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 . Так как 8   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 : 196  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 8C C1 C 65C 4 16C5 1  15 300 16  8 40 16 4  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 4 6 f 4h 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   f 0, 0  h 2  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  u2,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           197     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 (22)   1k 1k 2 k 1 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 A    A1k k 2  A2 k k 1  Fk  k  1k 1k 2 k 1 , k  2, n  2 (23) 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 , (24)               198 xn2  1n2 xn1  2n2 xn   n2 Из формул (24) видно, что x0 , x1 принимают фиксированные значения (условие Дирихле) при любых соседних узловых значениях, если положить  0  x0 , 10  20  0, 1  x1 , 11  21  0 коэффициентов 0 , 10 , 20  1 , 11, 21 по формулам(23) коэффициенты 1k , 2 k , k (формулы прогонки вперёд После определения определяются остальные 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 6   f 4h 4 1 k k k k f 2  h f 3 , k  2, n  2  u 2, 2  u 2, 2  u 2, 2  u 2, 2  h 2  f 0,0  h 2  (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 3  B10  B20   C0 k  0,  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 : 199 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 - неявная система разностных уравнений (25) с  2.471  2    1.242 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 (26) C3 u0, 2  u0, 2   C4 u1, 2  u 1, 2  u 1, 2  u1, 2  Используем формулу (6) для разложения в ряд Тейлора суммы 4 узловых значений в вершинах прямоугольника Ck  A1k 1k 2 1k 1  A1k 2k 2  A2k 1k 1  Ck  B2 k  A1k  A2k  B1k  200  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) получаем уравнение связи: 201 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 (30) 4C3  6C 4  0 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  1   u  u  1  u  4  1   u  u  1   6u  6 u   h       Oh 6    u  h 2   4  4      2 2  6 6  4 2 2 4     y  6 x y  y  72  x y x y    12  x  360  x 2  1  4 f 4 f  1 4 f   f 2 1  4 f  h2   Oh 6   f 0,0  h f  h 4   4  4     Oh 6  (32)  f  f  h 4   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 h8 (33) 2 2 10 40 1200 600 x y Формула простой итерации, приведенная в сборнике[2] Волкова К.Н. и др., отличается от полученной нами формулы (33) отсутствием последних двух слагаемых, поэтому у нас порядок погрешности на 2 выше, а формула точнее. Из формулы (32) легко образовать неявную формулу для линейной сиcтемы уравнений с трёх диагональной матрицей прогонки, получаемая как частный случай из (19) ( A1k  B2 k  0 ):       2  2 k 1 10 k 1 2 k 1 1 k 2 k h2 1 4 f   k k k k 2 4  f    (34) u0,1  u0,0  u0,1   u1,1  u1,1  u1,1  u1,1  u1,0  u1,0  h  f0,0  f  h   2 2  3 3 3 6 3 12 360 180  x  y    2 10 Ak x k 1  C k x k  Bk x k 1  Fk , Ak  Bk  , C k  , 3 3       f 2 1  4 f   1 k 2 k h2 k k k k  , k  1, n  1 Fk   u1,1  u1,1  u1,1  u1,1  u1,0  u1,0  h2  f0,0  f  h4   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) и (37) формулы прогонки вперёд. Условие устойчивости 202 4 10  выполнено автоматически[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 Ak  Bk  C k , k  n  1,1  203 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)) 204 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 и число итераций). Решим также численно и аналитически задачу Пуассона на прямоугольнике: 2   u  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) прогонкой находят 205 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) методом пятидиагональной прогонки и краевым условием Дирихле определяют 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. 206 Приложение 4 УДК 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] ). Согласно теореме Галуа произвольные многочлены степени больше четвёртой имеют корни, для которых невозможно указать замкнутую формулу для решений, т.е. формулу, 207 содержащую только арифметические операции и корни произвольной степени. По теореме Гаусса[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 во всех квадратурных 208 формулах (в данной работе отрезок[-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  С 1 n0 / 2 f (0)   C k  f (2k / n0 )  f (2k / n0 ) , xk  2k / n0 , k  0, n0 / 2 (3) k 1 Сначала, разделим отрезок [-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 x1 x2 x4 x3 x5 x6 x7 С3 С2 С1 С0 С1 С2 С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 1 1 1 1  f ( z)dz   dz  2  С  f ( z)dz   z f ( z)  z 2 : 1 1 1 1 f ( z)  z 6 : dz  1 1  f ( z)dz   z f ( z)  z 4 : 2 4 dz  1 1 2  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 128 C2  2C3  729  7C1  448C2  5103C3 729 решить неоднородную систему 4 линейных уравнений с 4  f ( z)dz   z dz  7  729 C 6 1 1 1  То есть необходимо неизвестными. С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): 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) 209 Проверкой убеждаемся, что коэффициенты С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 частности, если f ( z )  1 :  f ( z )dz  2  68  2 9  18  41  , то интеграл равен длине 1 6 1 i 0  140 35 420  Учитывая шаг h  1 / 3 , перепишем отрезка [-1,1]. 1 105 формулу (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 2 i 0 2 Рассмотрим составную квадратурную формулу для вычисления определённого интеграла, т.е. формула (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  f ( z )dz  А определённый интеграл на отрезке [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 hn0 n0 *k hn Ci  0 2k  hkn0  b  a . Т.е. составная формула Для функции f ( z )  1,  f ( z )dz   2 i 0 2 a (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 неизвестных коэффициентов С0 , С1 , С2 , С3 С4 , С5 являются решением неоднородной системы n0 / 2  1  6 линейных уравнений с 11 алгебраическим порядком точности: 210 17807 4825 5675 16175 26575 16067  (9) , С1   , С2  , С3   , С4  , С5   С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 получим составную формулу: b  a   10 (b  a ) , xi  a  ih, n  10k ,   Ci  2  n i 0  i 0  в которой весовые коэффициенты C i определяются алгоритмом (11): n f ( z )dz  5h Ci f ( xi ), h  (10) 211 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 . 4 5 6 7 78185250 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: 212 (b  a )   14 , x  a  ih , n  14 k ,   Ci  2  i a n i 0  i 0  Весовые коэффициенты С i определяются алгоритмом: b n f ( z )dz  7h Ci f ( xi ), h   если  если   если   если    если   если  если   если   если   j  0 или j  n : С j  (13) 90241897 ; 2501928000 44436679 ; 156370500 770720657 j  2 mod 14 или j  12 mod 14 : С j   ; 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 5600756791 j  6 mod 14 или j  8 mod 14 : С j   ; 833976000 101741867 j  7 mod 14 : С j  ; 13030875 90241897 j  0 mod 14 , j  0, j  n : С j  ; 1250964000 j  1 mod 14 или j  13 mod 14 : С j  (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 ( n 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 t  s hn0 n  hn0  n  hn0  n t t s t s t s    x dx  C x  ( z  c ) dz  C c  z  C c z dz  Ci zi   0, t  0, n0 , s  0, t         i i i i t a    2 i 0  2  i 0  2  i 0 s 0 H  H  b H H t 213 b т.е. из (15) следует  x t dx  a hn0 2 n C x i i 0 не изменяет алгебраического биномиальный коэффициент. b r( f )   f ( x)dx  a  hn0 2 n0  2  t  n0 1 hn0 n  Ci f ( xi )  2 i0 t i , t  0, n0 (параллельный перенос системы координат порядка точности  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 ! ( n  1 )! ( n  2 )! t 0   n0 f (t ) (c) t f ( n0 1) (c) n0 1 f ( n0  2) (c) n0  2  C zi  zi  z i  O H n0  4  i  (n0  1)! (n0  2)! i 0  t 0 t!  H r( f )  f ( n0  2 ) (c ) (n0  2)! n   Ci z i  O H t n0  4 i 0 H n0 3 формулы). H n hn f ( t ) (c )    z t dz  0  t!   H 2 квадратурной hn 2  0 n0  3 2 H    f n0  t 0 ( n  2)  f 0 (c) 2 H n0 3 hn0   (n  2)! n  3  2   z  Ci  i   H i 0 n n0  2  O H  , hn (c )  t   z dz  0 t!   H 2 H (t ) n C z i 0 i i n0  2  Cts - d z   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 z    Ci  i  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 214 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), мы получим и двойную точность численное значение. В программе получена двойная точность, т.к. epsilon  8  1016 . 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) 215 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 ba d c d c , h2  , i, h3  , i, j, s  0, n n n n h1  Формулы (20),(21),(22)получим подстановкой в (18) n0  6,10,14 соответственно b d 1) (b  a ) (d  c) , h2  , n n I 2    f ( x, y )dxdy 9h1h2  Ci , j f xi y j , h1  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 n n j 0 i 0 a c (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) b d I2   f ( x, y )dxdy 49h1h2  Ci , j f xi y j , h1  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] равноудалённые от центра точки имеют равные весовые коэффициенты. 216 Не теряя общности, доказательство рассмотрим для двумерного случая, выберем каноническую область квадрат ( 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 , поэтому решением этого же уравнения будут пары чисел: 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 весовые коэффициенты на всех восьми (или четырёх) указанных точках имеют равные значения. 2 2 217 Доказанное утверждение 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  1 1 11 f ( x, y)dxdy  C0 f 0,0  C1  f   3 ,0   f  3 ,0   f  0, 3   f  0, 3    C2  f   3 , 3   f   3 , 3     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] используется множество линейно независимых степенных функций двух переменных n0 n0 1 n0 1 n0 2 2 1, x, y, x , xy, y ,...x , x y,...xy , y . Здесь 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 в силу симметрии получим тот же результат): 218 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 y 2 dxdy  1 1 4 4 32 64 8 32  С2  С4  С5  С7  С8  4С9 9 81 81 81 9 9 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   (28)    420  176400 Подставим коэффициенты(28) Сi i  0,9 в интегральную квадратурную формулу (26) для двойного интеграла от произвольной непрерывной функции f ( x, y ) проверяя справедливость Сi , j  Ci C j , i, j  0, n0 . Результаты проверки собраны в таблице 3. Таблица 3 219 f ( x, y )  1 f ( x, y )  x 2 f ( x, y )  x 4 f ( x, y )  x 2 y 2 f ( x, y )  x 6 f ( x, y )  x 4 y 2 f ( x, y )  x 8 f ( x, y )  x 6 y 2 f ( x, y )  x 4 y 4 num(1)  3.9999999999999996 num(2)  1.3333333333333333 num(3)  0.4444444444444444 num(4)  0.7999999999999999 num(5)  0.5714285714285714 num(6)  0.2666666666666666 num(7)  0.4707818930041152 num(8)  0.1904761904761905 num(9)  0.0905820105820106 exact (1)  4.0000000000000000 exact (2)  1.3333333333333333 exact (3)  0.4444444444444444 exact (4)  0.8000000000000000 exact (5)  0.5714285714285714 exact (6)  0.2666666666666667 exact (7)  0.4444444444444444 exact (8)  0.1904761904761905 exact (9)  0.1600000000000000 В первом столбце указана функция, во втором - численное значение правой части (26), в третьем столбце точное значение интеграла от указанной функции (левая часть(26)). Из таблицы 3, что квадратурная интегральная формула (26) имеет седьмой алгебраический порядок точности по определению 2 (учитывая тривиальное тождество 0=0 для функции f ( x, y )  x l y s , l  s  7 (27)) . Нами показано, что с использованием тождества Сi , j  Ci C j , i, j  0, n0 n0  6 двухмерная квадратурная формула (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  220 Рассмотрим равновеликое отображение обобщённых координат - полярных в кольце (круге) на прямоугольник в декартовой системе координат, сохраняющее площади фигур и равномерный шаг сетки вдоль всех координатных линий: 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 9 0 0 r sin  rdrd  10 2 0 1  cos 2 d  10   4 0   10   3141592653.589793   Программа для двойных интегралов в полярной системе координат с учётом формул(29),(13),(14): при n1  5, r1  0.0, r2  10.0 возвращает значения (в программе N  n ): delta n=14 k=1 numerical=3141521192.673302 exact=3141592653.589793 =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  n n 2 n 221 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 0 5 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  r2  r1r2  r1   , c  r2  r1 , a   r2  r1 , b    3 r2  r1  где: r2 ,r1  внешний и внутренний радиусы шарового слоя, a, b, c  стороны параллелепипеда 222   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    y   2 2 I 3    f r , , r dr sin dd   f  r1  z, , x r1  z  dz sin  dy dx b a  a  b b r1 0 0 0 0 0  c b a 2 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        r  r   2 1  y 2  f  r1  z, , b a    y  2 x r1  z  sin dzdydx   b  223 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   n0 h1 n0 h2 n0 h3 2 2 2 n n n  C i, j ,k  10  2 10 10 2      (30) пример: 2 r 1 1 10 10      1  cos 2  d  1  cos 2  d   10  5 10 5 2 0 2 0 20 5 0 0 Программа для тройных интегралов в сферической системе координат с учётом формул (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) в сферической системе координат с сохранением алгебраического порядка точности, что проверено численно. Литература 1)Тихонов А.Н., Самарский А.А. Уравнения математической физики. – М.:Наука, 2008. 2)Пикулин В.П.,Похожаев С.И. Практический курс по уравнениям математической физики. – М.:Наука,1995. 3)Н.С.Бахвалов, А.В.Лапин, Е.В.Чижонков. Численные методы в задачах и упражнениях. – М.:БИНОМ. Лаборатория знаний,2010. 4)Голубева О.В.,Ехилевский С.Г., Пастухов Ю.Ф., Пастухов Д.Ф. Об эффективном поиске безусловного экстремума гладких функционалов в конечномерных задачах. Вестн. Полоц. гос. ун-та. Сер. С. Фундаментальные науки. – 2016. – № 4 . –С. 119 – 131.    r 7  sin 2  sin  r 2 dr sin dd    224 5) Бутузов В.Ф., Н.Ч.Крутицкая, Г.Н.Медведев, А.А.Шишкин. Математический анализ в вопросах и задачах, – М. Физико – математическая литература, 2001 – 480 с. 6)Бартеньев О.В. “Математическая библиотека IMSL”.:(Ч1). – М .:Диалог МИФИ,2001. – 457 с. 7) Пастухов Ю.Ф., Пастухов Д.Ф. Задача построения поля линий тока по температурному разрезу. Вестн. Полоцкого государственного ун-та. Серия С. Фундаментальные науки. – 2015. – № 4 . –С. 27 – 36. 225 ЛИТЕРАТУРА 1.Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы. – 6-е изд. – М.:БИНОМ. Лаборатория знаний,2008. 2.Калиткин Н.Н. Численные методы. – М.:Изд. Наука,1977. 3.Бахвалов Н.С., Лапин А.В., Чижонков Е.В. Численные методы в задачах и упражнениях: учебное пособие. – М.:БИНОМ. Лаборатория знаний,2010. – 240 с. 4.Самарский А.А. Теория разностных схем. – М.:Наука, 1983. 5. Самарский А.А., Вабишевич П.Н., Самарская Е.А. Задачи и упражнения по численным методам. – М.: Эдиториал УРСС, 2000. 6.Марчук Г.И. Методы вычислительной математики. – М.:Наука, 1980. 7.Воеводин В.В., Кузнецов Ю.А. Матрицы и вычисления. – М.:Наука,1984. 8.Голуб Дж., Ван Лоун Ч. Матричные вычисления. – М.:Мир, 1980. 9.Демидович Б.П., Марон И.А., Шувалова Э.З. Численные методы анализа. – М.:ФИЗМАТЛИТ,1962. 10.Самарский А. А., Вабищевич П. Н. Вычислительная теплопередача. — М.: Едиториал УРСС, 2003. — 784 с. 11.Алгоритмы. Просто как дважды два / И. В. Красиков, И. Е. Красикова. — М.: Эксмо, 2007. — 256 с. 12.Тихонов А.Н., Самарский А.А. Уравнения математической физики. – М.:Наука, 2008. 13.Самарский А.А., Вабишевич П.Н. Численные методы обратных задач математической физики. – М.:Издательство ЛКИ, 2014.- 480 с. 14.Андерсон Д., Таннехилл Дж., Плетчер Р. Вычислительная гидромеханика и теплообмен: В 2-х т. Т. 2: Пер. с англ. — М.: Мир, 1990. — 728—392 с, ил. 15.Бахвалов Н.С., Корнев А.А., Чижонков Е.В. Численные методы. Решения задач и упражнения. – М.:Дрофа.2009. 16.Годунов С.К., Рябенький В.С. Разностные схемы. – М.:Наука, 1977. 17. Уилкинсон Дж.Х. Алгебраическая проблема собственных значений. – М.:Наука, 1970. 226 УДК 517. 6 Численные методы. Лекции. Численный практикум. Пастухов Дмитрий Феликсович, кандидат физико-математических наук Пастухов Юрий Феликсович, кандидат физико-математических наук Полоцкий государственный университет 2018 227
«Численные методы» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач

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

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

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

Перейти в Telegram Bot