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

Численное решение линейных алгебраических систем (СЛАУ). Численное решение уравнений. Приближение функций. Численное интегрирование. Численное интегрирование обыкновенных дифференциальных уравнений.

  • ⌛ 2004 год
  • 👀 269 просмотров
  • 📌 200 загрузок
  • 🏢️ Московский государственный университет имени М.В. Ломоносова
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Численное решение линейных алгебраических систем (СЛАУ). Численное решение уравнений. Приближение функций. Численное интегрирование. Численное интегрирование обыкновенных дифференциальных уравнений.» pdf
Аннотация Книга содержит материал семестрового курса, который авторы в течение многих лет читали на факультете вычислительной математики и кибернетики МГУ и в его филиалах в Севастополе и Астане для студентов второго курса. Цель книги – познакомить читателей с численными методами решения основных задач линейной алгебры, математического анализа и обыкновенных дифференциальных уравнений. Книга предназначена для студентов классических университетов, педагогических и технических вузов, специальность которых требует применения компьютерных методов в их будущей профессиональной деятельности. Предисловие Книга содержит материал семестрового курса, который авторы в течение многих лет читали на факультете вычислительной математики и кибернетики МГУ, а в последние годы и в его филиалах в Севастополе и Астане. Опыт преподавания показал, что для студентов прикладных специальностей, имеющих дело с компьютерами, весьма полезно приступить к изучению численных методов по возможности раньше, одновременно с приобретением навыков программирования, закрепляя навыки во время работы в компьютерном практикуме. Это способствует более глубокому неформальному усвоению материала как по математике, так и по компьютерным технологиям. Поэтому по инициативе академика А. А. Самарского был разработан и включен в учебный план факультета курс «Вводные лекции по численным методам», который читается в третьем семестре. Цель курса заключается в том, чтобы рассказать студентам о численных методах, которые появляются с самого начала их обучения в базовых математических курсах - в линейной алгебре, математическом анализе, обыкновенных дифференциальных уравнениях. Такой принцип отбора материала и определил включение в название курса, а теперь и книги термина «Вводные лекции». Теоретическое обоснование методов проводится на достаточно строгом уровне с доказательством сходимости и оценкой погрешности. Проводится сравнение разных методов решения одной и той же математической задачи, обсуждаются их достоинства и недостатки. Особое внимание обращается на алгоритмические аспекты и организацию вычислительного процесса. Книга построена таким образом, что ее отдельные главы можно читать независимо. Ссылок на материал предыдущих глав практически нет. Этот принцип выдержан также при техническом оформлении материала: нумерация формул, рисунков, таблиц в каждой главе независимая. Книга написана, прежде всего, в расчете на будущих специалистов по прикладной математике и информатике, которых сейчас готовят многие университеты и технические вузы. Ею также могут воспользоваться студенты естественных факультетов университетов, педагогических и экономических институтов при знакомстве с численными методами решения базовых математических задач и компьютерной обработкой различного рода информации. Авторы признательны своему учителю академику Александру Андреевичу Самарскому, под влиянием которого сложился подход и стиль изложения книги. Полезные обсуждения ряда вопросов состоялись с А. В. Гулиным, Г. Д. Ким, С. И. Мухиным. Мы считаем приятным долгом поблагодарить их за это. Благодарим также А. Я. Буничеву, А. В. Леоненко, А. Б Хруленко за большую помощь при подготовке компьютерной версии рукописи. Оглавление Глава 1. Численное решение линейных алгебраических систем (СЛАУ). 1. Прямые методы решения СЛАУ. 1.1. Формулы Крамера. 1.2. Метод Гаусса. 1.3. Системы с диагональным преобладанием. 1.4. Системы с трехдиагональной матрицей. Метод прогонки 2. Обусловленность СЛАУ. 2.1. Норма матрицы. 2.2. Корректность решения СЛАУ. 2.3. Число обусловленности матрицы. Корректность решения СЛАУ. 2.4. Оценка числа обусловленности. 3. Итерационные методы. 3.1. Построение итерационных последовательностей. 3.2. Проблема сходимости итерационного процесса. 3.3. Достаточные условия сходимости итерационного процесса. 3.4. Метод простой итерации. 3.5. Неявные методы. Метод Зейделя. 3.6. Метод верхней релаксации. Глава 2. Численное решение уравнений. 1. Метод вилки. Теорема о существовании корня непрерывной функции. 2. Метод итераций (метод последовательных приближений). 3. Метод касательных (метод Ньютона). 4. Заключительные замечания. Глава 3. Приближение функций. 1. Интерполирование 1.1. Классическая постановка задачи интерполирования. 1.2. Интерполирование полиномами. 1.3. Построение интерполяционного полинома в форме Лагранжа. 1.4. Интерполяционный полином в форме Ньютона. 1.5. Погрешность интерполирования. 1.6. О сходимости интерполяционного процесса. 1.7. Интерполяционный полином Эрмита. 2. Интерполирование сплайнами. 2.1. Определение кубического сплайна. 2.2. Формулировка системы уравнений для коэффициентов кубического сплайна. 2.3. Редукция системы. 2.4. Замечание о решении системы. 2.5. Сходимость и точность интерполирования сплайнами. 3. Метод наименьших квадратов. Глава 4. Численное интегрирование. 1. Формула Ньютона-Лейбница и численное интегрирование. 2. Квадратурные формулы прямоугольников, трапеций, Симпсона. 2.1. Квадратурные формулы прямоугольников, трапеций, Симпсона и их особенности. 2.2. Сходимость и точность квадратурных формул прямоугольников, трапеций и Симпсона. 2.3. Апостериорные оценки погрешности при численном интегрировании. 3. Квадратурные формулы Гаусса. 3.1. Задача построения оптимальных квадратурных формул. 3.2. Полиномы Лежандра. 3.3. Узлы и весовые коэффициенты квадратурных формул Гаусса. 3.4. Исследование квадратурной формулы. 4. Построение первообразной с помощью численного интегрирования. Глава 5. Численное интегрирование обыкновенных дифференциальных уравнений. 1. Разностная аппроксимация производных. 1.1. Сеточные функции. 1.2. Разностная аппроксимация первой производной. 1.3. Разностная аппроксимация второй производной. 2. Численное решение задачи Коши. 2.1. Метод Эйлера. 2.2. Повышение точности разностного метода. 2.3. Метод Рунге-Кутта. 2.4. Метод Адамса. 3. Численное решение краевой задачи для линейного дифференциального уравнения второго порядка. Подписи под рисунками Глава 1. Рис. 1. Определение границы интервала сходимости τ 0 метода простой итерации. Рис. 2. Определение оптимального значения итерационного параметра τ * , при котором скорость сходимости метода простой итерации наибольшая. Глава 2. Рис. 1. График функции f ( x ) = x − cos x . Рис. 2. Построение последовательности {xn } по методу касательных. Рис. 3. Случай, когда процесс построения последовательности {xn } обрывается из-за плохого выбора нулевого приближения. Глава 3. Рис. 1. Сравнение графиков функции y = sin ( x ) (сплошная линия) и интерполяционного полинома P2 ( x ) (пунктир). 1 ⎞⎛ 9⎞ ⎛ Рис. 2. График функции ω 4 ( x ) = ⎜ x 2 − ⎟ ⎜ x 2 − ⎟ 4 ⎠⎝ 4⎠ ⎝ Рис. 3. Сравнение графиков функции y = sin ( x ) (сплошная линия) и интерполяционного полинома H 2 ( x ) (пунктир). Рис. 4. Сравнение значений функции, приведенной в таблице, и линейной функции F ( x ) = 1.004 + 0.984 x . Значения yi = f ( xi ) заданы с погрешностью ε = 0.1 . Глава 4. Рис. 1. Геометрическая интерпретация формулы прямоугольников. Рис. 2. Геометрическая интерпретация формулы трапеций. Рис. 3. График интегрального синуса. Рис. 4. График функции ошибок. Глава 5. Рис. 1. Зависимость точности численного решения задачи Коши (51), (52) по схеме Эйлера от шага h . Линии I, II, III соответствуют шагом h1 = 0.25 , h1 = 0.05 , h1 = 0.01 , При выбранном масштабе линия III практически совпадает с графиком аналитического решения задачи (53) (пунктирная линия). µ 1 µn (τ) = 1 − λnτ τ0 = 2 / λ1 µ1 (τ) = 1 − λ1τ -1 µ2 (τ) = 1 − λ2τ τ µ 1 |µ2(τ)| ||C (τ)|| |µ1(τ)| −1 |µn(τ)| τ0 / 2 τ* τ0 τ y a c1 11 00 00 11 1 1 00 11 00 11 1 x3 x2 x1 x1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0b 1 x y 11 00 x1 a c1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 00 x0 0b 1 x y a x0 x1 x2 x3 x4 b x y a x0 x1 x2 x3 x4 b x -1- Глава 1. ЧИСЛЕННОЕ РЕШЕНИЕ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ СИСТЕМ (СЛАУ) В этой главе рассматривается одна из самых важных задач линейной алгебры – решение систем линейных алгебраических уравнений, в которых число уравнений равно числу неизвестных: a11 x1 + a12 x2 + K + a1n xn = f1 a21 x1 + a22 x2 + K + a2 n xn = f 2 KKKKKKKKKKKK или в сокращенной записи: (1) an1 x1 + an 2 x2 + K + ann xn = f n n ∑a x j =1 ij j = f i , i = 1, 2,K, n . Коэффициенты ai , j при неизвестных x j образуют матрицу системы (1) ⎡ a11 a12 K a1n ⎤ ⎢a a22 K a2 n ⎥ 21 ⎥. A= ⎢ (2) ⎢K K K K ⎥ ⎢a ⎥ ⎣ n1 an 2 K ann ⎦ Всюду на протяжении этой главы мы будем считать определитель матрицы отличным от нуля ∆ = det A ≠ 0 . (3) В этом случае система (1) называется невырожденной. Решение невырожденной системы всегда существует и является единственным. Обсудим методы фактического построения этого решения. §1. Прямые методы решения СЛАУ. Прямыми называются методы, которые позволяют получить точное решение невырожденной системы (1) за конечное число операций. 1.1. Формулы Крамера Формулы Крамера представляют компоненты x j решения системы (1) в виде отношения двух определителей: x j = ∆ j / ∆ , j = 1, 2,K, n , (4) где ∆ j = det Aj , j = 1, 2,K, n . (5) Здесь матрица Aj получается из матрацы A заменой ее j -го столбца столбцом правых частей системы (1) -2⎡ a11 K a1, j −1 f1 a1, j +1 K a1n ⎤ ⎢a K a f 2 a2, j +1 K a2 n ⎥ 21 2, j −1 ⎥ (6) Aj = ⎢ M M M M M M ⎥ ⎢ M ⎢a K a f n an , j +1 K ann ⎥⎦ n , j −1 ⎣ n1 С теоретической точки зрения формулы Крамера (4) дают исчерпывающее решение проблемы. Чтобы найти решение системы (1), нужно подсчитать n + 1 определитель. Это можно сделать за конечное число арифметических операций. Однако с точки зрения практики важное значение имеет фактическое число необходимых операций. Здесь нас и поджидает главная трудность. Определитель n ого порядка – это n ! слагаемых, каждое из которых является произведением n чисел. Таким образом, для его вычисления нужно выполнить ( n − 1) n ! умножений и n ! сложений – всего Qn = n ⋅ n ! арифметических операций. Оценим это число. При n 1 число n ! можно подсчитать с помощью асимптотической формулы Стирлинга: n n 3 n⎞ ⎛n⎞ 2 ⎛ n ! ≈ 2π n ⎜ ⎟ , так что Qn ≈ 2π ⋅ n ⎜ ⎟ . ⎝e⎠ ⎝e⎠ При умеренном значении n = 20 эта формула дает астрономическое число: Q20 ≈ 5 ⋅ 1019 . Компьютеру, производительность которого составляет m операций/сек, для вычисления определителя двадцатого порядка понадобится время T20 ≈ (5 ⋅ 1019 / m) сек. В частности, при m = 1010 операций/сек получим T20 ≈ 5 ⋅ 109 сек. ≈ 170 лет. Даже увеличение производительности компьютера на два, три порядка не спасает положения. Такие результаты получены при n = 20 , в то время, как в современных прикладных задачах приходится решать системы с n = 106 и более уравнений. Из проведенного анализа ясно, что рассчитывать решение СЛАУ по формулам Крамера с вычислением определителей «в лоб» невозможно, т. е. практическая ценность этих формул невелика. 1.2. Метод Гаусса. Блестящий конструктивный выход из критической ситуации, описанной выше, дает метод Гаусса. Этот метод удобно условно разделить на два этапа. На первом этапе (прямой ход) система (1) приводится к треугольному виду. Затем на втором этапе (обратный ход) осуществляется последовательное отыскание неизвестных x1 ,K, xn из этой треугольной системы. Перейдем к подробному описанию метода Гаусса. Не ограничивая общности, будем считать, что коэффициент a11 , который называют ведущим элементом первого шага, отличен от нуля (в случае a11 = 0 поменяем местами уравнения с номерами 1 и i , -3при котором ai1 ≠ 0 ; поскольку система предполагается невырожденной, то такой номер i заведомо найдется). Разделим все члены первого уравнения на a11 и введем в качестве новых коэффициентов c1i , i = 2,K n и правой части y1 отношения a a a f c12 = 12 , c13 = 13 , K c1n = 1n , y1 = 1 . (7) a11 a11 a11 a11 Вычтем из каждого i -го уравнения системы ( i = 2,K , n ) первое уравнение умноженное на ai1 . Проделав это, мы исключим неизвестное x1 из всех уравнений, кроме первого. Преобразованная таким образом система (1) примет эквивалентный вид: x1 + c12 x2 + c13 x3 + K + c1n xn = y1 (1) (1) a22 x2 + a23 x3 + K + a2(1)n xn = f 2(1) KKKKKKKKKKKKK . (8) (1) an(1)2 x2 + an(1)3 x3 + K + ann xn = f n(1) Значения новых коэффициентов и правых частей системы (8) вычисляются по формулам: a f aij(1) = aij − ai1 1 j , f i (1) = f i − ai1 1 . (9) a11 a11 Естественно выделить из (8) «укороченную» систему, содержащую n − 1 уравнение (1) (1) a22 x2 + a23 x3 + K + a2(1)n xn = f 2(1) (1) (1) a32 x2 + a33 x3 + K + a3(1)n xn = f 3(1) KKKKKKKKKKKKK (1) an(1)2 x2 + an(1)3 x3 + K + ann xn = f n(1) . Продолжая далее процесс исключения, после ( n − 1) шага редуцируем исходную систему к виду: x1 + c12 x2 + c13 x3 + K + c1n xn = y1 x2 + c23 x3 + K + c2 n xn = y2 KKKKKKKKKKKKKK xn−1 + cn −1,n xn = yn−1 (10) xn = y n или в матричной форме Cx = y , где матрица C является верхней треугольной матрицей с единицами на главной диагонали -4- ⎡1 c12 c13 K c1n ⎤ ⎢0 1 c K c ⎥ 23 2n ⎥. (11) C=⎢ M M M ⎥ ⎢M M ⎢0 0 0 K 1 ⎥⎦ ⎣ Построение системы (10) завершает прямой ход метода Гаусса. Обратный ход состоит в последовательном определении неизвестных из системы (10) в обратном порядке: xn = y n xn −1 = yn −1 − cn−1,n xn xn −2 = yn−2 − cn −2,n−1 xn −1 − cn−2,n xn KKKKKKKKKKKK (12) x1 = y1 − c12 x2 − c13 x3 − K − c1n xn Подсчитаем число арифметических операций, которое требуется выполнить при решении СЛАУ по методу Гаусса. Первый шаг прямого хода, согласно формулам (7) и (9), требует n делений и n ( n − 1) сложений и умножений. Мы учитываем деления отдельно, поскольку для компьютера, как и для человека, это более сложная операция. Переходя последовательно от n к ( n − 1) , потом от ( n − 1) к ( n − 2 ) и т.д. подсчитаем общее число арифметических операций на стадии прямого хода. Оно включает делений 1 Q1 = n + ( n − 1) + L + 1 = n ( n + 1) , (13) 2 сложений и умножений 1 Q2 = n ( n − 1) + ( n − 1)( n − 2 ) + L + 2 ⋅ 1 = n ( n 2 − 1) . (14) 3 Обратный ход, согласно формулам (12), вообще не требует деления, а необходимое число сложений и умножений подсчитывается по формуле 1 (15) Q3 = 1 + 2 + L + ( n − 1) = n ( n − 1) . 2 Сравнивая (13) и (14) с (15), мы видим, что обратный ход существенно проще прямого. Сумма (14) и (15) дает общее число сложений и умножений, необходимое для решения СЛАУ по методу Гаусса: 1 5⎞ 1 ⎛ Q = Q2 + Q3 = n ( n − 1) ⎜ n + ⎟ = n 3 + O ( n 2 ) . (16) 3 2⎠ 3 ⎝ Оно не идет ни в какое сравнение с числом n ⋅ n ! , которое требуют формулы Крамера при прямом вычислении определителей. Описанная выше процедура решения системы (1) методом Гаусса может оказаться неустойчивой по отношению к случайным ошибкам, которые неизбежны при компьютерных расчетах в результате округления чисел из-за конечной длины машинного слова. Действительно, предположим, что в процессе приведения системы (1) к треугольному виду (10) у матрицы C (11) образовались большие по модулю -5элементы: ci , j > 1 и даже ci , j 1 . Тогда при вычислении неизвестных по формулам (12) во время обратного хода умножение найденных с ошибками округления чисел xi на большие по модулю элементы матрицы C приведет к увеличению этих ошибок. Наоборот, если матрица C оказалась такой, что все ее элементы удовлетворяют условию ci , j ≤ 1 , (17) то роль ошибок округления в процессе вычислений будет нивелироваться. Опишем, как можно добиться выполнения условия (17). Приступая к первому шагу прямого хода метода Гаусса, рассмотрим элементы a1, j первой строки матрицы A и найдем среди них элемент наибольший по модулю. Пусть он имеет номер j1 . Поменяем в системе (1) первый столбец и столбец с номером j1 местами, изменив соответствующим образом нумерацию неизвестных. В результате такой процедуры наибольший по модулю элемент первой строки станет ведущим элементом первого шага a1,1 . Благодаря этому элементы c1, j первой строки матрицы C , которые рассчитываются по формулам (7), будут удовлетворять неравенству (17). Процедуру выделения наибольшего по модулю элемента в очередной строке и превращения его в ведущий элемент нужно затем повторять во время каждого шага прямого хода метода Гаусса. В этом случае все элементы ci , j треугольной матрицы C (11) будут удовлетворять неравенствам (17), обеспечивая устойчивость метода по отношению к ошибкам округления, Такой способ коррекции называется выбором ведущего элемента по строке. Поясним важность специального выбора ведущего элемента в каждой строке во время прямого хода метода Гаусса на простом примере. Рассмотрим систему трех уравнений с тремя неизвестными 1.2357 x1 + 2.1742 x2 − 5.4834 x3 = −2.0735 3.4873x1 + 6.1365 x2 − 4.7483x3 = 4.8755 (18) 6.0696 x1 − 6.2163x2 − 4.6921x3 = −4.8388. Легко проверить, что ее решение имеет вид x1 = x2 = x3 = 1 . (19) Решим систему (18) с помощью метода Гаусса, не обращая внимание на величины элементов матрицы. Все результаты расчетов условимся представлять в виде чисел с плавающей запятой с пятью значащими цифрами. Тогда после прямого хода получим систему треугольного вида: x1 + 1.7595 x2 − 4.4375 x3 = −1.6780 x2 + 15324 x3 = 15324 (20) x3 = 0.99992. Значение x3 = 0.99992 выглядит вполне приемлемым. Однако для двух других неизвестных мы получим следующие значения: x2 = 2 , x1 = −0.75990 . Причина случившегося заключается в потере точности при вычислении x2 из-за больших -6значений коэффициента c23 и правой части y2 треугольной системы (20), которые вычислены с ошибками вследствие отбрасывания "лишних" значащих цифр. Теперь воспользуемся процедурой выбора главного элемента по строке. Для этого в данном случае достаточно поменять местами первый и третий столбцы матрицы системы. В результате система примет вид: −5.4834 x3 + 2.1742 x2 + 1.2357 x1 = −2.0735 −4.7483x3 + 6.1365 x2 + 3.4873x1 = 4.8755 . (21) −4.6921x3 − 6.2163x2 + 6.0696 x1 = −4.8388 При такой ее записи ведущим элементом первого шага становится число −5.4834 . Оно является наибольшим по модулю элементом первой строки системы (21). Теперь применение метода Гаусса приводит к следующей системе с треугольной матрицей: x3 − 0.39651x2 − 0.22535 x1 = 0.37814 x2 + 0.56827 x1 = 1.5682 . (22) x1 = 0.99995 Все ее элементы удовлетворяют неравенству (17). Осуществляя обратный ход, получим решение системы: x1 = 0.99995 , x2 = 0.99996 , x3 = 0.99999 . (23) Полученные значения неизвестных xi хорошо согласуются с ответом (19) в рамках принятой точности вычислений. Нетрудно предвидеть, что при бесконтрольном применении метода Гаусса для решения больших систем ( n >> 1 ) возможностей для потери точности становится еще больше, в то время как выполнение процедуры выбора ведущих элементов по строкам снимает эту проблему. В заключение отметим, что первый этап метода Гаусса может быть использован для вычисления определителя матрицы A . Прямой ход метода Гаусса основан на многократном выполнении операции сложения одной из строк матрицы с другой строкой, взятой с некоторым множителем, что не меняет определителя. Следует лишь учесть, что при делении ведущей строки на ее диагональный элемент определитель также делится на этот элемент. Кроме того, иногда приходится переставлять столбцы при выборе главного элемента по строке. Поскольку определитель приведенной треугольной системы (матрицы C ) всегда равен единице, то определитель ∆ исходной системы равен (1) ( n −1) , ∆ = det A = (−1) k a11a22 ...ann где k – число перестановок столбцов в процессе редукции матрицы A к треугольной матрице C . 1.3. Системы с диагональным преобладанием. Определение. Назовем систему (1) системой с диагональным преобладанием по строке, если элементы матрицы A (2) удовлетворяют неравенствам: -7n ai ,i > ∑ ai , j , 1 ≤ i ≤ n (24) j =1 j ≠i Неравенства (24) означают, что в каждой строке матрицы A диагональный элемент выделен: его модуль больше суммы модулей всех остальных элементов той же строки. Теорема Система с диагональным преобладанием всегда разрешима и притом единственным образом. Рассмотрим соответствующую однородную систему: n ∑a j =1 i, j xj = 0, 1≤ j ≤ n (25) Предположим, что она имеет нетривиальное решение x j , Пусть наибольшая по модулю компонента этого решения соответствует индексу j = k , т. е. x k > 0 , xk ≥ x j , 1 ≤ j ≤ n . (26) Запишем k -ое уравнение системы (25) в виде n a k ,k xk = − ∑ a k , j x j j =1 j ≠k и возьмем модуль от обеих частей этого равенства. В результате получим: n ak ,k xk ≤ ∑ ak , j x j ≤ xk j =1 j ≠k n ∑a j =1 j ≠k k, j . (27) Сокращая неравенство (27) на множитель xk , который, согласно (26), не равен нулю, придем к противоречию с неравенством (24), выражающим диагональное преобладание. Полученное противоречие позволяет последовательно высказать три утверждения: 1. Однородная система (25) с диагональным преобладанием имеет только тривиальное решение. 2. Определитель матрицы A с диагональным преобладанием не равен нулю. 3. Неоднородная система (1) с диагональным преобладанием всегда разрешима и притом единственным образом. Последнее из них означает, что доказательство теоремы завершено. 1.4. Системы с трехдиагональной матрицей. Метод прогонки. При решении многих задач приходится иметь дело с системами линейных уравнений вида: Ai xi −1 + Ci xi + Bi xi +1 = Fi , i = 1,..., n − 1 , (28) x0 = q0 , xn = qn , (29) -8где коэффициенты Ai , Ci , Bi , правые части Fi (i = 1,K, n − 1) известны вместе с числами q0 и qn . Дополнительные соотношения (29) часто называют краевыми условиями для системы (28). Во многих случаях они могут иметь более сложный вид. Например: x0 = p0 x1 + q0 ; xn = pn xn −1 + qn , где p0 , q0 , pn , qn - заданные числа. Однако, чтобы не усложнять изложение, мы ограничимся простейшей формой дополнительных условий (29). Пользуясь тем, что значения x0 и xn заданы, перепишем систему (28) в виде: C1 x1 + B1 x2 = F1 − A1q0 A2 x1 + C2 x2 + B1 x3 = F2 (30) M An −1 xn −2 + Cn −1 xn−1 = Fn −1 − Bn−1qn Матрица этой системы имеет трёхдиагональную структуру: 0 ⎤ ⎡ C1 B1 0 0 L 0 ⎢A C B 0 L 0 0 ⎥ 2 2 ⎢ 2 ⎥ 0 ⎥ (31) ⎢ 0 A3 C3 B3 L 0 ⎢K K K K K K K ⎥⎥ ⎢ ⎢⎣ 0 0 0 0 K An−1 Cn−1 ⎥⎦ Это существенно упрощает решение системы (28) благодаря специальному методу, получившему название метода прогонки. Метод основан на предположении, что искомые неизвестные xi и xi +1 связаны рекуррентным соотношением xi = αi +1 xi +1 + β i +1 , 0 ≤ i ≤ n − 1 . (32) Здесь величины α i +1 , β i +1 , получившие название прогоночных коэффициентов, подлежат определению, иcходя из условий задачи (28), (29). Фактически такая процедура означает замену прямого определения неизвестных xi задачей определения прогоночных коэффициентов с последующим расчетом по ним величин xi . Для реализации описанной программы выразим с помощью соотношения (32) xi −1 через xi +1 : xi −1 = αi xi + β i = α iα i +1 xi +1 + α i β i +1 + β i и подставим xi −1 и xi , выраженные через xi +1 , в исходные уравнения (28). В результате получим: ( Aiα iα i +1 + Ciαi +1 + Bi ) xi +1 + Aiαi β i +1 + Ai β i + Ci β i +1 − Fi = 0 , i = 1, 2,K n − 1 . Последние соотношения будут заведомо выполняться и притом независимо от решения, если потребовать, чтобы при i = 1, 2,K n − 1 имели место равенства: Aiα iα i +1 + Ciα i +1 + Bi = 0, Aiα i β i +1 + Ai β i + Ci β i +1 − Fi = 0. Отсюда следуют рекуррентные соотношения для прогоночных коэффициентов: -9− Bi F − Ai β i , β i +1 = i , i = 1, 2,K n − 1 . (33) Aiα i + Ci Aiα i + Ci Левое граничное условие x0 = q0 и соотношение x0 = α1 x1 + β1 непротиворечивы, если положить α1 = 0, β1 = q0 . (34) Остальные значения коэффициентов прогонки α 2 ,K,α n и β 2 ,K, β n находим из (33), чем и завершаем этап вычисления прогоночных коэффициентов. Далее, согласно правому граничному условию xn = qn . (35) Отсюда можно найти остальные неизвестные xn −1 ,K x1 в процессе обратной прогонки с помощью рекуррентной формулы (32). Число операций, которое требуется для решения системы общего вида (1) методом Гаусса, растет при увеличении n пропорционально n 3 . Метод прогонки сводится к двум циклам: сначала по формулам (33) рассчитываются прогоночные коэффициенты, затем с их помощью по рекуррентным формулам (32) находятся компоненты решения системы xi . Это означает, что с увеличением размеров системы число арифметических операций будет расти пропорционально n , а не n 3 . Таким образом, метод прогонки в пределах сферы своего возможного применения является существенно более экономичным. К этому следует добавить особую простоту его программной реализации на компьютере. Во многих прикладных задачах, которые приводят к СЛАУ с трехдиагональной матрицей, ее коэффициенты удовлетворяют неравенствам: Ci > Ai + Bi , (36) которые выражают свойство диагонального преобладания. В частности, мы встретим такие системы в третьей и пятой главе. Согласно теореме предыдущего раздела решение таких систем всегда существует и является единственным. Для них также справедливо утверждение, которое имеет важное значение для фактического расчета решения с помощью метода прогонки. α i +1 = Лемма Если для системы с трехдиагональной матрицей выполняется условие диагонального преобладания (36), то прогоночные коэффициенты удовлетворяют неравенствам: αi ≤ 1 . (37) Доказательство проведем по индукции. Согласно (34) α1 = 0 , т. е. при i = 1 утверждение леммы верно. Допустим теперь, что оно верно для α i и рассмотрим α i +1 : Bi Bi ≤ ≤ 1. (38) Ci + Aiαi Ci − Ai Итак, индукция от i к i + 1 обоснована, что и завершает доказательство леммы. Неравенство (37) для прогоночных коэффициентов α i делает прогонку устойчивой. Действительно, предположим, что компонента решения xi в результате процедуры округления рассчитана с некоторой ошибкой. Тогда при вычислении αi +1 = - 10 следующей компоненты xi −1 по рекуррентной формуле (32) эта ошибка, благодаря неравенству (37), не будет нарастать. §2. Обусловленность СЛАУ. Серьезным препятствием при решении систем линейных алгебраических уравнений может оказаться возможность заметного отклонения приближенного решения от точного из-за незначительных возмущений правых частей уравнений, которые неизбежно возникают в приближенных вычислениях. Причиной такого нежелательного эффекта часто оказывается так называемая плохая обусловленность матрицы системы линейных уравнений. 2.1. Норма матрицы. Рассмотрим линейное вещественное евклидово пространство E n , элементами которого являются вектора в виде упорядоченной системы n чисел x = {x1 ,K xn } . В пространстве E n определены скалярное произведение (x, y ) = x1 y1 + K + xn yn (39) и евклидова норма x = ( x, x ) = x12 + K + xn2 , (40) удовлетворяющая трем аксиомам нормы: 1. x ≥ 0 , x = 0 тогда и только тогда, когда x = 0 ; 2. α x = α x ∀α , x ; 3. x + y ≤ x + y (неравенство треугольника). Для скалярного произведения справедливо неравенство Коши-Буняковского ( x, y ) ≤ x y . Рассмотрим квадратную матрицу A размером n × n . Она определяет в пространстве E n линейное преобразование y = Ax (41) или n y i = ∑ a ij x j , i = 1, K , n . j =1 Введем величину Ax , (42) x x ≠0 которую принято называть нормой матрицы A , согласованной с нормой вектора x . Записывая ненулевой вектор x в виде x = x z, где z вектор единичной длины: z = 1 , получим представление для нормы, эквивалентное (42) A = sup Az . (43) A = sup z =1 - 11 Отсюда следует, что в конечномерном пространстве норма матрицы ограничена, причем на единичной сфере всегда найдется такой вектор z 0 , что A = Az 0 . Наконец, из определения нормы (42) следует, что Ax ≤ A ⋅ x . (44) Это простое неравенство лежит в основе всех дальнейших оценок. 2.2. Корректность решения СЛАУ. Следуя Адамару, будем называть математическую задачу корректной, если выполняются три условия: 1. Решение задачи существует. 2. Решение задачи единственное. 3. Решение задачи непрерывно зависит от входных данных. Обсудим с точки зрения этого определения задачу решения СЛАУ с неравным нулю определителем Ax = f , (45) считая матрицу A фиксированной и рассматривая в качестве входных данных вектор правых частей системы f = { f1 , f 2 ,K, f n } ∈ En . Условие ∆ ≠ 0 гарантирует существование у матрицы A обратной матрицы A−1 , через которую решение системы (45) можно записать в виде x = A−1f . (46) Пусть теперь правая часть подверглась возмущению δ f и стала равной f% = f + δ f . Тогда, согласно (46), решение x% возмущенной системы (47) Ax% = f% −1 тоже можно записать через обратную матрицу A : (48) x% = A−1f% = A−1f + A−1δ f = x + δ x , где δ x = A−1δ f . (49) Отсюда получаем (50) δ x ≤ A−1 δ f . Неравенство (50) доказывает непрерывную зависимость возмущения решения δ x от возмущения правой части δ f : δ x → 0 при δ f → 0 . (51) Это означает, что решение СЛАУ с неравным нулю определителем ∆ - корректная математическая задача: для нее выполняются все три требования корректности Адамара. 2.3. Число обусловленности матрицы. Исходное уравнение (45) позволяет написать неравенство: f ≤ A x . Перемножая его с неравенством того же знака (50), получим: (52) - 12 f δ x ≤ A A −1 x δ f . (53) Пусть f ≠ 0 , тогда, согласно (46), x ≠ 0 и неравенство (53) можно переписать в виде: δx δf ≤ MA , (54) x f где (55) M A = A ⋅ A−1 . Число M A называется числом обусловленности матрицы A . Оно позволяет оценить относительную погрешность решения через относительную погрешность возмущения правой части. Поскольку исходная система (45) линейная, оценка относительной погрешности является более естественной, чем оценка абсолютной погрешности. Чем больше M A , тем резче реагирует решение на возмущение правой части. Поэтому матрицы с большим числом обусловленности и соответствующие им СЛАУ называют плохо обусловленными. Для оценки роли, которую играет число обусловленности при решении линейных алгебраических систем, разберем задачу. Задача 1 Рассмотреть систему двух уравнений x1 + 0 ⋅ x2 = 1 ⎡1 0 ⎤ , A= ⎢ (56) ⎥ , f = {1,1} x1 + 0.01 ⋅ x2 = 1 ⎣1 0.01⎦ и соответствующую ей возмущенную систему x1 + 0 ⋅ x2 = 1 ⎡1 0 ⎤ % , A= ⎢ (57) ⎥ , f = {1,1.01}. x1 + 0.01 ⋅ x2 = 1.01 ⎣1 0.01⎦ Выписать решения этих систем, подсчитать погрешность возмущения правой части и соответствующую ей погрешность возмущения решения. Найти число обусловленности матрицы A , составить с его помощью теоретическую оценку погрешности (54) и сравнить результат с результатом, полученным непосредственно по известным решениям систем. В данном случае определитель матрицы A отличен от нуля ∆ = det A = 0.01 , т. е. обе системы невырожденные. Система (57) отличается от системы (56) возмущением правой части f = {1,1} , f = 2 , f% = {1,1.01} , δ f = {0,0.01} , δ f = 0.01 . Решения систем (56) и (57) имеют вид: x = {1,0} , x = 1 , x% = {1,1} , δ x = {0,1} , δ x = 1 . При этом δ f 0.01 δ x = , = 1. (58) f x 2 Мы видим, что небольшое относительное возмущение правой части привело к сильному возмущению решения: относительная погрешность решения равна единице. Этот результат означает, что исходная система плохо обусловлена. Чтобы убедиться в - 13 этом, подсчитаем число обусловленности матрицы A , напишем с его помощью теоретическую оценку (54) и сравним ее с фактическим результатом (58). Выпишем линейное преобразование y = Ax отвечающее матрице системы y1 = x1 y2 = x1 + 0.01x2 , при этом Ax = x12 + ( x1 + 0.01x2 ) . 2 Наложим ограничение x12 + x22 = 1 , тогда в силу (43) Ax = max 2 x12 + 0.0001x22 + 0.02 x1 x2 , x12 + x22 = 1 . Если положить x1 = cosϕ , x2 = sin ϕ , то задача сведется к отысканию максимума выражения g (ϕ ) = 2 cos2 ϕ + 0.02sin ϕ cos ϕ + 0.0001sin 2 ϕ , зависящего только от одной переменной ϕ , 0 ≤ ϕ ≤ 2π . Переходя к тригонометрическим функциям двойного угла 2 cos 2 ϕ = 1 + cos 2ϕ , 2 sin 2 ϕ = 1 − cos 2ϕ , 2 sin ϕ cosϕ = sin 2ϕ , сведем подрадикальное выражение к виду: 1.00005 + 0.01sin 2ϕ + 0.99995 cos 2ϕ Для комбинации B1 cos 2ϕ + B2 sin 2ϕ = B12 + B2 2 cos(2ϕ − ϕ 0 ) , 0 ≤ ϕ ≤ 2π , где ϕ 0 = arctg ⎛⎜ B1 B ⎞⎟ , B1 = 0.99995 , B2 = 0.01, ⎝ 2 ⎠ максимальное значение равно B12 + B2 2 = 0.999952 + 0.012 . Следовательно A = 1.00005 + 0.999952 + 0.012 . С приемлемой точностью это число равно 2 : A ≈ 2 . Аналогичным образом находится норма обратной матрицы 0 ⎤ ⎡ 1 A −1 = ⎢ , A −1 ≈ 100 2 . ⎥ ⎣− 100 100⎦ Таким образом, в данном примере M A = A ⋅ A−1 ≈ 200 . В результате теоретическая оценка (54) принимает вид: δx δf ≤ 200 x f (59) - 14 Она согласуется с результатом (58), который мы получили, непосредственно решая системы (56) и (57). В процессе решения задачи мы убедились в том, что подсчет числа обусловленности является сложной задачей, особенно с учетом того, что нужно вычислять норму не только прямой, но и обратной матрицы. Поэтому желательно получить какие-нибудь конструктивные оценки этой важнейшей характеристики системы. 2.4. Оценка числа обусловленности. Для числа обусловленности матрицы A справедливо неравенство M A ≥ λmax / λmin , (60) где λmin и λmax соответственно минимальное и максимальное по модулю значения характеристических чисел матрицы A . Соотношение (60) корректно, поскольку в силу невырожденности матрицы λmin ≠ 0 . В самом деле пусть y - собственный вектор линейного преобразования, связанного с матрицей A , отвечающий λmax : Ay = λmax y , тогда λmax y = Ay ≤ A ⋅ y , и, следовательно, поскольку y ≠ 0 λmax ≤ A . Аналогичным образом для собственного вектора z , связанного с λmin , имеем Az = λmin z или 1 A−1z = z. λmin Отсюда следует оценка 1 λmin ≤ A−1 . Перемножая два последних неравенства, придем к утверждению (60). Если матрица симметричная A = A* , то все её характеристические значения вещественны, причем 1 A = λmax и A−1 = , λmin поэтому для таких матриц MA = λmax . λmin Из полученной оценки для M A следуют два важных вывода: 1) M A ≥ 1 ; (61) - 15 2) Число обусловленности тем больше, чем больше разброс характеристических чисел матрицы. Поэтому с увеличением размера матрицы, вообще говоря, её обусловленность имеет тенденцию к ухудшению. Возвращаясь к рассмотренной выше задаче, без труда находим: λmin = 0.01 , λmax = 1 и, следовательно, справедлива оценка снизу M A ≥ λmax / λmin = 100 , причем точность этой оценки невысока, но порядок она передает правильно. В заключение данного параграфа еще раз отметим, что для систем уравнений с большой размерностью "хорошая" обусловленность ( M A 1) является скорее исключением, чем правилом и обычно приходится иметь дело с плохо обусловленными матрицами ( M A 1 ), причем получение оценки числа обусловленности вызывает большие трудности. §3. Итерационные методы. 3.1. Построение итерационных последовательностей. Мы видели, что процедура решения СЛАУ Ax = f (62) с плохо обусловленной матрицей A может приводить к существенным отклонениям получаемого ответа от точного решения при незначительных возмущениях правой части. Однако появление таких возмущений неизбежно, например, при преобразовании вектора правых частей в методе Гаусса из-за ошибок округления при выполнении арифметических операций. Чем выше порядок матрицы, тем больше может оказаться результирующая погрешность. Этого недостатка лишены итерационные методы решения СЛАУ. При их применении ответ получается в процессе построения последовательных приближений (итераций) x k = {x1k , x2k ,K xnk } , сходящихся к решению системы (62) в пространстве En с евклидовой нормой x lim x k = x (63) k →∞ Здесь при записи вектора x k через его компоненты xik нижний индекс i означает номер компоненты (1 ≤ i ≤ n ), верхний индекс k - номер итерации. Сходимость последовательности x k к решению системы x означает, что lim x k − x = lim k →∞ k →∞ (x k 1 − x1 ) + ( x2k − x2 ) + L + ( xnk − xn ) = 0 . 2 2 2 (64) Необходимым и достаточным условием предельного равенства (64) в конечномерном евклидовом пространстве En является покомпонентная сходимость: lim xik = xi , 1 ≤ i ≤ n . k →∞ Сходимость обеспечивает принципиальную возможность получить в процессе итераций ответ с любой наперед заданной степенью точности. С итерационными последовательностями вы встречались. Каждый следующий член такой последовательности выражается через предыдущие, уже известные. Если, например, формула для вычисления очередного члена последовательности имеет вид: - 16 - x k +1 = F ( x k , x k −1 ,K, x k −m+1 ) , то говорят о m -шаговом итерационном алгоритме. В частности, в простейшем случае очередной член последовательности x k +1 может выражается только через предыдущий xk : x k +1 = F ( x k ) . Такие итерационные алгоритмы называют одношаговыми. При обсуждении итерационных методов решения СЛАУ мы ограничимся линейными одношаговыми алгоритмами, которые обычно записывают в стандартной канонической форме: x − xk Bk +1 k +1 + Ax k = f , det Bk +1 ≠ 0 , τ k +1 > 0 . (65) τ k +1 В такой записи процесс характеризуется последовательностью матриц Bk +1 и числовых параметров τ k +1 , которые называют итерационными параметрами. Если матрицы Bk +1 и параметры τ k +1 не меняются в процессе итераций, т. е. не зависят от индекса k , то итерационный процесс называется стационарным. Перепишем формулу (65) в виде (66) Bk +1x k +1 = Fk +1 , где Fk +1 = ( Bk +1 − τ k +1 Ak +1 ) x k + τ k +1f . (67) Мы видим, что построение очередной итерации сводится к решению системы уравнений (66) с правой частью (67), зависящей от предыдущей итерации x k . Такую задачу приходится решать многократно, поэтому матрицы Bk +1 следует выбирать достаточно простыми. Если построение отдельных итераций будет соизмеримым по сложности с решением исходной задачи, то метод окажется лишенным практического смысла. Наиболее прост в реализации итерационный процесс с единичной матрицей: Bk +1 = E . В этом случае формулы (66), (67) дают явное выражение очередной итерации через предыдущую: x k +1 = ( E − τ k +1 A ) x k + τ k +1f . (68) Из неявных итерационных методов выделим сравнительно легко реализуемые методы с диагональными матрицами: Bk +1 = Dk +1 и верхними или нижними треугольными матрицами: Bk +1 = Tk +1 . 3.2. Проблема сходимости итерационного процесса. Итерационный процесс может быть использован для решения СЛАУ только при условии сходимости. Для исследования его сходимости введем две характеристики. Первая из них – погрешность решения: z k = xk − x . (69) Смысл этого вектора ясен. Сходимость итерационного процесса согласно (63) и (64) означает, что - 17 lim z k = 0 , lim zik = 0 , 1 ≤ i ≤ n . k →∞ k →∞ (70) Вторая характеристика – невязка: ψ k = Ax k − f . (71) Она показывает, насколько хорошо или, наоборот, плохо член итерационной последовательности x k удовлетворяет исходной системе. Установим связь между z k и ψ k : ψ k = Ax k − f = A ( z k + x ) − f = Az k . (72) Можно также написать обратное соотношение: z k = A−1ψ k . (73) Из формул (72) и (73) вытекают оценки: ψ k ≤ A ⋅ z k , z k ≤ A−1 ⋅ ψ k . (74) Они показывают, что погрешность решения z k стремится к нулю тогда и только тогда, когда стремится к нулю невязка ψ k . Этот результат позволяет судить о сходимости или расходимости итерационного процесса по поведению невязки, которая доступна прямому вычислению и благодаря этому может контролироваться. При исследовании сходимости итерационных методов большую роль играют свойства матриц A и Bn+1 , в первую очередь такие как самосопряженность и знакоопределенность. Напомним, что в вещественном евклидовом пространстве En для каждого линейного преобразования существует единственное сопряженное к нему линейное преобразование, определяемое тождественным равенством скалярных произведений: ( Ax, y ) = (x, A*y ) , ∀x, y ∈ En . (75) В частности, ( Ax, x) = (x, A*x) , ∀x ∈ En . Преобразование называется самосопряженным, если ( Ax, y ) = (x, Ay ) , ∀x, y ∈ En . (76) Матрицы сопряженных преобразований в ортонормированном базисе связаны простым транспонированием: aij* = a ji , ∀i, j = 1,K, n . Свойство самосопряженности преобразования равносильно в этом случае выполнению условия совпадения матриц A и A∗ : aij = a ji = aij* , ∀i, j = 1,K, n , Как известно, любая матрица представима в виде: A = A + A% , (77) где A + A* A − A* * % A= = A , A= = − A% * . (78) 2 2 Нетрудно видеть, что - 18 - ( Ax, x ) = ( A*x, x ) = ( Ax, x ) , ( ) A% x, x = 0. (79) В дальнейшем мы будем опираться на следующие важные свойства самосопряженных преобразований: а) все собственные значения самосопряженного линейного преобразования (характеристические числа матрицы A ) вещественны; б) самосопряженное линейное преобразование всегда имеет полный набор линейно независимых собственных векторов, из которых можно образовать ортонормированный базис пространства En . В этом базисе матрица линейного преобразования принимает диагональный вид, причем на диагонали стоят все собственные значения этого преобразования с учетом их кратности. Наконец, матрица линейного преобразования A называется положительно определенной, если для любого, отличного от нуля x ∈ En : ( Ax, x ) > 0 , n ∑a x x i , j =1 ij i j > 0 , ∀x ∈ En , x ≠ 0 . (80) Для краткости, если это не вызывает недоразумений, будем часто писать A > 0 . Необходимым и достаточным условием положительной определенности самосопряженной матрицы A является критерий Сильвестра, из которого в частности следует строгая положительность всех диагональных элементов: ai ,i > 0 , 1 ≤ i ≤ n . (81) Условимся обозначать собственные векторы линейного преобразования с матрицей A как ei , её характеристические числа как λi , координаты произвольного вектора x в ортонормированном базисе из собственных векторов ei как ξi . Для дальнейшего рассмотрения будут полезны три леммы. Лемма 1. Для того, чтобы симметричная ( A = A* ) матрица была положительно определенной, необходимо и достаточно, чтобы все её характеристические числа были положительны: λi > 0 . Необходимость. Выберем любой собственный вектор ei линейного преобразования с матрицей A , тогда ( Aei , ei ) = λi > 0 . Достаточность. Расположим для определенности все характеристические значения матрицы A = A* в порядке убывания: λ1 ≥ λ2 ≥ K ≥ λn > 0 . Поскольку по условию леммы λi > 0 , то в ортонормированном базисе из собственных векторов преобразования с матрицей A для любого x ≠ 0 имеем n ⎛ n ⎞ ( Ax, x) = ∑ λiξi2 > 0 , ∀{ξi } , ⎜ ∑ ξi2 > 0 ⎟ . i =1 ⎝ i =1 ⎠ Поэтому, очевидно, что A > 0 . Лемма 2. - 19 - Пусть A = A* > 0 , и λ1 ≥ K ≥ λn > 0 - упорядоченный набор характеристических чисел этой матрицы, тогда 2 2 λn x ≤ ( Ax, x) ≤ λ1 x . (82) Доказательство предлагается провести самостоятельно. Лемма 3. Если A > 0 , то всегда найдется постоянное число δ > 0 , такое что 2 ( Ax, x) ≥ δ x , ∀x ∈ En (83) Доказательство. Если A = A* , то достаточно положить δ = λn . В общем случае напомним, что согласно (79) ( Ax, x) = ( Ax, x) > 0 , где A = A* , поэтому согласно предыдущей лемме 2 ( Ax, x) = ( Ax, x) ≥ λn x , где λn > 0 - минимальное характеристическое число матрицы A = ( A + A∗ ) / 2 . Полагая, что δ = λn , приходим к требуемому неравенству (83). 3.3. Достаточные условия сходимости итерационного процесса. В этом разделе мы рассмотрим стационарный итерационный процесс (65), когда матрица B и итерационный параметр τ не зависят от индекса k , и докажем следующую теорему о достаточных условиях его сходимости. Теорема Самарского Пусть A - самосопряженная положительно определенная матрица: A = A* , A > 0 , (84) B− τ 2 A - положительно определенная матрица, τ - положительное число: τ (85) A > 0, τ > 0. 2 Тогда при любом выборе нулевого приближения x0 итерационный процесс, который определяется рекуррентной формулой (65), сходится к решению исходной системы (62). B− Прежде, чем переходить к доказательству теоремы, обсудим более подробно главное ее требование – положительную определенность матрицы B − требование можно переписать в виде: τ ( Bx, x ) > ( Ax, x ) , ∀x ∈ En , x ≠ 0 . τ 2 A . Это (86) 2 т. е. оно, в частности, предполагает, что матрица B является положительно определенной. Кроме того, неравенство (86) определяет интервал, в котором может изменяться параметр τ : - 20 2 ( Bx, x ) . (87) x ≠ 0 ( Ax, x ) После этих замечаний перейдем к доказательству теоремы. Выразим из соотношения (69) x k через z k : xk = z k + x и подставим в рекуррентную формулу для итерационной последовательности (65). В результате получим: z −z B k +1 k + Az k = 0 . (88) 0 < τ < τ 0 = inf τ Отличие итерационной формулы (88) от (65) заключается в том, что она является однородной. Матрица B - положительно определенная. Следовательно она невырожденная и имеет обратную B −1 . С ее помощью рекуррентное соотношение (88) можно разрешить относительно z k +1 : z k +1 = z k − τ B −1 Az k = z k − τ ω k , (89) где ω k = B −1 Az k , так что Az k = Bω k . (90) Умножая обе части равенства (89) слева на матрицу A , получим еще одно рекуррентное соотношение (91) Az k +1 = Az k − τ Aω k . Рассмотрим последовательность положительных функционалов: J k = ( Az k , z k ) . (92) Составим аналогичное выражение для J k +1 и преобразуем его с помощью рекуррентных формул (89) и (91): J k +1 = ( Az k − τ Aω k , z k − τ ω k ) = ( Az k , z k ) − τ ( Aω k , z k ) − (93) −τ ( Az k , ω k ) + τ 2 ( Aω k , ω k ) . Из самосопряженности матрицы A и формулы (90) следует ( Aω k , z k ) = ( Az k , ω k ) = ( Bω k , ω k ). В результате формула (93) принимает вид: τ ⎞ ⎛⎛ ⎞ J k +1 = J k − 2τ ( Bωk , ωk ) + τ 2 ( Aωk , ωk ) = J k − 2τ ⎜ ⎜ B − A ⎟ ωk , ωk ⎟ . (94) 2 ⎠ ⎝⎝ ⎠ Таким образом, последовательность функционалов J k с учетом условия B− τ A > 0 образует монотонно невозрастающую последовательность, ограниченную 2 снизу нулем (95) J k ≥ J k +1 ≥ L ≥ 0 . Поэтому она сходится. Далее, согласно лемме 3 ⎛⎛ τ ⎞ ⎞ 2 ⎜ ⎜ B − 2 A ⎟ ωk , ωk ⎟ ≥ δ ωk , ⎠ ⎝⎝ ⎠ - 21 где δ > 0 - строго положительная константа. В результате, согласно (94) и (95) будем иметь ⎛⎛ τ ⎞ ⎞ 2 J k +1 − J k = 2τ ⎜ ⎜ B − A ⎟ ω k , ω k ⎟ ≥ 2τδ ω k . (96) 2 ⎠ ⎝⎝ ⎠ Из этого неравенства и сходимости последовательности функционалов J k следует, что ω k → 0 при k → ∞ . В свою очередь z k = A−1Bω k , так что z k ≤ A−1 ⋅ B ⋅ ω k → 0 Теорема доказана. 3.4. Метод простой итерации. Такое название получил метод, при котором в качестве матрицы B выбирается единичная матрица: B = E , а итерационный параметр τ предполагается независящим от номера итерации k . Иными словами, метод простой итерации – это явный стационарный метод, когда очередная итерация xk +1 вычисляется по рекуррентной формуле x k +1 = ( E − τ A ) x k + τ f (97) Будем считать, что матрица A удовлетворяет условию теоремы Самарского, A = A* > 0 , тогда формула (87), определяющая границу интервала сходимости по итерационному параметру τ , принимает вид 2 ( x, x ) 2 . (98) τ 0 = inf = x ≠ 0 ( Ax, x ) Ax, x ) ( sup x ≠ 0 ( x, x ) Пусть e1 , e2 ,K, en - ортонормированный базис собственных векторов оператора, соответствующего матрице A . В силу положительной определенности все его собственные значения положительны. Будем считать их занумерованными в порядке убывания: λ1 ≥ λ2 ≥ L ≥ λn > 0 (99) Разложим вектор x ≠ 0 по базису собственных векторов x = ξ1e1 + ξ 2e2 + L + ξ n en , тогда ( x, x ) = ξ12 + ξ 2 2 + L + ξn 2 , ( Ax, x ) = λ1ξ12 + λ2ξ 2 2 + L + λnξn 2 и Ax, x ) ( λ1ξ12 + λ2ξ 2 2 + L + λnξ n 2 sup = sup = λ1 . ξ12 + ξ 2 2 + L + ξ n 2 x ≠ 0 ( x, x ) x≠0 В результате из формулы (87) следует, что метод простой итерации сходится при любом τ , принадлежащем интервалу 2 0 <τ <τ0 = . (100) λ1 Дальнейшее исследование метода простой итерации построим на конкретном анализе рекуррентной формулы (97). Введем матрицу оператора перехода - 22 S = E −τ A, S = S* (101) и перепишем формулу (97) в виде x k +1 = Sx k + τ f . (102) При этом погрешность z k = x − x k будет удовлетворять аналогичному рекуррентному соотношению, только однородному (103) z k +1 = Sz k . Докажем две леммы, которые позволяют более полно исследовать условия сходимости метода простой итерации. Лемма 1 Пусть оператор, который порождает матрица A , имеет собственный вектор ei с собственным значением λi , тогда оператор перехода, который порождается матрицей S (101), также имеет собственный вектор ei , но с собственным значением µi (τ ) = 1 − τλi . (104) Доказательство элементарно. Оно проводится прямой проверкой Sei = ( E − τ A ) ei = (1 − τλi ) ei = µiei При самосопряженной матрице A матрица S также является самосопряженной (101). Следовательно, ее норма определяется наибольшим по модулю собственным значением µi (τ ) (104): S = max µi (τ ) . (105) 1≤i ≤ n Лемма 2 Для того, чтобы метод простой итерации сходился к решению системы (62) при любом выборе начального приближения, необходимо и достаточно, чтобы все собственные значения оператора перехода S были по модулю меньше единицы: µi (τ ) < 1 , 1 ≤ i ≤ n (106) Достаточность. Условие (106) означает, что норма матрицы S , согласно (105), будет меньше единицы: S < 1 . В результате получаем k z k +1 ≤ S ⋅ z k ≤ L ≤ S ⋅ z 0 → 0 , при k → ∞ . (107) Необходимость. Допустим, что среди собственных значений µi (104) нашлось хотя бы одно µ j , которое не удовлетворяет условию леммы (106), т. е. µ j ≥ 1. Выберем нулевой член итерационной последовательности в виде x0 = x + e j , где x решение системы (62), тогда нулевой член последовательности погрешностей совпадет с собственным вектором e j оператора перехода S : z 0 = e j . В результате рекуррентная формула для следующих членов последовательности погрешностей примет вид: zk = S ke j = µ jke j , zk = µ j k ≥ 1. - 23 т. е. z k → 0 . Необходимость выполнения неравенства (106) для всех собственных значений µi для сходимости метода простой итерации доказана. Лемма 2 определяет программу дальнейшего исследования сходимости метода простой итерации: нужно установить диапазон изменения параметра τ при котором все собственные значения удовлетворяют неравенству (106). Это легко сделать. На рис. 1 приведены графики убывающих линейных функций µi (τ ) (104). Все они выходят из одной точки τ = 0 , µ = 1 и идут вниз из-за отрицательных коэффициентов при τ , причем быстрее всех убывает функция µ1 (τ ) . Когда она принимает значение ( −1) , условие (106) для нее перестает выполняться: µ1 (τ ) = 1 − τλ1 = −1, при τ = τ 0 = 2 / λ1 . Найденное значение τ 0 является границей интервала сходимости метода простой итерации 0 < τ < τ 0 = 2 / λ1 . (108) Это неравенство нам уже известно. Оно было получено ранее из теоремы Самарского как достаточное условие сходимости. Дополнительный анализ на основе леммы 2 позволяет уточнить результат. Теперь мы установили, что принадлежность итерационного параметра τ интервалу (108) является необходимым и достаточным условием сходимости метода простой итерации. Перейдем к исследованию скорости сходимости метода. Оценка погрешности (107) показывает, что она убывает по закону геометрической прогрессии со знаменателем q (τ ) = S = max µ i (τ ) . 1≤i ≤ n Рассмотрим рис. 2, который поможет нам провести анализ этой формулы. Он аналогичен рис.1, только на нем приведены графики не функций µi (τ ) , а их модулей. При малых τ все собственные значения µi (τ ) (104) положительны, причем наибольшим из них является µ n (τ ) , которое убывает с ростом τ с наименьшей скоростью. Однако с переходом через точку τ 0 / 2 собственное значение µ1 (τ ) , меняя знак, становится отрицательным. В результате теперь его модуль с увеличением τ не убывает, а растет и при τ → τ 0 приближается к предельному значению – к единице. Найдем на отрезке [ 12 τ 0 ,τ 0 ] точку τ * , в которой убывающая функция µ n (τ ) сравнивается уравнением с возрастающей функцией µ1 (τ ) = − µ1 (τ ) . Она определяется µ n (τ ) = 1 − τλn = − µ1 (τ ) = τλ1 − 1 , которое дает τ* = В результате получаем: 2 <τ . λ1 + λn 0 (109) - 24 ⎧⎪ µ n (τ ) , 0 < τ ≤ τ * S = max µi (τ ) = ⎨ (110) 1≤i ≤ n , . − µ τ τ ≤ τ < τ ⎪⎩ 1 ( ) * Свое наименьшее значение норма матрицы S достигает при τ = τ * : λ − λ M −1 min S = 1 − τ *λn = 1 n = A . (111) λ1 + λn M A + 1 Формула (111) показывает, что для плохо обусловленной матрицы даже при оптимальном выборе итерационного параметра τ = τ * норма матрицы S близка к единице, так что сходимость метода простой итерации в этом случае оказывается медленной. В заключение заметим, что формула (108), определяющая границу интервала сходимости τ 0 , и формула (109) для оптимального значения итерационного параметра τ * представляют прежде всего теоретический интерес. Обычно при решении СЛАУ наибольшее и наименьшее характеристические числа матрицы A неизвестны, так что подсчитать величины τ 0 и τ * заранее невозможно. В результате итерационный параметр τ нередко приходится подбирать прямо в процессе вычислений методом проб и ошибок. Задача 2. Рассмотреть систему двух уравнений с двумя неизвестными ⎧ x1 + x2 = 0, (112) ⎨ ⎩ x1 + 2 x2 = 1. и построить для нее приближенное решение с помощью метода простой итерации. Выпишем сразу решение системы (112) x1 = −1, x2 = 1 , (113) чтобы потом иметь возможность сравнивать его с членами итерационной последовательности. Перейдем к решению системы методом простой итерации. Матрица системы имеет вид ⎡1 1 ⎤ A=⎢ ⎥. 1 2 ⎣ ⎦ Она самосопряженная и положительно определенная, поскольку 2 ( Ax, x ) = ( x1 + x2 ) x1 + ( x1 + 2 x2 ) x2 = ( x1 + x2 ) + x2 2 > 0 . Составим характеристическое уравнение для матрицы A и найдем его корни: 1− λ 1 = λ 2 − 3λ + 1 = 0 , 1 2−λ 3+ 5 3− 5 ≈ 2.618 , λ2 = ≈ 0.382 2 2 С их помощью можно определить границу интервала сходимости τ 0 и оптимальное значение итерационного параметра τ * : λ1 = - 25 2 ≈ 0.745 . λ1 λ1 + λ2 Для построения итерационной последовательности выберем какое-нибудь значение итерационного параметра на интервале сходимости, например, τ = 1/ 2 . В этом случае рекуррентная формула для членов итерационной последовательности (102) принимает вид: ⎡ 1/ 2 −1/ 2 ⎤ 1 x k +1 = Sx k + f , где S = ⎢ 0 ⎥⎦ 2 ⎣ −1/ 2 Возьмем простейшее начальное приближение x0 = 0 и выпишем несколько первых членов итерационной последовательности x k , подсчитывая для каждого из них невязку ψ k (71). В результате получим: 1 ⎧ 1⎫ ⎧1 ⎫ x1 = ⎨0, ⎬ , ψ1 = ⎨ ,0 ⎬ , ψ 1 = , 2 ⎩ 2⎭ ⎩2 ⎭ 1 ⎧ 1 1⎫ ⎧1 1 ⎫ x 2 = ⎨− , ⎬ , ψ 2 = ⎨ , − ⎬ , ψ 2 = , 2 2 ⎩ 4 2⎭ ⎩4 4⎭ 5 ⎧ 3 5⎫ ⎧1 1⎫ x3 = ⎨− , ⎬ , ψ 3 = ⎨ , − ⎬ , ψ 3 = , 8 ⎩ 8 8⎭ ⎩4 8⎭ τ0 = 2 ≈ 0.764 , τ * = 10 ⎧ 1 11 ⎫ ⎧ 3 1⎫ x 4 = ⎨− , ⎬ , ψ 4 = ⎨ , − ⎬ , ψ 4 = . 16 ⎩ 2 16 ⎭ ⎩16 8 ⎭ Норма невязок, хотя и медленно, но убывает, что говорит о сходимости процесса. Это же видно из сравнения членов итерационной последовательности x k с решением системы (113). Медленная сходимость связана с плохой обусловленностью матрицы A: MA = λ1 ≈ 6.854 . λ2 3.5. Неявные итерационные методы. Метод Зейделя. Вернемся к общей записи итерационного стационарного процесса в канонической форме (65). Рассмотрим произвольную квадратную матрицу: ⎡ a11 a12 K a1m ⎤ ⎢a a22 K a2 m ⎥ 21 ⎢ ⎥. A= ⎢K K K K ⎥ ⎢ ⎥ ⎣am1 am 2 K amm ⎦ Разложим её на сумму трех матриц A = D + TH + TB , (114) где D - диагональная часть матрицы A , которая содержит элементы aii , стоящие на главной диагонали: - 26 ⎧0, i ≠ j Dij = a ij δ ij = ⎨ , = a , i j ii ⎩ TН - нижняя треугольная матрица ⎧a , i > j , (Т H )ij = ⎨ ij ⎩0, i ≤ j TB - верхняя треугольная матрица. ⎧0, i ≥ j (Т B )ij = ⎨a , i < j . ⎩ ij В классическом методе Зейделя, записанном в канонической форме, полагают B = D + TH , (115) τ = 1. В результате формула (65) принимает вид: ( D + TH ) ( x k +1 − x k ) + Axk = f , или (116) ( D + TH ) x k +1 + TB xk = f . Перейдем от векторной формы записи рекуррентной формулы (116) к построчной: a11 x1k +1 + a12 x2k + a13 x3k + L + a1n xnk = f1 a21 x1k +1 + a22 x2k +1 + a23 x3k + L + a2 n xnk = f2 (117) M M an1 x1k +1 + an 2 x2k +1 + an 3 x3k +1 + L + ann xnk +1 = f n . Уравнения (117) позволяют последовательно рассчитать компоненты вектора ( k + 1) ой итерации подобно тому, как это делалось во время обратного хода в методе Гаусса: i −1 n ⎤ 1 ⎡ xik +1 = ⎢ f i − ∑ aij x kj +1 − ∑ aij x kj ⎥ , i = 1,K, n . (118) aii ⎣ j =1 j =i +1 ⎦ Формула (118) предполагает, что aii ≠ 0 , 1 ≤ i ≤ n . Если матрица A удовлетворяет условиям теоремы Самарского (84): A = A* > 0 , то, согласно неравенству (81), все ее диагональные элементы должны быть строго положительными и, тем самым, не могут обращаться в ноль. Алгоритм в методе Зейделя прост и удобен для вычислений. Он не требует никаких действий с матрицей A . Ранее вычисленные на текущей итерации компоненты x kj +1 ( j < i ) сразу же участвуют в расчетах наряду с компонентами x kj ( j > i ) и, таким образом, не требуют дополнительного резерва памяти, что существенно при решении больших систем. Сходимость метода Зейделя в случае, когда матрица A удовлетворяет условию теоремы Самарского, т.е. является самосопряженной и положительно определенной, будет доказана в следующем разделе. К этому утверждению добавим без доказательства еще один результат: метод Зейделя сходится для любой системы (62), в которой матрица A обладает свойством диагонального преобладания. - 27 - Задача 3. Рассмотреть систему (112) (см. задачу 2) и построить для нее приближенное решение с помощью метода Зейделя. В рассматриваемом случае рекуррентные формулы (118) для построения ( k + 1) ой итерации по k -ой итерации принимают вид: x1k +1 = − x2k (119) 1 x2k +1 = (1 − x1k +1 ) . 2 Принимая, как и при решении задачи 2, за начальное приближение нулевой вектор, подсчитаем по формулам (119) несколько первых итераций, сопровождая этот процесс подсчетом невязки: 1 ⎧ 1⎫ ⎧1 ⎫ x1 = ⎨0, ⎬ , ψ1 = ⎨ ,0 ⎬ , ψ 1 = , 2 ⎩2 ⎭ ⎩ 2⎭ 1 ⎧ 1 3⎫ ⎧1 ⎫ x 2 = ⎨− , ⎬ , ψ 2 = ⎨ ,0 ⎬ , ψ 2 = , 4 ⎩4 ⎭ ⎩ 2 4⎭ 1 ⎧ 3 7⎫ ⎧1 ⎫ x3 = ⎨− , ⎬ , ψ 3 = ⎨ ,0 ⎬ , ψ 3 = . 8 ⎩8 ⎭ ⎩ 4 8⎭ Обсудим полученные результаты. Начнем с невязки. Ее вторая компонента все время остается равной нулю, поскольку второе уравнение системы на каждой итерации выполняется, как видно из (119), точно. Первые компоненты невязки и норма убывают по закону геометрической прогрессии с знаменателем 1 / 2 , т.е. гораздо быстрее, чем в методе простой итерации. Хорошая сходимость процесса видна также из прямого сравнения членов итерационной последовательности x k с точным решением системы x = {−1,1} . 3.6. Метод верхней релаксации Модифицируем метод Зейделя. С этой целью введем параметр ω и запишем рекуррентное соотношение (65) в виде (x − x ) (120) ( D + ωTH ) k +1 k + Ax k = f . ω В данном случае B = D + ωTH , τ = ω > 0 . (121) При ω = 1 мы возвращаемся к методу Зейделя. Соотношению (120) можно придать вид ⎛1 ⎞ (122) ⎜ D + TH ⎟ ( x k +1 − x k ) + Ax k = f . ⎝ω ⎠ Такая форма записи показывает, что параметр ω влияет на диагональ матрицы B . Для построения алгоритма вычисления очередной итерации нужно разделить в левой части рекуррентной формулы (122) члены, содержащие x k и x k +1 , и придать ей форму, аналогичную (116): - 28 ⎡⎛ 1⎞ ⎤ ⎛1 ⎞ (123) ⎜ D + TH ⎟ x k +1 + ⎢⎜ 1 − ⎟ D + TB ⎥ x k = f . ⎝ω ⎠ ⎣⎝ ω ⎠ ⎦ Если перейти от векторной записи к записи типа (117) в виде отдельных уравнений, то можно получить для компонент xik +1 очередной итерации формулы, структурно похожие на (118): i −1 n ⎞ ω⎛ k +1 k k +1 xi = xi + ⎜ fi − ∑ aij x j − ∑ aij x kj ⎟ , i = 1,K, n . (124) aii ⎝ j =1 j =i ⎠ Исследуем условия сходимости метода верхней релаксации при дополнительном предположении, что матрица A удовлетворяет условиям теоремы Самарского (84). Самосопряженность матрицы A означает, что TH* = TB , TB* = TH . Отсюда следует (TH x, x ) = (TH* x, x ) = (TB x, x ) . Составим для рассматриваемого случая матрицу B − (125) τ A . Согласно (121) 2 τ ω ω ⎛ ω⎞ B − A = ( D + ωTH ) − ( D + TH + TB ) = ⎜1 − ⎟ D + (TH − TB ) . (126) 2 2 2⎠ 2 ⎝ Запишем условие ее положительной определенности ⎛⎛ τ ⎞ ⎞ ⎛ ω⎞ − B A ⎟ x, x ⎟ = ⎜1 − ⎟ ( Dx, x ) > 0 . (127) ⎜⎜ 2 ⎠ 2⎠ ⎝⎝ ⎠ ⎝ Второе слагаемое в выражении (126) не дает вклада в квадратичную форму (127) в силу соотношения (125). Матрица A является, по предположению, положительно определенной. Следовательно, все ее диагональные элементы строго положительны: aii > 0 , 1 ≤ i ≤ n . Это означает положительную определенность матрицы D : ( Dx, x ) > 0 . В результате знак выражения (127) определяется знаком первого множителя, так что достаточное условие для сходимости итерационной последовательности метода верхней релаксации принимает вид: 0 <ω < 2 (128) Метод Зейделя, соответствующий случаю ω = 1, удовлетворяет этому условию. Можно поставить вопрос об оптимальном выборе параметра ω = ω* , при котором метод сходится быстрее всего. Теоретическое исследование, на котором мы не будем останавливаться, показывает, что такое значение существует и может быть выражено через наибольшее и наименьшее собственные значение матрицы A . Однако на практике его приходится подбирать экспериментально методом проб и ошибок, поскольку найти λmin и λmax с достаточной точностью удается в редких случаях. Задача 4 Построить приближенное решение системы (112) методом верхней релаксации, полагая ω = 4 / 3 . 1 1⎞ ⎛ Выпишем для рассматриваемого случая матрицы D + TH и ⎜1 − ⎟ D + TB , ω ⎝ ω⎠ определяющие итерационный процесс: - 29 ⎡3/ 4 0 ⎤ 1 ⎡1/ 4 1 ⎤ 3 D + TH = ⎢ , D + T = B ⎥ ⎢ 0 1/ 2 ⎥ . 4 ⎣ 1 3/ 2 ⎦ 4 ⎣ ⎦ С их помощью рекуррентное соотношение (123), записанное покомпонентно, принимает вид: 3 k +1 1 k x1 + x1 + x2k = 0, 4 4 3 1 x1k +1 + x2k +1 + x2k = 1. 2 2 k +1 Выражая из первого соотношения x1 , из второго x2k +1 , получим окончательные расчетные формулы для компонент очередной итерации: 1 4 x1k +1 = − x1k − x2k , 3 3 2 2 1 x2k +1 = − x1k +1 − x2k . 3 3 3 Примем, как и в предыдущих случаях, за начальное приближение нулевой вектор и сделаем три итерации. При этом для каждой из них подсчитаем невязку (71), позволяющую следить за сходимостью процесса 5 ⎧ 2⎫ ⎧2 1⎫ ≈ 0.745 , x1 = ⎨0, ⎬ , ψ1 = ⎨ , ⎬ , ψ 1 = 3 ⎩ 3⎭ ⎩3 3⎭ 41 ⎧ 8 28 ⎫ ⎧4 5⎫ ≈ 0.237 , x2 = ⎨− , ⎬ , ψ 2 = ⎨ , ⎬ , ψ 2 = 27 ⎩ 9 27 ⎭ ⎩ 27 27 ⎭ 89 5 ⎫ ⎧ 88 256 ⎫ ⎧ 8 ≈ 0.039 . x3 = ⎨− , , ⎬ , ψ 3 = ⎨− ⎬ , ψ3 = 243 ⎩ 81 243 ⎭ ⎩ 243 243 ⎭ Поведение невязок, а также сравнение членов итерационной последовательности x k с точным решением системы x = {−1,1} показывают сходимость процесса, более быструю, чем в методе Зейделя. Выбранное значение параметра ω = 4 / 3 оказалось близким к оптимальному ω = ω* . - 31 - Глава 2. ЧИСЛЕННОЕ РЕШЕНИЕ УРАВНЕНИЙ В школьном курсе математики изучают линейные и квадратные уравнения, корни которых могут быть найдены по известным формулам. Существуют также формулы для решения уравнений третьей и четвертой степени, однако они сложны и неудобны для практического применения. На их обсуждении мы останавливаться не будем. Если рассматривать неалгебраические уравнения, то задача усложняется еще больше. В этом случае получить для корней ответ в виде формул, за редким исключением, не удается. В условиях, когда формулы «не работают», когда рассчитывать на них можно только в самых простейших случаях, важное значение приобретают универсальные вычислительные алгоритмы. Их много и они достаточно разнообразны. Если записать уравнение в виде f ( x) = 0 , (1) то эти алгоритмы обычно не накладывают никаких ограничений на конкретный вид функции f ( x) , а предполагают только, что она обладает свойствами типа непрерывности, дифференцируемости и т. д. В этой главе мы познакомимся с тремя алгоритмами. Они основаны на разных идеях, каждый из них обладает определенными достоинствами и недостатками, поэтому в конце главы будет интересно сравнить алгоритмы между собой. §1. Метод вилки. Теорема о существовании корня непрерывной функции. Метод вилки и его применение к доказательству фундаментальной теоремы о существовании корня у функции f ( x) , непрерывной на отрезке [ a, b ] и принимающей на его концах значения разных знаков, подробно разбирается в курсе математического анализа. Несмотря на это мы конспективно изложим его вновь, поскольку без метода вилки картина численного решения уравнений была бы неполной. Теорема о существовании корня непрерывной функции. Если функция f ( x) непрерывна на отрезке [ a, b ] и принимает на его концах значения разных знаков, то на этом отрезке существует по крайней мере один корень уравнения (1). Предположим для определенности, что функция f ( x) принимает на левом конце отрезка [ a, b ] отрицательное значение, на правом – положительное: f (a) < 0 , f (b) > 0 . (2) Возьмем на отрезке [ a, b ] среднюю точку ξ = ( b − a ) / 2 и вычислим в ней значение функции f (ξ ) . Если f (ξ ) = 0 , то утверждение теоремы доказано: мы нашли на отрезке [ a, b ] точку c = ξ , в которой функция f ( x) обращается в ноль. При f (ξ ) ≠ 0 поступим следующим образом: рассмотрим два отрезка [ a,ξ ] и [ξ ,b ] и выберем один из них, исходя из условия, чтобы функция f ( x) на его левом конце была - 32 отрицательной, на правом – положительной. Выбранный отрезок обозначим [ a1 , b1 ] . По построению f (a1 ) < 0 , f (b1 ) > 0 . Повторим описанную процедуру: возьмем на отрезке [ a1 , b1 ] среднюю точку ξ1 = ( b1 − a1 ) / 2 и вычислим в ней значение функции f (ξ1 ) . Если f (ξ1 ) = 0 , то доказательство теоремы закончено. Если же f (ξ1 ) ≠ 0 , то снова рассмотрим два отрезка [ a1 ,ξ1 ] и [ξ1 ,b1 ] и выберем тот, на левом конце которого функция f ( x) отрицательна, на правом – положительна. Выбранный отрезок обозначим [ a2 , b2 ] . По построению f (a2 ) < 0 , f (b2 ) > 0 . Будем продолжать этот процесс. В результате он либо оборвется на некотором шаге n в силу того, что f (ξ n ) = 0 , либо будет продолжаться неограниченно. В первом случае вопрос существования корня уравнения (1) решен, поэтому нам нужно рассмотреть второй случай. Неограниченное продолжение процесса дает последовательность отрезков [ a, b ] , [ a1 , b1 ] , [ a2 , b2 ] , … . Эти отрезки вложены друг в друга – каждый последующий отрезок принадлежит всем предыдущим: an ≤ an+1 < bn+1 ≤ bn , (3) причем f (an ) < 0 , f (bn ) > 0 . (4) Длины отрезков с возрастанием номера n стремятся к нулю: b−a lim ( bn − an ) = lim n = 0 . (5) n →∞ n→∞ 2 Рассмотрим левые концы отрезков {an } . Согласно (3) они образуют монотонно неубывающую ограниченную последовательность. Такая последовательность имеет предел, который мы обозначим через c1 : lim an = c1 . (6) n→∞ По теореме о переходе к пределу в неравенствах c1 ≤ bn . (7) Теперь рассмотрим правые концы отрезков {bn } . Они образуют монотонно невозрастающую ограниченную последовательность, которая тоже имеет предел. Обозначим этот предел через c2 : lim bn = c2 . (8) n→∞ Согласно соотношениям (3), (6), (7), (8) пределы c1 и c2 удовлетворяют неравенствам an ≤ c1 ≤ c2 ≤ bn , и, следовательно, b−a c2 − c1 ≤ bn − an = n . (9) 2 - 33 Таким образом, разность c2 − c1 меньше любого наперед заданного числа. Это означает, что c2 − c1 = 0 , т. е. c2 = c1 = c . (10) Найденная точка c интересна тем, что она является единственной общей точкой для всех отрезков построенной последовательности. Используя непрерывность функции f ( x) , докажем, что она является корнем уравнения (1). Мы знаем, что f (an ) < 0 . Согласно определению непрерывной функции и возможности предельного перехода в неравенствах имеем f (c) = lim f ( an ) ≤ 0 . (11) n →∞ Аналогично, учитывая, что f (bn ) > 0 , получаем f (c) = lim f ( bn ) ≥ 0 . n→∞ Из (11) и (12) следует, что (12) f (c ) = 0 , (13) т. е. c – корень уравнения (1). Теорема доказана. Процесс построения последовательности вложенных стягивающихся отрезков методом вилки является эффективным вычислительным алгоритмом решения уравнения (1). На n -ом шаге получаем an ≤ c ≤ bn . (14) Это двойное неравенство показывает, что число an определяет искомый корень c с недостатком, а число bn - с избытком, с ошибкой, не превышающей длину отрезка [ an , bn ] . При увеличении n ошибка стремится к нулю по закону геометрической прогрессии со знаменателем q = 1/ 2 . Если задана точность ε , то, чтобы ее достигнуть, достаточно сделать число шагов N ,удовлетворяющее условию b−a N > log 2 . (15) ε То, что процедура отыскания корня основана на многократном делении исходного отрезка пополам, оправдывает второе название метода – метод бисекции. Теорема и метод ее доказательства сами по себе не позволяют определить общее число корней функции f ( x ) на отрезке [ a, b ] . Однако, если функция f ( x) не только непрерывна, но и дифференцируема, то дополнительное ее исследование с помощью производной может во многих случаях решить и этот вопрос. Например, в случае знакоопределенной производной функция f ( x) является монотонной на отрезке [ a, b ] , так что корень у нее может быть только один. Задача 1. Рассмотреть на отрезке [ a, b ] уравнение f ( x) = x − cos x = 0 . (16) Показать, что оно имеет единственный корень и найти его приближенное значение с помощью метода вилки. В данном случае - 34 - f (0) = −1 < 0 , f (1) = 1 − cos1 > 0 , (17) f ′( x) = 1 + sin x > 0 , при 0 ≤ x ≤ 1 . (18) Неравенства (17) говорят о том, что уравнение (16) имеет корни. Условие монотонности функции f ( x) (18) означает, что корень единственный. Результаты, связанные с 12-кратным делением отрезка [ 0,1] пополам даны в таблице 1. Они определяют корень с точностью ε = (1/ 2 ) < 0.00025 . Искомый корень c принадлежит отрезку [0.739013671875, 0.739257812500] Отбрасывая знаки, лежащие за пределом достигнутой точности, получим 0.73901 < c < 0.73926 График функции (16), иллюстрирующий разобранный пример, приведен на рис. 1. 12 Таблица 1. n 1 2 3 4 5 6 7 8 9 10 11 12 an 0,000000000000 0,500000000000 0,500000000000 0,625000000000 0,687500000000 0,718750000000 0,734375000000 0,734375000000 0,738281250000 0,738281250000 0,738281250000 0,738769531250 0,739013671875 bn 1,000000000000 1,000000000000 0,750000000000 0,750000000000 0,750000000000 0,750000000000 0,750000000000 0,742187500000 0,742187500000 0,740234375000 0,739257812500 0,739257812500 0,739257812500 ξ n = ( an + bn ) / 2 0,500000000000 0,750000000000 0,625000000000 0,687500000000 0,718750000000 0,734375000000 0,742187500000 0,738281250000 0,740234375000 0,739257812500 0,738769531250 0,739013671875 f (ξ n ) -0,377582561890 0,018311131126 -0,185963119505 -0,085334946152 -0,033879372418 -0,007874725459 0,005195711744 -0,001345149752 0,001923872781 0,000289009147 -0,000528158434 -0,000119596671 §2. Метод итераций (метод последовательных приближений). В этом параграфе мы познакомимся еще с одним численным методом решения уравнений. Предположим, что уравнение можно записать в виде (19) x = ϕ ( x). Возьмем произвольную точку x0 из области определения функции ϕ ( x ) и будем строить последовательность чисел { xn } , определенных с помощью рекуррентной формулы (20) xn+1 = ϕ ( xn ) . Последовательность { xn } называется итерационной последовательностью. При ее изучении встают два вопроса: - 35 1. Можно ли процесс построения последовательности { xn } продолжать неограниченно, т. е. будут ли эти числа принадлежать области определения функции ϕ ( x) ? 2. Если итерационная последовательность (20) бесконечна, то как ведут себя ее члены при n → ∞ ? Ответ на оба вопроса дает следующая теорема. Теорема о сходимости итерационной последовательности. Пусть c - корень уравнения (19) и пусть функция ϕ ( x ) удовлетворяет на отрезке [c − δ , c + δ ] условию Липшица с константой L < 1 y2 − y1 = ϕ ( x2 ) − ϕ ( x1 ) ≤ L x2 − x1 , L < 1 . (21) Тогда при любом выборе x0 на отрезке [ c − δ , c + δ ] существует бесконечная итерационная последовательность { xn } (20), сходящаяся к корню уравнения (19) x = c . Этот корень является единственным на отрезке [ c − δ , c + δ ] . Напомним известный факт из математического анализа: выполнение условия Липшица (21) будет заведомо обеспечено, если предположить, что функция ϕ ( x ) имеет на отрезке [ c − δ , c + δ ] непрерывную производную, ϕ ′ ( x ) модуль которой меньше единицы: ϕ ′ ( x ) ≤ m < 1 . В этом случае согласно формуле конечных приращений Лагранжа будем иметь (22) y2 − y1 = ϕ ′ (ξ )( x2 − x1 ) ≤ m x2 − x1 . Мы получили неравенство (21) с константой Липшица L = m . После этого замечания перейдем к доказательству теоремы. Число c является корнем уравнения (19), так что c = ϕ ( c ) . Возьмем произвольную точку x0 на отрезке [c − δ , c + δ ] . Она отстоит от точки c не больше, чем на δ : x0 − c ≤ δ . Вычислим x1 = ϕ ( x0 ) . При этом будем иметь x1 − c = ϕ ( x0 ) − ϕ ( c ) ≤ L x0 − c ≤ Lδ . (23) Неравенство (23) показывает, что точка x1 принадлежит отрезку [ c − δ , c + δ ] и расположена ближе к точке c чем x0 . Продолжим построение итерационной последовательности. Вычислим x2 = ϕ ( x1 ) . При этом x2 − c = ϕ ( x1 ) − ϕ ( c ) ≤ L x1 − c ≤ L2 x0 − c ≤ L2δ . Точка x2 тоже принадлежит отрезку [ c − δ , c + δ ] и расположена ближе к точке c чем x1 . На второй итерации мы опять приблизились к c . По индукции легко доказать, что все последующие итерации также существуют и удовлетворяют неравенствам - 36 Отсюда следует, что xn − c ≤ Ln x0 − c ≤ Lnδ . (24) lim ( xn − c ) = 0 , т. е. lim xn = c . (25) n →∞ n→∞ Нам остается доказать, что корень x = c является единственным решением уравнения (19) на отрезке [ c − δ , c + δ ] . Действительно, предположим, что существует еще один корень x = c1 (26) c1 = ϕ ( c1 ) , c − δ ≤ c1 ≤ c + δ . Примем c1 за нулевое приближение и будем строить итерационную последовательность (20). С учетом (26) получим xn = c1 , n = 0,1, 2,K . С другой стороны, по доказанному lim xn = c , т. е. c1 = c . Никаких других решений, кроме x = c , n→∞ уравнение (19) на рассматриваемом отрезке не имеет. Доказанная теорема имеет простой смысл. Будем говорить, что функция ϕ ( x ) осуществляет отображение точки x отрезка [ c − δ , c + δ ] на точку y = ϕ ( x ) . Рассмотрим пару точек x1 , x2 и их образы y1 , y2 .Условие Липшица (21) приводит к тому, что расстояние между образами оказывается меньше расстояния между исходными точками, т. е. отображение y = ϕ ( x ) является сжимающим. Корень c неподвижная точка отображения: c = ϕ ( c ) . В результате каждый шаг в итерационном процессе, сжимая расстояние, приближает очередную итерацию к корню. Центральная идея метода итераций – сжимающие отображения – является весьма общей. Например, одно из доказательств теоремы существования и единственности решения задачи Коши для обыкновенных дифференциальных уравнений основано на методе последовательных приближений в условиях, когда действует принцип сжимающих отображений. Для многих сложных нелинейных задач принцип сжимающих отображений оказывается основным методом исследования. Задача 2. Записать уравнение (16) в виде x = cos x , и найти приближенное значение его корня методом итераций. В данном случае (27) ϕ ( x ) = cos x , ϕ ′ ( x ) = − sin x . На отрезке [ 0,1] , на котором расположен корень уравнения (27), для модуля производной справедлива оценка ϕ ′ ( x ) ≤ sin1 < 0.85 Она обеспечивает выполнение условия Липшица с константой Липшица L = 0.85 . Результаты вычислений по рекуррентной формуле xn+1 = cos xn - 37 даны в таблице 2. За нулевое приближение выбрана средняя точка отрезка x0 = 0.5 . Для удобства анализа итерационной последовательности ее члены расположены по два в строке. В результате образовались столбцы членов с четными и нечетными номерами. Сравнивая их между собой, мы видим, что четные члены меньше нечетных: итерационная последовательность «скачет» то вверх, то вниз. С возрастанием номера четные члены последовательности возрастают, а нечетные убывают, приближаясь друг к другу. Такое поведение последовательности означает, что корень уравнения лежит между ними. Четные члены дают его значение с недостатком, нечетные – с избытком. Это позволяет легко контролировать точность, достигнутую после любого числа итераций: погрешность не превышает разности между последним нечетным и четным членами. Мы остановили процесс вычислений на 19-ой итерации и можем написать для корня c двойное неравенство x18 = 0.738912449332 < c < x19 = 0.739201444135 или, отбрасывая лишние десятичные знаки, 0.73891 < c < 0.73921 . Таким образом, члены итерационной последовательности x18 и x19 определяют c с недостатком и с избытком с погрешностью, которая не превышает разности x19 − x18 : ε < ∆19 = x19 − x18 < 0.0003 . Точность, которой мы достигли после 19 итераций, примерно соответствует точности 12 шагов метода вилки. Причина такого различия ясна. В обоих методах погрешность убывает по закону геометрической прогрессии. Для метода вилки знаменатель прогрессии равен 1/2. Он не зависит от вида функции f ( x) . Для метода итераций знаменатель прогрессии равен константе Липшица. В рассматриваемом примере L = 0.85 . Поэтому скорость сходимости метода итераций медленнее скорости сходимости метода вилки. Метод итераций имеет преимущество перед методом вилки в скорости сходимости только при L < 1/ 2 . Таблица 2 n 1 2 3 4 5 6 7 8 9 x2n 0,500000000000 0,639012494165 0,694778026788 0,719165445942 0,730081063138 0,735006309015 0,737235725442 0,738246238332 0,738704539357 0,738912449332 x2 n+1 0,877582561890 0,802685100682 0,768195831282 0,752355759422 0,745120341351 0,741826522643 0,740329651878 0,739649962770 0,739341452281 0,739201444136 - 38 §3. Метод касательных (метод Ньютона). Метод касательных, связанный с именем Ньютона, является одним из наиболее эффективных численных методов решения уравнений. Идея метода очень проста. Предположим, что функция f ( x) , имеющая корень c на отрезке [ a, b ] , дифференцируема на этом отрезке и ее производная f ′( x) не обращается на нем в ноль. Возьмем произвольную точку x0 ∈ [ a, b ] и запишем уравнение касательной к графику функции f ( x) в этой точке (28) y = f ( x0 ) + f ′( x0 ) ( x − x0 ) . График функции f ( x) и ее касательной близки около точки касания, поэтому естественно ожидать, что точка x1 пересечения касательной с осью x будет расположена недалеко от корня c (см. рис. 2). Для определения точки x1 имеем уравнение f ( x0 ) + f ′( x0 ) ( x1 − x0 ) = 0 , согласно которому f ( x0 ) . x1 = x0 − f ′ ( x0 ) Повторим проделанную процедуру: напишем уравнение касательной к графику функции f ( x) в точке x1 и найдем для нее точку пересечения x2 с осью x (см. рис. 2): f ( x1 ) . x2 = x1 − f ′ ( x1 ) Продолжая этот процесс, получим последовательность { xn } , определенную с помощью рекуррентной формулы f ( xn ) . (29) xn+1 = xn − f ′ ( xn ) При ее исследовании, как и при исследовании последовательности (20) метода итераций, встают два вопроса: 1. Можно ли процесс вычисления чисел { xn } по рекуррентной формуле (29) продолжать неограниченно, т. е. будут ли эти числа принадлежать отрезку [ a, b ] ? 2. Если процесс (29) бесконечен, то как ведет себя последовательность n → ∞? { xn } при При анализе этих вопросов предположим, что корень x = c является внутренней точкой отрезка [ a, b ] , а функция f ( x) дважды непрерывно дифференцируема на данном отрезке, причем ее производные удовлетворяют неравенствам (30) f ′( x) ≥ m > 0 , f ′′( x) ≤ M , x ∈ [ a, b ] . - 39 Следует обратить внимание на то, что в неравенствах (30) величина m дает оценку модуля первой производной f ′( x) снизу, а величина M оценку модуля второй производной f ′′( x) сверху. Теорема о сходимости метода касательных. Если функция f ( x) удовлетворяет сформулированным условиям, то найдется такое δ : 0 < δ ≤ min( c − a , b − c ) , что при любом выборе начального приближения x0 на отрезке существует бесконечная итерационная [ c − δ , c + δ ] ⊂ [ a, b ] последовательность (29) и эта последовательность сходится к корню c . В силу предположения о дифференцируемости функции f ( x) и неравенстве нулю ее производной, уравнение (1) эквивалентно на отрезке [ a, b ] уравнению f ( x) , (31) f ′( x ) так что корень x = c исходного уравнения является одновременно корнем уравнения (31). Исследуем возможность отыскания этого корня с помощью метода итераций. Вычислим и оценим производную функции ϕ ( x ) (31): x = ϕ ( x ) , где ϕ ( x ) = x − ( f ′ ( x ) ) − f ( x ) f ′′ ( x ) = f ( x ) f ′′ ( x ) , ϕ ′( x ) = 1 − ( f ′( x )) ( f ′( x )) 2 2 2 (32) M (33) f ( x) . m2 Теперь воспользуемся непрерывностью функции f ( x) и ее равенством нулю в точке x = c . Возьмем ε = m 2 / ( 2 M ) . Для данного ε можно указать такое δ : 0 < δ ≤ min( c − a , b − c ) , что для всех x ∈ [ c − δ , c + δ ] выполняется неравенство ϕ ′( x ) ≤ m2 . (34) f ( x) − f (c) = f ( x) ≤ ε = 2M Учитывая это, получим окончательную оценку производной 1 ϕ′( x ) ≤ , c − δ ≤ x ≤ c + δ . (35) 2 В соответствии с результатами предыдущего параграфа, неравенство (35) означает, что уравнение (31) можно решать методом итераций: при любом выборе нулевого приближения на отрезке [ c − δ , c + δ ] существует бесконечная последовательность (20), сходящаяся к корню x = c . Нам остается только заметить, что итерационной последовательностью для уравнения (31) является последовательность (29) метода касательных. Требование близости нулевого приближения к искомому корню x = c является существенным для метода касательных. На рис. 3 изображен график той же функции f ( x) , что и на рис. 2, однако x0 выбрано дальше от корня x = c , чем в первом случае. В результате после первого шага получается точка x1 , которая не принадлежит - 40 исходному отрезку [ a, b ] и процесс построения рекуррентной последовательности обрывается. Таким образом, для правильного выбора нулевого приближения нужно еще до начала расчетов знать область локализации искомого корня x = c . В случае необходимости ее можно уточнить с помощью нескольких шагов по методу вилки. Затруднения, связанные с предварительным исследованием уравнения, вполне окупаются высокой скоростью сходимости метода касательных. Задача 3. Найти приближенное значение корня уравнения (16) методом касательных. Рекуррентная формула метода касательных принимает в данном случае вид x − cos xn xn+1 = xn − n . (36) 1 + sin xn Выберем, как и для метода итераций, в качестве нулевого приближения x0 = 0.5 и подсчитаем следующие приближения. Результаты вычислений приведены в таблице 3. Мы видим, что, начиная с номера n = 1 , последовательность убывает, приближаясь к корню x = c сверху. После четвертого шага процесс «останавливается»: пятая итерация дает тот же результат. Причина этого явления заключается в следующем. Расчеты ведутся с 12 десятичными знаками. Когда погрешность оказывается меньше 10−12 , становится невозможно уловить разницу между xn и xn+1 , лежащую за пределами ошибки округления. Таблица 3. xn n 0 0,500000000000 1 0,755222417106 2 0,739141666150 3 0,739085133921 4 0,739085133215 5 0,739085133215 Приведенный пример показывает очень высокую скорость сходимости метода Ньютона. После двух шагов мы достигли точности 10−4 . Это лучше результатов, которые мы имели в методе вилки на девятом шаге, в методе итераций – на девятнадцатом. После четырех шагов погрешность в определении корня составила 10−12 . Задача 4. Рассмотреть вычисление a как задачу решения уравнения x2 − a = 0 (37) в области x > 0 . Написать для вычисления корня уравнения (37) x = a итерационную последовательность по методу касательных. Вычислить с ее помощью 2 . Рекуррентная формула метода касательных (29) для уравнения (37) принимает вид - 41 xn 2 − a 1 ⎛ a⎞ (38) = ⎜ xn + ⎟ . xn +1 = xn − 2 xn 2⎝ xn ⎠ Она определяет монотонно убывающую последовательность, сходящуюся к a сверху. Перейдем ко второй части задания. Напомним, что 2 ≈ 1.414214 . Выбирая x0 = 2 , сделаем несколько итераций по формуле (38): x0 = 2, x1 = 1.5, 1⎛ 3 4⎞ x2 = ⎜ + ⎟ = 1.416666, 2⎝ 2 3⎠ 1 ⎛ 17 24 ⎞ x3 = ⎜ + ⎟ = 1.414216. 2 ⎝ 12 17 ⎠ Третья итерация определяет 2 с погрешностью ∆ = 2 − x3 = -0.000002 .Расчет по формуле (38) много проще вычисления a последовательного определения десятичных знаков. по школьному алгоритму §4. Заключительные замечания Мы познакомились с тремя методами численного решения уравнений, наряду с ними существуют еще несколько методов, на которых мы не останавливались. Ситуация, когда одну и ту же математическую задачу можно решать с помощью разных методов, является довольно типичной. В таких случаях естественно возникает необходимость сравнения их между собой. При оценке эффективности численных методов существенное значение имеют различные свойства: 1. Универсальность. 2. Простота организации вычислительного процесса и контроля точности. 3. Скорость сходимости. Посмотрим с этой точки зрения на разобранные методы решения уравнений. 1. Наиболее универсальным является метод вилки: он требует только непрерывности функции f ( x) . Два других метода накладывают более жесткие ограничения. Во многих случаях это преимущество метода вилки может иметь существенное значение. 2. С точки зрения организации вычислительного процесса все три метода очень просты. Однако и здесь метод вилки обладает определенными преимуществами. Вычисления можно начинать с любого отрезка ⎡⎣ a, b ⎤⎦ , на концах которого функция f ( x) принимает значения разных знаков. Процесс будет сходиться к корню уравнения, причем на каждом шаге он дает двухстороннюю оценку, по которой легко контролировать достигнутую точность. Сходимость же метода итераций и касательных зависит от того, насколько удачно выбрано нулевое приближение. - 42 3. Наибольшей скоростью сходимости обладает метод касательных. В случае, когда подсчет значений функции f ( x) сложен и требует существенных затрат машинного времени, это преимущество становится определяющим. Итак, мы видим, что ответ на вопрос о наилучшем численном методе решения уравнений не однозначен. Он существенно зависит от того, какую дополнительную информацию о функции f ( x) мы имеем и, в соответствии с этим, каким свойствам метода придаем наибольшее значение. - 42 - Глава 3. ПРИБЛИЖЕНИЕ ФУНКЦИЙ. Пусть на отрезке [a, b] определена некоторая функция y = f ( x ), однако полная информация о ней недоступна. Известны лишь ее значения в конечном числе точек x0 , x1 ,K xn , этого отрезка, которые мы будем считать занумерованными в порядке возрастания: (1) a ≤ x0 < x1 < K < xi < xi +1 < K xn ≤ b . Требуется по известным значениям (2) yi = f ( xi ) , i = 0,1,K , n «восстановить», хотя бы приближенно, исходную функцию y = f ( x ), то есть построить на отрезке [a , b] функцию F ( x ) , достаточно близкую к f ( x ) . Функцию F (x) принято называть интерполирующей функцией, точки x = x0 , x = x1 ,K x = xn узлами интерполяции. Подобные задачи часто возникают на практике, например, при обработке экспериментальных данных, когда значения переменной y , зависящей от x , измеряется в конечном числе точек xi : yi = f ( xi ) , ( i = 0,1,K , n ) или при работе с табличными функциями, если требуется вычислить y = f ( x ), при значениях аргумента , не совпадающего ни с одним из табличных xi . Поставленный выше в общей форме вопрос о приближении функций является достаточно сложным. Существует не один подход к его решению. Мы ограничимся изложением трех наиболее распространенных методов. §1. Интерполирование. 1.1. Классическая постановка задачи интерполирования. Выберем некоторую систему функций ϕ 0 ( x ), ϕ1 ( x ),Kϕ n ( x ) , заданных на отрезке [ a, b] , и будем строить F ( x ) как их линейную комбинацию: n F ( x ) = ∑ ciϕ i ( x ) , i =0 (3) где числовые коэффициенты ci (i = 0,1,K n ) подлежат определению, согласно условиям: (4) F ( x j ) = f ( x j ) , j = 0,1,K , n . Равенства (4) представляют собой систему линейных алгебраических уравнений относительно коэффициентов ci : n ∑c ϕ (x ) = f (x ) , i =0 или в развернутом виде: i i j j j = 0,1,K , n - 43 - ⎧c0ϕ 0 ( x0 ) + c1ϕ1 ( x0 ) + K + cnϕ n ( x0 ) = f ( x0 ) ⎪c ϕ ( x ) + c ϕ ( x ) + K + c ϕ ( x ) = f ( x ) ⎪ 0 0 1 1 1 1 n n 1 1 . (5) ⎨ M ⎪ ⎪⎩c0ϕ 0 ( xn ) + c1ϕ1 ( xn ) + K + cnϕ n ( xn ) = f ( xn ) Для того, чтобы коэффициенты ci (i = 0,1,K n ) можно было определить и притом единственным образом, необходимо и достаточно, чтобы определитель полученной системы линейных уравнений был отличен от нуля: ϕ 0 ( x0 ) ϕ1 ( x0 ) K ϕ n ( x0 ) ϕ 0 ( x1 ) ϕ1 ( x1 ) K ϕ n ( x1 ) ∆= ≠ 0. (6) M M M M ϕ 0 ( xn ) ϕ 1 ( xn ) K ϕ n ( x n ) Определение. Система функций ϕ i ( x ) ( i = 0,1,K n ) , удовлетворяющая при фиксированных значениях x j ( j = 0,1,Kn ) условию (6), называется Чебышевской. Очевидно, что для однозначной разрешимости задачи интерполирования в классической постановке необходимо и достаточно, чтобы система функций ϕ i ( x ) (i = 0,1,K n ) была Чебышевской. Только такие системы функций мы и будем использовать в этой главе. Необходимым условием принадлежности системы функций ϕ i ( x ) (i = 0,1,K n ) к Чебышевской является их линейная независимость. Однако это условие не является достаточным. Например, для системы из двух линейно независимых функций ϕ 0 ( x ) = sin x, ϕ1 ( x ) = cos x , с узлами интерполяции x0 = 0, x1 = π , определитель sin x0 cos x0 0 1 ∆= = =0 sin x1 cos x1 0 −1 и данная система функций при выбранных значениях x0 и x1 не является Чебышевской. 1.2. Интерполирование полиномами. При построении интерполирующей функции F ( x ) в виде (3) функции ϕ i ( x ) , естественно, выбираются такими, чтобы их вычисление было простым. В частности, широкое распространение получило интерполирование с помощью степенных функций: ϕ 0 ( x ) = 1; ϕ1 ( x ) = x; ϕ 2 ( x ) = x 2 , K ϕ n ( x ) = x n . В этом случае интерполирующая функция представляет собой полином степени n : n F ( x ) = Pn ( x ) = ∑ ci x i i =0 с неизвестными коэффициентами ci ( i = 0,1,K n) . (7) - 44 Согласно рассмотренной выше общей схеме построения интерполирующей функции, следует потребовать, чтобы коэффициенты ci с учетом (7) удовлетворяли системе линейных уравнений: n ∑c x i =0 i i j = f ( x j ) , j = 0,1,K , n . (8) Определителем этой системы является определитель Ван-дер- Монда: 1 x0 x02 K x0n 1 x1 x12 K x1n ∆= = ∏ ( xi − x j ) . M M M M M i> j 1 xn xn2 K xnn В нашем случае этот определитель отличен от нуля, поскольку, согласно (1), все узлы интерполирования различны между собой. Итак, интерполирование с помощью полиномов при сделанных в начале главы предположениях всегда осуществимо и притом единственным образом. Задача 1. Построить линейный полином P1 ( x ) = c0 + c1 x по заданным узлам интерполяции x0 < x1 и соответствующим им значениям функции y0 = f ( x0 ) и y1 = f ( x1 ) . Линейная система уравнений для определения c0 и c1 в данном случае имеет вид: c0 + c1 x0 = f ( x0 ) , c0 + c1 x1 = f ( x1 ) . Определитель этой системы равен ∆ = x1 − x0 ≠ 0 . Решив систему, получим: x f ( x0 ) − x0 f ( x1 ) f ( x1 ) − f ( x0 ) c0 = 1 ; c1 = . x1 − x0 x1 − x0 Следовательно, x f ( x0 ) − x0 f ( x1 ) f ( x1 ) − f ( x0 ) P1 ( x ) = 1 + x. (9) x1 − x0 x1 − x0 Перепишем этот полином в несколько другой форме, выделяя f ( x0 ) и f ( x1 ) в качестве множителей x − x0 x − x1 P1 ( x ) = f ( x0 ) + f ( x1 ) . (10) x0 − x 1 x1 − x0 Геометрический образ интерполирующей функции P1 ( x ) - прямая, проходящая на плоскости ( x, y ) через точки с координатами ( x0 , y0 ) и ( x1 , y1 ) . Уравнение этой прямой, наряду с (9) и (10), можно переписать в виде: f ( x1 ) − f ( x0 ) y = P1 ( x ) = f ( x0 ) + (11) ( x − x0 ) . x1 − x0 - 45 Из данного примера видно, что всегда существуют различные эквивалентные между собой формы записи интерполяционного полинома, удобные в различных ситуациях. 1.3. Построение интерполяционного полинома в форме Лагранжа. Интерполяционный полином первой степени (9) мы построили, решая напрямую систему двух уравнений с двумя неизвестными - коэффициентами c0 и c1 . Однако решить таким же образом систему (8) при произвольном n технически очень сложно. Проще сделать это с помощью специальных методов, учитывающих особенности рассматриваемой задачи. Один из таких методов, принадлежащих Лагранжу, мы и рассмотрим в этом разделе. Представим искомый полином Pn ( x ) в виде: n Pn ( x ) = ∑ f ( xi )Qn ,i ( x ) , (12) i =0 где Qn ,i ( x ) полиномы степени n , «ориентированные» на точки xi в том смысле, что ⎧0, x = x j ∀j ≠ i, Qn ,i ( x ) = ⎨ ⎩1, x = xi . Такие полиномы легко построить: j =n (x − xj ) Qn ,i ( x ) = ∏ j =0 ( xi − x j ) (13) (14) j ≠i или в развернутом виде: Qn ,0 ( x ) = ( x − x1 )( x − x2 )K ( x − xn ) , ( x0 − x1 )( x0 − x2 )K ( x0 − xn ) Qn ,i ( x ) = ( x − x0 )K ( x − xi −1 )( x − xi +1 )K ( x − xn ) , ( xi − x0 )K ( xi − xi −1 )( xi − xi +1 )K ( xi − xn ) ( x − x0 )( x − x1 )K ( x − xn −1 ) . ( xn − x0 )( xn − x1 )K ( xn − xn −1 ) Иногда нам будет удобно записывать Qn ,i ( x ) в виде: (15) Qn ,n ( x ) = ( x − x0 )K[i ]K ( x − xn ) . ( xi − x0 )K[i ]K ( xi − xn ) Из выражения (12) и формул (13) очевидно, что построенный полином Pn ( x ) действительно является интерполяционным полиномом для функции y = f ( x ) на сетке с узлами x0 , x1 ,..., xn . Его принято называть интерполяционным полиномом в форме Лагранжа. Этим подчеркивается, что возможны и другие эквивалентные представления интерполяционного полинома Pn ( x ) . С одним из них мы познакомимся в следующем разделе. В заключение отметим, что из трех различных представлений интерполяционного полинома первой степени (9)- (11) формула (10) дает его запись в форме Лагранжа. Qn ,i ( x ) = Задача 2. - 46 Написать интерполяционный полином второй степени для функции y = sin x по ее значениям в трех точках: x0 = 0 , x1 = π / 6 , x2 = π / 2 . Вычислить с помощью этого полинома приближенное значение синуса в точке x = π / 4 , сравнить полученный ⎛π ⎞ результат с точным значением синуса и подсчитать погрешность R2 ⎜ ⎟ . ⎝4⎠ Воспользуемся для записи полинома формулой Лагранжа (12). В рассматриваемом случае y0 = sin x0 = 0 , так что в формуле останется только два слагаемых соответствующих точкам x1 и x2 . В результате получим: π⎞ π⎞ ⎛ ⎛ x⎜ x − ⎟ x⎜ x − ⎟ 1 ⎝ 2⎠ 6 ⎠ x ⎛ 7π ⎞ (16) + ⎝ = 2⎜ − 3x ⎟ P2 ( x ) = π ⎛π ⎞ π ⎝ 2 2 π⎛ π⎞ ⎠ ⎜− ⎟ ⎜ ⎟ 6⎝ 3⎠ 2⎝ 3⎠ Перейдем к выполнению второй части задания. Вычислим с помощью интерполяционного полинома (16) приближенное значения синуса в точке x = π / 4 и подсчитаем погрешность: ⎛ π ⎞ 11 ⎛ π ⎞ 1 11 P2 ⎜ ⎟ = , R2 ⎜ ⎟ = − = 0.0197 < 0.02 . (17) 4 16 4 16 2 ⎝ ⎠ ⎝ ⎠ На рис. 1 приведены для сравнения графики функций sin x (сплошная линия) и P2 ( x ) (пунктир). 1.4. Интерполяционный полином в форме Ньютона. Интерполяционный полином в форме Лагранжа, несмотря на своё изящество, неудобен для вычислений тем, что при увеличении числа узлов интерполяции приходится перестраивать весь полином заново. Перепишем интерполяционный полином Лагранжа в иной, эквивалентной форме n Pn ( x ) = P0 ( x ) + ∑ ( Pi ( x ) − Pi −1 ( x )) , i =1 (18) где Pi ( x ) - полиномы Лагранжа степени i ≤ n , соответствующие узлам интерполирования x0 , x1 ,K xi . В частности, P0 ( x ) = f ( x0 ) - полином нулевой степени. Полином (19) Qi ( x ) = Pi ( x ) − Pi −1 ( x ) имеет степень i и по построению обращается в ноль при x = x0 , x = x1 ,K x = xi −1 , поэтому его можно представить в виде (20) Qi ( x ) = Ai ( x − x0 )( x − x1 )K ( x − xi −1 ) , где Ai - числовой коэффициент при x i . Поскольку Pi −1 ( x ) не содержит степени i , то Ai просто совпадает с коэффициентом при x i в полиноме Pi ( x ) . Согласно (12) и (15) его можно записать в виде i f ( xk ) Ai = ∑ , (21) k =0 ω k ,i - 47 где ω k ,i = ( xk − x0 )K ( xk − xk −1 )( xk − xk +1 )K ( xk − xi ) . (22) При этом (23) A0 = f ( x0 ) . Формулы (19) и (21) позволяют написать рекуррентное соотношение для полинома Pn ( x ) : (24) Pn ( x ) = Pn −1 ( x ) + An ( x − x0 )K ( x − xn −1 ) . Выражая аналогичным образом по индукции Pn −1 ( x ) через Pn −2 ( x ) , Pn −2 ( x ) через Pn −3 ( x ) и т. д., получим окончательную формулу для полинома Pn ( x ) : Pn ( x ) = A0 + A1 ( x − x0 ) + A2 ( x − x0 ) ( x − x1 ) + K (25) + Ai ( x − x0 )K ( x − xi −1 ) + K + An ( x − x0 )K ( x − xn−1 ) . Представление (25) удобно для вычислителя, поскольку увеличение n на единицу требует только добавления к «старому» многочлену одного дополнительного слагаемого. Такое представление интерполяционного полинома Pn ( x ) называют интерполяционным полиномом в форме Ньютона. Из трех эквивалентных представлений интерполяционного полинома первой степени (9) - (11) формула (11) дает его запись в форме Ньютона. Задача 3. Написать интерполяционный полином второй степени в форме Ньютона для функции y = sin x по ее значениям в трех точках: x0 = 0 , x1 = π / 6 , x2 = π / 2 (см. задачу 2). Согласно формуле (25) π⎞ ⎛ P2 ( x ) = A0 + A1 x + A2 x ⎜ x − ⎟ . (26) 6⎠ ⎝ Коэффициенты в этом разложении вычисляются по формулам (21) и(23): 18 6 3 1⎛ 6⎞ (27) A0 = 0 , A1 = ⎜ ⎟ , A2 = − 2 + 2 = − 2 . 2π π π 2 ⎝π ⎠ Подставляя найденные значения коэффициентов в формулу (26), получим 3 3x ⎛ π ⎞ x ⎛ 7π ⎞ P2 ( x ) = x − 2 ⎜ x − ⎟ = 2 ⎜ − 3x ⎟ . (28) π π ⎝ 6⎠ π ⎝ 2 ⎠ Первоначальные выражения для интерполяционного полинома в форме Лагранжа и Ньютона различны, но окончательные ответы, естественно, совпадают. 1.5. Погрешность интерполирования. Поставим вопрос о том, насколько хорошо интерполяционный полином Pn ( x ) приближает функцию f ( x ) на отрезке [ a , b ] , то есть попытаемся оценить погрешность (остаточный член) (29) Rn ( x ) = f ( x ) − Pn ( x ) , x ∈ [ a , b ] . - 48 Сразу же отметим, что по определению интерполяционного полинома (30) Rn ( xi ) = 0 при i = 0,1,K , n , поэтому речь идет об оценке Rn ( x ) при значениях x ≠ xi . Для того, чтобы это сделать, следует ввести дополнительно предположение о гладкости функции f ( x ) . Предположим, что f ( x ) имеет ( n + 1) непрерывную производную на отрезке [ a , b ] . В силу (30) Rn ( x ) можно представить в виде: (31) Rn ( x ) = ω n +1 ( x ) rn ( x ) , где ω n +1 ( x ) - полином степени ( n + 1) : (32) ω n +1 ( x ) = ( x − x0 )( x − x1 )K ( x − xn ) . Зафиксируем произвольное значение x ∈ [ a , b ] и рассмотрим вспомогательную функцию от переменной t : g (t ) = f ( t ) − Pn ( t ) − ω n +1 (t ) rn ( x ) , заданную на отрезке [ a , b ] и содержащую переменную x в качестве параметра. В силу своего определения функция g (t ) обязана обращаться в нуль в узлах интерполирования при t = xi и кроме того при t = x , т. е. как функция аргумента t она имеет ( n + 2 ) нуля: (33) g ( xi ) = 0 , i = 0,1,K , n , g ( x ) = 0 . Если x ∈ [ x0 , xn ] , то все ее нули также лежат на отрезке [ x0 , xn ] . Если x < x0 , то эти нули, вообще говоря, принадлежат отрезку [ x , xn ] , а если x > xn , то они находятся на отрезке [ x0 , x ] . Объединяя эти три случая, скажем, что указанные нули функции g (t ) принадлежат отрезку [α , β ] , где α = min( x0 , x ) ≥ a , β = max( xn , x ) ≤ b . Согласно известной теореме Ролля можно утверждать, что производная g ′(t ) имеет по крайней мере ( n + 1) нуль на отрезке [α , β ] (эти нули перемежаются с нулями самой функции g (t ) ). Повторяя это рассуждение, заключаем, что g ′′(t ) имеет по крайней мере n нулей на отрезке [α , β ] , g ′′′(t ) - ( n − 1) нуль и, наконец, g ( n +1) (t ) обращается хотя бы один раз в нуль в некоторой точке t = ξ ∈ [α , β ] , то есть g ( n +1) (ξ ) = f ( n +1) (ξ ) − Pn( n +1) (ξ ) − ( n + 1)! rn ( x ) = 0 . Учитывая, что ( n + 1) производная полинома степени n тождественно равна нулю, получаем, что f ( n +1) (ξ ) rn ( x ) = ; ξ ∈ [α , β ] (34) ( n + 1)! и соответственно f ( n+1) (ξ ) ω n+1 ( x ) . Rn ( x ) = (35) ( n + 1)! Формула (35) не позволяет вычислить погрешность, поскольку точное значение аргумента ξ нам неизвестно. Однако с ее помощью погрешность можно оценить: - 49 - Rn ( x ) ≤ M n +1 ω n+1 ( x ) , (n + 1)! (36) где M n +1 = max f ( n +1) ( x ) ≤ max f ( n+1) ( x ) . x∈[α , β ] x∈[ a ,b] (37) Обсудим роль полинома ω n +1 ( x ) (32) в оценке (36). На отрезке [ x0 , xn ] он имеет ( n + 1) нуль, а его значения между этими нулями сравнительно невелики, но, когда точка x выходит за пределы отрезка [ x0 , xn ] и удаляется от точки x0 влево или от точки xn вправо, оценка (36) ухудшается из-за быстрого роста функции ω n +1 ( x ) . Это хорошо видно на рис. 2, где в качестве примера приведен график функции ω 4 ( x ) с корнями x0 = −3/ 2 , x1 = −1/ 2 , x2 = 1/ 2 , x3 = 3 / 2 : 9 ⎞⎛ 1⎞ ⎛ ω4 ( x ) = ⎜ x 2 − ⎟ ⎜ x 2 − ⎟ . 4 ⎠⎝ 4⎠ ⎝ ⎡ 3 3⎤ Ее наибольшее по модулю значение на отрезке ⎢ − , ⎥ равно единице. Однако уже в ⎣ 2 2⎦ точках x = ±2 за пределами отрезка полином ω 4 ( x ) принимает значение 105 ω4 ( ±2) = = 6.5625 . 16 Из сказанного можно сделать следующий вывод. Если x ∈ [ x0 , xn ] , то множитель ω n +1 ( x ) не обесценивает оценку (36). Такой случай называют собственно интерполяцией f ( x ) . Противоположный случай, когда точка x лежит вне отрезка называют экстраполяцией функции f ( x ) . Отмеченная выше особенность поведения полинома ω n +1 ( x ) резко ухудшает оценку (36) при экстраполяции. Поэтому на практике экстраполяции избегают или ограничиваются многочленами невысокой степени ( n = 1, 2 ) , когда рост функции ω n+1 ( x ) не настолько критичен. Задача 4. Написать мажорантную оценку для погрешности (36) при вычислении приближенного значения sin x в точке x = π / 4 с помощью интерполяционного полинома второй степени P2 ( x ) (16). Сравнить ее с погрешностью (17), подсчитанной непосредственно. Формула для погрешности (35) принимает в данном случае вид: π3 π ⎛π ⎞ 1 ⎛π ⎞ R2 ⎜ ⎟ = ( − cos ξ ) ω 3 ⎜ ⎟ = cos ξ , 0 ≤ξ ≤ . 1152 2 ⎝4⎠ 6 ⎝4⎠ Она правильно определяет знак погрешности, но не позволяет вычислить ее величину, поскольку значение аргумента ξ неизвестно. Чтобы получить мажорантную оценку погрешности (36), нужно заменить cos ξ на его наибольшее значение – единицу. В результате будем иметь: - 50 - ⎛π ⎞ π R2 ⎜ ⎟ ≤ < 0.027 . ⎝ 4 ⎠ 1152 Эта оценка согласуется с величиной погрешности (17), вычисленной «в лоб». 3 1.6. О сходимости интерполяционного процесса. Поставим вопрос, будут ли сходится интерполяционные полиномы Pn ( x ) к интерполируемой функции f ( x ) на отрезке [ a , b ] при неограниченном возрастании числа узлов n . Упорядоченное множество точек xi , i = 0,1,K n (1) назовем сеткой на отрезке [ a , b ] и обозначим для краткости Ω n . Рассмотрим последовательность сеток с возрастающим числом узлов: Ω0 = {x0(0) }, Ω1 = {x0(1) , x1(1) },K, Ωn = {x0( n ) , x1( n ) K xn( n ) },K и отвечающую ей последовательность интерполяционных полиномов Pn ( x ) , построенных для фиксированной непрерывной на отрезке [ a , b ] функции f ( x ) . Интерполяционный процесс для функции сходится в точке x* ∈ [ a , b ] , если существует предел lim Pn ( x* ) = f ( x* ) . n→∞ Наряду с обычной сходимостью часто рассматривается сходимость в различных нормах. Так, равномерная сходимость на отрезке [ a , b ] означает, что max f ( x ) − Pn ( x ) → 0 при n → ∞ . x∈[ a ,b] Сходимость или расходимость интерполяционного процесса зависит как от выбора последовательности сеток, так и от гладкости функции f ( x ) . Если f ( x ) - целая аналитическая функция, то при произвольном расположении узлов на отрезке [ a , b ] интерполяционный многочлен Pn ( x ) равномерно сходится к f ( x ) при n → ∞ . Положение резко меняется, если производные функции разрывны или не существуют в отдельных точках. Например для функции f ( x ) = x на отрезке [ −1,1] , покрытом равномерной сеткой узлов, значения Pn ( x ) между узлами интерполяции неограниченно возрастают при n → ∞ . Вместе с тем, для заданной непрерывной функции f ( x ) за счет выбора сеток можно добиться сходимости и притом равномерной на [ a , b ] . Однако построение таких сеток довольно сложно и, главное, такие сетки «индивидуальны» для каждой конкретной функции. Если заметить дополнительно, что объем вычислений при построении интерполяционного полинома быстро нарастает с ростом n , то становится понятно, что на практике вычислители избегают пользоваться интерполяционными полиномами высокой степени. Вместо этого, в случае необходимости, при больших значениях n используется кусочно-полиномиальная интерполяция, которую мы обсудим в следующем параграфе. - 51 1.7. Интерполяционный полином Эрмита. Расширим постановку задачи об интерполяции. Ранее полагалось, что в узлах интерполяции заданы только значения функции f ( x ) . Пусть теперь в узлах xk ∈ [ a , b ], k = 0,1,K m , среди которых нет совпадающих, заданы значения функции f ( xk ) , и её производных f ( i ) ( xk ), i = 1, 2,K , N k − 1 до ( N k − 1) -го порядка включительно. Числа N k при этом называют кратностью узла xk . В каждой точке xk , таким образом, задано N k величин: f ( xk ), f ′( xk ),K f ( N k −1) ( xk ) . В общей сложности на всей совокупности узлов x0 , x1 ,K , xm известно N 0 + N1 + K + N m величин, что дает возможность ставить вопрос о построении полинома H n ( x ) степени (38) n = N0 + K + Nm − 1, удовлетворяющего требованиям: (39) H n( i ) ( xk ) = f ( i ) ( xk ) , k = 0,1,K , m , i = 0,1,K , N k − 1 . Такой полином называется интерполяционным полиномом Эрмита для функции f ( x ) . Рассмотренный ранее вариант построения интерполяционного полинома Pn ( x ) по известным значениям функции f ( x ) в узлах интерполяции является частным случаем построения полинома Эрмита при условии, что все узлы простые: N k = 1 , k = 0,1,K , m . Докажем, что интерполяционный полином Эрмита существует и является единственным. Представим его в стандартном виде H n ( x ) = a0 + a1 x + K + an x n . Наше утверждение будет справедливо, если показать, что коэффициенты a0 , a1 ,K , an определяются из условий (39) и притом единственным образом. Условия (39) представляют собой систему линейных алгебраических уравнений относительно этих коэффициентов, причем число уравнений и число неизвестных равны N 0 + N1 + K + N m = n + 1 . Рассмотрим соответствующую однородную систему H n(i) ( xk ) = 0 , k = 0,1,K , m , i = 0,1,K , N k − 1 . (40) Уравнения (40) просто указывают на то, что числа xk являются корнями полинома H n (x) кратности N k . Мы видим, таким образом, что полином H n (x) имеет, с учетом кратности, не менее N 0 + N1 + K + N m = n + 1 корней. Поскольку его степень равна n , то он должен тождественно равняться нулю. Это означает, что a0 = a1 = K = an = 0 , т.е. однородная система уравнений (40) имеет только тривиальное решение. Отсюда следует, что неоднородная система (39) при любой правой части разрешима и при том единственным образом. Исследование погрешности интерполирования полинома Эрмита Rn ( x ) = f ( x ) − H n ( x ) почти дословно повторяет проведенное ранее исследование для - 52 полинома с простыми узлами xk , в которых заданы только f ( xk ) . Достаточно представить Rn ( x ) в виде (41) Rn ( x ) = rn ( x )ω n +1 ( x ) , где N N N ω n+1 ( x ) = ( x − x0 ) 0 ( x − x1 ) 1 K( x − xm ) m , n + 1 = N 0 + K + N m (42) и рассмотреть функцию g (t ) = f (t ) − H n (t ) − rn ( x )ω n +1 (t ) . Применяя теорему Ролля к функции g (t ) и ее производным с учетом кратности корней в узлах t = xk и условия g ( x ) = 0 придем к формуле f ( n+1) (ξ ) ω n+1 ( x ) , f ( x) − H n ( x) = (43) (n + 1)! которая по существу повторяет формулу (35). С ее помощью можно написать оценку типа (36): M n+1 Rn ( x ) ≤ ω n+1 ( x ) , (44) (n + 1)! где M n +1 - максимальное значение модуля функции f ( n+1) ( x ) (37). Здесь полином ω n +1 ( x ) (42) является обобщением полинома (32) на случай кратных корней. Построение полинома Эрмита в общем случае при произвольном числе узлов и их кратности приводит к довольно громоздким выражениям и редко используется. Поэтому мы ограничимся двумя примерами, встречающимися на практике. Пример 1 Построить интерполяционный полином Эрмита для функции f ( x ) по известным значениям в узлах f ( xk ) = f k , k = 0,1,K , m и значению f ′( x j ) = f j′ в одном из узлов x = xj. Степень полинома H n ( x ) в данном случае равна m + 1 . Будем искать H m+1 ( x ) в виде m H m+1 ( x ) = ∑ f k k =0 k≠ j ( x − x0 )K[ k ]K ( x − xm ) ⎛ x − x j ⎞ ⎜ ⎟+ ( xk − x0 )K[ k ]K ( xk − xm ) ⎜⎝ xk − x j ⎟⎠ ( x − x0 )K[ j ]K ( x − xm ) . ( x j − x0 )K[ j ]K ( x j − xm ) Здесь выражения, стоящие под знаком суммы, суть обычные составляющие полинома в форме Лагранжа в узлах xk , k ≠ j , «усиленные» дополнительными множителями ( x − x j ) ( xk − x j ) . Слагаемое, отвечающее кратному узлу x = x j , выделено отдельно + ⎡⎣ f j + α j ( x − x j )⎤⎦ как особое. Постоянная α j подлежит определению. Из структуры H m+1 ( x ) видно, что H m +1 ( xi ) = f i , i = 0,1,K , m . Найдем производную H m′ +1 ( x j ) в узле x = x j . Слагаемые, стоящие под знаком суммы, содержат множители (x − x ) j 2 и потому их производные обращаются в нуль при x = x j . Таким образом, - 53 ⎛ 1 1 1 1 ⎞ +K + + +K+ H m′ +1 ( x j ) = f j ⎜ ⎟⎟ + α j . ⎜x −x x − x x − x x − x j j −1 j j +1 j m ⎠ ⎝ j Для соблюдения требования H m′ +1 ( x j ) = f j′ следует положить α j = f j′ − f j A j , где для краткости обозначено 1 1 1 1 Aj = +K+ + +K+ . x j − x0 x j − x j −1 x j − x j +1 x j − xm Итак: m ( x − x0 )K[ k ]K ( x − xm ) ⎛ x − x j ⎞ H m+1 ( x ) = ∑ f k ⎜ ⎟+ ( xk − x0 )K[ k ]K ( xk − xm ) ⎜⎝ xk − x j ⎟⎠ k =0 k≠ j + ⎡⎣ f j + ( f j′ − f j Aj )( x − x j )⎤⎦ ( x − x0 )K[ j ]K ( x − xm ) . ( x j − x0 )K[ j ]K ( x j − xm ) (45) (46) (47) Пример 2. Построить интерполяционный полином Эрмита для функции f (x) в случае, когда во всех узлах интерполяции xk , k = 0,1,K , m заданы значения функции f ( xk ) = f k и ее первой производной f ′( xk ) = f k′ . В данном случае N k = 2 , k = 0,1,K , m , так что степень полинома H n (x ) равна 2m + 1 . Запишем исходный полином в виде: m ( x − x0 ) 2 K[ k ]K ( x − xm ) 2 H 2 m+1 ( x ) = ∑ ⎡⎣ f k + α k ( x − xk ) ⎤⎦ . (48) ( xk − x0 ) 2 K[ k ]K ( xk − xm ) 2 k =0 Представление (48) удобно тем, что автоматически выполняются условия H 2 m +1 ( x k ) = f k . При вычислении производной полинома (48) в узле x = x k следует учесть, что все слагаемые суммы, кроме слагаемого, отвечающему самому узлу xk , дают нулевой вклад в производную в этой точке, поэтому ⎛ 2 2 2 2 ⎞ H 2′ m+1 ( xk ) = f k ⎜ +K+ + +K+ ⎟ + α k = f k′ . x − x x − x x − x x − x k k −1 k k +1 k k ⎠ ⎝ k Отсюда α k = f k′ − 2 f k Ak , где, числа Ak определяются формулой (46). Таким образом, решением данной задачи является полиномом Эрмита m ( x − x0 ) 2 K[ k ]K ( x − xm ) 2 H 2 m+1 ( x ) = ∑ ⎡⎣ f k + ( f k′ − 2 f k Ak ) ( x − xk )⎤⎦ . (49) 2 2 ( x − x ) K k K ( x − x ) [ ] k =0 k k m Задача 5 - 54 Построить полином Эрмита второй степени H 2 ( x ) для функции sin x по следующим данным: π π sin 0 = 0 , sin = 1 , sin ′ = 0 . 2 2 Вычислить с помощью этого полинома приближенное значение синуса в точке x = π / 4 . Найти погрешность, сравнить ее с погрешностью, которую дает интерполяционный полином P2 ( x ) (16) задачи 2 и с теоретической оценкой погрешности (44). Здесь мы имеем задачу, которая в общем виде была разобрана в примере 1: согласно (49) узел x0 = 0 является простым, а узел x1 = π / 2 - двукратным. В этом случае в формуле (47) сумма, соответствующая простым узлам, сводится к одному слагаемому, которое в силу нулевого значения синуса в точке x0 = 0 обращается в ноль. Второй член в формуле (47) соответствует кратному корню x1 = π / 2 . Подставляя сюда соответствующее значение синуса и его производной в этой точке, а также значение коэффициента A1 = 2 / π , будем иметь: π ⎞⎤ 2 x 4 ⎡ 2⎛ H 2 ( x ) = ⎢1 − ⎜ x − ⎟ ⎥ x (π − x ) . = (50) 2 ⎠⎦ π π 2 ⎣ π⎝ Вычислим значение полинома H 2 ( x ) в точке x = π / 4 и подсчитаем погрешность ⎛π ⎞ 3 ⎛π ⎞ 1 3 − = −0.04282 . H 2 ⎜ ⎟ = , R2 ⎜ ⎟ = (51) 2 4 ⎝4⎠ 4 ⎝4⎠ Теоретическая формула для погрешности (43) принимает в данном случае вид: π3 π ⎛π ⎞ 1 ⎛π ⎞ R2 ⎜ ⎟ = ( − cos ξ ) ω 3 ⎜ ⎟ = − cos ξ , 0 ≤ξ ≤ . (52) 384 2 ⎝4⎠ 6 ⎝4⎠ Она правильно определяет знак погрешности и позволяет написать для нее мажорантную оценку 3 ⎛π ⎞ π R2 ⎜ ⎟ ≤ < 0.081 . (53) ⎝ 4 ⎠ 384 Данная оценка согласуется с величиной погрешности (51), подсчитанной «в лоб». При подсчете приближенного значения sin x с помощью полинома Эрмита H 2 ( x ) (50) в точке x = π / 4 мы получили погрешность (51), модуль которой в два с лишним раза превышает погрешность (17) полинома P2 ( x ) (16). Чтобы понять причину такого расхождения, рассмотрим рис. 3, на котором приведены графики функций sin x (сплошная линия) и H 2 ( x ) (пунктир). Сравним его с рис. 1, на котором изображены графики функции sin x и полинома P2 ( x ) . Из-за нулевого значения производной H 2′ ( x ) в точке x = π / 2 график полинома H 2 ( x ) качественно больше похож на график синуса, чем график полином P2 ( x ) . Однако равенство полинома - 55 - ⎡ π⎤ P2 ( x ) синусу не только в граничных точках отрезка ⎢0, ⎥ , но и во внутренней точке ⎣ 2⎦ ⎡ π⎤ x = π / 6 приводит к тому, что полином P2 ( x ) приближает синус на отрезке ⎢0, ⎥ ⎣ 2⎦ лучше чем полином H 2 ( x ) . Это хорошо видно при сравнении рис. 1 и рис. 3. Подсчет погрешностей (17) и (51) в точке x = π / 4 является дополнительным тому подтверждением. §2. Интерполирование сплайнами. Увеличение степени интерполяционного полинома может оказаться невыгодным из-за быстрого роста объема вычислений. К тому же далеко не всегда оно приводит к повышению точности. Во второй половине ХХ века с появлением компьютеров и развитием современной вычислительной математики при обработке больших таблиц получила развитие новая идея – строить приближение функций с помощью кусочнополиномиальной интерполяции с использованием полиномов сравнительно невысоких степеней. Наиболее удобными оказались полиномы третьей степени. Такие конструкции получили название кубических сплайнов. 2.1. Определение кубического сплайна. Пусть на отрезке [ a , b ] задана функция y = f ( x ) . Рассмотрим сетку узлов (54) a = x0 < x1 < x2 < K < xn = b и обозначим через hi расстояние между смежными узлами (55) hi = xi − xi −1 , i = 1,K , n Определение: Назовем кубическим сплайном функции y = f ( x ) , x ∈ [ a , b ] на сетке (54) функцию S ( x ) удовлетворяющую условиям: S1. На каждом отрезке [ xi −1 , xi ] функция S ( x ) является полиномом третьей степени. S2. Функция S ( x ) , её первая S ′( x ) и вторая S ′′( x ) производные непрерывны на сегменте [ a , b ] . S3. S ( xi ) = f ( xi ) = f i , i = 0,K , n S4. На концах сегмента [ a , b ] функция S ′′( x ) удовлетворяет условиям S ′′( a ) = S ′′(b) = 0 . Замечание. На концах сегмента [ a , b ] могут быть заданы в принципе и другие условия, например: S ′′( a ) = A, S ′′( b) = B . Справедлива следующая теорема. Теорема. Существует единственный сплайн S ( x ) , удовлетворяющий требованиям (S1) – (S4). Мы проведем конструктивное доказательство этой теоремы. - 56 2.2. Формулировка системы уравнений для коэффициентов кубического сплайна. Сведем задачу построения сплайна к отысканию коэффициентов упомянутых полиномов третьей степени на каждом из отрезков [ xi −1 , xi ] .Для этого сопоставим отрезку [ xi −1 , xi ] полином Si ( x ) , для удобства записанный в виде: c d Si ( x ) = ai + bi ( x − xi ) + i ( x − xi )2 + i ( x − xi )3 , x ∈ [ xi −1 , xi ] , i = 1,K , n . (56) 2 6 При этом, очевидно: d (57) Si′ ( x ) = bi + ci ( x − xi ) + i ( x − xi 2 ) , 2 Si″ ( x ) = ci + di ( x − x i ) , (58) так, что S ( x ) = a , S ′( x ) = b , S ″( x ) = c . (59) i i i i −1 i i i i i i i Для выполнения требований (S3) в узлах интерполяции с номерами i = 1,K , n следует положить: (60) ai = f ( xi ) = f i , i = 1,K , n Требуя непрерывности сплайна в узлах x i ( i = 1,K , n − 1) и выполнения условия (S3) при i = 0 , получим: (61) Si ( xi −1 ) = f i −1 , i = 1,K , n или c d f i + bi ( xi −1 − xi ) + i ( xi −1 − xi )2 + i ( xi −1 − xi )3 = f i −1 , i = 1,K n . 2 6 Это равенство можно переписать следующим образом: c d bi hi − i hi 2 + i hi 3 = fi − f i −1 , i = 1,K, n . (62) 2 6 Условие (S2) непрерывности первой производной S ′( x ) в узлах x i ( i = 1,K , n − 1) принимает вид: S ′ ( x ) = S ′ ( x ) = b , i = 2,K, n (63) i −1 i −1 i −1 и приводит к соотношениям bi − ci hi + или di 2 hi = bi −1 , i = 2,K , n 2 di 2 (64) hi = bi − bi −1 , i = 2,K , n . 2 Аналогичным образом условия непрерывности второй производной S ′′( x ) в тех же узлах: Si″ ( xi −1 ) = Si−1″ ( xi −1 ) = ci −1 , i = 2,K, n (65) означают, что (66) d i hi = ci − ci −1 , i = 2,K , n . ci hi − - 57 Наконец, дополнительные граничные условия (S4) дают еще два уравнения ⎧⎪ S ″ ( x ) = S ″ ( a ) = c − d h = 0 1 1 1 1 1 . (67) ⎨ ″ ″ ⎪⎩ Sn ( xn ) = Sn (b) = cn = 0 В итоге мы получили замкнутую систему (62), (64), (66), (67), содержащую в сумме 3n линейных уравнений для отыскания 3n неизвестных: bi , ci , d i , i = 1, 2,K , n 2.3. Редукция системы. Удобно формально ввести ещё одно неизвестное c0 , положив при этом c0 = 0 , и первое уравнение в (67) переписать в виде: d1h1 = c1 − c0 , то есть в форме аналогичной (66). Теперь уравнения (66) и (67) естественно представить в единообразном виде (68) d i hi = ci − ci −1 , i = 1, 2,K , n (69) c0 = 0 , cn = 0 . Обратим внимание на то, что из системы (68) можно выразить все коэффициенты d i через разности ci − ci −1 , а затем из системы (62) выразить через ci и ci −1 коэффициенты bi . Подставляя полученные выражения в (64), придем к системе линейных уравнений для ci : ⎛ f − f i −1 f i −1 − f i −2 ⎞ 1 2 1 ci −2 hi −1 + ci −1 ( hi −1 + hi ) + ci hi = 2 ⎜ i − (70) ⎟ , i = 2,3,K , n . 3 3 3 h h i i − 1 ⎝ ⎠ Сдвигая индекс i на единицу, получим симметричную форму записи уравнений (70): ⎛ f −f f − f i −1 ⎞ hi ci −1` + 2( hi + hi +1 )ci + hi +1ci +1 = 6 ⎜ i +1 i − i (71) ⎟ , i = 1,K n − 1 . hi ⎠ ⎝ hi +1 Кроме того, согласно (69) (72) c0 = cn = 0 . Система (71) содержит n − 1 уравнение с ( n − 1) -ой неизвестной: c1 , c2 ,K , cn −1 . Величины c0 и cn определены дополнительными соотношениями (72). Если сетка (54) равномерная, т. е. hi = h = const , то уравнения (71) принимают особенно простой вид: f − 2 f i + f i +1 ci−1 + 4ci + ci +1 = 6 i −1 . (73) h2 Для уравнений системы (71) выполнено условие диагонального преобладания. Отсюда следует существование и единственность решения задачи (71), (72). По найденным величинам ci можно рассчитать остальные коэффициенты сплайна по формулам c −c d i = i i −1 , i = 1,K, n (74) hi и f − f i −1 1 1 , i = 1,K, n , bi = hi ci − hi2 d i + i (75) 2 6 h - 58 завершив тем самым построение сплайна. Теорема доказана. 2.4. Замечание о решении системы. Уравнения (71) имеют так называемую трехточечную структуру, общий вид таких систем (76) Ai yi −1 + Ci yi + Bi yi +1 = Fi , i = 1, 2,K , n − 1 , (77) y0 = 0 , yn = 0 соответствует системе линейных уравнений с трехдиагональной матрицей T для определения вектора неизвестных y = ( y1 , y 2 , K , y n −1 ) : Ty = F , где C1 B1 0 0 F1 A2 C2 B2 0 F2 F 0 A3 C3 B3 T= , F= 3 . (78) K K K K K K K K K K K K K K Fn−1 0 0 0 0 An−1 Cn−1 При этом легко видеть, что в нашем случае (79) Ci > Ai + Bi , i = 1,K , n − 1 , поскольку (80) Ci = 2( hi + hi +1 ), Ai = hi , Bi = hi +1 . Как было показано в главе 1, решение подобных систем эффективно осуществляется методом прогонки. Задача 6. Рассмотреть функцию y = f ( x) = 3 x на отрезке [− 1,1] с узлами интерполяции x0 = −1, x1 = 0, x2 = 1 . Построить кубический сплайн. Найти его значение при x = 1/ 2 , т. е. вычислить приближенно 3 . Подсчитать погрешность. В рассматриваемом случае мы имеем равномерную сетку с шагом h = 1 . У нее одна внутренняя точка x1 и две граничные - x0 и x2 . Система (73) сводится к одному уравнению относительно коэффициента c1 , которое с учетом дополнительных соотношений (70), определяющих нулевые значения коэффициентов c0 и c2 , принимает вид: ⎛1 ⎞ 4c1 = 6 ⎜ − 2 + 3 ⎟ . (81) ⎝3 ⎠ Таким образом, в нашей задаче: c0 = 0 , c1 = 2 , c2 = 0 . Остальные коэффициенты сплайна находятся по формулам (60), (74), (75): - 59 a1 = 1 , a2 = 3 ; d1 = 2 , d 2 = −2 ; b1 = 4 / 3 , b2 = 7 / 3 . Теперь можно выписать кубические полиномы, определяющие сплайн: 4 1 3 ⎧ 2 = + + + −1 ≤ x ≤ 0, S x x x x , 1 ( ) 1 ⎪⎪ 3 3 (82) S ( x) = ⎨ 7 1 3 ⎪ S2 ( x ) = 3 + ( x − 1) − ( x − 1) , 0 ≤ x ≤ 1. ⎪⎩ 3 3 Легко проверить, что построенная таким образом функция S ( x ) непрерывна вместе с первой и второй производной во внутренней узловой точке x = 0 . В заключение вычислим значение сплайна в точке x = 1/ 2 , т. е. подсчитаем приближенно 3 : 15 ⎛ 1 ⎞ 15 3 ≈ S2 ⎜ ⎟ = , ε = 3 − = -0,142949 . (83) 8 ⎝2⎠ 8 Значительная погрешность обусловлена прежде всего большим шагом h = 1 . Определенную роль играют также условия S4: (84) S ′′ ( −1) = S ′′ (1) = 0 . Вторая производная рассматриваемой функции f ( x ) = 3x в точках x = ±1 в ноль не обращается, т. е. условие (84) дает о ней искаженную информацию. Если учесть при построении сплайна истинные значения функции f ′′ ( x ) в точках ±1, то точность аппроксимации улучшится. 2.5. Сходимость и точность интерполирования сплайнами. При обсуждении эффективности численного метода в первую очередь обращают внимание на две характеристики: 1. Условие сходимости метода (сходимость). Речь идет о минимальных по возможности ограничениях, при которых приближенное решение задачи стремится к точному решению задачи. Сходимость означает, что данный метод в принципе позволяет найти решение задачи с любой степенью точности. 2. Скорость сходимости (точность). Это характеристика близости приближенного решения к точному (характеристика скорости убывания погрешности) при некоторых дополнительных ограничениях. Посмотрим как решаются эти вопросы в теории сплайнов. Итак, на сегменте [a, b] задана функция f (x) и построена сетка a = x 0 < x1 < x 2 < K < x n = b; hi = x i − x i −1 > 0 . Введем в рассмотрение величину h = max hi . (85) 1≤i ≤n Приведем без доказательства две теоремы. Теорема 1. Пусть f ( x) непрерывна на сегменте [a, b] , тогда для любого ε > 0 можно указать δ (ε ) > 0 такое, что при любой сетке, удовлетворяющей условию h < δ справедливо неравенство (86) f ( x ) − S ( x ) < ε ∀x ∈ [ a , b ] , - 60 иными словами S h (x) при h → 0 равномерно сходится к непрерывной функции f (x) . Теорема 2. Пусть f ( x) имеет на сегменте [a , b ] четыре непрерывных производных и дополнительно удовлетворяет условию f ′′( a ) = f ′′(b) = 0 . Тогда имеют место неравенства (оценки): f ( x ) − S ( x ) ≤ M 4 h 4 ∀x ∈ [ a, b] , (87) f ′( x ) − S ′( x ) ≤ M 4 h 3 ∀x ∈ [ a, b] , (88) f ′′( x ) − S ′′( x ) ≤ M 4 h (89) 2 ∀x ∈ [ a, b] , M 4 = max f (4) ( x ) . [a ,b] (90) §3. Метод наименьших квадратов. Mетод наименьших квадратов был предложен Гауссом и Лежандром в конце XVIII - начале XIX веков в связи с проблемой обработки экспериментальных данных. В этом случае задача построения функции непрерывного аргумента по дискретной информации (1), (2) характеризуется двумя особенностями: 1. Число точек xi , в которых проводятся измерения, обычно бывает достаточно большим. 2. Значения функции yi (2) в точках сетки xi (1) определяются приближенно в связи с неизбежными ошибками измерения. С учетом этих обстоятельств строить функцию y ( x ) в виде суммы большого числа слагаемых (3) и добиваться ее точного равенства в точках сетки величинам yi , как это делалось при интерполировании, становится нецелесообразным. В методе наименьших квадратов аппроксимирующая функция y ( x ) ищется в виде суммы, аналогичной (3), но содержащей сравнительно небольшое число слагаемых m F ( x ) = ∑ akϕ k ( x ), m < n , (91) k =0 в частности, возможен вариант m n . Предположим, что мы каким-то образом выбрали коэффициенты ak , тогда в каждой точке сетки xi , можно подсчитать погрешность m δ i = yi − F ( xi ) = yi − ∑ akϕ k ( xi ), i = 0,1,2 ,K ,n . (92) k =0 Сумма квадратов этих величин называется суммарной квадратичной погрешностью n n m J = ∑δ i 2 = ∑ ( yi − ∑ akϕ k ( xi )) 2 . i =0 i =0 k =0 (93) Она дает количественную оценку того, насколько близки значения функции F ( x ) (91) в точках сетки к величинам yi . Меняя значения коэффициентов ak , мы будем менять погрешность J , которая является их функцией. В результате естественно возникает задача: Найти такой, набор коэффициентов ak , при которых суммарная квадратичная погрешность J оказывается минимальной. - 61 Функцию F ( x ) (91) с набором коэффициентов, удовлетворяющих этому требованию, называют наилучшим приближением по методу наименьших квадратов. Построение наилучшего приближения сводится к классической задаче математического анализа об экстремуме функции нескольких переменных. Метод решения этой задачи известен. Необходимым условием экстремума является равенство нулю в экстремальном точке всех первых частных производных рассматриваемой функции. В случае (93) это дает n m ∂J = −2∑ ( yi − ∑ akϕ k ( xi ))ϕ l ( xi ) = 0 l = 0,1,K, m . (94) ∂al i =0 k =0 Оставим члены, содержащие ak , слева и поменяем в них порядок суммирования по индексам i и k . Члены, содержащие yi , перенесем направо. В результате уравнения (94) примут вид m ∑γ k =0 lk ak = bl , l = 0,1,K ,m , (95) где n γ lk = ∑ϕ l ( xi )ϕ k ( xi ) , (96) i =0 n bl = ∑ϕ l ( xi ) yi . (97) i =0 Мы получили систему линейных алгебраических уравнений (95), в которой роль неизвестных играют искомые коэффициенты разложения a0 , a1 ,K , am . Число уравнении и число неизвестных в этой системе совпадает и равно m + 1 . Матрица коэффициентов системы Г состоит из элементов γ lk , которые определяются формулой (96). Ее называют матрицей Грама для системы функций ϕ 0 ( x ), ϕ1 ( x ),K , ϕ m ( x ) на сетке (1). Отметим, что матрица Грама является симметричной: для ее элементов, согласно (96), справедливо равенство γ lk = γ kl . Числа bl , стоящие в правой части уравнений (95), вычисляются по формуле (97) через значения yi сеточной функции (2). Предположим, что функции ϕ 0 ( x ), ϕ1 ( x ),K , ϕ m ( x ) выбраны такими, что определитель матрицы Грама, отличен от нуля: ∆ = det Г ≠ 0 . (98) В этом случае при любой правой части система (95) имеет единственное решение (99) a0 , a1 ,K , am . Рассмотрим наряду с набором коэффициентов (99), полученных в результате решения системы (95), любой другой набор коэффициентов a0 , a1 ,K , am . Представим числа ak в виде a0 = a0 + ∆a0 , a1 = a1 + ∆a1 ,K , am = am + ∆am , (100) 2 2 2 ( ∆a0 ) + ( ∆a1 ) + L + ( ∆am ) > 0 и сравним значения суммарной квадратичной погрешности J для функций F ( x ) (91), построенных с помощью коэффициентов (99) и (100). - 62 Квадрат погрешности и точке x = xi для функции F ( x ) (91) с коэффициентами (100) можно записать в виде 2 m ⎧ ⎫ δ i = ⎨ yi − ∑ ( ak + ∆ak ) ϕ k ( xi ) ⎬ = k =0 ⎩ ⎭ 2 2 2 m m ⎧⎛ ⎫ ⎛ ⎞ m ⎞ = ⎨⎜ yi − ∑ akϕ k ( xi ) ⎟ − ∑ ∆akϕ k ( xi ) ⎬ = ⎜ yi − ∑ akϕ k ( xi ) ⎟ − k =0 k =0 ⎠ k =0 ⎠ ⎩⎝ ⎭ ⎝ (101) 2 m ⎛ ⎞⎛ m ⎞ ⎛ m ⎞ − 2 ⎜ yi − ∑ akϕ k ( xi ) ⎟ ⎜ ∑ ∆alϕ l ( xi ) ⎟ + ⎜ ∑ ∆akϕ k ( xi ) ⎟ . k =0 ⎝ ⎠ ⎝ l =0 ⎠ ⎝ k =0 ⎠ Здесь в среднем слагаемом мы заменили в одной из сумм индекс суммирования k на l , чтобы не использовать один и тот же индекс в двух разных суммах и иметь возможность перемножить их почленно. Чтобы получить суммарную квадратичную погрешность, нужно просуммировать выражения (101) для δ i2 по индексу i Первые слагаемые не содержат ∆ak . Их сумма дает погрешность J , вычисленную для функции (91) с коэффициентами (99) ak . Рассмотрим теперь сумму вторых слагаемых, которые зависят от ∆al линейно: n m ⎧⎛ ⎞ ⎛ m ⎞⎫ − 2∑ ⎨⎜ yi − ∑ akϕ k ( xi ) ⎟ ⋅ ⎜ ∑ ∆alϕ l ( xi ) ⎟ ⎬ = i =0 ⎩ ⎝ k =0 ⎠ ⎝ l =0 ⎠⎭ m n ⎧ n ⎫ = −2∑ ∆al ⎨ ∑ yiϕ l ( xi ) − ∑ ak ∑ ϕ k ( xi )ϕ l ( xi ) ⎬ = l =0 k =0 i =0 ⎩ i =0 ⎭ m m m l =0 k =0 (102) = −2∑ ∆al {bl − ∑ ak γ lk } = 0. Здесь мы поменяли местами порядок суммирования и воспользовались тем, что коэффициенты ak , удовлетворяют системе уравнений (95). С учетом (102) будем иметь J ( a0 + ∆a0 , a1 + ∆a1 ,K, am + ∆am ) = 2 (103) ⎛ m ⎞ = J ( a0 , a1 ,K, am ) + ∑ ⎜ ∑ ∆akϕ k ( xi ) ⎟ > J ( a0 , a1 ,K, am ) . i = 0 ⎝ k =0 ⎠ Формула (103) показывает, что функция F ( x ) (91) с коэффициентами ak (100), полученными в результате решения уравнений (95), действительно минимизирует суммарную квадратичную погрешность J . Если мы возьмем любой другой набор коэффициентов (100), отличный от (99), то согласно формуле (103) к погрешности y ( a0 , a1 ,K , am ) добавится положительное слагаемое и она увеличится. Итак, чтобы построить наилучшее приближение (91) сеточной функции (1), (2) по методу наименьших квадратов, нужно взять в качестве коэффициентов разложения ak решение системы линейных уравнений (95). n - 63 Задача 7 Сеточная функция задана таблицей 1 . Таблица 1: xi yi i 0,0 0,95 1 0,5 1,54 2 1,0 2,04 3 1,5 2,46 4 2,0 2,95 Построить линейную функцию (104) F ( x ) = a0 + a1 x , которая дает для нее наилучшее приближение по методу наименьших квадратов. В рассматриваемом случае имеем: n = 4, m = 1, ϕ 0 ( x ) = 1, ϕ1 ( x ) = x . Для определения коэффициентов a0 и a1 составим систему уравнений (95). Элементы γ lk (l = 0,1, k = 0,1) матрицы Грама вычисляются по формуле (96) 4 γ 0,0 = ∑ϕ 0 ( xi )ϕ 0 ( xi ) = 5 , i =0 4 γ 0,1 = γ 1,0 = ∑ϕ 0 ( xi )ϕ1 ( xi ) = 5 , i =0 4 γ 1,1 = ∑ϕ1 ( xi ).ϕ1 ( xi ) = 7.5 . i =0 Числа b0 и b1 , стоящие в правой части уравнений (95), находим по формуле (97) 4 b0 = ∑ϕ 0 ( xi ) yi = 9,94 , i =0 4 b1 = ∑ϕ1 ( xi ) yi = 12, 40 . i =0 В результате система (95) принимает в рассматриваемом случае вид 5a0 + 5a1 = 9.94 (105) 5a0 + 7,5a1 = 12.40. Определитель системы (105) ∆ = 12,5 ≠ 0 , так что система имеет единственное решение a0 = 1,004, a1 = 0,984 . В результате мы получаем следующую линейную аппроксимацию рассматриваемой табличной функции (106) F ( x ) = 1,004 + 0,984 x . - 64 Теперь, когда функция (106) построена, можно подсчитать погрешность аппроксимации в точках сетки: δ i = yi − (1,004 + 0,984 xi ) , i = 0,1, 2,3, 4 . В результате получаем (107) δ 0 = −0,054, δ 1 = −0,044, δ 2 = 0,052, δ 3 = −0,020, δ 4 = −0,022 . Отметим, что наибольшая по модулю погрешность достигается в точке x0 = 0 : δ 0 = 0.054 > δ i , i = 1, 2,3, 4 . В заключение сделаем важное замечание. Обычно бывает известна точность ε , с которой задаются значения функции yi . Например, если речь идет об экспериментальных данных, то ошибка в определении yi зависит от методики проведения измерений и точности приборов. Предположим, что в разобранном примере числа yi заданы с точностью ε = 0,1 . В этом случае построенная линейная функция согласуется с доступной нам информацией о функции y ( x ) : погрешности (107) по модулю не превышают ε . В результате мы можем утверждать, что в пределах точности задания таблицы зависимость y от x можно принять линейной. Это видно на рис.4. На нем показаны точки ( xi , yi ) , соответствующие рассматриваемой таблице. Для каждой из них указан доверительный интервал yi − 0.1 ≤ y ≤ yi + 0.1 , в пределах которого может реально находится значение функции y ( xi ) с учетом точности задания величины yi . Прямая (106) везде проходит внутри доверительных интервалов, что подтверждает сделанный выше вывод. Рассмотрим теперь противоположный случай: будем считать, что величины yi заданы с более высокой точностью ε = 0,01 . При такой точность построенная линейная аппроксимация (106) не согласуется с данными таблицы: погрешность аппроксимации (107) превышает по модулю ε . В этом случае нужно либо увеличить число членов в разложении функции F ( x ) , добавив к линейной функции квадратичный член a2 x 2 , либо заменить систему функций ϕ k ( x ) , по которым ведется разложение, на какую-нибудь другую. - 65 - Глава 4. ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ §1. Формула Ньютона-Лейбница и численное интегрирование. Из курса математического анализа Вы знакомы с вычислением определенных интегралов с помощью формулы Ньютона-Лейбница b I = ∫ f ( x ) dx = F ( b ) − F ( a ) . (1) a где F ( x) - любая первообразная подынтегральной функции f ( x) на отрезке [ a, b ] . Формула Ньютона-Лейбница играет важную роль, устанавливая связь задачи определенного интегрирования с задачей отыскания первообразной (с задачей неопределенного интегрирования). Она позволяет вычислять интегралы от элементарных функций, первообразные которых тоже являются элементарными функциями. Например, 2 dx 2 (2) = ln x = ln 2 . ∫1 x 1 Однако существует много простых функций, первообразные которых не выражаются через элементарные функции. В качестве примера можно привести такие функции как 2 e − x или sin x/x . Для них описанный способ вычисления определенных интегралов неприменим. Формула Ньютона-Лейбница не позволяет также вычислять интегралы от функций, которые задаются графиком или таблицей. Иными словами, она не дает общего, универсального метода нахождения определенного интеграла от произвольной функции f ( x) по ее значениям на отрезке [ a, b ] , она не является алгоритмом решения рассматриваемой задачи. Универсальные алгоритмы вычисления определенных интегралов дают формулы численного интегрирования или, как их обычно называют, квадратурные формулы (буквально формулы вычисления площадей). Квадратурные формулы имеют вид: b n a i =1 I = ∫ f ( x ) dx = ∑ ci f ( xi ) + Rn . (3) Здесь точки xi ∈ [ a, b ] называют узлами, коэффициенты ci -весовыми множителями или просто весами, величину Rn - остаточным членом или погрешностью. Узлы и веса подбираются таким образом, чтобы выполнялось предельное равенство: n lim Rn = 0 , так что lim ∑ ci f ( xi ) = I . n→∞ n→∞ (4) i =1 Суть этого требования заключается в следующем. Если пренебречь в формуле (3) остаточным членом Rn , то получится приближенное равенство: b n a i =1 I = ∫ f ( x ) dx ≈ ∑ ci f ( xi ) . (5) - 66 - Условие (4), которое называют сходимостью, позволяет сделать погрешность в равенстве (5) меньше любого наперед заданного числа за счет выбора достаточно большого n .Таким образом, открывается возможность вычислить интеграл I с любой наперед заданной точностью по значениям функции f ( x) , взятым в разных точках xi отрезка [ a, b ] . Чем выше требование точности, тем больше слагаемых приходится удерживать в сумме. За точность приходится платить увеличением объема вычислений. В заключение сделаем следующее замечание. Подставляя в формулу (3) функцию f ( x) = 1 , получим: n ( b − a ) = ∑ ci + Rn . i =1 Обычно весовые коэффициенты ci подбираются таким образом, чтобы выполнялось равенство: n ( b − a ) = ∑ ci , i =1 т. е., чтобы при интегрировании константы равенство (5) было не приближенным, а точным. В следующих параграфах этой главы мы обсудим методы построения квадратурных формул и с разных сторон разберем проблему оценки их точности. §2. Квадратурные формулы прямоугольников, трапеций, Симпсона. 2.1. Квадратурные формулы прямоугольников, трапеций, Симпсона и их особенности. С квадратурными формулами прямоугольников, трапеций, Симпсона Вы уже встречались в курсе математического анализа, поэтому их вывод будет изложен конспективно. Возьмем произвольное целое число n и разобьем отрезок [ a, b ] , по которому ведется интегрирование, на n равных отрезков длиной h = ( b − a ) n точками xi = a + ih, 0 ≤ i ≤ n . (6) Для дальнейшего нам также понадобятся средние точки этих отрезков ξi = a + ( i − 1 2 ) h, ξi ∈ [ xi −1 , xi ] , 1 ≤ i ≤ n . (7) Идея вывода формулы прямоугольников очень проста. Построим с помощью проведенного разбиения интегральную сумму, в которой значения функции f ( x) для каждого отрезка [ xi −1 , xi ] вычисляются в его средней точке ξ i (7): b−a n Pn = (8) ∑ f (ξ i ) . n i =1 Принимая во внимание то, что интегральная сумма дает приближенное значение интеграла, можно написать: I = Pn + α n . (9) - 67 - В квадратурной формуле (9) узлами являются точки ξ i (7), все весовые множители одинаковы и равны h = ( b − a ) n . Для остаточного члена введено специальное обозначение α n . Формулу (9) называют формулой прямоугольников. Причина такого названия имеет простой геометрический смысл. Величина Pn (8) представляет собой сумму площадей прямоугольников с одинаковыми основаниями h = ( b − a ) n и высотами f (ξi ) . Она аппроксимирует с точностью до α n площадь криволинейной трапеции, соответствующей исходному интегралу (см. рис. 1). Идея вывода квадратурных формул трапеций и Симпсона иная. Она заключается в том, чтобы сопоставить подынтегральной функции f ( x) близкую ей функцию g n ( x) , которую можно проинтегрировать, и приближенно заменить искомый интеграл I интегралом от этой функции. Рассмотрим, как данная идея реализуется при выводе формулы трапеций. В этом случае в качестве аппроксимирующей функции g n ( x) берется кусочно – линейная функция. На каждом из частичных сегментов [ xi −1 , xi ] она задается формулой f ( xi ) − f ( xi −1 ) (10) ( x − xi−1 ) , h x ∈ [ xi −1 , xi ] , 1 ≤ i ≤ n . В граничных точках отрезка x = xi −1 и x = xi функция g n ( x) принимает те же значения, что и функция f ( x) : (11) g n ( xi −1 ) = f ( xi −1 ) , g n ( xi ) = f ( xi ) , т. е. она осуществляет кусочно – линейную интерполяцию функции f ( x) на отрезке [ a, b] (см. рис. 2). Вычислим интеграл: xi xi ⎧ ⎫ f ( xi ) − f ( xi −1 ) h ( x − xi−1 )⎬ dx = ( f ( xi−1 ) + f ( xi ) ) . (12) ∫x gn ( x)dx = x∫ ⎨⎩ f ( xi−1 ) + h 2 ⎭ i −1 i −1 g n ( x) = f ( xi −1 ) + Этот результат имеет простой геометрический смысл: фигура ограниченная снизу отрезком [ xi −1 , xi ] оси x , сверху отрезком прямой (10), с боков вертикальными прямым x = xi −1 и x = xi , представляет собой трапецию, площадь которой дается формулой (12). Интеграл от функции g n ( x) по всему отрезку [ a, b ] является суммой интегралов (12) b n Tn = ∫ g n ( x)dx = ∑ a xi ∫ g ( x)dx = i =1 xi −1 n b − a ⎧1 1 ⎫ ⎨ f ( a ) + f ( x1 ) + f ( x2 ) + K + f ( xn−1 ) + f ( b ) ⎬. n ⎩2 2 ⎭ Он дает приближенное значение интеграла I : = (13) - 68 b I = ∫ f ( x ) dx = Tn + β n , (14) a В квадратурной формуле (14) узлами являются точки xi (6). Все весовые коэффициенты, кроме двух, одинаковы и равны h = ( b − a ) n , а весовые коэффициенты при i = 0 и i = n имеют значения в два раза меньше. Для остаточного члена введено специальное обозначение β n . Формулу (14) называют квадратурной формулой трапеций. С точностью до β n она выражает площадь криволинейной трапеции, соответствующую интегралу I , через сумму площадей трапеций (12) (см. рис. 2). Формула (8) для величины Pn изначально строилась как интегральная сумма. При выводе формулы (13) для величины Tn понятие интегральной суммы не использовалась. Однако теперь, когда формула уже получена, видно, что величину Tn тоже можно интерпретировать как интегральную сумму. Чтобы убедиться в этом, рассмотрим разбиение отрезка [ a, b ] на частичные отрезки точками ξi (7). Оно дает n + 1 отрезок. Два крайних [ a,ξ1 ] и [ξ n , b ] имеют длину h / 2 , а остальные - длину h . Выберем для образования интегральной суммы на крайних отрезках значения функции f ( x) в точках a и b , а на остальных отрезках [ξi ,ξi +1 ] - значения функции f ( x) в их средних точках xi (1 ≤ i ≤ n − 1) . Образованная таким образом интегральная сумма соответствует выражению (13) для Tn . Вывод квадратурной формулы Симпсона развивает описанный подход дальше. Теперь для аппроксимации функции f ( x) используется не кусочно – линейное, а кусочно – квадратичное интерполирование. Будем считать n четным и сгруппируем отрезки [ xi −1 , xi ] парами: первая пара [ a, x1 ] , [ x1 , x2 ] , вторая пара [ x2 , x3 ] , [ x3 , x4 ] и т. д. Для каждого двойного отрезка ⎡⎣ x2 j −2 , x2 j ⎤⎦ построим интерполяционный полином второй степени в форме Лагранжа, принимающий в узлах x2 j −2 , x2 j −1 , x2 j значения функции f ( x) . В результате получим аппроксимирующую функцию g n ( x) на отрезке [ a, b ] в виде кусочно – квадратичной функции: ( x − x2 j−1 )( x − x2 j ) + f x ( x − x2 j−2 )( x − x2 j ) + g n ( x ) = f ( x2 j −2 ) ( 2 j−1 ) 2h 2 ( −h 2 ) (15) ( x − x2 j−2 )( x − x2 j−1 ) , + f ( x2 j ) 2h 2 x ∈ ⎡⎣ x2 j −2 , x2 j ⎤⎦ , 1 ≤ j ≤ n 2. Проинтегрировав полином второй степени (15) по отрезку ⎡⎣ x2 j −2 , x2 j ⎤⎦ , получим - 69 x2 j ∫ x2 j − 2 g n ( x )dx = b−a h . f ( x2 j −2 ) + 4 f ( x2 j −1 ) + f ( x2 j ) , h = n 3 { } (16) Интеграл от функции g n ( x) по всему отрезку [ a, b ] равен сумме интегралов (16) x2 j b n a j =1 x2 j − 2 2 Sn = ∫ g n ( x)dx = ∑ ∫ g n ( x)dx = (17) b−a { f ( a ) + 4 f ( x1 ) + 2 f ( x2 ) + K + 2 f ( xn−2 ) + 4 f ( xn−1 ) + f ( b )}. 3n (Напомним, что число n должно быть обязательно четным.) Величина Sn (17) дает приближенное значение интеграла I : = b I = ∫ f ( x ) dx = S n + γ n . (18) a Узлами квадратурной формулы (17), как и формулы трапеций (14), являются точки xi (6). Весовые коэффициенты в узлах с четными и нечетными номерами имеют разные значения. Для остаточного члена введено обозначение γ n . Формула (18) называется квадратурной формулой Симпсона. Представление (17) для Sn как и представление (13) для Tn , также можно рассматривать как интегральную сумму. Для ее построения нужно разбить отрезок [ a, b] на (n + 1) частичный отрезок с помощью n внутренних точек η2 j −1 = x2 j −1 − 2 h 3 , η2 j = x2 j −1 + 2 h 3 , 1 ≤ j ≤ n / 2 (19) и двух граничных точек η0 = a и ηn+1 = b . (20) В результате получаются отрезки [ηi −1 ,ηi ] , 1 ≤ i ≤ n + 1 различной длины. Два крайних отрезка [ a,η1 ] и [ηn , b ] имеют длину h 3 . Отрезки, в центре которых лежат точки xi с четными номерами, - длину 2 h 3 , отрезки, в центре которых лежат точки xi с нечетными номерами, – длину 4h 3 . Для построения интегральной суммы, соответствующей данному разбиению, возьмем для крайних отрезков значения функции f ( x) в точках a и b , для остальных отрезков – значение функции f ( x) в их средних точках xi . В результате получим интегральную сумму в виде выражения (17). Разные длины частичных отрезков приводит к своеобразному чередованию коэффициентов в виде двоек, четверок и единиц в крайних точках. Заканчивая обсуждение формул (13) для Tn и (17) для Sn , установим полезную для дальнейшего связь между этими величинами 4 1 Sn = Tn − Tn 2 . (21) 3 3 Здесь Tn 2 - сумма (13) с вдвое меньшим числом слагаемых и, соответственно, с вдвое большим шагом. Благодаря этому при ее образовании в качестве узлов используются точки xi (6) только с четными номерами. Поскольку в формуле Симпсона n - 70 - предполагается обязательно четным, то n / 2 - целое число, так что выражение Tn 2 определено. Соотношение (21) проверяется «в лоб». Из (13) следует, что: 4 b−a Tn = {2 f ( a ) + 4 f ( x1 ) + 4 f ( x2 ) + K + 4 f ( xn−2 ) + 4 f ( xn−1 ) + 2 f ( b )} , 3 3n 1 b−a Tn 2 = { f ( a ) + 2 f ( x2 ) + K + 2 f ( xn−2 ) + 2 f ( b )} . 3 3n Вычитая теперь вторую строку из первой, получим равенство (21). 2.2. Сходимость и точность квадратурных формул прямоугольников, трапеций и Симпсона. После того, как мы установили, что величины Pn , Tn , Sn являются интегральными суммами, проблема сходимости рассмотренных методов численного интегрирования решается элементарно. Их сходимость имеет место для любой интегрируемой функции: limα n = 0 , lim Pn = I , (22) n→∞ n→∞ n→∞ n→∞ lim β n = 0 , lim Tn = I . (23) lim γ n = 0 lim Sn = I . (24) n→∞ n→∞ Этот вывод является прямым следствием определения интегрируемости. Предельные соотношения (22) – (24) доказывают принципиальную возможность вычисления интеграла от произвольной интегрируемой функции каждым из трех методов с любой точностью ε за счет выбора достаточно большого n и, соответственно, малого шага h = ( b − a ) / n . После общего вывода о сходимости методов перейдем к обсуждению основного вопроса, связанного с организацией реального вычислительного процесса: каким нужно взять n , чтобы добиться при вычислении интеграла нужной точности. Ответ на него требует анализа остаточных членов. При этом на функцию f ( x) приходится накладывать дополнительные ограничения, выходящие за рамки предположения об интегрируемости. Начнем с обсуждения остаточных членов в квадратурных формулах прямоугольников и трапеций. Предположим, что функция f ( x) дважды непрерывно дифференцируема на отрезке [ a, b ] . В курсе математического анализа при этом предположении устанавливаются формулы xi h3 f x dx = f h + f ′′ (ηi* ) , ξ (25) ( i) ∫x ( ) 24 i −1 xi ∫ xi −1 f ( xi −1 ) + f ( xi ) h3 f ( x ) dx = h− f ′′ (ηi** ) , 2 12 (26) - 71 - где ηi* и ηi** - некоторые точки отрезка [ xi −1 , xi ] . Существование таких точек гарантировано, но их точное положение неизвестно. (См В. А. Ильин, Э. Г. Позняк «Основы математического анализа». М. 1965. С. 389-397.) Суммируя равенства (25) и (26) по i , получим формулы (9) и (14) со следующими выражениями для остаточных членов h3 n α n = ∑ f ′′ (ηi* ) , (27) 24 i =1 h3 n β n = − ∑ f ′′ (ηi** ) . (28) 12 i =1 Рассмотрим суммы n n h∑ f ′′ (ηi* ) и h∑ f ′′ (ηi** ) . i =1 (29) i =1 Функция f ′′( x) по предположению непрерывна и, следовательно, интегрируема на отрезке [ a, b ] . С учетом этого замечания выражения (29) можно рассматривать как b интегральные суммы для интеграла ∫ f ′′( x)dx . Отсюда следует вывод: a n lim h∑ f ′′ (η b ) = ∫ f ′′ ( x ) dx = f ′ ( b ) − f ′ ( a ) , (30) lim h∑ f ′′ (ηi** ) = ∫ f ′′ ( x ) dx = f ′ ( b ) − f ′ ( a ) . (31) n →∞ n →∞ i =1 * i n a b i =1 a Предельные равенства (30) и (31) позволяют записать остаточные члены квадратурных формул прямоугольников и трапеций в виде 1 α n = 2 ( A + µn ) , (32) n 1 βn = 2 ( B +ν n ) , (33) n где 2 b − a) ( A= (34) { f ′ ( b ) − f ′ ( a )} , 24 2 b ⎫ b − a) ⎧ n ( * (35) µn = ⎨h∑ f ′′ (ηi ) − ∫ f ′′ ( x ) dx ⎬ → 0 , при n → ∞ , 24 ⎩ i =1 a ⎭ (b − a ) B=− (b − a ) νn = − 12 2 2 { f ′ ( b ) − f ′ ( a )} , (36) b ⎧ n ⎫ ** (37) ⎨h∑ f ′′ (ηi ) − ∫ f ′′ ( x ) dx ⎬ → 0 , при n → ∞ . 12 ⎩ i =1 a ⎭ Формулы (32) и (33) выделяют в остаточных членах главные слагаемые A / n2 и B / n2 , которые при возрастании n стремятся к нулю как n−2 . Важно подчеркнуть, что - 72 - коэффициенты A (34) и B (36) от n не зависят. Дополнительные слагаемые µ n / n 2 и ν n / n 2 являются бесконечно малыми более высокого порядка. Если ими пренебречь по сравнению с главными слагаемыми, то получатся простые асимптотические представления остаточных членов α n ≈ An −2 и β n ≈ Bn −2 . (38) Их относительная точность возрастает при увеличении n . Теперь получим другие представления остаточных членов. Из курса математического анализа известно следующее утверждение. Лемма. Пусть функция ϕ ( x) непрерывна на отрезке [ a, b ] и пусть x1 , x2 ,K, xn -некоторые точки этого отрезка. Тогда на отрезке [ a, b ] найдется такая точка η , что 1 n (b − a ) M 2 . ϕ x = ϕ η ≤ (39) , β ( ) ( ) ∑ i n n i =1 12n 2 Иными словами, среднее арифметическое значений непрерывной функции в нескольких точках отрезка [ a, b ] , равно ее значению в одной из точек этого отрезка. Применяя это утверждение к суммам (27) и (28), получим другое представление остаточных членов α n и β n : 3 (b − a ) αn = 2 3 f ′′ (η * ) , a ≤ η * ≤ b , (40) 24n 3 b − a) ( f ′′ (η ** ) , a ≤ η ** ≤ b . βn = − (41) 2 12n Формулы (40) и (41) не позволяют вычислить остаточные члены: существование точек η * и η ** на отрезке [ a, b ] гарантировано, но их положение неизвестно. Однако эти формулы можно использовать для оценки остаточных членов. Пусть известно число M 2 , которое является мажорантой для второй производной функции f ( x) : (42) f ′′( x ) ≤ M 2 , a ≤ x ≤ b , тогда равенства (40) и (41) можно заменить неравенствами: 3 b − a) M2 ( αn ≤ , (43) 24n 2 3 b − a) M2 ( . (44) βn ≤ 12n 2 При заданной точности ε они позволяют определить число узлов n , которое нужно использовать при вычислении интеграла по рассматриваемым квадратурным формулам. В случае, когда вторая производная функции f ( x) является знакоопределенной на отрезке [ a, b ] , формулы (40) и (41) позволяют определить знаки остаточных членов. При этом существенно то, что они оказываются противоположными. Пусть, например, - 73 - f ′′( x) ≥ 0 , в этом случае α n ≥ 0 , двухсторонняя оценка β n ≤ 0 так что для интеграла получается Pn ≤ I ≤ Tn . (45) При отрицательной второй производной f ′′( x) сохраняется двухсторонняя оценка, но знаки неравенств (45) меняются на противоположные. Такие оценки очень удобны, поскольку позволяют легко контролировать точность вычислений: в случае (45) Pn и Tn дают значение интеграла с недостатком и избытком с ошибкой, не превышающей ε n = Tn − Pn , в противоположном случае Pn и Tn меняются ролями. Заканчивая обсуждение методов прямоугольников и трапеций, сделаем следующее замечание. Формулы (32), (33), оценки (43), (44) показывают, что в случае дважды непрерывно дифференцируемой подынтегральной функции остаточные члены α n и β n убывают как n−2 . Однако, если отказаться от этого требования гладкости, то данные результаты теряют силу. В этом случае для интегрируемых функций можно гарантировать стремление остаточных членов к нулю, но нельзя утверждать, что оно происходит со скоростью n−2 . Можно поставить прямо противоположный вопрос. Нельзя ли, повышая требование гладкости подынтегральной функции, увеличить скорость сходимости методов? Ответ на него отрицательный. Предположение о существовании у функции f ( x) четырех или шести производных не может изменить формул (32) и (33), так что скорость убывания остаточных членов при возрастании n останется прежней - n−2 . Поэтому методы прямоугольников и трапеций называют методами второго порядка точности, добавляя при этом – для дважды непрерывно дифференцируемых функций. Задача 1. Вычислить по формулам прямоугольников и трапеций при n = 2 интеграл π /2 I= ∫ sin xdx = 1 . (46) В данном случае π 3π ⎞ (47) ⎜ sin + sin ⎟ = 1.026172 , 4⎝ 8 8 ⎠ π ⎛1 π 1 π⎞ T2 = ⎜ sin 0 + sin + sin ⎟ = 0.948059 . (48) 4⎝2 4 2 2⎠ Зная точный ответ (46), найдем погрешности α 2 = -0.026172 и β 2 = 0.051941 . (49) Вторая производная функции sin x на отрезке [ 0,π / 2] отрицательна, ее модуль не превышает единицы: M 2 = 1. Мы видим, что знаки погрешности α 2 и β 2 (49) согласуются с формулами (40) и (41). Они противоположны, так что для интеграла I справедлива двусторонняя оценка, аналогичная (45), но другого знака: T2 ≤ I ≤ P2 . (50) Величина погрешностей (49) удовлетворяет неравенствам (43) и (44): P2 = π⎛ - 74 3 3 1 ⎛π ⎞ 1 ⎛π ⎞ (51) α 2 ≤ ⎜ ⎟ < 0,041 , β 2 ≤ ⎜ ⎟ < 0,081. 96 ⎝ 2 ⎠ 48 ⎝ 2 ⎠ Перейдем к обсуждению остаточного члена γ n в методе Симпсона, которое проведем при предположении о четырехкратной непрерывной дифференцируемости подынтегральной функции f ( x) . Напомним, что в методе Симпсона число точек n выбирается четным, так что n / 2 является целым числом. Рассмотрим отрезок двойной длины 2h , расположенный между точками разбиения (6) с четными номерами ⎡⎣ x2 j −2 , x2 j ⎤⎦ , 1 ≤ j ≤ n / 2 . В курсе математического анализа выводится формула: x2 i h h5 (4) ∫ f ( x ) dx = 3 f ( x2 j −2 ) + 4 f ( x2 j−1 ) + f ( x2 j ) − 90 f (η j ) , x2 j − 2 { } (52) где η j ∈ ⎡⎣ x2 j −2 , x2 j ⎤⎦ . Существование такой точки гарантировано, но ее точное положение на отрезке неизвестно. Суммируя равенства (52) по j , получим квадратурную формулу (18) со следующим выражением для остаточного члена: h5 n / 2 (4) (53) γ n = − ∑ f (η j ) . 90 j =1 Из формулы (53), аналогичной формулам (27), (28), можно вывести различные представления остаточного члена и изучить его свойства. Рассмотрим сумму n/2 2h∑ f (4) (η j ) . (54) j =1 (4) Функция f ( x) предполагается непрерывной и, следовательно, интегрируемой на отрезке [ a, b ] . С учетом этого сумму (54) можно рассматривать как интегральную b сумму для интеграла ∫f (4) ( x)dx . Отсюда следует вывод a n/2 lim 2h ∑ f n →∞ j =1 b (4) (η ) = ∫ f ( x ) dx = f ′′′ ( b ) − f ′′′ ( a ) . (4) j (55) a Предельное равенство (55) позволяет записать остаточный член квадратурной формулы Симпсона (53) в виде 1 γ n = 4 (C + σ n ) , (56) n 4 b − a) ( C=− (57) { f ′′′ ( b ) − f ′′′ ( a )} , 180 4 b ⎫ b − a ) ⎧ n / 2 (4) ( (4) σn = − (58) ⎨2h∑ f (η j ) − ∫ f ( x ) dx ⎬ → 0 , при n → ∞ . 180 ⎩ j =1 a ⎭ - 75 - Эта формула, как и формулы (32), (33) для методов прямоугольников и трапеций, выделяет в остаточном члене γ n главное слагаемое C / n4 , которое стремится к нулю как n−4 . Коэффициент C (57) не зависит от n . Дополнительное слагаемое σ n / n 4 является бесконечно малой более высокого порядка. Если им пренебречь, то получится асимптотическое представление остаточного члена γ n ≈ Cn −4 . (59) Его относительная точность возрастает с увеличением n . Другое представление остаточного члена γ n можно вывести с помощью формулы (39). Она позволяет записать формулу (53) в виде 5 b − a ) (4) ( γn = − f (η ) , (60) 180n 4 где η - какая-то точка отрезка [ a, b ] . Вычислить погрешность по формуле (60) нельзя, поскольку положение точки η неизвестно, но можно ее оценить. Пусть f (4) ( x) ≤ M 4 , тогда (b − a ) M 4 . γn ≤ 4 5 (61) 180n Данная оценка позволяет определить, с каким n нужно проводить вычисления, чтобы погрешность не превышала заданной точности ε . Кроме того, если четвертая производная функции f ( x) является знакоопределенной, то формула (60) дает знак погрешности, что также может оказаться полезным при организации вычислений. Метод Симпсона является методом более высокого порядка точности – четвертого. В этом его преимущество перед методами прямоугольников и трапеций, Правда, приведенные выше оценки остаточного члена, требуют большей гладкости подынтегральной функции – она должна быть четыре раза непрерывно дифференцируема. Задача 2. Вычислить интеграл (46) по формуле Симпсона при n = 2 . В данном случае S2 = π ⎛ π π⎞ ⎜ sin 0 + 4sin + sin ⎟ = 1.002280 , 12 ⎝ 4 2⎠ γ 2 = −0.002280 . (62) (63) ⎡ π⎤ Четвертая производная функции sin x на отрезке ⎢0, ⎥ положительна и не ⎣ 2⎦ превосходит единицы, так что знак погрешности согласуется с формулой (60), а ее величина – с оценкой (61): 5 1 ⎛π ⎞ γ2 ≤ ⎜ ⎟ < 0.0034. 180 ⋅ 16 ⎝ 2 ⎠ - 76 - 2.3. Апостериорные оценки погрешности при численном интегрировании. В латинском языке существуют два термина – антонима: априори (a priori) и апостериори (a posteriori). Первый означает изначально, независимо от опыта, второй – на основании опыта. Оба они часто используются в вычислительной математике, подразделяя информацию на ту, которая известна до начала вычислений, и ту, которая получается в процессе вычислений. Оценки погрешности квадратурных формул прямоугольников (43), трапеций (44), Симпсона (61) называют априорными. Они справедливы изначально и предсказывают точность вычисления интеграла независимо от того, будем мы фактически проводить вычисления или нет. Эти результаты позволяют понять структуру остаточных членов, определить скорость их убывания при возрастании n . Однако недаром говорят, что недостатки являются продолжением достоинств. Постановка задачи численного интегрирования предполагает, что известен алгоритм вычисления подынтегральной функции f ( x) при любом значении аргумента x на отрезке [ a, b ] и все. В оценки же (43), (44), (61) входят константы M 2 и M 4 , мажерирующие вторую и четвертую производные функции f ( x) в асимптотические формулы (38) и (59) – значения первой и третьей производных в граничных точках отрезка [ a, b ] . Такая информация выходит за рамки первоначальной постановки задач. Чтобы ее получить и использовать в процессе вычислений, нужно провести дополнительное исследование функции f ( x) . В случае, когда функция f ( x) задана сравнительно простой формулой, такое исследование возможно, хотя требует определенных усилий и времени. В случае же, когда она задается графиком, таблицей, определяется как сложная неявная функция и т. д., на этом пути возникают большие или даже непреодолимые трудности. В связи с этим перейдем к обсуждению методов оценки погрешности численного интегрирования, которые не требуют предварительного анализа производных подынтегральной функции. Они используют сопоставление результатов вычислений с разным числом точек n и называются апостериорными (буквально, основанными на опыте, что в данном случае означает основанными на результатах вычислений). Начнем обсуждение идеи апостериорных оценок погрешности с методов второго порядка – прямоугольников и трапеций. Предположим, что мы провели расчеты по методу прямоугольников с числом точек n / 2 ( n - четное число), а потом с числом точек n и в результате получили два числа - Pn / 2 и Pn . Согласно формулам (9) и (32) это позволяет написать соотношения 4 I = Pn / 2 + 2 ( A + µ n / 2 ) , n (64) 1 I = Pn + 2 ( A + µ n ) . n Вычитая теперь второе равенство из первого, получим 3 1 ( Pn / 2 − Pn ) + 2 A + 2 ( 4µ n / 2 − µ n ) = 0 n n или - 77 - 1 1 4 A + µ n ) = ( Pn − Pn / 2 ) + 2 ( µ n − µ n / 2 ) . (65) 2 ( 3 3n n Первый член в правой части этого представления остаточного члена нам известен из результатов вычислений. Он является главным. Второй член неизвестен, но он, по сравнению с первым, представляет собой бесконечно малую более высокого порядка. Если им пренебречь, то для погрешности получится простая асимптотическая формула: 1 α n ≈ ( Pn − Pn / 2 ) . (66) 3 Ее относительная точность возрастает при увеличении n . Аналогичные формулы имеют место для погрешности метода трапеций 1 4 1 β n = (Tn − Tn / 2 ) + 2 (ν n − ν n / 2 ) ≈ (Tn − Tn / 2 ) . (67) 3 3n 3 Для метода Симпсона, который является методом четвертого порядка, формулы немного изменяются. Теперь соотношения, аналогичные (64), будут иметь вид: 16 I = Sn / 2 + 4 ( C + σ n / 2 ) , n (68) 1 I = Sn + 4 ( C + σ n ). n (Здесь число n предполагается кратным четырем, так что n / 2 четное число.) Проводя в (68) вычитание второй строки из первой, получим 1 1 16 γ n = 4 ( C + σ n ) = ( Sn − Sn / 2 ) + (69) (σ n − σ n / 2 ) . 15 15n 4 n Здесь опять первый член в правой части равенства известен из вычислений. Он является главным. Второй член неизвестен, но он представляет собой бесконечно малую более высокого порядка по сравнению с первым. Если им пренебречь, то получим асимптотическую формулу для приближенного вычисления погрешности по результатам двух вычислений 1 γ n ≈ ( Sn − Sn / 2 ) . (70) 15 Ее относительная точность возрастает с увеличением n . Обычно апостериорные оценки погрешности с помощью асимптотических формул (66), (67), (70) включают в компьютерные программы численного интегрирования. Они служат критерием для завершения вычислений после того, как нужная точность достигнута. В заключение отметим следующее. Можно подставить полученные выражения для остаточных членов (65), (67), (69) в исходные квадратурные формулы (9), (14) и (18). В результате они примут вид: 4 1 I = Pn − Pn / 2 + α% n , (71) 3 3 4 1 I = Tn − Tn / 2 + β%n , (72) 3 3 αn = - 78 - 16 1 S n − Sn / 2 + γ%n , (73) 15 15 где α% n , β%n , γ%n - остаточные члены этих модифицированных формул 4 α% n = 2 ( µ n − µ n / 2 ) = o ( n −2 ) , (74) 3n 4 β%n = 2 (ν n − ν n / 2 ) = o ( n −2 ) , (75) 3n 16 γ%n = σ − σ n / 2 ) = o ( n −4 ) . (76) 2 ( n 15n Формулы (71), (72), (73), написанные по результатам двух расчетов с числом точек n / 2 и n , являются асимптотически более точными, чем исходные. В исходных формулах погрешности убывают, соответственно, как n−2 , n−2 , n−4 , в модифицированных формулах погрешности, согласно (74), (75), (76) являются бесконечно малыми более высокого порядка. Однако для исходных формул известны оценки погрешностей (43), (44). (61). Для модифицированных формул в нашем распоряжении оценок нет. Если мы хотим ими пользоваться, то нужно провести соответствующее исследование. Исключение составляет формула (72). Согласно формуле (21) ее можно переписать в виде I = Sn + β%n , (77) т. е. модифицированная формула трапеций оказалась просто формулой Симпсона с уже известным остаточным членом γ n = β%n . I= Задача 3. Вычислить по формуле Симпсона интеграл (46) с n = 4 . Используя результаты задачи 2, найти приближенную апостериорную погрешность (70). В данном случае π π 3π π⎞ + sin ⎟ = 1.000135 , (78) ⎜ sin 0 + 4sin + 2sin + 4sin 24 ⎝ 8 4 8 2⎠ γ 4 = −0.000135 . Апостериорная оценка погрешности по результатам двух расчетов дает 1 γ 4 ≈ ( S4 − S 2 ) = −0.000143 . 15 Несмотря на маленькое число точек, она хорошо согласуется с фактической погрешностью (78), сосчитанной «в лоб» по известному значению интеграла (46). S4 = π ⎛ Задача 4. Используя результаты решения задач 2 и 3, посчитать интеграл (46) по модифицированной формуле Симпсона (73). В данном случае - 79 - 16 1 S 4 − S2 = 0.999992 , (79) 15 15 γ%4 = 0.000008 . Модифицированная формула Симпсона (73) без дополнительных вычислений позволила на порядок улучшить результат, полученный по обычной формуле Симпсона. Отметим, что погрешности при расчетах по формулам (78) и (79) имеют противоположные знаки. I≈ §3. Квадратурные формулы Гаусса. 3.1. Задача построения оптимальных квадратурных формул. Точность квадратурной формулы определяется выбором узлов и весовых коэффициентов. Например, формулы трапеций и Симпсона имеют одинаковые узлы, но различные веса и, как следствие, их точность оказывается разной. В связи с этим естественно возникает задача поиска наилучшей квадратурной формулы с заданным числом узлов n . Обсудим постановку и решение такой задачи в формулировке Гаусса: построить квадратурную формулу с числом узлов n , которая является точной для любого полинома степени ( 2n − 1) или ниже. Такая постановка задачи вполне оправдана: квадратурная формула, точная для полиномов, будет хорошо работать для гладких функций. Переходя к решению задачи, поставленной Гауссом, будем считать, что интеграл предварительно приведен к стандартной форме, когда областью интегрирования является отрезок [ −1,1] . С учетом этого замечания запишем искомую квадратурную формулу в виде: 1 ∫ −1 n f ( x ) dx = ∑ ci f ( xi ) + δ n , (80) i =1 где xi узлы, xi ∈ [ −1,1] , ci весовые коэффициенты, δ n остаточный член. Для любого полинома степени ( 2n − 1) остаточный член в формуле (80) должен быть равен нулю. На протяжении этого параграфа каждый раз, когда мы будем говорить о произвольных полиномах какой-нибудь степени, всегда будем включать в их число полиномы более низких степеней, не оговаривая это особо. Полагая последовательно f ( x) = 1, x, x 2 ,K, x 2 n−1 и принимая во внимание, что для этих функций, согласно требованию Гаусса, остаточный член должен равняться нулю, получим: 1 n 1 m m (81) ci xim , 0 ≤ m ≤ 2n − 1 . ∫−1 x dx = ( m + 1) 1 + ( −1) = ∑ i =1 Соотношения (81) представляют собой систему 2n нелинейных уравнений с 2n неизвестными, в качестве которых выступают узлы xi и веса ci (1 ≤ i ≤ n ) . Уравнение (81), соответствующее индексу m = 0 , дает { } n ∑c i =1 i = 2. (82) - 80 - Таким образом, сумма весовых коэффициентов в квадратурной формуле Гаусса при любом n равна двум. Задача 5. Составить и решить систему уравнений (81) для квадратурной формулы Гаусса с одним узлом. В этом случае в задаче подлежат определению два параметра: узел x1 и весовой коэффициент c1 . Система уравнений для их определения получается из (81) при m = 0 и m = 1: ⎧ c1 = 2 . ⎨ ⎩c1 x1 = 0 Ее решение имеет вид: x1 = 0 , c1 = 2 , так что искомая квадратурная формула запишется следующим образом: 1 ∫ f ( x ) dx = 2 f ( 0 ) + δ . 1 (83) −1 Выбор в качестве единственного узла средней точки отрезка [ −1,1] выглядит по соображениям симметрии вполне естественно. Требование, чтобы сумма весовых коэффициентов равнялась двум (82), определяет в данном случае единственный весовой коэффициент c1 . Квадратурная формула (83) является точной для любой линейной функции Q1 = a0 + a1 x . 3.2. Полиномы Лежандра Мы решили систему уравнений (81) при n = 1 . Однако решить ее «в лоб» в общем случае при произвольном n сложно. Поэтому мы будем вынуждены воспользоваться обходным путем. Для этой цели нам понадобятся полиномы Лежандра, с которыми Вы уже встречались в курсе линейной алгебры. Они определяются формулами n 1 dn 2 (84) Pn ( x ) = n x − 1) . n ( 2 n! dx Выпишем, используя эту формулу, несколько первых полиномов Лежандра 3 1 5 3 (85) P0 ( x ) = 1 , P1 ( x ) = x , P2 ( x ) = x 2 − , P3 ( x ) = x3 − x . 2 2 2 2 Полиномы Лежандра обладают следующими свойствами: 1. Полином Лежандра Pn ( x ) номера n является полиномом n -ой степени, обладающим той же четностью, что и n : n Pn ( − x ) = ( −1) Pn ( x ) . (86) 2. Полиномы Лежандра Pn ( x ) в точках x = ±1 принимают следующие значения: Pn (1) = 1, Pn ( −1) = ( −1) . n - 81 - 3. Полином Лежандра Pn ( x ) имеет на интервале ( −1,1) n простых корней. В силу свойства 1 корни располагаются симметрично относительно точки x = 0 . 4. Любой полином Qm ( x ) степени m < n ортогонален к полиному Лежандра Pn ( x ) на сегменте [ −1,1] : 1 ∫ Q ( x ) P ( x ) dx = 0 . m (87) n −1 Докажем перечисленные свойства. 1. Свойство 1 напрямую следует из формулы (84). 2. Представим выражение ( x 2 − 1) в виде произведения n (x 2 − 1) = ( x + 1) ( x − 1) n n n и выполним n - кратное дифференцирование. В результате получим: 2 1 n n −k k Pn ( x ) = n ∑ Cnk n!( x + 1) ( x − 1) . 2 n ! k =0 ( ) (88) Все члены этой суммы, кроме нулевого, содержат множители ( x − 1) : 1 ≤ k ≤ n и при x = 1 обращаются в ноль, а нулевой член дает нужное равенство: n Pn (1) = 1. Второе равенство следует из (86): Pn ( −1) = ( −1) . k 3. Функция ( x 2 − 1) обращается на концах отрезка [ −1,1] в ноль. Согласно теореме n Ролля ее первая производная должна иметь по крайней мере один ноль на интервале ( −1,1) . Кроме того, производная обращается в ноль в граничных точках x = ±1 . n ″ 2 Применяя таким же образом теорему Ролля ко второй производной x − 1 , {( )} убеждаемся в том, что она имеет два нуля на интервале ( −1,1) и обращается в ноль в граничных точках x = ±1 . Будем продолжать этот процесс, пока не дойдем до n -ой производной выражения ( x 2 − 1) . Эта производная определяет полином Лежандра с точностью до n множителя. Она должна иметь n корней на интервале ( −1,1) . Поскольку число корней равно степени полинома, все они должны быть простыми. Корни, как мы уже отмечали выше, располагаются на интервале ( −1,1) симметрично относительно его средней точки x = 0 . 4. Подставим в интеграл (87) представление проинтегрируем по частям. В результате получим: полинома Лежандра (84) и - 82 1 n 1 dn 2 J = n ∫ Qm ( x ) n ( x − 1) dx = 2 n! −1 dx 1 1 ⎫⎪ n n dQm ( x ) d n−1 2 1 ⎧⎪ d n−1 2 x 1 dx = n ⎨Qm ( x ) n−1 ( x − 1) − ∫ − ( ) ⎬. n −1 2 n! ⎪ dx dx dx −1 −1 ⎩ ⎭⎪ Подстановки на концах отрезка [ −1,1] обращаются в ноль, поскольку степень n у выражения ( x 2 − 1) больше ( n − 1) -го порядка производной. n Выполняя процедуру интегрирования по частям m + 1 ≤ n раз, получим: 1 n d m+1Qm ( x ) d n−m−1 2 m +1 1 1 J = ( −1) x − dx = 0. ( ) 2n n! −∫1 dx m+1 dx n−m−1 Здесь под знаком интеграла в качестве множителя стоит ( m + 1) -ая производная от полинома m -ой степени Qm ( x ) , тождественно равная нулю. Ортогональность доказана. Сделаем важное замечание. Соотношение ортогональности (87) справедливо, в частности, в случае, когда в качестве полинома Qm ( x ) взят полином Лежандра Pm ( x ) : 1 ∫ P ( x ) P ( x ) dx = 0 , при m < n . m n −1 Фактически в этом условии ортогональности не важно, какой именно из двух индексов m или n больше, а какой меньше. Важно лишь, что они не равны. Таким образом, из свойства 4 вытекает следствие. Следствие 1. Полиномы Лежандра образуют систему полиномов, ортогональных на отрезке [ −1,1] 1 ∫ P ( x ) P ( x ) dx = 0 , при m ≠ n . m n (89) −1 Из линейной алгебры известно, что система полиномов, ортогональных на некотором множестве, определена однозначно с точностью до множителей. Поэтому следствию 1 можно сопоставить обратное утверждение. Следствие 2 Любая система полиномов, ортогональных на отрезке [ −1,1] , совпадает с точностью до множителя с системой полиномов Лежандра. 3.3. Узлы и весовые коэффициенты квадратурных формул Гаусса. Изучив свойства полиномов Лежандра, перейдем к решению основной задачи – определению узлов и весовых коэффициентов квадратурных формул Гаусса. Составим полином n -ой степени (90) ω n ( x ) = ( x − x1 )( x − x2 )L( x − xn ) , где xi - искомые узлы. Возьмем произвольный полином Qm ( x ) степени m < n , помножим его на полином ω n ( x ) и проинтегрируем произведение по отрезку [ −1,1] с помощью квадратурной формулы (80). Поскольку это произведение представляет - 83 - собой полином степени m + n ≤ 2n −1, формула Гаусса должна быть для него точной. В результате согласно (90) получим: 1 n ∫ Q ( x )ω ( x ) dx = ∑ c Q ( x )ω ( x ) = 0 . m −1 n i =1 i m i n i (91) Мы видим, что полином ω n ( x ) ортогонален к любому полиному степени m < n в том числе и к полиномам Лежандра индекса m < n . Это означает, что он с точностью до множителя совпадает с n -ым полиномом Лежандра: ω n ( x ) = An Pn ( x ) . Отсюда следует вывод: узлы квадратурной формулы Гаусса являются корнями полинома Лежандра Pn ( x ) . Напомним, что корни полиномов Лежандра располагаются на интервале ( −1,1) симметрично относительно его средней точки x = 0 . Для того, чтобы подсчитать весовые коэффициенты ci , введем специальные полиномы ( x − x1 )L( x − xm−1 )( x − xm+1 )L( x − xn ) . (92) Qn−1,m ( x ) = ( xm − x1 )L( xm − xm−1 )( xm − xm+1 )L( xm − xn ) Каждый из них является полиномом степени ( n − 1) . В числителе у него стоит полином ω n ( x ) с опущенным множителем ( x − xm ) , в знаменателе - значение числителя в точке x = xm . В результате такой структуры полином Qn−1,m ( x ) в точках xi удовлетворяет соотношениям: ⎧0, i ≠ m . (93) Qn−1,m ( xi ) = ⎨ i m 1, = ⎩ Для полинома Qn−1,m ( x ) квадратурная формула Гаусса должна быть точной. С учетом (93) это дает 1 n ∫ Qn−1,m ( x ) dx = ∑ ciQn−1,m ( xi ) = cm . −1 (94) i =1 В результате получаем следующее интегральное выражение для коэффициентов квадратурной формулы Гаусса: 1 1 ( x − x1 )L( x − xm−1 )( x − xm+1 )L( x − xn ) dx . cm = ∫ Qn−1,m ( x ) dx = ∫ x − x1 )L( xm − xm−1 )( xm − xm+1 )L( xm − xn ) −1 −1 ( m весовых (95) 3.4. Исследование квадратурной формулы. Нам осталось решить последний вопрос – доказать, что квадратурная формула, у которой в качестве узлов xi берутся корни полинома Лежандра, а весовые коэффициенты ci вычисляются по формулам (95), действительно решают задачу Гаусса, являясь точной для любого полинома степени ( 2n − 1) . Проведем доказательство в два этапа. Сначала докажем, что такая формула является точной для любого полинома Qn−1 ( x ) степени ( n − 1) . Такой полином можно представить в виде суммы специальных полиномов (92) - 84 n Qn−1 ( x ) = ∑ Qn−1 ( xm ) Qn−1,m ( x ) . (96) m =1 Справедливость данного разложения вытекает из следующих соображений. Здесь левая и правая части равенства совпадают в n точках xi , 1 ≤ i ≤ n . Но, если два полинома ( n − 1) -ой степени совпадают в n точках, то они тождественно равны. Интегрируя равенство (96) по отрезку [ −1,1] , получим 1 n −1 m =1 1 n −1 m =1 ∫ Qn−1 ( x )dx = ∑ Qn−1 ( xm ) ∫ Qn−1,m ( x ) dx = ∑ cmQn−1 ( xm ) . (97) Итак, для полиномов ( n − 1) -ой степени утверждение доказано. Теперь рассмотрим произвольный полином Q2 n−1 ( x ) степени ( 2n − 1) . Разделим его с остатком на полином Лежандра Pn ( x ) и представим в виде: (98) Q2 n−1 ( x ) = Pn ( x ) qn−1 ( x ) + rn−1 ( x ) , где qn−1 ( x ) и rn−1 ( x ) полиномы степени ( n − 1) . Проинтегрировав равенство (98) по отрезку [ −1,1] , будем иметь: 1 1 1 ∫ Q ( x ) dx = ∫ {P ( x ) q ( x ) + r ( x )} dx = ∫ r ( x ) dx = 2 n −1 −1 n n −1 n −1 n −1 −1 −1 n n i =1 i =1 n = ∑ ci rn−1 ( xi ) = ∑ ci { Pn ( xi ) qn−1 ( xi ) + rn−1 ( xi )} =∑ ciQ2 n−1 ( xi ). (99) i =1 1 Поясним выполненные преобразования. Интеграл ∫ P ( x ) q ( x ) dx опущен, поскольку n −1 n −1 полином Лежандра Pn ( x ) ортогонален к любому полиному ( n − 1) -ой степени. Оставшийся интеграл от полинома rn ( x ) вычислен с помощью квадратурной формулы (97). Выше уже доказано, что для полиномов степени ( n − 1) она является точной. n Последний переход заключается в том, что в сумму ∑ c r ( x ) добавлены слагаемые i =1 i n −1 i Pn ( xi ) qn−1 ( xi ) . Они не меняют значения суммы, поскольку все равны нулю: ведь узлами квадратурной формулы являются корни полинома Лежандра Pn ( x ) . Итак, построенная квадратурная формула действительно является точной для любого полинома степени ( 2n − 1) , т. е. задача Гаусса решена. На оценке погрешности квадратурных формул Гаусса мы останавливаться не будем, однако задачи, к разбору которых переходим, показывают, что эти формулы обеспечивают для гладких функций очень высокую точность. Задача 5. Построить квадратурную формулу Гаусса с двумя и тремя узлами. - 85 - Выведем сначала квадратурную формулу с двумя узлами. Узлы определяются как корни второго полинома Лежандра, выражение для которого мы выписывали выше (85). В данном случае имеем: (100) x1 = −1/ 3 , x2 = 1/ 3 . Узлы расположены симметрично относительно точки x = 0 . Весовые коэффициенты рассчитываются по формуле (95): 1 1 x − x2 x − 1/ 3 (101) c1 = ∫ dx = ∫ dx = 1 , x x − − 2 3 2 −1 1 −1 1 1 x − x1 x + 1/ 3 c2 = ∫ dx = ∫ dx = 1 . x x − 2 3 1 −1 2 −1 Они равны между собой, а их сумма, в соответствии с общим соотношением (82), равна двум. В результате искомая квадратурная формула принимает вид: 1 ∫ f ( x ) dx = f ( −1/ 3 ) + f (1/ 3 ) + δ 2 . (102) −1 Она является точной для любого полинома третьей степени. Перейдем теперь к выводу квадратурной формулы Гаусса с тремя узлами. Согласно формуле (85) для третьего полинома Лежандра ее узлами являются числа: (103) x1 = − 3 5 , x2 = 0 , x3 = 3 5 . Остается подсчитать весовые коэффициенты: ( x x− 3 5 1 c1 = ∫ −1 1 c2 = ∫ ) 5 dx = , 9 − 3/ 5 −2 3/ 5 ( )( ) ( x + 3 5 )( x − 3 5 ) dx = 8 , −3/ 5 −1 (x + 1 c3 = ∫ −1 ) (104) 9 35 x 5 dx = . 9 3/ 5 2 3/ 5 ( )( ) В результате квадратурная формула Гаусса с тремя узлами запишется в виде: 1 5 8 5 3/ 5 f x dx = f − + f + f 3/ 5 + δ 3 . ( ) ( ) ∫−1 9 9 9 Она является точной для любого полинома пятой степени. ( ) ( ) (105) Задача 6. Вычислить по формулам Симпсона и Гаусса при n = 2 интеграл: 1 ∫ e dx = 2sh1 = 2.350402 . x −1 Сравнить результаты численного интегрирования с точным значением интеграла и между собой. - 86 - Формулы Симпсона и Гаусса дают в данном случае следующие результаты: 1 4 2 S 2 = ( e −1 + 4 + e ) = + ch1 = 2.362054 , 3 3 3 γ 2 = -0.011651 , 1 G2 = e −1/ 3 + e1/ 3 = 2ch = 2.342696 , 3 δ 2 = 0.007706 . Мы видим, что даже с двумя узлами формула Гаусса дает хороший ответ. Его точность выше точности ответа, полученного по формуле Симпсона. В заключение сделаем следующее замечание. Несмотря на высокую точность квадратурных формул Гаусса, при компьютерных расчетах ими пользуются сравнительно редко. Дело в том, что для применения метода Гаусса нужно либо ввести в компьютер до начала расчетов корни полинома Лежандра и весовые коэффициенты, либо составить специальную подпрограмму для их вычисления. В результате потери человеческого и машинного времени на подготовку программы к основному расчету, связанному с вычислением интеграла, могут не окупиться точностью метода Гаусса. Вычисление интеграла по более простой схеме метода Симпсона имеет с этой точки зрения преимущество. ( ) §4. Построение первообразной с помощью численного интегрирования. Формулы Ньютона-Лейбница (1) позволяет выразить значение определенного интеграла от функции f ( x) через ее первообразную F ( x) . В математическом анализе устанавливается и прямо противоположная возможность: первообразная функции f ( x) , непрерывной на отрезке [ a, b ] , может быть записана в виде определенного интеграла с переменным верхним пределом: x F ( x ) = ∫ f ( t ) dt . (106) x0 Здесь x0 , x - две точки отрезка [ a, b ] , причем нижний предел интегрирования x0 предполагается фиксированным, верхний x - переменным. В случае непрерывной функции f ( x) функция F ( x) , определенная с помощью интеграла (106), является дифференцируемой и ее производная равна f ( x) : x ⎞ d ⎛ F ′ ( x ) = ⎜ ∫ f ( t ) dt ⎟ = f ( x ) . ⎟ dx ⎜⎝ x0 ⎠ (107) Формула (106) в сочетании с какой-нибудь формулой численного интегрирования, например, Симпсона, представляет собой универсальный алгоритм построения первообразной. Приведем два примера, иллюстрирующие этот алгоритм. Функция f ( x ) = sin x/x непрерывна и, следовательно, имеет первообразные. Они не могут быть выражены через элементарные функции, но представление в виде интеграла с переменным верхним пределом для них справедливо. Одну из - 87 - первообразных мы получим, выбирая нижний предел интегрирования x0 = 0 . Ее называют интегральным синусом и обозначают x sin t Si ( x ) = ∫ dt . t Интегральный синус определен на всей числовой прямой, является нечетной функцией x , имеет конечные предельные значения на бесконечности lim Si ( x ) = ± x →±∞ Согласно (107) π 2 . Si′ ( x ) = sin x / x . По знаку производной легко определить области возрастания и убывания функции, разделенные точками экстремума xk = kπ ( k = ±1, ± 2, K) . Методы численного интегрирования позволяют вычислить значения Si ( x ) при любом x . График интегрального синуса при x ≥ 0 приведен на рис. 3. В качестве второго примера рассмотрим функцию ошибок erf ( x ) , играющую важную роль в теории вероятности. Ее обозначение образовано с помощью первых букв английского названия функции ошибок – error function. Подобно интегральному синусу, функция ошибок вводится в виде интеграла с переменным пределом от 2 функции e − x , которая не имеет первообразных в классе элементарных функций: x 2 −t 2 erf ( x ) = e ∫ dt . π 0 Функция ошибок определена на всей числовой прямой, является нечетной функцией x , имеет конечные предельные значения на бесконечности: lim erf ( x ) = ±1 . x →±∞ Согласно (107) erf ′ ( x ) = 2 2 e− x . π Производная всюду положительная, следовательно, функция ошибок монотонно возрастает. Ее график приведен на рис. 4. Существует ряд других специальных функций, которые вводятся как интегралы с переменным верхним пределом. Не будем останавливаться на их описании, отметим лишь, что разобранные примеры показывают, насколько условно деление функций на элементарные и неэлементарные. По существу, чтобы работать с какой-нибудь функцией, нужно знать ее свойства и иметь алгоритм вычисления при любом значении аргумента. С этой точки зрения применение интегрального синуса или функции ошибок ничем не отличается от применения привычных нам элементарных функций. - 87 - Глава 5. ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ ОБЫКНОВЕНЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ Наиболее универсальными методами численного решения обыкновенных дифференциальных уравнений являются разностные методы. Они основаны на замене производных в дифференциальном уравнении разностными отношениями. В результате исходное дифференциальное уравнение сводится к системе алгебраических уравнений, которые называются разностными. Решение этой системы дает приближенное решение исходной задачи. §1. Разностная аппроксимация производных. 1.1. Сеточные функции. Пусть на отрезке [ a, b ] задан набор точек a = x0 < x1 < x2 < L < xn−1 < xn < b . (1) Будем называть его сеткой. Чтобы не усложнять изложения, условимся считать сетку равномерной: (2) xi +1 − xi = h = ( b − a ) / n , 0 ≤ i ≤ n − 1 . Пусть каждой точке сетки xi сопоставлено по определенному закону число yi . Совокупность этих чисел y = { y0 , y1 ,K , yn } = { yi } ( 0 ≤ i ≤ n ) назовем сеточной функцией. Сеточные функции, определенные на сетке (1), образуют ( n + 1) -мерное линейное пространство. Чтобы иметь возможность сравнивать сеточные функции между собой, говорить об их близости, нужно ввести в этом пространстве норму. В этой главе мы будем пользоваться нормой С , которая определяется следующим образом: y c = max yi . (3) 0≤i ≤n Это определение законно, поскольку удовлетворяет трем аксиомам нормы: 1. Норма неотрицательна y c ≥ 0, причем равенство нулю имеет место только для нулевого элемента. 2. Модуль числового множителя можно вынести за знак нормы αy c = α y . 3. Неравенство треугольника y+z c ≤ y c + z c. Справедливость последнего утверждения вытекает из свойства максимума: max yi + zi ≤ max yi + max zi . 0≤i ≤ n 0≤ i ≤ n (4) 0 ≤i ≤ n 1.2. Разностные аппроксимации первой производной. Для сеточных функций нельзя ввести обычное понятие производной, включающее операцию предельного перехода при ∆x → 0 . Вместо производной здесь вводятся разностные отношения: - 88 - yi +1 − yi , 0 ≤ i ≤ n −1; (5) h y − yi −1 L−h [ yi ] = i ,1 ≤ i ≤ n ; (6) h yi +1 − yi −1 L(0) ,1 ≤ i ≤ n − 1 . (7) h [ yi ] = 2h Отношение (5) называют правой разностной производной, отношение (6) – левой разностной производной и отношение (7) – центральной разностной производной. Чтобы установить связь разностных отношений (5) – (7) с обычной производной, предположим, что на отрезке [ a, b ] определена дифференцируемая функция y ( x ) , значения которой в точках сетки (1) равны значениям рассматриваемой сеточной функции: yi = y ( xi ) . Вычислим первую производную функции y ( x ) в точках xi и сопоставим с разностными отношениями (5) – (7): (8) ψ i+ = L+h [ yi ] − y′ ( xi ) , 0 ≤ i ≤ n − 1 ; L+h [ yi ] = (9) ψ i− = L−h [ yi ] − y′ ( xi ) ,1 ≤ i ≤ n ; ′ (10) ψ i(0) = L(0) h [ yi ] − y ( xi ) ,1 ≤ i ≤ n − 1 . Эти величины представляют собой погрешности аппроксимации производной с помощью разностных отношений (5) – (7) в точке xi . Предположим, что функция y ( x ) дважды непрерывно дифференцируема на отрезке [ a, b ] и запишем для нее формулу Тейлора с остаточным членом в форме Лагранжа 1 yi +1 = y ( xi + h ) = yi + y ′ ( xi ) h + y ′′ ( xi + θ i h ) h 2 , (11) 2 где θ i какое-то неизвестное нам число между нулем и единицей. Подставляя разложение (11) в формулу (8), получим 1 ψ i+ = y ′′ ( xi + θi h ) h . (12) 2 Аналогичное представление можно получить для величины ψ i− (9) 1 ψ i− = − y ′′ ( xi − θ i h ) h . (13) 2 Формулы (12) и (13) не позволяют вычислить соответствующие погрешности, но дают возможность их оценить. Функция y′′ ( x ) , по предположению, непрерывна на отрезке [ a, b] , и, следовательно, ограничена: (14) y′′ ( x ) ≤ M 2 , a ≤ x ≤ b . В результате получаем 1 1 ψ i+ ≤ M 2 h , ψ i− ≤ M 2 h . (15) 2 2 - 89 - Оценки (15) являются равномерными, поскольку не зависят от индекса i . Таким образом, левое и правое разностное отношение аппроксимируют производную y′ ( x ) с первым порядком точности относительно h . Для оценки ψ i(0) (10) предположим, что функция y ( x ) три раза непрерывно дифференцируема на отрезке [ a, b ] и продолжим разложение (11) еще на один член 1 yi +1 = yi + y ′ ( xi ) h + 12 y ′′ ( xi ) h 2 + y ′′′ ( xi + θ1,i h ) h 3 , 6 (16) 1 2 3 1 yi −1 = yi − y ′ ( xi ) h + 2 y ′′ ( xi ) h − y ′′′ ( xi − θ 2,i h ) h . 6 Подставляя разложения (16) в формулу (10), будем иметь 1 (17) ψ i(0) = y ′′′ ( xi + θ1,i h ) + y ′′′ ( xi − θ 2,i h ) h 2 . 6 По предположению функция y′′′ ( x ) непрерывна и, следовательно, ограничена на отрезке [ a, b ] : (18) y′′′ ( x ) ≤ M 3 , a ≤ x ≤ b . { } В результате из равенства (17) получим оценку 1 ψ i(0) ≤ M 3h 2 . (19) 3 Оценка (19), как и раньше (15), не зависит от индекса i , она является равномерной. Таким образом, центральная разностная производная дает более хороший результат: она аппроксимирует производную y′ ( xi ) со вторым порядком точности относительно h для функций, трижды непрерывно дифференцируемых на отрезке [ a, b ] . Задача 1. Рассмотреть функцию y = 1/ (1 − x ) на сетке x0 = −0.1, x1 = 0 , x2 = 0.1 . (20) Вычислить в точке x1 = 0 правую, левую и центральную разностные производные, найти погрешности аппроксимации производной y′(0) = 1 , сравнить их с априорными оценками по формулам (15) и (19). В данном случае 1/ 0.9 − 1 = 1.111111, 0.1 ψ 1+ = 0.111111 ; 1 − 1/1.1 L−h [ y1 ] = = 0.909090 , 0.1 ψ i− = −0.090909 ; 1/ 0.9 − 1/1.1 L(0) = 1.010101 , h [ y1 ] = 0.2 L+h [ y1 ] = - 90 - ψ i(0) = 0.010101 . Перейдем к априорной оценке погрешности. Вторая и третья производные рассматриваемой функции y ( x ) имеют вид 2 6 , y′′′ ( x ) = . y′′ ( x ) = 3 4 (1 − x ) (1 − x ) Для них на отрезке [ −0.1, 0.1] справедливы оценки 2 6 y′′ ( x ) ≤ < 2.8 , y′′′ ( x ) = < 9.3 . 3 4 ( 0.9 ) ( 0.9 ) Так что неравенства (15) и (19) запишутся следующим образом ψ 1+ ≤ 0.14 , ψ 1− ≤ 0.14 , ψ 1(0) ≤ 0.031 . Они выполняются. 1.3. Разностная аппроксимация второй производной. Для разностной аппроксимации второй производной составим разностное отношение первых разностных производных yi +1 − yi yi − yi −1 − y − 2 yi + yi +1 h h = i −1 Lh [ y ] = . (21) h h2 Чтобы установить связь выражения (21) со второй производной, предположим, что на отрезке [ a, b ] определена дважды непрерывно дифференцируемая функция y ( x ) , значения которой в точках сетки (1) дают значения сеточной функции yi . Вычислим ее вторую производную в точках сетки xi и составим разность (22) ψ i = Lh [ yi ] − y′′ ( xi ) ,1 ≤ i ≤ n − 1 . Она представляет собой погрешность аппроксимации второй производной с помощью разностного отношения второго порядка (21). Оценим величину погрешности при предположении, что функция y ( x ) четыре раза непрерывно дифференцируема на отрезке [ a, b ] . Это предположение позволяет написать разложения Тейлора 1 1 1 (4) yi +1 = y ( xi + h ) = yi + y ′ ( xi ) h + y ′′ ( xi ) h 2 + y ′′′ ( xi ) h 3 + y ( xi + θ1,i h ) h 4 , 2 6 24 (23) 1 1 1 (4) 2 3 4 yi −1 = y ( xi − h ) = yi − y ′ ( xi ) h + y ′′ ( xi ) h − y ′′′ ( xi ) h + y ( xi − θ 2,i h ) h . 2 6 24 Подставляя их в формулы (21), (22), получим 1 (4) ψi = y ( xi + θ1,i h ) + y (4) ( xi − θ 2,i h ) h 2 . (24) 24 Мы не можем вычислить погрешность по этой формуле, поскольку значения аргументов у функции y (4) ( x ) нам неизвестны, но можем ее оценить. Функция y (4) ( x ) непрерывна и, следовательно, ограничена на отрезке y (4) ( x ) ≤ M 4 , a ≤ x ≤ b . (25) { } - 91 - В результате из формулы (24) получаем 1 M 4h2 . (26) 12 Таким образом, разностное отношении (21) аппроксимирует вторую производную со вторым порядком точности относительно h для функций, имеющих четыре непрерывные производные на отрезке [ a, b ] . Совершенно аналогично можно строить разностные аналоги производных более высокого порядка. ψi ≤ Задача 2. Для функции y = 1/ (1 − x ) вычислить на сетке (20) вторую разностную производную в точке x1 = 0 . Найти погрешность аппроксимации второй производной y′′(0) = 2 и сравнить результат с априорной оценкой (26). В данном случае 1/1.1 − 2 + 1/ 0.9 = 2.020202 , 0.01 ψ 1 = 0.020202 . Четвертая производная рассматриваемой функции y ( x ) и мажоранта для нее на отрезке [ −0.1, 0.1] имеют вид 24 24 , y (4) ( x ) ≤ < 41 . y (4) ( x ) = 5 5 ( 0.9 ) (1 − x ) Так что неравенство (26) запишется следующим образом ψ 1 ≤ 0.034 . Оно выполняется. Lh [ y1 ] = При численном интегрировании дифференциальных уравнений производные в них приближенно заменяются соответствующими разностными отношениями. В результате задача сводится к системе разностных уравнений, которые решаются на компьютере. В качестве ответа получается сеточная функция { yi } ( 0 ≤ i ≤ n ) . После этого встает вопрос, в какой степени и с какой точностью ее можно рассматривать в качестве приближенного решения исходной задачи. Нужно иметь в виду, что прямое сравнение решения дифференциального уравнения u ( x ) и рассчитанной сеточной функции невозможно: они принадлежат разным пространствам и их, прежде всего, нужно свести в одно пространство. Это можно сделать двояко. Во-первых, по сеточной функции с помощью методов интерполирования можно построить функцию непрерывного аргумента y ( x ) и оценить разность z ( x ) = y ( x ) − u ( x ) , например, в норме C z c = max y ( x ) − u ( x ) . a ≤ x ≤b Во-вторых, наоборот, решению дифференциального уравнения можно сопоставить сеточную функцию {ui = u ( xi )} и сравнить между собой две сеточные функции { yi } и - 92 - {ui }, составив их разность zi = yi − ui . При этом погрешность приближенного решения задачи будет характеризовать норма разности z c = max yi − ui . 0≤i ≤ n Наиболее последовательным является первый путь, но обычно выбирают более простой - второй. В следующих параграфах мы рассмотрим численное решение с помощью метода конечных разностей задачи Коши и краевой задачи для линейного дифференциального уравнения второго порядка. §2. Численное решение задачи Коши. Рассмотрим задачу Коши для дифференциального уравнения первого порядка (27) u ′ = f ( x, u ) , u ( x0 ) = u0 . (28) Если функция f ( x, u ) непрерывна и удовлетворяет условию Липшица по аргументу u в некоторой окрестности начальной точки ( x0 , u0 ) , то можно указать такой отрезок [ a, b] , a < x0 < b , на котором решение задачи (27), (28) u ( x ) существует и является единственным. В этом параграфе мы обсудим численные методы ее решения. 2.1. Метод Эйлера. Пусть нам нужно построить решение задачи (27), (28) на отрезке [ x0 , x0 + l ] длины l . Возьмем некоторое целое число n , введем шаг h = l / n и образуем на отрезке сетку xi = x0 + ih , 0 ≤ i ≤ n . (29) Сопоставим задаче (27), (28) на отрезке разностную задачу yi +1 − yi = f ( xi , yi ) , 0 ≤ i ≤ n − 1 ; (30) h y0 = u0 . (31) Здесь мы заменили производную u′ ( x ) в уравнении (27) правой разностной производной и сохранили неизменным начальное условие (28). Уравнение (30) является разностным уравнением первого порядка, которое принято называть схемой Эйлера. Его можно переписать в виде рекуррентного соотношения (32) yi +1 = yi + hf ( xi , yi ) , 0 ≤ i ≤ n − 1 . Это позволяет последовательно рассчитать все значения сеточной функции { yi } , решив тем самым задачу (30), (31). Такую разностную схему называют явной. Перейдем теперь к обсуждению главного вопроса: с какой точностью рассчитанная сеточная функция { yi } дает решение исходной задачи Коши u ( x ) . Для ответа на него рассмотрим решение задачи (27), (28) в точках сетки (29), образуя из функции непрерывного аргумента сеточную функцию {ui = u ( xi )} , и сравним ее с - 93 - рассчитанной сеточной функцией { yi } . Для этого образуем две сеточные функции z , ψ: zi = yi − ui , 0 ≤ i ≤ n ; (33) u −u ψ i = i +1 i − f ( xi , ui ) , 0 ≤ i ≤ n − 1 . (34) h Смысл первой функции (33) очевиден. Она характеризует разницу между рассчитанными числами yi и решением u ( x ) задачи (27), (28) в точках сетки xi . В соответствии с этим сеточную функцию z называют погрешностью решения. Функция (34) получается в результате подстановки решения ψ дифференциального уравнения (27) в разностное уравнение (30). Если бы эти уравнения совпадали, то мы получили бы нуль. Но они различаются и нуля мы не получим. Сеточную функцию характеризующую степень близости ψ, дифференциального и разностного уравнений, называют погрешностью аппроксимации уравнения на решении. Установим связь между сеточными функциями z и ψ . С этой целью выразим из формулы (33) yi : yi = ui + zi (35) и подставим в разностное уравнение (30). В результате получим zi +1 − zi ui +1 − ui + = f ( xi , ui + zi ) h h или zi +1 − zi ⎧u − u ⎫ = { f ( xi , ui + zi ) − f ( xi , ui )} − ⎨ i +1 i − f ( xi , ui ) ⎬ . (36) h ⎩ h ⎭ Здесь в обе фигурные скобки мы добавили величину f ( xi , ui ) . Добавленные члены входят в соотношение (36) с противоположными знаками и благодаря этому не нарушают равенство. После таких преобразований во вторых фигурных скобках получается величина ψ i . В первых фигурных скобках стоит разность значений функции f при одинаковом первом аргументе xi и разных значениях второго аргумента. Эту разность с помощью формулы Лагранжа можно представить в виде ∂f f ( xi , ui + zi ) − f ( xi , ui ) = ( xi , ui + θ i zi ) zi ∂u и записать формулу (36) в виде рекуррентного соотношения ∂f ⎧ ⎫ zi +1 = ⎨1 + h ( xi , ui + θ i zi ) ⎬ zi − ψ i h , 0 ≤ i ≤ n − 1 . (37) ∂u ⎩ ⎭ Согласно (28) и (31) его следует дополнить нулевым начальным условием z0 = 0 . (38) В отличие от формул (30), (31) формулы (37), (38) не могут быть использованы для вычисления величин zi . В них входят неизвестные величины: ψ i , ui , θ i . Однако из этой системы рекуррентных равенств можно получить рекуррентные неравенства. - 94 - Введем для оценки сеточной функции ψ ее норму ψ c = max ψ i , при этом ψ i ≤ ψ c . 0≤i ≤n −1 Предположим далее, что функция (39) ∂f ( x, u ) в интересующей нас области изменения ее ∂u аргументов ограничена ∂f ( x, u ) ≤ C . ∂u Это позволяет написать оценку ∂f 1 + h ( xi , ui + θ i zi ) ≤ 1 + Ch < eCh = q , q > 1 . ∂u С учетом (39) и (41) из формулы (37) следуют рекуррентные неравенства zi +1 ≤ q zi + ψ c h , которые порождают цепочку оценок z0 = 0, (40) (41) (42) z1 ≤ ψ c h, z2 ≤ (1 + q ) ψ c h, z3 ≤ (1 + q + q 2 ) ψ c h, (43) M zn ≤ (1 + q + q 2 + L + q n−1 ) ψ c h. Согласно (41) q > 1 , так что 1 + q + q 2 + L + q n −1 < nq n = neChn . Это позволяет заменить индивидуальные оценки (43) универсальной оценкой (44) zi ≤ nheChn ψ c , 0 ≤ i ≤ n . Неравенства (44) справедливы при любом i , в частности, при том, при котором zi достигает своего наибольшего значения и определяет тем самым норму сеточной функции z c . В результате оценка погрешности решения принимает вид z c ≤ leCl ψ c , (45) где l - длина отрезка, на котором рассматривается решение исходной задачи (27), (28). Мы получили важный результат: оценку погрешности решения через оценку погрешности аппроксимации уравнения с коэффициентом, который не зависит от шага h . Чем лучше разностное уравнение аппроксимирует дифференциальное, тем меньше погрешность решения. Чтобы завершить исследование метода Эйлера, оценим норму погрешности аппроксимации уравнения ψ c . Предположим, что функция f ( x, u ) имеет в рассматриваемой области изменения аргументов непрерывные и ограниченные первые - 95 - ∂f ∂f . Это обеспечивает существование у решения задачи и ∂x ∂u (27), (28) непрерывной и ограниченной второй производной ∂f ∂f (46) u′′ ( x ) = ( x, u ) + ( x, u ) f ( x, u ) . ∂x ∂u Запишем для функции u ( x ) формулу Тейлора с остаточным членом в форме Лагранжа 1 ui +1 = u ( xi + h ) = ui + u′ ( xi ) h + u′′ ( xi + θ i h ) h 2 . (47) 2 Подставляя разложение (47) в формулу (34) для погрешности аппроксимации уравнения, получим 1 ψ i = u′′ ( xi + θ i h ) h . (48) 2 Согласно формуле (46) функция u′′ ( x ) непрерывна и ограничена (49) u ′′ ( x ) ≤ M 2 , x0 ≤ x ≤ x0 + l . частные производные Это позволяет написать оценки M2 M l h , z c ≤ 2 e Cl h . (50) 2 2 Неравенства (50) показывают, что при h → 0 погрешность аппроксимации уравнения и связанная с ней неравенством (45) погрешность решения стремятся к нулю со скоростью h . В связи с этим метод Эйлера называют методом первого порядка точности относительно h . ψc≤ Задача 3. Рассмотреть задачу Коши 1 u′ = u + x , (51) 2 (52) u ( 0) = 0 . Построить ее численное решение на отрезке [ 0,2] по схеме Эйлера с шагами h1 = 0.25 , h2 = 0.05 , h3 = 0.01 . Сравнить результаты расчетов между собой и с аналитическим решением задачи u ( x ) = −2 ( x + 2 ) + 4e 2 . Результаты расчетов приведены в таблице 1. 1x (53) - 96 - Таблица 1 xi h1 = 0.25 h2 = 0.05 h3 = 0.01 u ( xi ) 0,00 0,000000 0,000000 0,000000 0,000000 0,25 0,000000 0,025633 0,031182 0,032594 0,50 0,062500 0,120338 0,132903 0,136102 0,75 0,195313 0,293193 0,314530 0,319966 1,00 0,407227 0,554466 0,586674 0,594885 1,25 0,708130 0,915776 0,961355 0,972984 1,50 1,109146 1,390270 1,452190 1,468000 1,75 1,622789 1,992821 2,074604 2,095501 2,00 2,263138 2,740255 2,846068 2,873127 Здесь в первом столбце выписаны значения независимой переменной x с шагом h1 = 0.25 , в трех следующих столбцах - решения разностной задачи с шагами h1 , h2 , h3 . При этом результаты расчетов с шагами h2 и h3 в промежуточных точках xi , которые не вошли в первый столбец, опущены. В последнем пятом столбце приведены для сравнения значения функции u ( x ) (53), дающей аналитическое решение задачи. Из таблицы видно, как по мере уменьшения шага повышается точность. В то же время следует отметить, что даже при маленьком шаге h3 = 0.01 метод не может обеспечить решению хорошую точность: ошибка в последней точке x = 2 составляет z = -0.027059 . Результаты проведенных расчетов представлены также на рис. 1. На нем приведены три кривые, соответствующие численному решению задачи по схеме Эйлера с шагами h1 , h2 , h3 . При выбранном масштабе кривая III практически совпадает с графиком аналитического решения задачи (53) (пунктирная линия). Рисунок наглядно показывает повышение точности приближенного решения по мере уменьшения шага h . Мы подробно разобрали метод Эйлера, поскольку на примере простой разностной схемы (30) он позволяет поставить и обсудить все основные вопросы численного решения задачи Коши методом конечных разностей. Однако следует отметить, что полученные в этом разделе результаты представляют прежде всего теоретический интерес. Для решения реальных задач разностную схему Эйлера обычно не применяют из-за ее низкой точности: погрешность с уменьшением h убывает как O ( h ) . В следующих разделах мы обсудим пути построения разностных схем более высокого порядка точности. 2.2. Повышение точности разностного метода. Оценка погрешности решения через погрешность аппроксимации уравнения в методе Эйлера (45) приводит к вполне естественному выводу: чтобы повысить точность метода, нужно улучшить аппроксимацию дифференциального уравнения разностным. Рассмотрим возможные пути реализации этой идеи. - 97 - Предположим, что решение дифференциального уравнения u ( x ) имеет производные достаточно высокого порядка и напишем для него разложение по формуле Тейлора 1 1 ui +1 = u ( xi + h ) = ui + u′ ( xi ) h + u′′ ( xi ) h 2 + u′′′ ( xi ) h 3 + L . (54) 2 6 Если его оборвать на члене порядка h и положить в соответствии с дифференциальным уравнением (27) u′ ( xi ) = f ( xi , ui ) , то мы придем к схеме Эйлера. Сделаем следующий шаг. Оборвем разложение (54) на члене порядка h2 и воспользуемся для вычисления производной u′′ ( xi ) формулой (46). В результате получим новое рекуррентное соотношение, более сложное чем (32), ⎫ 1 ⎧ ∂f ∂f (55) yi +1 = yi + f ( xi , yi ) h + ⎨ ( xi , yi ) + ( xi , yi ) f ( xi , yi ) ⎬ h 2 , ∂y 2 ⎩ ∂x ⎭ которое можно также записать в виде разностного уравнения ⎫ yi +1 − yi 1 ⎧ ∂f ∂f (56) = f ( xi , yi ) + ⎨ ( xi , yi ) + ( xi , yi ) f ( xi , yi ) ⎬ h . ∂y h 2 ⎩ ∂x ⎭ Здесь, как и в предыдущем разделе, мы обозначили искомую функцию в разностном уравнении (56) буквой y , а не u , чтобы подчеркнуть, что (27) и (56) – это два разных уравнения. Уравнение (55), дополненное начальным условием (31), дает явную разностную схему численного решения рассматриваемой задачи Коши. По рекуррентной формуле можно последовательно рассчитать все значения сеточной функции yi , 0 ≤ i ≤ n и получить таким образом приближенное решение задачи (27), (28). Исследование показывает, что такая усложненная схема имеет второй порядок точности относительно h как для аппроксимации уравнения, так и для погрешности решения. Существенно то, что основная идея данного подхода допускает дальнейшее развитие. Если оборвать разложение (54) на члене порядка h3 , h4 и т. д., то получатся разностные схемы третьего, четвертого и более высоких порядков точности. Однако у данного подхода есть существенный недостаток. При расчетах по схеме Эйлера требуется вычислять только значения функции f ( xi , yi ) . В схеме же (55) на каждом шаге приходится вычислять не только функцию f , но и ее первые ∂f ∂f производные ( xi , yi ) и ( xi , yi ) . Если мы, оставив в разложении (54) члены до h4 ∂x ∂y включительно, построим схему четвертого порядка точности, то на каждом шаге придется вычислять десять величин: функцию f ( xi , yi ) , две ее первых производных, три вторых производных и четыре третьих производных. Это существенно усложнит разработку программы и нарушит важный принцип вычислительной математики – использовать в расчетах только те величины, которые задаются условиями задачи. Формулировка задачи Коши предполагает, что известен алгоритм вычисления функции f ( x, u ) по значениям ее аргументов. Если этот алгоритм сводится к расчету по простой формуле, то вычисление производных не составляет труда. Однако - 98 - возможны и такие варианты представления алгоритма, при которых вычисление производных функции f ( x, u ) либо очень сложно, либо практически невозможно. Поэтому при разработке разностных схем высокого порядка точности стремятся заменить вычисление производных функции f ( x, u ) вычислением самой функции в нескольких точках. В следующих разделах мы рассмотрим, как это удается сделать. 2.3. Метод Рунге-Кутта. Рассмотрим правую часть разностного уравнения (56), содержащую первые производные от функции f ( x, u ) . Главная идея метода Рунге-Кутта состоит в том, чтобы приближенно заменить ее на сумму значений функции f в двух разных точках с точностью до членов порядка h2 . С этой целью положим: ⎫ ∂f 1 ⎧ ∂f f ( xi , yi ) + ⎨ ( xi , yi ) + ( xi , yi ) f ( xi , yi ) ⎬ h = ∂y 2 ⎩ ∂x ⎭ = β f ( xi , yi ) + α f ( xi + γ h, yi + δ h ) + O ( h 2 ) , (57) где α , β , γ , δ - четыре свободных параметра, которые нужно подобрать так, чтобы правая часть равнялась левой с нужной степенью точности. Разложим функцию f ( xi + γ h, yi + δ h ) по степеням h : ⎧ ∂f ⎫ ∂f (58) f ( xi + γ h, yi + δ h ) = f ( xi , yi ) + ⎨γ ( xi , yi ) + δ ( xi , yi )⎬ h + O ( h 2 ) , ∂y ⎩ ∂x ⎭ подставим разложение (58) в формулу (57) и приравняем слева и справа члены, не содержащие h и содержащие h в первой степени. В результате получим для четырех параметров три уравнения 1 1 α + β = 1, αγ = , αδ = f ( xi , yi ) . (59) 2 2 Они позволяют выразить параметры β , γ , δ через α : 1 1 β =1−α , γ = ,δ= f ( xi , yi ) . (60) 2α 2α Заменяя с помощью (57) левую часть уравнения (56) и отбрасывая члены порядка O ( h 2 ) , получим однопараметрическое семейство разностных схем Рунге- Кутта: yi +1 − yi h h ⎛ ⎞ = (1 − α ) f ( xi , yi ) + α f ⎜ xi + , yi + f ( xi , yi ) ⎟ . (61) h 2α 2α ⎝ ⎠ Уравнение (61), как и (30), можно записать в виде удобного для расчетов рекуррентного соотношения h h ⎡ ⎛ ⎞⎤ yi +1 = yi + ⎢(1 − α ) f ( xi , yi ) + α f ⎜ xi + f ( xi , yi ) ⎟ ⎥ h . , yi + (62) 2 α 2 α ⎝ ⎠ ⎣ ⎦ - 99 - Наиболее удобные разностные схемы этого семейства соответствуют двум 1 1 значениям параметра α : α = и α = 1 . При α = рекуррентная формула (62) 2 2 принимает вид h yi +1 = yi + f ( xi , yi ) + f ( xi + h, yi + hf ( xi , yi ) ) . (63) 2 Она определяет следующую процедуру расчета yi +1 . Сначала делается шаг h по схеме Эйлера и вычисляется величина (64) y% i +1 = yi + f ( xi , yi ) h . Затем находится значение функции f в точке ( xi +1 , y% i +1 ) , составляется полусумма { } f ( xi , yi ) + f ( xi +1 , y%i +1 ) 2 и проводится окончательный расчет величины f ( xi , yi ) + f ( xi +1 , y%i +1 ) (65) yi +1 = yi + h. 2 Такая схема вычислений называется «предиктор-корректор» или буквально «предсказание-исправление». Вычисление y% i +1 по схеме Эйлера (64) – это грубое предсказание результата. Вторичный расчет (65), сделанный на основании первого, является уточнением результата, его коррекцией. При α = 1 рекуррентная формула (62) имеет вид h h ⎛ ⎞ yi +1 = yi + f ⎜ xi + , yi + f ( xi , yi ) ⎟ . (66) 2 2 ⎝ ⎠ h Здесь схема расчета заключается в следующем. Сначала делается половинный шаг : 2 по схеме Эйлера вычисляется величина h yi + 1 = yi + f ( xi , yi ) . (67) 2 2 ( ) Затем находится значение функции f в точке xi + 1 , yi + 1 . Оно определяет по формуле 2 2 (66) очередное значение yi +1 . Следует заметить, что процедура расчета приближенного решения задачи Коши (27), (28) по схеме (61) по сравнению со схемой Эйлера усложняется: теперь на каждом шаге функцию f ( x, u ) приходится считать не один, а два раза. Однако такое усложнение оказывается оправданным благодаря более высокой точности метода. К исследованию проблемы точности мы теперь и переходим. Введем, как и в предыдущем разделе, две сеточные функции: погрешность решения z (33) и погрешность аппроксимации уравнения ψ . В рассматриваемом случае она определяется формулой u −u ⎡ h h ⎛ ⎞⎤ f ( xi , ui ) ⎟ ⎥ . ψ i = i +1 i − ⎢(1 − α ) f ( xi , ui ) + α f ⎜ xi + , ui + (68) h 2α 2α ⎝ ⎠⎦ ⎣ - 100 - Выразим yi по формуле (35) через ui и zi и подставим в разностное уравнение (56). В результате получим zi +1 − zi ui +1 − ui h h ⎛ ⎞ + = (1 − α ) f ( xi , ui + zi ) + α f ⎜ xi + , ui + zi + f ( xi , ui + zi ) ⎟ . (69) h h 2α 2α ⎝ ⎠ Формулу (69) можно переписать в виде zi +1 − zi ⎧ ⎡ h h ⎛ ⎞⎤ = ⎨ ⎢(1 − α ) f ( xi , ui + zi ) + α f ⎜ xi + , ui + zi + f ( xi , ui + zi ) ⎟ ⎥ − 2α 2α h ⎝ ⎠⎦ ⎩⎣ ⎡ − ⎢(1 − α ) f ( xi , ui ) + α f ⎣ h h ⎛ ⎞⎤ ⎫ , ui + f ( xi , ui ) ⎟ ⎥ ⎬ − ⎜ xi + 2α 2α ⎝ ⎠⎦ ⎭ (70) ⎧u − u ⎡ h h ⎛ ⎞⎤ ⎫ − ⎨ i +1 i − ⎢(1 − α ) f ( xi , ui ) + α f ⎜ xi + f ( xi , ui ) ⎟ ⎥ ⎬ . , ui + 2α 2α ⎝ ⎠⎦ ⎭ ⎣ ⎩ h Здесь мы перенесли член ( ui +1 − ui ) / h слева направо и в каждое из двух выражений, собранных в фигурных скобках, добавили одно и то же слагаемое. Поскольку между фигурными скобками стоит знак минус, значение правой части формулы (70) в целом при этом не меняется. Однако благодаря таким преобразованиям мы собрали во вторых фигурных скобках члены, которые дают погрешность аппроксимации дифференциального уравнения ψ (68). Перейдем к дальнейшему исследованию соотношения (70). Рассмотрим функцию h h ⎛ ⎞ F ( v ) = (1 − α ) f ( xi , v ) + α f ⎜ xi + ,v + f ( xi , v ) ⎟ . (71) 2α 2α ⎝ ⎠ Выражение, стоящее в первых фигурных скобках формулы (70), можно записать как разность значений этой функции при v = ui + zi и v = ui и преобразовать эту разность с помощью формулы конечных приращений Лагранжа (72) F ( ui + zi ) − F ( ui ) = F ′ ( ui + θ i zi ) zi , 0 < θ i < 1 , где ∂f ∂f ⎛ h h h ∂f ⎞⎛ F ′ ( v ) = (1 − α ) ( xi , v ) + α ⎜ xi + ,v + f ( xi , v ) ⎟ ⎜ 1 + ( xi , v ) ⎞⎟ . (73) ∂v ∂v ⎝ 2α 2α ⎠ ⎝ 2α ∂v ⎠ Подставим полученные выражения для отдельных слагаемых в формулу (70). В результате она примет вид рекуррентной формулы zi +1 = {1 + hF ′ ( ui + θ i zi )} zi − ψ i h , 0 ≤ i ≤ n − 1 , (74) которую нужно дополнить нулевым начальным условием (38). Использовать эту формулу для последовательного вычисления значений сеточной функции z нельзя: в ее правую часть входят неизвестные аргументы: ψ i , ui , θ i . Однако эту систему рекуррентных равенств можно заменить системой рекуррентных неравенств для последующей оценки zi . - 101 - Предположим, как и при исследовании метода Эйлера, что частная производная ∂f ( x, u ) в интересующей нас области изменения ее аргументов ограничена (40). Тогда ∂u с учетом формулы (73) для производной F ′ ( v ) получим 1 1 + hF ′ ( ui + θ i z ) ≤ 1 + Ch + C 2 h 2 < eCh = q , q > 1 . (75) 2 С учетом этого рекуррентные равенства (74) можно заменить рекуррентными неравенствами (76) zi +1 ≤ q zi + ψ c h , которые полностью совпадают с неравенствами (42) предыдущего раздела. Мы уже знаем, что из них следует оценка нормы погрешности решения через норму погрешности аппроксимации уравнения (77) z c ≤ leCl ψ c . Теперь нужно оценить норму погрешности аппроксимации уравнения (68). Предположим, что функция f ( x, u ) имеет в интересующей нас области изменения своих аргументов непрерывные вторые производные и, следовательно, решение дифференциального уравнения u ( x ) трижды непрерывно дифференцируемо. Это позволяет написать следующие разложения Тейлора 1 1 ui +1 = u ( xi + h ) = ui + u′ ( xi ) h + u′′ ( xi ) h 2 + u′′′ ( xi ) h 3 , (78) 2 6 h h h ⎧ ∂f ∂f ⎫ ⎛ ⎞ f ⎜ xi + , ui + f ( xi , ui ) ⎟ = f ( xi , ui ) + ⎨ ( xi , ui ) + ( xi , ui ) f ( xi , ui ) ⎬ + 2α 2α 2α ⎩ ∂x ∂u ⎭ ⎝ ⎠ (79) ⎫ h2 ⎧ ∂2 f ∂2 f ∂2 f 2 + 2 ⎨ 2 ( x%i , u%i ) + 2 ( x%i , u%i ) f ( x%i , u%i ) + 2 ( x%i , u%i ) f ( x%i , u%i ) ⎬ , 8α ⎩ ∂x ∂x∂u ∂u ⎭ где h h xi = xi + θ i h , x%i = xi + θ%i , u%i = ui + θ%i f ( xi , ui ) , 2α 2α 0 < θ i < 1 , 0 < θ%i < 1 . Здесь последние слагаемые в обоих разложениях представляют собой остаточные члены в форме Лагранжа, которые берутся в неизвестных нам промежуточных точках. Подставим разложения (78), (79) в формулу (68) для погрешности аппроксимации дифференциального уравнения (27) и примем во внимание соотношения, вытекающие из этого уравнения u ′ ( xi ) = f ( xi , ui ) , (80) ∂f ∂f u ′′ ( xi ) = ( xi , ui ) + ( xi , ui ) f ( xi , ui ) . ∂x ∂u Благодаря (80) члены нулевого и первого порядков относительно h сокращаются и остаются только члены второго порядка, обязанные своим происхождением остаточным членам в разложениях (78), (79). В результате получается следующее представление для погрешности аппроксимации уравнения - 102 - ⎧1 1 ψ i = h ⎨ u′′′ ( xi ) − 8α ⎩6 2 ⎡ ∂2 f ⎢ ∂x 2 ( x%i , u%i ) + ⎣ (81) ⎫ ⎤ ∂ f ∂ f +2 ( x%i , u%i ) f ( x%i , u%i ) + 2 ( x%i , u%i ) f 2 ( x%i , u%i )⎥ ⎬ . ∂x∂u ∂u ⎦⎭ Функции, входящие в правую часть этого соотношения, по предположению непрерывны и ограничены в интересующей нас области изменения своих аргументов. Это позволяет заменить равенство (81) неравенством (82) ψ i ≤ ψ c ≤ Mh 2 , где M - константа, мажорирующая выражение в фигурных скобках формулы (81). Подставляя оценку (82) в неравенство (77), получим (83) z c ≤ MleCl h 2 . Таким образом, при h → 0 погрешность аппроксимации уравнения и, как следствие, погрешность решения стремятся к нулю со скоростью h2 . Это означает, что разностное уравнение (61), полученное по схеме Рунге-Кутта, имеет второй порядок точности относительно h . Второй порядок точности лучше, чем первый, однако практика показывает, что этой точности также недостаточно. Наиболее часто при проведении реальных расчетов используется схема Рунге-Кутта четвертого порядка точности следующего вида yi +1 − yi 1 = ( k1 + 2k2 + 2k3 + k4 ) , (84) h 6 где h h ⎞ ⎛ k1 = f ( xi , yi ) , k2 = f ⎜ xi + , yi + k1 ⎟ , 2 2 ⎠ ⎝ (85) h h ⎞ ⎛ k3 = f ⎜ xi + , yi + k2 ⎟ , k4 = f ( xi + h, yi + hk3 ) . 2 2 ⎠ ⎝ Если в схеме второго порядка точности на каждом шаге функцию f ( x, y ) приходилось вычислять два раза, то здесь – четыре раза. Однако это усложнение схемы расчета окупается высокой точностью. На более подробном обсуждении схемы (84), (85) останавливаться не будем и ограничимся конкретным примером. Задача 4. Построить решение задачи Коши (51), (52) на отрезке [0, 2] с шагом h = 0.25 по схеме Рунге-Кутта второго порядка типа «предиктор-корректор» (65) и по схеме Рунге-Кутта четвертого порядка (84), (85). Сравнить результаты расчетов между собой и с аналитическим решением задачи (53). Результаты расчетов по этой задаче приведены в таблице 2. Здесь в первом столбце даны значения переменной xi , во втором и третьем столбцах – результаты расчетов по схемам Рунге-Кутта второго и четвертого порядков, в последнем шестом столбце – значения аналитического решения (53) в узлах сетки. В четвертом и пятом 2 2 - 103 - столбцах приведены результаты расчетов по методу Адамса. Они будут обсуждаться в следующем разделе. Таблица 2. xi u ( xi ) Р.К. - II Р.К. - IV Ад. - II Ад. - IV 0,00 0,000000 0,000000 0,000000 0,000000 0,000000 0,25 0,031250 0,032593 0,031250 0,032593 0,032594 0,50 0,133057 0,136099 0,130859 0,136099 0,136102 0,75 0,314791 0,319962 0,309692 0,319962 0,319966 1,00 0,587068 0,594879 0,578331 0,594826 0,594885 1,25 0,961913 0,972975 0,948662 0,972847 0,972984 1,50 1,452948 1,467988 1,434141 1,467772 1,468000 1,75 2,075605 2,095486 2,050001 2,095159 2,095501 2,00 2,847365 2,873107 2,813492 2,872644 2,873127 Сравнение результатов второго столбца таблицы 1, рассчитанных по методу Эйлера с шагом h = 0.25 , с результатами второго и третьего столбца таблицы 2 показывает как уменьшается погрешность при фиксированном шаге h по мере перехода к более точным методам. Так метод Рунге-Кутта четвертого порядка, несмотря на достаточно крупный шаг, дает погрешность решения z c = 0.00002 . Это на много лучше, чем при расчете по схеме Эйлера с шагом h = 0.01 (см. четвертый столбец в таблице 1). В то же время при расчете по схеме Эйлера было сделано двести шагов с однократным вычислением функции f ( x, y ) на каждом шаге, а при расчете по схеме Рунге-Кутта – восемь шагов с четырехкратным вычислением функции f ( x, y ) на каждом шаге. Таким образом, более сложный, но и более совершенный метод позволяет при меньшем объеме вычислений получить более точный результат. В заключение сделаем следующее замечание. Априорные оценки погрешности по схеме Эйлера (50) или Рунге-Кутта (83) представляют теоретический интерес. Они определяют скорость, с которой погрешность стремится к нулю при h → 0 . Однако на практике оценки подобного типа неэффективны, поскольку содержат производные искомого решения u ( x ) . Обычно точность численного решения задачи устанавливают с помощью апостериорных оценок, основанных на сравнении результатов расчетов с шагом h и h / 2 . Процедура их вывода и применения была описана в предыдущей главе в связи с задачей численного интегрирования. 2.4. Метод Адамса. Адамс – английский астроном и математик XIX века, который много занимался небесной механикой. При изучении траекторий планет ему постоянно приходилось численно интегрировать уравнения их движения. Желая минимизировать объем вычислений, Адамс разработал один из наиболее экономичных методов численного решения дифференциальных уравнений, к обсуждению которого мы теперь переходим. Пусть u ( x ) - решение дифференциального уравнения (27). Для производной этой функции имеет место равенство - 104 - u ′ ( x ) = f ( x, u ( x ) ) = F ( x ) . (86) Интегрируя его между двумя точками сетки, получим соотношение ui +1 = ui + xi +1 ∫ F ( x ) dx . (87) xi Мы не можем использовать это соотношение непосредственно для перехода в процессе решения задачи от i -ой точки сетки к ( i + 1) -ой, поскольку функция F ( x ) нам не известна. Чтобы сделать следующий шаг, нужно приближенно заменить эту функцию на такую функцию, которую можно вычислить. Опишем, как эта проблема решается в методе Адамса. Пусть в процессе численного решения задачи мы довели расчет до точки xi . В результате проведенных расчетов нам оказались известными величины y j и f ( x j , y j ) , 0 ≤ j ≤ i . Возьмем некоторое фиксированное целое число m ≤ i и построим интерполяционный многочлен m -ой степени, принимающий в точках x j , i − m ≤ j ≤ i значения f ( x j , u j ) Pm ( x j ) = f ( x j , u j ) , i − m ≤ j ≤ i . (88) Его можно записать по формуле Лагранжа Pm ( x ) = i ∑ f ( x , y )Q ( x) , j =i − m j j (89) m, j где Qm , j ( x ) специальные многочлены вида Qm , j ( x ) = ( x − xi−m )L ( x − x j−1 )( x − x j+1 )L ( x − xi ) ( x j − xi−m )L( x j − x j−1 )( x j − x j+1 )L( x j − xi ) , (90) которые мы уже рассматривали в третьей главе. Главная идея метода Адамса заключается в том, чтобы для расчета yi +1 использовать формулу типа (87), приближенно заменяя в ней функцию F ( x ) на интерполяционный многочлен Pm ( x ) , составленный согласно (89) по результатам предыдущих вычислений. Это приводит к рекуррентной формуле yi +1 = yi + xi +1 ∫ Pm ( x ) dx = yi + xi i ∑ a f (x , y ), j =i − m j j j (91) где aj = xi +1 ∫ Q ( x ) dx . m, j (92) xi Рассмотрим более подробно данную схему численного решения задачи Коши в простейших случаях m = 0 и m = 1 , когда технические трудности не закрывают прозрачную идею метода. При m = 0 для аппроксимации функции F ( x ) используется полином нулевой степени, т. е. постоянная F ( x ) ≈ P0 = f ( xi , yi ) . - 105 - В этом случае формула (91) переходит в рекуррентную формулу метода Эйлера yi +1 = yi + hf ( xi , yi ) , обеспечивающую первый порядок точности. Такой результат сам по себе тривиален. Мы привели его только для того, чтобы показать, что для метода Адамса, как и для метода Рунге-Кутта, исходной точкой является схема Эйлера. Перейдем к исследованию варианта m = 1 . В этом случае для аппроксимации функции F ( x ) используется полином первой степени, построенный по значениям функции f в двух точках ( xi −1 , yi −1 ) и ( xi , yi ) : x − xi −1 x − xi P1 ( x ) = f ( xi , yi ) − f ( xi −1 , yi −1 ) . h h Подставляя его в формулу (91) и проводя интегрирование, получим 1 ⎧3 ⎫ yi +1 = yi + ⎨ f ( xi , yi ) − f ( xi −1 , yi −1 ) ⎬ h . (93) 2 2 ⎩ ⎭ Отметим следующую особенность рекуррентной формулы (93). Для расчета очередного значения сеточной функции yi +1 нужно знать ее значения в двух предыдущих точках yi и yi −1 . Таким образом, формула (93) начинает работать только со второй точки. Вычислить по ней y1 нельзя. Это значение решения разностной задачи приходится вычислять каким-нибудь другим методом, например, методом Рунге-Кутта. Рекуррентную формулу (93) можно записать в виде разностного уравнения yi +1 − yi 3 1 = f ( xi , yi ) − f ( xi −1 , yi −1 ) . (94) 2 2 h Подсчитаем для него погрешность аппроксимации дифференциального уравнения u − u ⎧3 1 1 ⎫ u − u ⎧3 ⎫ ψ i = i +1 i − ⎨ f ( xi , ui ) − f ( xi −1 , ui−1 ) ⎬ = i +1 i − ⎨ u′ ( xi ) − u′ ( xi −1 )⎬ . (95) h 2 h 2 ⎩2 ⎭ ⎩2 ⎭ Предположим, что функция f ( x, u ) имеет в интересующей нас области изменения аргументов непрерывные вторые производные, так что решение задачи u ( x ) трижды непрерывно дифференцируемо. Запишем разложения Тейлора 1 1 ui +1 = ui + u′ ( xi ) h + u′′ ( xi ) h 2 + u′′′ xi + θ% i h h3 , 2 6 (96) 1 % u′ ( xi −1 ) = u′ ( xi ) − u′′ ( xi ) h + u′′′ xi − θ% i h h 2 . 2 Подставляя их в формулу (95), получим 1 ⎧1 ⎫ ψ i = ⎨ u′′′ xi + θ%i h + u′′′ xi − θ%%i h ⎬ h2 . (97) 6 4 ⎩ ⎭ Отсюда можно написать оценку 5 ψ i ≤ ψ c ≤ M 3h 2 , (98) 12 где M 3 - постоянная, мажорирующая третью производную функции u ( x ) : ( ) ) ( ( ) ( ) - 106 - u′′′ ( x ) ≤ M 3 , x0 ≤ x ≤ x0 + l . (99) Мы видим, что разностное уравнение метода Адамса, соответствующее случаю m = 1 , аппроксимирует дифференциальное уравнение (27) со вторым порядком точности относительно h . Как и в случае метода Рунге-Кутта, это обеспечивает второй порядок точности для погрешности решения z c при предположении, что значение y1 , которое рассчитывается нестандартно, вычислено со вторым порядком точности. Процесс построения более точных схем можно продолжить за счет увеличения m . При m = 2 получается схема третьего порядка точности, при m = 3 - четвертого и т.д. Схема четвертого порядка, как и в методе Рунге-Кутта, является наиболее употребительной, поэтому мы коротко остановимся на ее выводе и обсуждении. Если написать интерполяционный полином третьей степени P3 ( x ) (89) на сетке из четырех точек xi , xi −1 , xi −2 , xi −3 и провести интегрирование (92), то рекуррентная формула (91) примет вид: 59 37 9 ⎧ 55 ⎫ yi +1 = yi + h ⎨ f ( xi , yi ) − f ( xi −1 , yi −1 ) + f ( xi −2 , yi −2 ) − f ( xi −3 , yi −3 ) ⎬ . (100) 24 24 24 ⎩ 24 ⎭ Приведем еще одно форму записи этой формулы через так называемые конечные разности 1 5 3 yi +1 = yi + hfi + h 2 ∆1 fi + h3∆ 2 fi + h 4 ∆ 3 fi , (101) 2 12 8 где f i = f ( xi , yi ) , 1 { f ( xi , yi ) − f ( xi−1, yi−1 )} , h (102) 1 ∆ 2 f i = 2 { f ( xi , yi ) − 2 f ( xi −1 , yi −1 ) + f ( xi −2 , yi −2 )} , h 1 ∆ 3 fi = 3 { f ( xi , yi ) − 3 f ( xi −1 , yi −1 ) + 3 f ( xi −2 , yi −2 ) − f ( xi −3 , yi −3 )}. h Первая, вторая и третья разности (102) приближенно соответствуют первой, второй и третьей производной функции F ( x ) = f ( x, u ( x ) ) . Эквивалентность формул (100) и (101) легко проверить непосредственно. Формула (101) иногда более удобна для организации вычислительного процесса и контроля точности. Особенность метода Адамса проявляется в формуле (100) еще сильнее, чем в формуле (93). Здесь для расчета очередного значения yi +1 нужно знать значения y в четырех предыдущих точках - yi , yi −1 , yi−2 , yi−3 . Таким образом, формула (100) начинает работать только с четвертой точки. Вычислить по ней y1 , y2 , y3 нельзя. Эти значения решения разностной задачи приходится рассчитывать другим методом, например, методом Рунге-Кутта. Перейдем к обсуждению точности схемы (100). Если функция f ( x, u ) имеет непрерывные четвертые производные по своим аргументам в интересующей нас области их изменения, так что решение задачи u ( x ) пять раз непрерывно ∆1 f i = - 107 - дифференцируемо, то разностное уравнение (100) аппроксимирует дифференциальное уравнение (27) с четвертым порядком точности относительно h . Доказательство этого утверждения проводится также, как и для схемы второго порядка (93), только теперь в разложениях типа (96) нужно удерживать больше членов. Четвертый порядок точности при аппроксимации уравнения обеспечивает четвертый порядок точности для погрешности решения z c при предположении, что начальные значения для метода Адамса y1 , y2 , y3 вычислены с такой же точностью. Они рассчитываются независимо и при этом важно, чтобы начальный этап вычислительного процесса не внес такую погрешность, которая исказит все последующие результаты. Задача 5. Построить решение задачи Коши (51), (52) на отрезке [0,2] с шагом h = 0.25 по схеме Адамса второго (93) и четвертого (100) порядка. Сравнить результаты расчетов между собой, с результатами расчетов по схеме Рунге-Кутта и с аналитическим решением задачи. Результаты расчетов приведены в четвертом и пятом столбцах таблицы 2. В соответствии с заданием, нужно сравнивать четвертый столбец со вторым и шестым, а пятый – с третьим и шестым. Напомним, что в шестом столбце приведено аналитическое решение (53) рассматриваемой задачи, так что сравнение с ним позволяет судить о точности приближенного решения по схеме Рунге-Кутта и схеме Адамса. Расчет по схеме Адамса второго порядка точности начинается с y2 , четвертого с y4 . Значение y1 в четвертом столбце, y1 , y2 , y3 в пятом столбце рассчитывались по схеме Рунге-Кутта соответствующего порядка, поэтому в таблице они оказываются одинаковыми с соответствующими данными второго и третьего столбцов. Сравнение результатов проведенных расчетов двумя методами с аналитическим решением задачи показывает, что их точность примерно одинакова. Сравним схемы четвертого порядка точности в методе Рунге-Кутта (84) и Адамса (100) с точки зрения организации вычислительного процесса. Чтобы сделать один шаг по методу Рунге-Кутта, необходимо вычислить функцию f ( x, y ) четыре раза (85), а в методе Адамса только один раз. В трех предшествующих точках функция f ( x, y ) была уже вычислена на предыдущих шагах и вычислять ее снова нет необходимости. В этом заключается главное достоинство метода Адамса, которое особенно высоко ценилось в докомпьютерную эру. Главный недостаток метода Адамса мы уже отмечали: при его применении первые шаги приходится делать с помощью другого метода, например, с помощью метода Рунге-Кутта и только после этого можно перейти на расчет по схеме Адамса. Таким образом, программа решения задачи Коши по методу Адамса должна включать в себя как элемент программу метода Рунге-Кутта для расчета начальной стадии вычислительного процесса. С этой особенностью метода Адамса связана еще одна проблема. При численном интегрировании дифференциального уравнения часто приходится менять шаг h . В методе Рунге-Кутта это не составляет труда, поскольку каждый шаг делается - 108 - независимо от предыдущего. В методе Адамса ситуация иная. Здесь нужно либо изначально программировать весьма сложные формулы расчета с переменным шагом, либо после каждой смены шага заново проводить расчет первых трех точек по методу Рунге-Кутта. Только после этого можно переходить на стандартный счет по методу Адамса. Эти недостатки приводят к тому, что сегодня при компьютернах расчетах предпочтение часто отдается более удобному методу Рунге-Кутта. §3. Численное решение краевой задачи для линейного дифференциального уравнения второго порядка. Рассмотрим следующую задачу для линейного дифференциального уравнения второго порядка: (103) u′′ − q ( x ) u = − f ( x ) , a < x < b, (104) u ( a ) = u1 , u ( b ) = u2 . Здесь два дополнительных условия заданы в граничных точках отрезка [ a, b ] , поэтому задачу (103), (104) называют краевой. Пусть функции f ( x ) и q ( x ) непрерывны на отрезке [ a, b ] , причем (105) q ( x ) ≥ q0 > 0 . При сделанных предположениях, как известно из курса дифференциальных уравнений, решение задачи (103), (104) существует и является единственным. Перейдем к обсуждению вопросов, связанных с его расчетом с помощью численного метода. Возьмем некоторое целое число n , введем шаг h = ( b − a ) / n и построим сетку xi = a + ih, 0 ≤ i ≤ n . (106) Заменим дифференциальное уравнение (103) его разностным аналогом. В результате получим следующую задачу: yi −1 − 2 yi + yi +1 − qi yi = − f i , 1 ≤ i ≤ n − 1 , (107) h2 y0 = u0 , yn = u2 . (108) Здесь qi = q ( xi ) , f i = f ( xi ) , граничные условия (108) для сеточной функции { yi } взяты такими же, что и в дифференциальной задаче. Разностные уравнения (107) можно переписать в виде yi −1 − ( 2 + qi h 2 ) yi + yi +1 = − fi h 2 , 1 ≤ i ≤ n − 1. (109) Мы получили линейную систему из ( n − 1) -го уравнения с ( n − 1) -им неизвестным yi , 1 ≤ i ≤ n −1 . Значения y0 и yn неизвестными не являются: они задаются граничными условиями (108). Между разностными схемами для задачи Коши и для краевой задачи есть существенное различие. В первом случае для определения сеточной функции { yi } мы имели рекуррентные соотношения, которые позволяли последовательно рассчитать все ее значения. Такие разностные схемы называются явными. В краевой задаче (107), - 109 - (108) сеточная функция { yi } определяется из решения системы линейных алгебраических уравнений. Такая разностная схема называется неявной. Из записи разностных уравнений в форме (109) видно, что мы получили систему уравнений с трехдиагональной матрицей с диагональным преобладанием: диагональный элемент ( 2 + qi h 2 ) больше суммы двух других элементов той же строки, равной 2. Системы такого типа мы уже встречали в третьей главе в связи с задачей интерполяции кубическим сплайном. Диагональное преобладание гарантирует существование и единственность решения системы, которое может быть построено методом прогонки. Перейдем к обсуждению основного вопроса: с какой точностью сеточная функция { yi } , полученная в результате решения задачи (107), (108), приближает решение краевой задачи (103), (104). Пусть u ( x ) решение исходной краевой задачи. Обозначим через ui = u ( xi ) его значения в узлах сетки и введем две сеточные функции: погрешность решения и погрешность аппроксимации уравнения zi = yi − ui , 0 ≤ i ≤ n , (110) u − 2ui + ui +1 − qiui + f i , 1 ≤ i ≤ n − 1 . ψ i = i −1 (111) h2 Выразим из соотношения (110) yi через ui и zi и подставим в разностное уравнение (107). Оставим члены, содержащие zi , слева, а остальные члены перенесем направо. В результате получим zi −1 − 2 zi + zi +1 ⎧ ui −1 − 2ui + ui +1 ⎫ − q z = − − q u + f (112) ⎨ ⎬ = −ψ i , 1 ≤ i ≤ n − 1 . i i i i i 2 h2 h ⎩ ⎭ Граничные условия в дифференциальной и разностной задачах совпадают, так что значения сеточной функции zi в граничных точках будут нулевыми z0 = z n = 0 . (113) Мы не можем рассчитать погрешность {zi } , решая задачу (112), (113), поскольку в правые части уравнений входят неизвестные величины ui и ψ i . Однако задача (112), (113) позволяет оценить погрешность. Пусть максимальное по модулю число zi соответствует индексу i = j : z c = z j ≥ zi , 0 ≤ i ≤ n . (114) В граничных точках zi обращается в ноль (113), так что индекс j не равен ни нулю, ни n . Рассмотрим уравнение (112) для этого значения индекса и запишем его в виде: (115) ( 2 + q j h2 ) z j = z j−1 + z j+1 + ψ j h2 . Возьмем модуль от обеих частей равенства и оценим правую часть сверху ( 2 + q j h 2 ) z j = ( 2 + q j h 2 ) z c ≤ z j−1 + z j+1 + ψ j h 2 ≤ 2 z c + 2 ψ c h 2 или zc≤ 1 ψ c. q0 (116) - 110 - Здесь мы сократили одинаковые члены слева и справа, разделили обе части неравенства на множитель q j h 2 и заменили q j в знаменателе на минимально возможное значение функции q ( x ) на отрезке [ a, b ] , равное q0 (105). Таким образом нам удалось оценить погрешность решения z c через погрешность аппроксимации уравнения ψ c . Для оценки погрешности аппроксимации уравнения предположим, что функции f ( x ) и q ( x ) дважды непрерывно дифференцируемы на отрезке [ a, b ] . В этом случае уравнение (103) допускает двухкратное дифференцирование, что обеспечивает существование у решения краевой задачи (103), (104) четырех непрерывных производных и позволяет написать разложения 1 1 1 ui −1 = ui − u′ ( xi ) h + u′′ ( xi ) h 2 − u′′′ ( xi ) h 3 + u (4) xi − θ%i h h 4 , 2 6 24 (117) 1 1 1 (4) % 2 3 4 ui +1 = ui + u′ ( xi ) h + u′′ ( xi ) h + u′′′ ( xi ) h + u xi + θ%i h h . 2 6 24 Подставляя их в формулу (111), получим следующее выражение для ψ i : h 2 (4) % (118) ψ i = {u′′ ( xi ) − qi ui + f i } + u xi − θ%i h + u (4) xi + θ%i h . 24 Выражение в первых фигурных скобках равно нулю в силу дифференциального уравнения (103). В результате в правой части формулы (118) остается только вторая группа членов, обязанная своим происхождением остаточным членам в разложениях (117). Оценим ее следующим образом. Функция u (4) ( x ) непрерывна и, следовательно, ограничена на отрезке [ a, b ] . Пусть { ( ) u (4) ( x ) ≤ M 4 , a ≤ x ≤ b , ( ( ) ( ) )} (119) тогда из формул (116) и (118) получаем M M ψ c ≤ 4 h2 , z c ≤ 4 h2 . (120) 12q0 12 Мы видим, что разностная схема (107) обеспечивает второй порядок аппроксимации уравнения и, как следствие неравенства (116), второй порядок точности для погрешности решения. Задача 6. Рассмотреть на отрезке [ −1,1] краевую задачу u′′ − u = −1 , (121) (122) u ( −1) = u (1) = 0 . Выписать и решить соответствующую разностную задачу с шагом h = 0.5 . Сравнить решение разностной задачи с аналитическим решением chx u ( x) = 1 − . (123) ch1 - 111 - Система трех уравнений относительно y1 , y2 , y3 с учетом нулевых граничных условий имеет вид = −0.25 ⎧−2.25 y1 + y2 ⎪ (124) ⎨ y1 − 2.25 y2 + y3 = −0.25 . ⎪ y2 − 2.25 y3 = −0.25 ⎩ Решение системы (124), как и решение исходной дифференциальной задачи, симметрично относительно средней точки, так что u1 = u3 . С учетом этой особенности система (124) сводится к системе двух уравнений с двумя неизвестными: −2.25 y1 + y2 = −0.25 2 y1 − 2.25 y2 = −0.25, решение которой имеет вид 0.8125 1.0625 y1 = y3 = = 0.265306 , y2 = = 0.346939 . 3.0625 3.0625 В таблице 3 приведены значения xi , соответствующие узлам сетки, решение разностной задачи yi , аналитическое решение (123), вычисленное в узлах сетки ui = u ( xi ) , погрешность решения zi (110) и погрешность аппроксимации уравнения ψ i (111). Согласно двум последним столбцам (125) z c = 0.005007 , ψ c = 0.015352 Таблица 3 xi yi zi ψi u ( xi ) -1,0 0,000000 0,000000 0,000000 -0,5 0,265306 0,269237 -0,003931 -0,015352 0,0 0,346939 0,351946 -0,005007 -0,013614 0,5 0,265306 0,269237 -0,003931 -0,015352 1,0 0,000000 0,000000 0,000000 Погрешность аппроксимации уравнения ψ определена только для внутренних точек сетки, поэтому первая и последняя строчки последнего столбца остались незаполненными. Теперь обратимся к теоретической оценке погрешности решения и погрешности аппроксимации уравнения (120). В данном случае chx u (4) ( x ) = − , так что u (4) ( x ) ≤ M 4 = 1 . ch1 В результате оценки (120) с учетом того, что q = 1 , дают 0.25 0.25 zc≤ = 0.020833 , ψ c ≤ = 0.020833 . 12 12 Это согласуется с фактическими значениями погрешности (125), подсчитанными непосредственно по известному решению краевой задачи (123).
«Численное решение линейных алгебраических систем (СЛАУ). Численное решение уравнений. Приближение функций. Численное интегрирование. Численное интегрирование обыкновенных дифференциальных уравнений.» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

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

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

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

Перейти в Telegram Bot