Вы находитесь на странице: 1из 101

СОДЕРЖАНИЕ

ВВЕДЕНИЕ .................................................................................................... 5

1. ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ ................................................. 11


1.1. Методы прямоугольников ....................................................................13
1.2. Метод трапеций .....................................................................................15
1.3. Метод Симпсона ....................................................................................16
1.4. Применение методов численного интегрирования для
приближенного вычисления интегралов ....................................................19
1.5. Варианты заданий к лабораторной работе №1 ...................................20
Контрольные вопросы и задания ................................................................ 21

2. МЕТОДЫ РЕШЕНИЯ НЕЛИНЕЙНЫХ УРАВНЕНИЙ ................ 22


2.1. Метод половинного деления ................................................................23
2.2. Метод хорд (метод линейной интерполяции) ....................................24
2.3. Метод секущих .......................................................................................26
2.4. Метод Ньютона ......................................................................................28
2.5. Применение методов решения нелинейных уравнений ....................29
2.6. Варианты заданий к лабораторной работе №2 ...................................33
Контрольные вопросы и задания ................................................................ 33

3. ПРЯМЫЕ МЕТОДЫ РЕШЕНИЯ СИСТЕМ ЛИНЕЙНЫХ


АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ......................................................34
3.1. Метод Гаусса для решения СЛАУ .......................................................34
3.2. Алгоритм LU-разложения .....................................................................38
3.3. Метод прогонки .....................................................................................40
3.4. Применение прямых методов решения СЛАУ ...................................44
3.5. Варианты заданий к лабораторной работе №3 ...................................51
Контрольные вопросы и задания ................................................................ 52

4. ИТЕРАЦИОННЫЕ МЕТОДЫ РЕШЕНИЯ СЛАУ ......................... 54


4.1. Итерационные методы Якоби и Зейделя .............................................54
4.2. Каноническая форма итерационных методов ....................................56
4.3. Вариационно-итерационные методы решения СЛАУ.......................59
4.4. Применение итерационные методов решения СЛАУ .......................60
4.5. Варианты заданий к лабораторной работе №4 ...................................65
Контрольные вопросы и задания ................................................................ 65

5. МЕТОДЫ РЕШЕНИЯ ЗАДАЧИ КОШИ ........................................... 67


5.1. Метод Эйлера .........................................................................................68
3
5.2. Метод Рунге – Кутта..............................................................................70
5.3. Применение итерационных методов решения систем линейных
алгебраических уравнений...........................................................................71
5.4. Варианты заданий к лабораторной работе №5 ...................................75
Контрольные вопросы и задания ................................................................ 75

6. МЕТОДЫ ПРИБЛИЖЕНИЯ ФУНКЦИЙ ........................................ 77


6.1. Интерполяционный полином Лагранжа и Ньютона ..........................79
6.2. Интерполяционный кубический сплайн .............................................84
6.3. Понятие о методе наименьших квадратов ..........................................86
6.4. Интерполяционный тригонометрический полином ..........................88
6.5. Применение методов приближения функций.....................................91
6.6. Варианты заданий к лабораторной работе №6 .................................101
Контрольные вопросы и задания .............................................................. 103

БИБЛИОГРАФИЧЕСКИЙ СПИСОК .......................................................104


ПРИЛОЖЕНИЕ 1........................................................................................113

4
Введение

К одному из важных методов исследования различных явлений


или процессов реальной действительности относится математическое
моделирование. Математическое моделирование с общенаучной точки
зрения выступает как способ познания действительности с помощью
построения моделей исследуемых объектов, явлений или процессов и
предполагает использование в качестве специфического средства
исследования оригинала его математическую модель, изучение которой
дает новую информацию об объекте познания.
При построении математической модели изучаемого объекта
выделяют те его особенности, черты и детали, которые, с одной
стороны, содержат более или менее полную информацию об объекте, а
с другой, допускают математическую формализацию. Математическая
формализация предполагает, что особенностям объекта можно
поставить в соответствие адекватные математические понятия: числа,
функции, матрицы и т.д. Тогда связи и отношения, обнаруженные и/или
предполагаемые в изучаемом объекте познания между отдельными его
деталями и составными частями, можно записать с помощью
математических отношений: равенств, неравенств, уравнений, их
систем. В результате получают математическое описание изучаемого
процесса или явления – его математическую модель.
Сущность метода математического моделирования состоит в
замене объекте познания его «образом» – математической моделью – и
дальнейшем изучении модели, в том числе, с помощью реализуемых на
компьютерах вычислительно-логических алгоритмов. Теория
математического моделирования обеспечивает выявление
закономерностей протекания различных явлений и процессов
окружающего мира или работы систем и устройств путем их
математического описания и моделирования без проведения натурных
испытаний. При этом используют положения и законы математики,
описывающие моделируемые явления, системы или устройства на
некотором уровне их идеализации.
Метод математического моделирования сочетает в себе многие
достоинства как теоретических, так и эмпирических методов познания.
Исследование не самого объекта познания, а его модели дает
возможность относительно быстро и с меньшими затратами
исследовать его свойства и поведение в различных ситуациях.
Вычислительные эксперименты с моделями объектов позволяют,
опираясь на возможности современных вычислительных методов и
технических средств, подробно и глубоко изучать объекты в
5
достаточной полноте, не всегда доступной теоретическим подходам.
Математическое моделирование является в настоящее время одной из
важнейших составляющих научно-технического прогресса.
Метод математического моделирования развивался с развитием
точных наук, и не случайно некоторые методы вычислений носят имена
Ньютона, Эйлера, Лагранжа, Фурье.
Бурное развитие метода математического моделирования
произошло в конце 40-х – начале 50-х годов XX века, что было
обусловлено, по крайней мере, двумя причинами: появлением ЭВМ и
беспрецедентным социальный заказом – выполнением национальных
программ СССР и США по созданию ракетно-ядерного щита, которые
не могли быть реализованы традиционными методами.
С помощью математического моделирования данная задача была
успешно решена: ядерные взрывы и полеты ракет и спутников были
виртуально осуществлены на ЭВМ с помощью математических моделей
и лишь затем воплощены на практике. Этот успех во многом определил
дальнейшие достижения методологии математического моделирования,
без применения которой в развитых странах ни один
крупномасштабный технологический, экологический, экономический
или социальный проект теперь всерьез не рассматривают.
Методология математического моделирования бурно развивается
и в настоящее время, охватывая все новые сферы информационного
общества – от разработки технических систем и управления ими, до
анализа сложнейших экономических и социальных процессов.
Впечатляющий прогресс средств переработки, передачи и хранения
информации отвечает мировым тенденциям к усложнению и
интеграции различных сфер человеческой деятельности. Технические,
экологические, экономические и иные системы, изучаемые
современной наукой, в нужной полноте и точности не поддаются
исследованию обычными теоретическими методами. Прямой натурный
эксперимент над ними долог, дорог, возможно опасен, либо попросту
невозможен, так как многие из этих систем существуют в
«единственном экземпляре». Цена ошибок и просчетов в обращении с
реальными системами недопустимо высока. Поэтому метод
математического моделирования является обязательной составляющей
научно-технического прогресса.
Первым этапом метода математического моделирования является
построение математической модели объекта познания, представляющей
формализованное описание на языке математики исследуемого объекта.
Таким формализованным описанием может быть системы линейных,

6
нелинейных или дифференциальных уравнений, системы неравенств,
определенный интеграл, многочлен с неизвестными коэффициентами и т.д.
После того, как разработана математическая модель, переходят к
постановке вычислительной задачи. При этом устанавливают, какие
характеристики математической модели являются исходными
(входными) данными, какие – параметрами модели, какие – выходными
данными. Проводят анализ полученной задачи с точки зрения
существования и единственности решения.
На следующем этапе выбирают метод решения поставленной
задачи. Во многих конкретных случаях найти решение задачи в явном
виде не представляется возможным, так как оно не может быть
выражено через элементарные функции. Такие задачи можно решить
лишь приближенно, вычислительными (численными) методами,
подразумевающими приближенные процедуры, позволяющие получать
решение в виде конкретных числовых значений. Вычислительные
методы, как правило, реализуют на ЭВМ. Для решения одной и той же
задачи могут быть использованы различные вычислительные методы,
поэтому необходимо уметь оценивать качество различных методов и
эффективность их применения для данной задачи.
Для реализации выбранного вычислительного метода составляют
алгоритм и реализующую его программу для ЭВМ. Современному
исследователю важно уметь построить алгоритм решения такой задачи
и преобразовать задачу к виду, удобному для реализации на ЭВМ.
В настоящее время на рынке программного обеспечения широко
представлены как пакеты, реализующие наиболее общие методы
решения широкого круга задач (Maple, Mathcad, MatLAB и др.), так и
пакеты, реализующие методы решения специальных задач.
Когда результаты расчетов получены, их анализируют и
интерпретируют. При необходимости корректируют параметры
выбранного метода или вносят коррективы в математическую модель, и
начинают новый цикл решения задачи.
В зависимости от конкретной ситуации исследователю
необходимо выбрать тот или иной численный метод из числа
имеющихся или разрабатывать новый, учитывающий особую
специфику поставленной задачи. Пи этом необходимо знать
преимуществах и недостатках метода по сравнению с другими,
убедиться в его сходимости и устойчивости, определить число
необходимых операций и размеры требующейся памяти ЭВМ.
К основным проблемам выбора численного метода относят:
проблему обеспечения надѐжности вычислений при ограничении

7
точности исходных данных; изучение корректных, некорректных и
промежуточных задач, изменения корректности при преобразованиях;
устойчивость полученных решений; общую проблему надѐжности
вычислений и корректности математических моделей; методы
избегания ошибок при применении стандартных прикладных программ
Mathcad, MatLAB и др.; тандем «жѐстких» и «мягких» математических
моделей; интервальные числа и их свойства; алгебраические системы
интервальных чисел; задачи анализа и линейной алгебры в
интервальной математике; интервальные методы решения
дифференциальных уравнений; проблемы реализации интервальных
методов на ЭВМ.
Таким образом, численный анализ математических моделей,
включающий выбор метода, разработку алгоритма его программной
реализации, вычислительный эксперимент, является в настоящее время
эффективным аппаратом исследования прикладных проблем.
Вычислительная математика – раздел математики, в котором
производится разработка, обоснование и реализация на базе ЭВМ,
методов решения разнообразных задач на уровне математических
моделей. Основное содержание данного раздела составляют численные
методы, представляющие собой упорядоченные схемы, итерационные
процедуры, расчетные формулы, алгоритмы, переработки информации
с целью нахождения приближенного решения поставленной задачи.
Учебное пособие содержит краткое описание наиболее широко
используемых на практике прямых и итерационных методов решения
систем линейных алгебраических уравнений, методов решения
нелинейных уравнений, элементы теории интерполирования и
численного интегрирования, разностных методов решения
обыкновенных дифференциальных уравнений.
В первой главе пособия рассмотрены численные методы
интегрирования, позволяющие вычислить значение определенного
интеграла непосредственно по значениям подынтегральной функции,
независимо от способа ее задания или вида аналитического выражения.
Описаны методы численного интегрирования: методы
прямоугольников, трапеций и метод Симпсона. Показано применение
методов численного интегрирования для приближенного вычисления
интеграла.
Вторая глава пособия посвящена методам решения нелинейных
уравнений, необходимость использования которых возникает при
математическом моделировании различных гидрофизических и
биологических и многих других процессов. Рассмотрены методы

8
(половинного деления, хорд, секущих, метод Ньютона) приближенного
нахождения корней уравнения и оценки точности, найденных корней.
К одной из важных проблем прикладной математики относят
улучшение точности и сокращение времени решения систем линейных
алгебраических уравнений большой размерности с самосопряженными
и несамосопряженными операторами, а также плохо обусловленными
матрицами. Значительная часть численных методов решения
различных, в том числе нелинейных, задач включает в себя решение
систем линейных алгебраических уравнений как элементарный шаг
советующего алгоритма.
Прямые методы решения систем линейных алгебраических
уравнений представлены в третьей главе. Рассмотрены метод Гаусса и
его модификации: алгоритм LU-разложения и метод прогонки.
Показана реализация данных методов на ЭВМ.
В четвертой главе обсуждаются наиболее распространенные
итерационные методы решения систем линейных алгебраических
уравнений, являющиеся в ряде случаев весьма эффективными.
Представлены итерационные методы Якоби и Зейделя. Затронуты
вопросы исследования сходимости итерационных методов.
Рассмотрены вариационно-итерационные методы решения СЛАУ.
Представлены алгоритмы решения СЛАУ указанными методами.
Математическое моделирование многих задач механики, физики,
химии и других областей науки приводит к обыкновенным
дифференциальным уравнениям или к дифференциальным уравнениям
в частных производных. В пятой главе рассмотрена задача Коши для
обыкновенных дифференциальных уравнений. Показано применений
методов Эйлера, Рунге – Кутта второго и четвертого порядков точности
для ее решения.
Шестая глава посвящена методам приближения функций, к
которым весьма часто прибегают в задачах математического
моделирования, например, при статистической обработке результатов
натурных измерений, при прогнозировании состояния моделируемых
процессов или явлений. В главе рассмотрены интерполяция функций
полином Лагранжа, тригонометрическим полином, кубическим
сплайном, представлен метод наименьших квадратов, показано
применение данных методов.
Цель книги – помочь студентам овладеть основами раздела
«Численные методы» в такой степени, чтобы они могли не только
осознанно применять полученные знания в процессе обучения и в
профессиональной деятельности, но и, по мере необходимости,

9
углублять и расширять их путем дальнейшего самообразования.
В настоящее время существует большое число прекрасных
образцов учебной литературы по указанному разделу математики,
неполный перечень которых представлен в конце настоящего учебного
пособия. Среди существующей учебной литературы достаточно
подробное описание содержится в стандартных учебниках [3-7, 11-13,
16-17, 21, 32, 66-67]. С отдельными вопросами курса можно более
детально ознакомиться по специализированным книгам [9-10, 19, 27-28,
30-31, 33-34, 36, 68-69].
Тем не менее, авторы считают целесообразным дать студентам
сжатое, но системное и цельное изложение материала, которое, с одной
стороны, по своему объему было бы достаточным для усвоения основ
указанного раздела математики, а с другой стороны, ориентировало бы
студентов в выборе книг для самостоятельного расширения знаний, для
последующего более глубокого изучения численных методов и их
применения в различных прикладных задачах.

10
1. Численное интегрирование
Необходимость вычисления значений определенных интегралов
при моделировании возникает достаточно часто. Определенный
интеграл от функции f (x) на отрезке [a,b]
b
I   f (x)dx, (1.1)
a
вычисляют по формуле Ньютона-Лейбница. Если же нахождение
первообразной невозможно или представляет сложную задачу, то
точное вычисление определенного интеграла по формуле Ньютона-
Лейбница затруднительно. Поэтому большое значение имеют
приближенные и, в первую очередь, численные методы вычисления
определенных интегралов.
Численные методы интегрирования универсальны – они
позволяют вычислить значение определенного интеграла
непосредственно по значениям подынтегральной функции f (x) ,
независимо от способа ее задания или вида аналитического выражения.
В самой общей постановке задачу численного интегрирования
формулируют следующим образом: вычислить приближенное значение
определенного интеграла на основании ряда значений подынтегральной
функции.
Методы численного интегрирования делят в зависимости от
способа аппроксимации подынтегральной функции. (методы
прямоугольников, трапеций и метод Симпсона) основаны на
полиномиальной аппроксимации подынтегральной функции. Методы
данного класса отличаются друг от друга степенью используемого
полинома, от которой зависит количество узлов, где необходимо найти
функцию f (x) .
Эффективным методом вычисления интегралов является
представление подынтегральной функции в виде ряда Тейлора, что
позволяет свести вычисление интеграла от сложной функции к
интегрированию многочлена, представляющего собой первые
несколько членов ряда Тейлора. Методы приближения сплайнами
основаны на аппроксимации подынтегральной функции сплайнами,
представляющими собой кусочный полином. Методы различают по
типу выбранных сплайнов. В методах Монте-Крало узлы выбирают с
помощью датчика случайных чисел, при этом найденное значение
интеграла носит вероятностный характер.

11
В данной главе описаны основные методы численного
интегрирования: метод прямоугольников, трапеций и метод Симпсона.
Геометрический смысл определенного интеграла – площадь
криволинейной трапеции, ограниченной осью Oх, графиком функции
f (x) и прямыми x=a и x=b. Численные методы интегрирования
основаны на различных способах оценки этой площади, поэтому
полученные формулы численного интегрирования называют
квадратурными (формулами вычисления площади). Квадратурные
формулы отличаются друг от друга способом оценки значения площади
элементарной криволинейной трапеции.
Рассмотрим различные способы приближенного вычисления
определенного интеграла вида (1.1) основанные на замене данного
интеграла конечной суммой
n
In   ck f  x k , (1.2)
k 0
где c k – числовые коэффициенты и x k – точки отрезка [a,b] ,
k  0,1,2,...,n . Приближенное равенство:
b n

 f (x)dx   c f  x 
a k 0
k k

называют квадратурной формулой, сумму вида (1.2) – квадратурной


суммой. Точки x k называют узлами квадратурной формулы, числа c k –
коэффициентами квадратурной формулы. Разность
b n
 n   f (x)dx   c k f  x k 
a k 0

называют погрешностью квадратурной формулы.


Погрешность зависит как от расположения узлов, так и от выбора
коэффициентов. При оценке погрешности в представленных ниже
примерах функция f (x) предполагается достаточно гладкой.
Введем на [a,b] равномерную сетку с шагом h , то есть множество
точек
h  x i  a  ih; i  0,1,..., N; hN  b  a ,
и представим интеграл (1.1) в виде суммы интегралов по частичным
отрезкам:
b N xi

 f (x)dx    f  x  dx.
a i 1 x i 1

12
Для построения формулы численного интегрирования на всем
отрезке [a,b] достаточно построить квадратурную формулу для
интеграла
xi

 f  x  dx
x i 1
(1.3)

на частичном отрезке [x i1 , x i ] и воспользоваться свойством


аддитивности определенного интеграла.

1.1. Методы прямоугольников


К одним из простейших методов численного интегрирования
относят методы прямоугольников, краткое описание которых
представлено ниже. В данных методах подынтегральную функцию на
интервале интегрирования заменяют полиномом нулевой степени или
константой. Подобная замена является неоднозначной, поскольку
константу можно выбрать, например, равной значению
подынтегральной функции в любой точке на интервале интегрирования,
что влечет за собой деление методов прямоугольников на методы
центральных, левых и правых прямоугольников.
Пользуясь малостью h , заменим интеграл (1.3) выражением

 
f x i 1 h , где x i 1  x i  0,5h , получим формулу:
2 2

 f  x  dx  f  x  h,
xi

i 1
(1.4)
2
x i 1

которую называют формулой прямоугольников на частичном отрезке


[x i1 , x i ] .
Погрешность формулы (1.4) определяется величиной

 f  x  dx  f  x  h,
xi

i  i 1
2
x i 1

которую легко оценить с помощью формулы Тейлора.


Действительно, запишем  i в виде:


 f x  f x  dx ,
xi

i  i 1
(1.5)
2
x i 1

воспользуемся разложением

13
 xx 
2

 
f  x   f x i 1  x  x i 1 f ' x i 1
2 2
 2
 2
i 1
f ''    , 2
i

где i  i (x) [x i1 , x i ] . Тогда из (1.5) получим:

 x  x  f ''  dx.
2
xi
i 1
i  
2
i
x i 1
2
Обозначая M 2,i  max f ''(x) , оценим  i следующим образом:
x[x i 1 ,x i ]

 x  x  dx  M  x  x 
2 3 xi
xi
i 1 i 1 h3
 i  M 2,i   M 2,i .
2 2
2,i
x i 1
2 6 24
x i 1

Таким образом, для погрешности формулы прямоугольников на


частичном отрезке справедлива оценка:
h3
i  M 2,i , (1.6)
24
то есть формула имеет погрешность O(h 3 ) при h  0 .
Заметим, что оценка (1.6) является не улучшаемой, то есть
существует функция f (x) , для которой (1.6) выполняется со знаком
равенства. Действительно, для f (x)   x  x i1/2  , имеем M 2,i  2 ,
2

f  x i1/2   0 и

 
xi
h3 h3
x f  x  dx  f x i 12 h  24 M 2,i  12 .
i 1

Суммируя равенства (1.4) по i от 1 до N , получим составную


формулу прямоугольников (центральных прямоугольников):
b N

 f (x)dx   f  x  h.
a i 1
i 1/2 (1.7)

Погрешность данной формулы:


b N
   f (x)dx   f  x i1/2  h
a i 1

равна сумме погрешностей по всем частичным отрезкам,

14
 x  x  f ''  dx.
2
N N xi
i 1
   i   
2
i
i 1 i 1 x i 1 2
Отсюда, обозначая M 2  max f ''(x) , получим:
x[a,b]

M 2 Nh h (b  a)
3 2
  M2 , (1.8)
24 24
то есть погрешность формулы прямоугольников на всем отрезке есть
величина O  h 2  . В этом случае говорят, что квадратурная формула
имеет второй порядок точности.
Замечание. Можно использовать формулы прямоугольников при
ином расположении узлов, например, формулы левых и правых
прямоугольников соответственно:
b N b N

 f (x)dx   hf  x ,
a i 1
i 1  f (x)dx   hf  x .
a i 1
i

Однако, из-за нарушения симметрии, погрешность таких формул


является величиной O  h  .

1.2. Метод трапеций


Рассмотрим метод трапеций, при котором используют линейную
интерполяцию, то есть график функции y  f (x) представляют в виде
ломаной, соединяющей точки (x i , yi ) . Элементарную криволинейную
трапецию заменяют трапецией (кривую f (x) заменяют хордой).
Площадь всей криволинейной трапеции состоит из площадей
элементарных прямолинейных трапеций, равных произведению
полусуммы оснований на высоту.
На частичном отрезке [x i1 , x i ] формула имеет вид:
f (x i1 )  f (x i )
xi


x i 1
f (x)dx 
2
h (1.9)

Формулу получают путем замены подынтегральной функции f  x 


интерполяционным многочленом первой степени, построенным по
узлам x i1 , x i , то есть функцией:
1
L1,i (x)  ((x  x i1 )f (x i )  (x  x i )f (x i1 )).
h
15
Для оценки погрешности достаточно вспомнить, что
(x  x i1 )(x  x i )
f (x)  L1,i (x)  f ''( i (x)).
2
Отсюда получим:
f (x i1 )  f (x i )
xi xi

 i   f (x)dx  h   (f (x)  L1,i (x))dx 


x i 1
2 x i 1

(x  x i1 )(x  x i )
xi

 x 2
f ''( i (x))dx
i 1

и, следовательно,
M 2,i h 3
i  . (1.10)
12
Оценка (1.10) не улучшаема, так как в ней достигается равенство,
например, для f (x)   x  x i  .
2

Составная формула трапеций имеет вид:


f (x i )  f (x i1 )
b N

a f (x)dx  i 1 2
h  h(0,5f 0  f1   f N1  0,5f N ), (1.11)

где fi  f  x i  , i  0,1,..., N, x i  a  ih, hN  b  a .


Для погрешности этой формулы справедлива оценка:
h 2 (b  a)
 M 2 , M 2  max f ''(x) .
12 x[a,b]

Таким образом, формула трапеций имеет, так же как и формула


прямоугольников, второй порядок точности   O  h 2  , но ее
погрешность оценивается величиной в два раза меньшей (см. (1.8)).

1.3. Метод Симпсона


Метод Симпсона предполагает замену подынтегральной функции
f  x  интерполяционным многочленом второй степени, построенным
по узлам x i1 , x i .
При аппроксимации интеграла (1.3) заменим функцию f  x 
параболой, проходящей через точки  x i ,f (x i )  , j  i  1, i  0,5, i , то
есть представим приближенно f  x  в виде:
f (x)  L2,i (x), x [x i1 , x i ] ,

16
где L2,i (x) – интерполяционный многочлен Лагранжа второй степени,
2
L2,i (x)  2  (x  x i1/2)(x  x i )f i1 
h (1.12)
2(x  x i1)(x  x i )f i1/2  (x  x i )(x  x i1/2)fi .
Проводя интегрирование, получим:
xi
h
x 2,i L (x)dx 
6
(fi1  4f i1/2  fi ), h  x i  x i1.
i 1

Таким образом, приходим к приближенному равенству:


xi
h
x f (x)dx 
6
(f i1 4f i1/2  f i ), (1.13)
i 1

которое называют формулой Симпсона или формулой парабол.


На всем отрезке [a,b] формула Симпсона имеет вид:
b N
h
a f (x)dx  
i 1 6
(f i1  4f i1/2  f i ) 

h
 [f 0  f N  2(f1  f 2   f N1 )  4(f1/2  f 3/2   f N1/2 )].
6
Чтобы не использовать дробных индексов, можно обозначить
x i  a  0,5hi , fi  f (x i ) , i  0,1,...,2N , hN  b  a
и представить формулу Симпсона в следующем виде:
ba
b

a f (x)dx 
6N
[f 0  f 2N 
(1.14)
2(f 2  f 4   f 2N2 )  4(f1  f 3   f 2N1 )].
Прежде чем переходить к оценке погрешности формулы (1.13),
заметим, что она является точной для любого многочлена третьей
степени, то есть имеет место точное равенство:
xi
h
x f (x)dx 
6
(f i1  4f i1/2  f i ) .
i 1

Если f (x)  a 0  a1x  a 2 x 2  a 3x 3 , данное утверждение нетрудно


проверить непосредственно, что и предоставляется сделать читателю.
Для оценки погрешности формулы Симпсона построим многочлен
третьей степени H3 (x) такой, что
H3 (x i1 )  f (x i1 ) , H3 (x i1/2 )  f (x i1/2 ) , H 3(x i )  f (x i ).
Известно, что такой многочлен существует и единственен. Он
построен в явном виде. Однако, нам не потребуется явный вид
17
многочлена H3 (x) . Вспоминая, что формула Симпсона точна для
любого многочлена третьей степени, получим:
xi
h
x 3 H (x)dx 
6
(H3 (x i1 )  4H 3 (x i1/2 )  H 3 (x i )) 
i 1
(1.15)
h
 (fi1  4fi1/2  fi ).
6
Представим f (x) в виде:
f (x)  H3 (x)  ri (x), x [x i1 , x i ] , (1.16)
где ri (x) – погрешность интерполирования многочленом H3 (x) .
Интегрируя (1.16) и учитывая (1.15), получим:
xi xi
h
x f (x)dx  6 (f i1 4f i1/2  f i)  x r i(x)dx, (1.17)
i 1 i 1

тогда
f IV ( i )
ri (x)  (x  x i )(x  x i1/2 ) 2 (x  x i1 ).
24
Оценим погрешность  i :
xi
M 4,i
i 
24 
x i 1
(x  x i )(x  x i1/2 ) 2 (x  x i1 )dx,

где M 4,i  max f IV (x) .


x[x i 1 ,x i ]

Вычисляя интеграл, получим оценку для погрешности:


h5
i  M 4,i . (1.18)
2880
Погрешность составной формулы Симпсона (1.14) оценивают так:
h 4 (b  a)
 M 4 , hN  b  a, M 4  max f IV (x) .
2880 x[a,b]

Таким образом, формула Симпсона существенно точнее, чем


формулы прямоугольников и трапеций. На частичном отрезке она
имеет точность O(h 5 ) , а на всем отрезке – O(h 4 ) .

18
1.4. Применение методов численного интегрирования для
приближенного вычисления интегралов
Применим методы численного интегрирования для приближенного
1
4dx
вычисления интеграла  .
0
1  x 2

Представим алгоритм решения поставленной задачи с


использованием универсальных решающих программ типа MathCad.
Задаем число разбиений
n : 10 .
Устанавливаем пределы интегрирования
a : 0 b : 1 .
Вычисляем шаг сетки
ba
h : .
n
Вводим подынтегральную функцию
4
f (x) : .
1  x2
Рассчитываем точное значение интеграла
b
I :  f (x)dx
a
I  3,1415926536 .
Рассчитываем значение интеграла методом левых
прямоугольников
n
I1: h   f[a  h  (i  1)] .
i 1
Выводим полученное значение
I1  3,2399259889 .
Выводим значение погрешности в случае использования метода
левых прямоугольников
I1  I  0,098 .
Рассчитываем значение интеграла и погрешности методом правых
прямоугольников
n
I2 : h   f  a  h  i 
i 1
I2  3,0399259889
I2  I  0,102 .

19
Рассчитываем значение интеграла и погрешности методом
центральных прямоугольников
n
I3: h   f[a  h  (i  0,5)]
i 1
I3  3,142425985
I3  I  8,333 104 .
Рассчитываем значение интеграла и погрешности методом
трапеций
 f (a)  f (b) n 1 
I4 : h     f (a  h  i) 
 2 i 1 
I4  3,1399259889
I4  I  1,667 103 .
Рассчитываем значение интеграла и погрешности методом
Симпсона
h  n 1 n

I5 :   f (a)  f (b)  2   f (a  h  i)  4   f a  h   i  0,5   
6  i 1 i 1 
I5  3,141592653
I5  I  6,2 1010 .

1.5. Варианты заданий к лабораторной работе №1


Задание 1. Примените методы численного интегрирования для
вычисления интегралов, представленных ниже.

1 4
x 2 dx
1) 
0 4  x2
; 2)  x 2 16  x 2 dx
2
6
4  x 2 dx
2
dx
3)  ; 4)  ;
2 x x 9
2
3 1
x
2 8
x 3dx dx
5) 
0 16  x 2
; 6)  x x  16
2
;
4 2
3
4 3
dx x 2 dx
7)  ; 8)  36  x
;
x x  16
2 2
4 0
10 6
x 2dx dx
9)  x  25
2
; 10)  x x 9
2
.
10/ 3 3 2

20
Содержание отчета
Отчет должен содержать:
− титульный лист;
− постановку задачи (согласно варианту);
− краткое описание методов численного интегрирования;
− программную реализацию данных методов;
− выводы о проделанной работе.

Контрольные вопросы и задания


1. Какие методы численного интегрирования вам известны?
Кратко опишите каждый метод.
2. Какой из методов численного интегрирования, в вашем
случае, оказался наиболее точным, а какой – наименее точным?
3. Чему равна погрешность численного интегрирования для
вышеизложенных методов?
4. Запишите формулы для приближенного вычисления
определенных интегралов.
5. Вычислите определенные интегралы с помощью методов
численного интегрирования:

1 1
dx dx 1
ln(1  x )
2

а)  ; б)  ; в)  dx ; г)  sin xdx .; n=10.


e 4 x
0
x  1 0
1  x 0

6. Для заданного примера найдите теоретическую и


практическую погрешность численного вычисления определенных
интегралов.
7. Сравните погрешность методов трапеций и центральных
прямоугольников.
8. Как еще называют формула Симпсона и почему?
9. Запишите формулу для расчета погрешности методов
численного интегрирования.
10.* Запишите формулу Симпсона через линейную комбинацию
формул трапеций и центральных прямоугольников.

21
2. Методы решения нелинейных уравнений
Задача нахождения корней нелинейных уравнений вида f (x)  0
достаточно часто встречается в различных областях научных
исследований (здесь f (x) – некоторая непрерывная функция).
Нелинейные уравнения делят на два класса – алгебраические и
трансцендентные. Алгебраическими называют уравнения, содержащие
только алгебраические функции (целые, рациональные,
иррациональные). В частности, если f (x) является полиномом.
Всякое неалгебраическое уравнение называют трансцендентным.
Трансцендентные уравнения содержат другие функции
(тригонометрические, показательные, логарифмические и др.).
Для алгебраических уравнений, степень которых выше четырех,
не существует формул, которые выражали бы величины корней через
коэффициенты уравнений. Сравнительно редко удается найти точное
значение корней и трансцендентных уравнений. То есть, если
алгебраическое или трансцендентное уравнение достаточно сложно, то
его корни сравнительно редко удается найти точно. Кроме того,
уравнение может содержать коэффициенты, известные лишь
приблизительно, и, следовательно, задача о точном определении корней
теряет смысл. В общем случае можно говорить лишь о приближенном
вычислении корней данного уравнения. Поэтому важное значение
приобретают методы приближенного нахождения корней уравнения и
оценки точности, найденных корней.
Пусть дано уравнение
f (x)  0 , (2.1)
где функция f (x) определена и непрерывна на некотором интервале
 a, b  . Напомним, что всякое значение х 0 , обращающее функцию f (x)
в ноль, то есть значение х 0 , для которого справедливо равенство
f (x 0 )  0 , называют корнем уравнения или нулем функции f (x) .
Рассмотрим задачу приближенного нахождения нулей функции
одного переменного, иначе, задачу нахождения корней уравнения (2.1).
Будем полагать, что уравнение (2.1) имеет только изолированные
корни, то есть, что для каждого корня уравнения (2.1) существует
окрестность, не содержащая других корней данного уравнения.
Процесс вычисления корней состоит из отделения корней, то есть
установления возможно тесных промежутков [a,b] , в которых
содержится один и только один корень уравнения (2.1) и уточнения

22
приближенных корней уравнения (2.1), то есть доведение их до
заданной степени точности. Для отделения корней часто используют
теорему Больцано – Коши.
Теорема Больцано – Коши. Если непрерывная на отрезке [a,b]
функция f (x) на концах отрезка имеет противоположные знаки, то есть
f (a)f (b)  0 ,
то на интервале (a,b) она хотя бы один раз обращается в ноль.
Корень уравнения f (x)  0 будет единственным, если производная
функции f (x) существует и сохраняет знак внутри интервала (a,b) .

2.1. Метод половинного деления


Предположим, что на отрезке [a,b] существует корень и знаки
функции на концах отрезка f (a) и f (b) различны (функция f (x) меняет
знак при переходе через корень x ).
Пологая a 0  a и b0  b , вычислим значения функции в левом
конце отрезка, то есть найдем f (a 0 ) , и в середине данного отрезка
a  b0
c0  0 , найдем f (c0 ) . Сравним знаки чисел f (a 0 ) и f (c0 ) . Если
2
эти знаки различны, то корень x принадлежит интервалу. Если знаки
одинаковы, то тогда различны знаки f (c0 ) и f (b0 ) , и корень лежит в
интервале (c0 ,b0 ) . Если f (c0 )  0 , тогда корень x  c0 уже найден.
В обоих случаях смены знака корень оказывается отделѐнным на
отрезке [a 0 ,c0 ] либо [c0 ,b0 ] , длина которого ровно в два раза меньше
длины исходного отрезка [a 0 ,b0 ]  [a,b] . Обозначим данный отрезок
половинной длины через [a1 ,b1 ] (полагаем a1  a 0 , b1  c0 в случае,
когда f (a 0 ) и f (c0 ) разных знаков, и a1  c0 , b1  b0 в случае, когда
f (a 0 ) и f (c0 ) одного знака).
Далее повторим процесс для отрезка [a1 ,b1 ] : снова отыщем его
середину c1 , найдѐм значение функции f (c1 ) и сравним знак данного
числа со знаком f (a1 ) . Если знаки разные, то корень отделѐн на
[a 2 ,b2 ]  [a1 ,c1 ] , если знаки одинаковые, то на [a 2 ,b2 ]  [c1 ,b1 ] . Если же
оказывается, что f (c1 )  0 , тогда корень найден. Длина отрезка, на
котором отделѐн корень, уменьшилась ещѐ в два раза.

23
Рис. 2.1. Последовательное деление отрезка
пополам и приближение к корню x

Поступая тем же образом и далее, получаем, что после k делений


длина отрезка, на котором лежит корень, сокращается в 2k раз и
становится равной
ba
k  k ,
2
если корень не был точно определѐн на каком-то предыдущем этапе, то
есть не совпал с ci при некотором i .
Пусть  – заданная точность, с которой требуется отыскать
корень. Процесс деления отрезков следует остановить, как только
станет верным неравенство 2k   . Очевидно, что если при этом
положить в качестве корня
a  bk
ck  k ,
2
то расстояние от корня x , лежащего где-то в интервале (a k ,bk ) , до
середины этого интервала c k будет не больше  , то есть приближѐнное
равенство x  ck будет выполнено с нужной точностью.

2.2. Метод хорд (метод линейной интерполяции)


Идея метода хорд для нахождения приближенного корня
уравнения состоит в том, что по двум точкам Mi1 (x i1 ,f (x i1 )) и
Mi (x i ,f (x i )) необходимо построить прямую Mi1Mi , то есть хорду,
соединяющую две точки графика y  f (x) , и взять в качестве

24
следующего приближения x i1 абсциссу точки пересечения данной
прямой с осью Ox .
Определение. Линейной интерполяцией функции f (x) называют
такую линейную функцию l(x) , значения которой совпадают со
значениями f (x) в двух фиксированных точках, в данном случае – в
точках x i1 и x i .
Иными словами, идея метода хорд состоит в приближѐнной
замене на этом шаге функции f (x) еѐ линейной интерполяцией,
найденной по двум значениям x i1 и x i . На рисунке 2.2 представлено
построение последовательного приближения по методу хорд.

Рис. 2.2. Построение последовательного


приближения по методу хорд
Итак, очередное последовательное приближение будет зависеть от
двух предыдущих: x i1  (x i1 , x i ) . Найдѐм выражение для функции  .
Интерполяционную линейную функцию l(x) будем искать как
функцию с угловым коэффициентом, равным разностному отношению:
f (x i )  f (x i1 )
ki  ,
x i  x i1
построенному для отрезка между x i1 и x i , график которой проходит
через точку M i :
f (x i )  f (x i1 )
l(x)  f (x i )  (x  x i ) .
x i  x i1
Решая уравнение l(x)  0 , находим

25
x i1f (x i )  x i f (x i1 ) f (x i )
x i1   xi  , то есть
f (x i )  f (x i1 ) f (x i )  f (x i1 )
x i  x i1
f (x i )
x i1  x i  .
ki
Заметим, что величина k i может рассматриваться как разностное
приближение для производной f (x) в точке x i . Полученная формула –
это разностный аналог итерационной формулы метода Ньютона.
Вычисления ведут непосредственно по данной формуле при
i  1, 2, 3,..., N , начиная с двух приближений x 0 и x1 , взятых, по
возможности, поближе к корню x . При этом не предполагают, что x
лежит между x 0 и x1 (и что значения функции f в точках x 0 и x1 ,
имеют разные знаки). При этом не гарантируется, что корень попадѐт на
отрезок между x 0 и x1 на каком-либо следующем шаге, хотя это и не
исключено. В таком случае затруднительно дать оценку погрешности, с
которой x i1 приближает истинное значение корня x , и поэтому
довольствуются эмпирическим правилом: вычисления прекращают,
когда будет выполнено неравенство
f(x i1 )   ,
где  – желаемая точность нахождения корня. При этом полагают
приближѐнное значение корня равным x  x i1 .

2.3. Метод секущих


Идея метода секущих состоит в том, что выбирают любую
постоянную  0 , знак которой совпадает со знаком производной f (x) в
окрестности  и, в частности, на отрезке, соединяющем x 0 и x .
Постоянная  0 не зависит и от номера шага i . Тогда формула итераций
имеет вид:
x i1  x i  0f (x i ),
и на каждой итерации необходимо один раз вычислить значение
функции f (x) .
Выясним смысл данной формулы и смысл условия о совпадении
знаков f  и  0 . Рассмотрим прямую, проходящую через точку
1
(x 0 ,f (x 0 )) , на графике y  f (x) с угловым коэффициентом tg()  .
0
26
Уравнение данной прямой имеет вид:
1
y  f (x i )  (x  x i ) .
0
Найдѐм точку пересечения данной прямой с осью Ox из
уравнения
1
f (x i )  (x  x i )  0,
0
откуда x  x i  0f (x i )  x i1 . Следовательно, прямая пересекает ось Ox
как раз в точке следующего приближения. Тем самым, получаем
следующую геометрическую интерпретацию последовательных
приближений. Начиная с точки x 0 , через соответствующие точки
1
графика y  f (x) проводим секущие с угловым коэффициентом k 
0
того же знака, что производная f (x 0 ) .
Замечание. Значение производной вычислять не обязательно,
достаточно лишь знать, убывает функция f (x) или возрастает. Прямые,
проводимые при разных x i , имеют один и тот же угловой коэффициент
k и, следовательно, параллельны друг другу.
В качестве следующего приближения к корню берѐм точку
пересечения, построенной прямой, с осью Ox .

Рис. 2.3. Последовательные итерации метода секущих

На рисунке 2.3 представлены последовательные итерации метода


секущих. Рисунок иллюстрирует, что последовательные точки x i
приближаются к корню, оставаясь всѐ время с одной стороны от него.

27
2.4. Метод Ньютона
Рассмотрим эффективный метод решения нелинейных уравнений
– метод Ньютона. Вначале приведем некоторые наводящие
рассуждения. Пусть функция
y  F(x) , (2.2)
корень которой необходимо найти, имеет производные до 2-го порядка
в окрестности корня – точки x  . Пусть уже найдено n -е приближение к
корню (на n -ой итерации) и требуется найти  n  1 -е приближение. По
формуле Тейлора имеем:
F(x n1 )  F(x n )  F(x n )(x n1  x n )  O(x n 1  x n ) 2 .
Пренебрегаем остаточным членом порядка O(x n 1  x n )2 в правой
части формулы, будем считать, что x n 1  x* , то есть приближение
номера n  1, найдено столь точно, что F(x n 1 )  0 .
Тогда имеем приближенное равенство:
0  F(x n )  F(x n )(x n1  x n ) .
Выражая отсюда x n 1 при условии F(x n )  0 и переходя от
приближенного равенства к точному, получим:
F(x n )
x n 1  x n  , n  1,2,...
F'(x n )
Данные рассуждения не претендуют на роль строгого вывода и не
могут служить обоснованием метода Ньютона. Перейдем к
обоснованию метода Ньютона. Будем рассматривать лишь случай
поиска вещественных корней.
Предположим, что уравнение (2.2) имеет простой вещественный
корень x * , то есть
F(x* )  0 , F  x*   0.
Будем предполагать, что F(x) дважды дифференцируема в
некоторой окрестности точки x * , то есть для всех x , принадлежащих
некоторому интервалу (x*  r1;x*  r1 ) , где r1  0 , причем F(x)
непрерывна на отрезке [x*  r;x*  r] , 0  r  r1 .
Исследуем сходимость метода Ньютона
F(x n )
x n 1  x n  , n  0,1,... (2.3)
F'(x n )
Теорема 1. Пусть x * – простой вещественный корень уравнения
(2.2) и пусть F(x)  0 в окрестности точки x *

28
Or1 (x  )  x : x  x*  r .
Пусть F(x) непрерывна на отрезке [x*  r;x*  r]  Or1 (x  ) , причем
m 1 min F '(x) , M 2  max F ''(x) . (2.4)
x  x* r x  x*  r

Тогда, если x 0  Or (x ) и


M 2 x 0  x*
q  1, (2.5)
2m1
то метод Ньютона (2.3) сходится, и для погрешности справедлива
следующая оценка:
x n  x*  q 2 1 x 0  x* .
k
(2.6)
Замечания. Метод Ньютона имеет квадратичную сходимость, то
есть данный метод сходится быстрее метода простой итерации, который
имеет линейную сходимость. Однако, метод Ньютона требует задания
достаточно близкого к корню x * начального приближения,
удовлетворяющего неравенству (2.5) при соблюдении соотношений (2.4).

2.5. Применение методов решения нелинейных уравнений


Найдем корни уравнения cos x  x  0 , используя методы решения
нелинейных уравнений.
Вводим функцию в исходном уравнении F(x)  0
F(x) : cos(x)  x .
Строим график данной функции (Рис. 2.4).
1
1

0.5

F ( x)

 0.46 0.5
0 0.2 0.4 0.6 0.8
0 x 1
Рис. 2.4. График данной функции

29
График демонстрирует, что корень находится на интервале (0,1) .
Вводим концы интервала:
a : 0 b : 1.
Задаем погрешность решения уравнения:
eps : 0,000000001.
Метод половинного деления.
Вводим функцию расчета нелинейных уравнений методом
половинного деления
Bisekciya( a  b  eps)  num  0
w hile b  a  eps
ab
c
2
a  c if F ( c)  F ( a)  0
b  c if F ( c)  F ( b)  0
num  num  1
 ab
 2 
 
 num 
Вызываем данную функцию
X : Bisekciya(a,b,eps) .
Выводим, найденное при помощи метода половинного деления,
приближенное значение корня и количество итераций
 0,7390851337 
X  .
 30 
Считаем значение функции в данной точке (оно должно быть
близким к нулю)
x0 : X0
F(x0)  7,33 1010 .
На графике функции отмечаем значение корня уравнения (Рис.
2.5).

30
1
1

0.5
F ( x)
0

 0.46 0.5
0 0.2 0.4 0.6 0.8
0 x  x0 1
Рис. 2.5. Значение корня уравнения
Метод хорд.
Вводим функцию расчета нелинейных уравнений методом хорд
M_hord( a  b  eps)  num  0
w hile b  a  eps
F ( b)  a  F ( a)  b
c
F ( b)  F ( a)
a  c if F ( c)  F ( a)  0
b  c if F ( c)  F ( b)  0
num  num  1
 ab
 2 
 
 num 
Вызываем данную функцию
X : M _ hord(a,b,eps) .
Выводим найденное при помощи метода хорд приближенное
значение корня и количество итераций
 0,567 
X .
 10 
Считаем значение функции в данной точке
x0 : X0
F(x0)  5,2446980092 1010 .
31
Метод секущих. Вводим функцию расчета нелинейных уравнений
методом секущих
M_sekushih( a  b  eps)  num  0
ba
k
F ( b)  F ( a)
w hile F ( a)  eps
a  a  k  F ( a)
num  num  1
 a 
 
 num 
Вызываем данную функцию
X : M _ sekushih(a,b,eps) .
Выводим найденное при помощи метода секущих приближенное
значение корня и количество итераций
 0,739 
X .
 11 
Считаем значение функции в данной точке
x0 : X0 ;
F(x0)  3,778194424 1010 .
Метод Ньютона. Считаем производную функции F(x)
f (x) :  sin(x)  1.
Вводим функцию расчета нелинейных уравнений методом
Ньютона
M_Nuton ( a  eps)  num  0
while F ( a)  eps
F ( a)
aa
f ( a)
num  num  1
 a 
 
 num 
Вызываем данную функцию
X : M _ Nuton(a,eps) .
Выводим найденное при помощи метода Ньютона приближенное
значение корня и количество итераций
32
 0,739 
X .
 4 
Считаем значение функции в данной точке
x0 : X0 ; F(x0)  2,8472058045 1010 .

2.6. Варианты заданий к лабораторной работе №2


Задание 1. Найдите корни уравнений, представленных ниже,
используя методы решения нелинейных уравнений.
1) ex  2  x  0 ; 2) arctg(x)  2x  3  0 ;
3) tg(x)  1  x  0 ; 4) cos(x)  3x  0 ;
5) ex  1  e2x  0 ; 6) e x  x  0 ;
sin(x) 8) 2x  2  x  0 ;
7)  0,5  0 ;
x
9) ln(x)  x  2  0 ; 10) arcsin(x)  1  x  0 .
Содержание отчета
Отчет должен содержать:
− титульный лист;
− постановку задачи (согласно варианту);
− краткое описание методов расчета нелинейных уравнений;
− программную реализацию данных методов;
− выводы о проделанной работе.

Контрольные вопросы и задания


1. Какие методы решения нелинейных уравнений вам
известны? Кратко опишите каждый метод.
2. Какой из методов решения нелинейных уравнений, в вашем
случае, оказался наиболее быстрым и медленным?
3. Дайте описание метода половинного деления.
4. Запишите расчетную формулу метода хорд.
5. Запишите расчетную формулу метода секущих.
6. Запишите расчетную формулу метода Ньютона.
7. Сформулируйте теорему Больцано – Коши.
8. Решите нелинейное уравнение.
9. Запишите формулу для расчета погрешности метода
половинного деления.
10. Запишите формулу для расчета погрешности метода
Ньютона.
33
3. Прямые методы решения систем линейных
алгебраических уравнений
Методы решения систем линейных алгебраических уравнений
(СЛАУ) делят на прямые и итерационные.
При решении СЛАУ прямыми методами используют конечные
соотношения для нахождения неизвестных. Они дают решение после
выполнения заранее известного числа операций. Прямые методы
сравнительно просты и универсальны, пригодны для решения широкого
класса СЛАУ.
Вместе с тем они имеют ряд недостатков. Как правило, они
требуют хранения в памяти ЭВМ сразу всей матрицы, не всегда
учитывают структуру матрицы. Существенным недостатком прямых
методов является накапливание погрешностей в процессе решения, так
как вычисления на любом этапе используют результаты предыдущих
операций. Что особенно актуально для разреженных СЛАУ больших
размерностей, когда резко возрастает общее число операций, и для
плохо обусловленных систем, чувствительных к погрешностям.
Прямые методы теоретически позволяют за конечное число
операций найти «точное» решение системы. Однако, в условиях
вычислений на компьютерах, имеющих конечную разрядную сетку,
прямые методы позволяют найти реально лишь приближенное решение
системы, ввиду наличия погрешностей округления.
В связи с вышесказанным, прямые методы используют для систем
сравнительно небольших размерностей с плотно заполненной матрицей
и не близким к нулю определителем.
Примерами прямых методов, рассматриваемых ниже, являются
метод Гаусса и его модификации.

3.1. Метод Гаусса для решения СЛАУ


Рассмотрим систему линейных алгебраических уравнений
Ax  b , (3.1)
где x   x1 , x 2 ,..., x n  – вектор неизвестных;
T

b   b1 ,b2 ,...,bn  – вектор свободных членов;


T

A  a ij , i, j  1,2,...,n – невырожденная матрица размерами n  n .


В силу невырожденности матрицы A  det A  0  для однородной
системы уравнений с вектором правых частей b   0,0,...,0 
T
имеем
34
единственное тривиальное решение x   0,0,...,0  . Для неоднородной
T

системы имеем единственное решение x  A 1b , где A 1 – матрица,


обратная A .
Алгоритм метода исключения неизвестных был изобретен в 3 веке
до нашей эры, хотя и носит имя Гаусса. Идея алгоритма состоит в
приведении СЛАУ к эквивалентной ей системе с треугольной матрицей
(прямой ход исключения), а затем к нахождению неизвестных
последовательными подстановками (обратный ход). Данный метод
2
требует числа арифметических операций порядка n 3 . Его используют
3
для решения СЛАУ с размерностью n 10  10 . 2 4

Объединим матрицу A и вектор b в расширенную матрицу.


 a11 a12 a1n b1 
a 
a a b 
A (0)   21 22 2n 2

 
 
a n1 a n 2 a nn b n 
размерами n  (n  1) , которая содержит всю известную информацию о
системе (3.1).
Опишем вначале прямой ход, первый шаг которого состоит в
обнулении всех элементов первого столбца матрицы A(0) , кроме того,
что находится в первой строке.
Введем обозначение:
a i   a i1 ,a i2 ,...,a in ,bi  .
C матрицей A(0) можно обращаться так же, как с исходной
системой (3.1), например, осуществлять элементарные преобразования.
В качестве последних будем использовать перестановки строк,
прибавление к элементам данной строки элементов какой-либо другой
строки, умноженных на одно и то же число.
Найдем ненулевой элемент в первом столбце матрицы A(0) . Такой
элемент найдется всегда, так как, в противном случае, весь первый
столбец состоит из нулей и матрица A – вырожденная. Пусть a r1  0 ,
тогда поменяем местами строки номера r и 1. Если r  1, то,
естественно, перестановка не требуется. Затем вычтем из каждой строки
номера i, i  2,...,n первую строку, умноженную на число f i , где
a
f i  i1 .
a r1
35
В результате все элементы i -й строки изменят свои значения и
станут равными:
a ij(1)  a ij  fi  a rj , i  1,2,3,...,n; i  r, j  1,2,3,...,n;
(3.2)
bi  bi  f i  b r .
(1)

Здесь предполагаем, что хотя перестановка строк и могла


состояться, однако, нумерация элементов матрицы A(0) осталась
прежней. Введем обозначения:
a1j(1)  a1j , j  1,2,...,n.
(3.3)
b1  b1.
(1)

С учетом введенных обозначений (3.2) и (3.3) матрицу A(0)


преобразуем к матрице A (1) , представленной ниже:
a (1)11 a (1)12 a (1)1n b 1 
(1)

 (1) (1) (1) 


b 2
A (1)  
0 a 22 a 2n
. (3.4)
 
 
 0
(1)
a n2 a nn b(1) n 
(1)

Тот же алгоритм может быть применен на втором шаге к


(n  1)  n матрице, которую получают из A (1) , если убрать в ней первую
строку и первый столбец. Применение данного алгоритма j раз
приводит к матрице A( j) , представленной ниже:
 x x ... x x ... x 
0 x ... x x ... x 
 
. . ... . . ... . 
 
A ( j)  0 0 ... x x ... x 
0 0 ... 0 x ... x 
 
 . . ... . . ... . 
0 0 ... 0 x ... . 

j - столбцов
В матрице A( j) полученные нули расположены в столбцах с
номерами от 1 до j ниже диагонали. Эти нули сохраняются во время
следующих шагов алгоритма. В результате применения алгоритма n раз
систему (3.1), в конечном счете, преобразуем в систему вида:
Rx  C , (3.5)
где R – верхняя (правая) треугольная матрица, то есть
36
 r11 r12 ... r1n   x1  c1 
0 r ... r   x  c 
 22 2n   2 
   2 . (3.6)
... ... ... ...  ...  ... 
     
 0 . 0 ... rnn   x n  cn 
Значения неизвестных можно вычислить из (3.6) по формулам:
x n  cn / rnn ,
 n 
x k   ck   rkj  x j  / rk,k ,k  n  1,...,1.
(3.7)
 jk 1 
Процесс приведения системы (3.1) к треугольному виду (3.6)
называют прямым ходом метода Гаусса, а нахождение неизвестных по
формулам (3.7) называют обратным ходом метода Гаусса.
Произведем подсчет числа арифметических операций,
необходимых для решения СЛАУ методом Гаусса. Число
арифметических операций, необходимое для реализации прямого хода в
методе Гаусса для решения систем уравнений порядка n , равно:
2 3 n2 n
QI  n   . (3.8)
3 2 6
Число арифметических операций, необходимое для реализации
обратного хода в методе Гаусса для решения таких систем, равно:
QII  n(n  1)  n 2  n . (3.9)
Из формул (3.8) и (3.9) получаем оценку общего числа
арифметических операций:
2 3 7 2
Q  QI  QII  n 3  n 2  n  n 3 .
3 2 6 3
Если имеется p систем вида (3.1) с одинаковыми матрицами A и
разными правыми частями b1 , b2 , , bn , то целесообразно прямой ход
осуществлять для всех систем одновременно, для чего следует вместо
одной правой части, задаваемой вектором-столбцом, производить
операции над p правыми частями (матрицей порядка n  p ). Количество
арифметических операций, необходимое для реализации прямого
метода Гаусса с учетом (3.8) и (3.9), равно
2 3 1 2 1 2 3 n2
QIp  n  n  n  (p  1)n  n   pn 2 .
2

3 2 6 3 2
Количество арифметических операций, необходимое для
реализации p обратных ходов (для p систем) методом Гаусса, равно

37
QIIp  p  n 2  n  .
Следовательно, общее количество арифметических операций,
необходимое для реализации p систем с разными правыми частями, равно
2 3 n2 n 2
Q  QIp  QIIp  n    pn 2  pn 2  pn  n 3  2pn 2 .
3 2 6 3

3.2. Алгоритм LU-разложения


Алгоритм LU-разложения можно рассматривать как конкретную
форму метода Гаусса. Алгоритм LU-разложения используют не только
для решения СЛАУ, но и для обращения матрицы, то есть вычисления
матрицы, обратной данной.
 a11 a12 a1n 
a a 22 a 2n 
Пусть A    , найдем представление A в виде:
21

 
 
a n1 a n 2 a nn 
A  L U, (3.10)
где L и U – соответственно нижняя и верхняя треугольные матрицы
следующего вида:
 11 0 0 0   1 U12 U13 U1n 
 0 0  0 1 U 23 U 2n 
L  21 22  , U .
   
   
 n1 n2 n3 nn  0 0 0 1 
Известно, что если все угловые миноры матрицы A отличны от
нуля, то есть
a11 a12 a1n
a11 a12 a 21 a 22 a 2n
a11  0,  0, ,  0,
a 21 a 22
a n1 a n 2 a nn
то разложение вида (3.10) существует и единственно. Для того чтобы
получить расчѐтные формулы, поступим следующим образом.
Обозначим через a ij произведение i -ой строки матрицы L на j -й
столбец матрицы U , причѐм будем считать вначале, что i  j .

38
i i 1
Тогда a ij   ik u kj   ik u kj  ii u ij .
k 1 k 1
Выразим из последней формулы u ij , имеем:
i 1
a ij   ik u kj
(3.11)
u ij  k 1
.
ii
Как это принято, будем считать в формуле (3.11) и далее, что
i 1
сумма вида 
k 1
ik u kj равна нулю, если значение верхней границы
индекса суммирования меньше нижней границы.
В случае i  j , имеем:
i i 1
a ii   ik u kj   ik  u ki  ii  u ii .
k 1 k 1
Учитывая, что u ii  1, и выражая из последнего соотношения lii ,
получаем:
i 1

ii  a ii   ik u ki . (3.12)
k 1
Наконец, при i  j получаем:
j j1
a ij   ik u kj   ik  u kj  ij  u jj ,
k 1 k 1
откуда, с учетом того, что u ii  1, приходим к формуле:
j1

ij  a ij   ik u kj . (3.13)
k 1
Итак, расчетные формулы (3.11) – (3.13) получены. Для того
чтобы при их применении не использовались неизвестные (не
вычисленные) величины, необходимо выбрать соответствующий
порядок вычисления элементов матриц L и U .
Например, можно рекомендовать порядок расчета элементов
матриц L и U , схематически представленный на рисунке 3.1. На нем
цифры слева для матрицы L и сверху – для матрицы U означают, что
на первом шаге рассчитывают l11 по формуле (3.12), затем вычисляют
элемент u12 по формуле (3.11).
Далее (3 шаг) определяют элементы второй строки матрицы L в
порядке, указанном стрелкой: l 21 и l 22 (по формулам (3.13) и (3.12)
соответственно). На 4 шаге выполняют расчет элементов 3 столбца

39
матрицы U в порядке, обозначенном стрелкой: u13 ,u 23 (формулы
(3.11)) и т.д.
Рассмотрим применение метода LU-разложения для решения
СЛАУ вида:
Ax  b , где
A  LU .
Введем вспомогательный вектор y :
y  Ux . (3.14)
Тогда исходную систему можно представить следующим образом:
L  Ux  b  Ly  b . (3.15)
2 4 6 2n
1 1

L~ 3 U~ 1
5
1
2n-1
1

Рис. 3.1. Порядок расчета элементов матриц L и U


В силу формул (3.14) и (3.15) решение исходной СЛАУ сводят к
последовательному решению систем (3.15) и (3.14) соответственно с
верхней и нижней треугольной матрицами.

3.3. Метод прогонки


Метод прогонки представляет собой вариант метода Гаусса,
примененный к специальным системам линейных алгебраических
уравнений и учитывающий ленточную структуру матрицы системы.
Пусть имеем СЛАУ со специальной трехдиагональной формой
матрицы:
c0 y0  b0 y1  f 0 ,
a i yi1  ci yi  bi yi1  fi , 1  i  N  1, (3.16)
a N y N1  c N y N  f N ;
или в матричной форме: AY  F , где Y   y0 , y1 ,..., y n 
T
– вектор
неизвестных; F   f 0 ,f1 ,...,f n  – вектор правых частей; A – квадратная
T

(N  1)  (N  1) матрица:

40
 c0 b0 0 0 0 0 0 0 
 a c1 b1 0 0 0 0 0 
 1 
 0 a 2 c2 b 2 0 0 0 0 
 
A .
 0 0 0 0 a N  2 c N 2 b N 2 0 
 
 0 0 0 0 0 a N1 c N1 b N1 
 0 0 0 0 0 0 a N c N 
Системы вида (3.16) возникают при конечно-разностной
аппроксимации краевых задач математической физики, описываемых
обыкновенными дифференциальными уравнениями второго порядка с
постоянными и переменными коэффициентами, а также уравнениями в
частных производных. Ставится задача разработать экономичные
методы решения задач вида (3.16), число арифметических операций,
для которых пропорционально числу неизвестных. Таким методом для
системы (3.16) является метод прогонки. Специфика матрицы A
состоит в расположении ненулевых элементов, матрица A –
разреженная матрица, из (N  1)2 элементов которой ненулевыми
являются не более 3N  1 элементов. Это позволяет получить для
решения СЛАУ достаточно простые расчетные формулы.
Будем искать решение (3.16) в виде:
yi  i1yi1  i1 , i  N  1, N  2, ..., 0 (3.17)
с неопределенными коэффициентами i , i . Выражение yi1  i yi  i
подставим в (3.16), имеем:
 ci  a i i  yi  bi yi1  fi  a ii ,
c учетом (3.17) имеем:
 ci  a i i  i1  bi  yi1   ci  a i i  i1  a ii  fi .
Это равенство имеет место для любых y i , если
 ci  a ii  i1  bi  0 ,  ci  a ii i1  a ii  fi .
Отсюда получаем рекуррентные формулы для определения
коэффициентов i1 , i1 :
bi
i1  , i  1,2, ..., N  1; (3.18)
ci  a i  i
a  f
i1  i i i , i  1,2, ..., N  1 . (3.19)
ci  a i  i
Коэффициенты i , i , i  1,2,..., N называют прогоночными.

41
Если коэффициенты  i и i известны, а также известно y N , то,
двигаясь справа налево (от i  1 к i ), последовательно определяем все
y i . Задачу нахождения прогоночных коэффициентов i , i по формулам
(3.18), (3.19) решают слева направо (от i к i  1). Начальные значения
прогоночных коэффициентов i , i определяют следующим образом.
Полагаем в формуле (3.17) i  0 , имеем y0  1 y1  1 , из первого
уравнения (3.16) c0 y0  b0 y1  f0 , откуда находим
b f
1  0 , 1  0 . (3.20)
c0 c0
Значение y N определяем следующим образом. Полагаем в
формуле (3.17) i  N  1, имеем y N1   N y N  N , из последнего
уравнения (3.18)
– a N y N1  c N y N  f N ,
откуда, с учетом (3.19), имеем:
a  f
y N  N1  N N N . (3.21)
cN   Na N
Расчетные формулы (3.17) – (3.21) можно получить из (3.16), если
применить метод исключения Гаусса.
Прямой ход метода заключается в том, что на первом шаге из всех
уравнений системы (3.16) при помощи первого уравнения исключаем
y 0 , затем из преобразованных уравнений для i  2,..., N , при помощи
уравнения, соответствующего i  1 , исключаем y i и т.д. В результате
получим одно уравнение относительно y N . На этом прямой ход метода
прогонки заканчивается.
На обратном ходе, для i  N  1, N  2,...,0 , находим y i .
Порядок счета в методе прогонки следующий:
− исходя из значений 1 , 1 , вычисленных по формулам (3.20),
все остальные коэффициенты i , i для i  2,3,..., N  1 определяют
последовательно по формулам (3.18) и (3.19);
− исходя из значения y N , рассчитанного по формуле (3.21), все
остальные неизвестные yi , i  N  1, N  2,...,0 определяют
последовательно по формуле (3.17).
Изложенный метод называют правой прогонкой.
Аналогично выводят формулы левой прогонки:

42
ai a
i  , i  N  1, N  2,...,1;  N  N ; (3.22)
ci  bi i 1 cN
f  bi i1 f
i  i , i  N  1, N  2,...,0; N  N ; (3.23)
ci  bi i 1 cN
yi1  i1yi  i1 , i  N  1, N  2, , 0; y0  0 . (3.24)
Здесь y i находят последовательно для значений i  1,2,..., N , ход
вычислений – слева направо.
В случае, если необходимо найти только одно неизвестное,
например, y m ( 0  m  N ) или группу идущих подряд неизвестных,
целесообразно комбинировать правую и левую прогонки. При этом
получаем метод встречных прогонок.
Произведем подсчет числа арифметических действий для метода
правой прогонки. Анализ формул (3.17) – (3.21) показывает, что общее
число арифметических операций есть Q  8N  1.
Коэффициенты  i не зависят от правой части СЛАУ (3.16) и
определяются только элементами a i ,bi ,ci матрицы A . Поэтому, если
необходимо решить серию задач (3.16) с различными правыми частями,
то прогоночные коэффициенты  i вычисляют только для первой серии.
Для каждой последующей серии задач определяют только
коэффициенты i и решение y i , причем используют ранее найденные  i .
Для решения первой из серии задач необходимо провести 8N  1
операций, а на решение каждой следующей задачи необходимо
провести 5N  3 операций.
Число арифметических операций, необходимое для решения
СЛАУ (3.16) методом левой прогонки и методом встречных прогонок,
такое же, то есть Q  8N . Метод правой прогонки называют
корректным, если ci  a i i  0 , при i  1,2,..., N .
Решение y i находим по рекуррентной формуле (3.17). Эта
формула может порождать накопление ошибок округления результатов
арифметических операций.
Пусть прогоночные коэффициенты  i и i найдены точно, а при
вычислении y N допущена ошибка y N , то есть y N  y N  y N . При
вычислениях с помощью формулы (3.17) получаем
yi  i1yi1  i1 . (3.25)
Вычитая из (3.25) значение yi по формуле (3.17), имеем для
погрешности yi  yi  yi , yi  i1  yi1 , i  N  1, N  2, ..., 0 с

43
заданным y N . Отсюда ясно, что если  i по модулю больше единицы и
если N достаточно велико, то вычисленное значение y i будет
значительно отличаться от искомого решения y i . В этом случае
говорят, что алгоритм прогонки неустойчив.
Определение. Алгоритм прогонки называют устойчивым, если
i  1, i  1,2,..., N .
Условия корректности и устойчивости алгоритма правой прогонки
определяют следующей теоремой.
Теорема 2. Пусть коэффициенты системы (3.16) действительны и
удовлетворяют условиям:
b0  0 , a N  0 , c0  0 , c N  0 , a i  0 , bi  0 , i  1,2,..., N  1;
ci  a i  bi , i  1,2,..., N  1; (3.26)
c0  b 0 , c N  a N . (3.27)
Причем, хотя бы в одном из неравенств (3.26) и (3.27) выполняется
строгое неравенство, то есть матрица А имеет диагональное
преобладание. Тогда для алгоритма (3.17) – (3.21) имеют место
неравенства: ci  a i i  0 , i  1, i  1,2,..., N , то есть алгоритм метода
правой прогонки корректен и устойчив.
Условия (3.26) и (3.27) теоремы 2 обеспечивают также
корректность и устойчивость алгоритмов левой и встречных прогонок.
Эти условия сохраняются и для случая системы (3.16) с комплексными
коэффициентами a i ,bi ,ci .
Легко показать, что при выполнении условий (3.26) – (3.27)
теоремы 2 система (3.16) имеет единственное решение при любой
правой части.

3.4. Применение прямых методов решения СЛАУ


Решим систему уравнений, представленную ниже, методом Гаусса
и методом LU-разложения.
 x1  2x 2  3x 3  14,

9x1  x 2  4x 3  19,
7x  2x  5x  18.
 1 2 3

Решим систему уравнений, представленную ниже, методом


прогонки.

44
2x1  x 2  0,
 x  3x  2x  1,
 1 2 3

2x 2  5x 3  3x 4  1,
7x 3  8x 4  11.
Метод Гаусса для решения СЛАУ.
Задаем матрицу коэффициентов и столбец свободных членов
1 2 3  14 

A  9 1 4
  
B  19
   
 7  2 5   18 
Проверяем невырожденность матрицы коэффициентов
A  64 .
Определитель отличен от нуля, следовательно, матрица не
вырождена.
Вводим функцию выбора главного элемента с последующим
установлением его на главную диагональ
vibor_gl_el( A  B  i)  gl  i
max  Ai  i
for j  i  1  rows ( A)  1
if Aj  i  max
max  Aj  i
gl  j
for j  i  rows ( A)  1
buf  Ai  j
Ai  j  Agl  j
Agl  j  buf
buf  Bi
Bi  Bgl
Bgl  buf

 A
 
B

45
Вызываем функцию выбора главного элемента
C : vibor _ gl _ el(A,B,0) .

Выводим пример работы данной функции


 9 1 4  19 
C0   1 2 3  C1  14 
 7 2 5   18 
   
Вводим функцию, реализующую алгоритм прямого хода метода
Гаусса с выбором главного элемента

Gauss_pr( A  B)  for i  0  row s( A)  2


for j  i  1  row s( A)  1
C  vibor_gl_el( A  B  i)
A  C0
B  C1
Aj  i
t
Ai  i
for k  i  row s( A)  1
Aj  k  Aj  k  t  Ai  k
B j  B j  t  Bi

 A
 
B
Вызываем данную функцию
C : Gauss _ pr(A,B) .

Выводим результат работы данной функции


A1: C0 B1: C1
 9 1 4   19 
 
A1   0 2,111 2,556  , B1  11,889  .
0 3,368  10,105 
 0  

46
Вводим функцию, реализующую алгоритм обратного хода метода
Гаусса
Gauss_obr( A  B)  n  rows ( A)  1
Bn
xn 
An  n
for i  n  1  0
 n 
 Bi  Ai  j  xj 
  
 j  i 1 
xi 
Ai  i
x

Вызываем данную функцию


x : Gauss _ obr(A1,B1) .

Выводим решение СЛАУ и делаем проверку


1  1 
x   2  , A 1  B   2  .
3 3
   

Метод LU-разложения для решения СЛАУ.

Задаем матрицу коэффициентов и столбец свободных членов


1 2 3 14 
A :  9 1 4  , B : 19  .
 7 2 5  18 
   

Вводим функцию, реализующую алгоритм LU-разложения

47
LU ( A)  for i  0  row s( A)  1
li  0  Ai 0
A0  i
u0  i 
l0  0
for j  1  row s( A)  1
for i  j  row s( A)  1
j1
li j  Ai  j 
 li  k  uk  j
k0
j1
Aj  i 
 lj  k  uk  i
k0
uj  i 
lj  j

l
 
u

Вызываем данную функцию


rez : LU(A) .

Выводим матрицы L и U
L : rez0 , U : rez1 ,
1 0 0  1 2 3 
L   9 19 0  , U   0 1 1,211 .
 7 16 3,368  0 0 1 
  

Делаем проверку
1 2 3
L  U   9 1 4  .
 7 2 5 
 
Вводим функцию, реализующую алгоритм обратного хода метода
Гаусса с нижнетреугольной матрицей L

48
B0
L_obr( L  B)  y0 
L0  0
for i  1  row s( L)  1
 i1 
 Bi  Li j  y j
  
 j  0 
yi 
Li i
y

Вызываем данную функцию


y : L _ obr(L,B) .

Выводим результат работы функции


 14 
y   5,632  .
 3 
 
Вводим функцию, реализующую алгоритм обратного хода метода
Гаусса с верхнетреугольной матрицей U :
U_obr ( U  y)  n  rows ( A)  1
xn  yn
for i  n  1  0
n
xi  yi 
 Ui  j  x j
j  i 1
x

Вызываем данную функцию


x : U _ obr(U, y) .

Выводим решение СЛАУ и проводим проверку


1  1 
x   2  , A 1  B   2  .
3 3
   
49
Метод прогонки для решения СЛАУ.
Задаем диагонали матрицы коэффициентов и столбец свободных
членов
 2  0
1  1  3  1 
   
a :  2  , b :  2  , c :   , f :   .
7 3 5  1 
       
8   11 
Вводим функцию, реализующую алгоритм прогонки
progonka( a  b  c  f)  n  rows ( f)  1
b0
0 
c0
f0
0 
c0
for i  1  n  1
bi
i 
ci   i1  ai1

ai1   i1  fi
i 
ci   i1  ai1

an1   n1  fn
yn 
cn   n1  an1
for i  n  1  0
yi   i  yi 1   i
y

Выводим результат работы функции


1 
 2
progonka(a,b,c,f )    .
3
 
 4
50
3.5. Варианты заданий к лабораторной работе №3
Задание 1. Решите системы уравнений, представленные ниже,
методом Гаусса и методом LU -разложения.

2x1  3x 2  x 3  6,  x1  2x 2  x 3  5,


 
1)  x1  2x 2  x 3  5, 2) 3x1  4x 2  2x 3  0,
 x  6x  3x  1. 2x  5x  x  7.
 1 2 3  1 2 3

4x1  2x 2  x 3  1, 2x1  x 2  3x 3  11,


 
3) 3x1  x 2  x 3  1, 4)  x1  3x 2  6,
 x  4x  5x  8. 3x  5x  x  3.
 1 2 3  1 2 3

2x1  x 2  x 3  10, 4x1  x 2  3x 3  5,


 
5) 3x1  2x 2  x 3  14, 6)  x1  2x 2  4x 3  0,
 x  3x  2x  6. 3x  3x  5x  11.
 1 2 3  1 2 3

5x1  2x 2  x 3  10,  x1  3x 2  x 3  2,
 
7) 4x1  3x 2  2x 3  7, 8) 5x1  2x 3  18,
 x  6x  5x  2. 3x  x  6x  7.
 1 2 3  1 2 3

2x1  2x 2  5x 3  12, 5x1  4x 2  x 3  5,


 
9)  x1  3x 2  7x 3  2, 10) 3x1  6x 2  2x 3  5,
 x  5x  x  6. 2x  3x  4x  21.
 1 2 3  1 2 3

Задание 2. Решите системы уравнений, представленные ниже,


методом прогонки.

4x1  2x 2  6, 2x1  x 2  3,
 x  5x  2x  10, 2x  5x  3x  6,
 1 2 3  1 2 3
1)  2) 
3x 2  4x 3  x 4  10,  x 2  6x 3  4x 4  3,
2x 3  7x 4  3. 3x 3  4x 4  1.

51
 x1  x 2  3,  x1  x 2  0,
2x  3x  x  7, 2x  5x  2x  4,
 1 2 3  1 2 3
3)  4) 
 x 2  4x 3  2x 4  3,  x 2  4x 3  3x 4  1,
 x 3  2x 4  2. 3x 3  4x 4  1.

 x1  x 2  3, 4x1  3x 2  5,
 x  3x  2x  11,  x  5x  2x  5,
 1 2 3  1 2 3
5)  6) 
 x 2  4x 3  3x 4  8, 2x 2  6x 3  x 4  10,
2x 3  3x 4  3. 3x 3  7x 4  17.

3x1  x 2  1,  x1  x 2  1,
 x  4x  2x  6, 2x  3x  x  3,
 1 2 3  1 2 3
7)  8) 
 x 2  3x 3  x 4  2, 2x 2  3x 3  x 4  1,
 x 3  4x 4  1.  x 3  2x 4  5.

5x1  4x 2  11, 3x1  2x 2  5,


3x  4x  x  10, 3x  4x  x  4,
 1 2 3  1 2 3
9)  10) 
4x 2  11x 3  6x 4  5, 4x 2  11x 3  6x 4  13,
7x 3  8x 4  5.  x 3  2x 4  1.

Содержание отчета
Отчет должен содержать:
− титульный лист;
− постановку задачи (согласно варианту);
− краткое описание прямых методов расчета СЛАУ;
− программную реализацию данных методов;
− выводы о проделанной работе.

Контрольные вопросы и задания


1. Какие методы решения СЛАУ вам известны? Кратко
опишите каждый метод.
2. Каково условие применимости метода Гаусса для решения
СЛАУ?
3. Каково условие применимости метода LU-разложения?

52
4. Какой из алгоритмов: прямой или обратный ход метода
Гаусса наиболее трудоемкий с точки зрения количества
арифметических операций?
5. Получите оценки числа арифметических операций для
решения СЛАУ методом Гаусса.
6. Получите оценки числа арифметических операций для
решения СЛАУ методом LU-разложения.
7. Сформулируйте условие применимости метода прогонки.
8. Получите оценки числа арифметических операций для
метода прогонки.
9*. В каком случае метод LU-разложения требует меньшего
количества арифметических операций для решения СЛАУ, чем метод
Гаусса?
10*. Как изменяется условие применимости метода Гаусса для
решения СЛАУ, если не используется алгоритм выбора главного
элемента?

53
4. Итерационные методы решения СЛАУ
Напомним, что методы решения систем линейных алгебраических
уравнений (СЛАУ) делят на прямые и итерационные.
Итерационные методы называют методами последовательных
приближений, так как при решении СЛАУ итерационными методами
задают некоторое приближенное решение (начальное приближение),
после чего с помощью некоторого алгоритма проводят один цикл
вычислений, называемый итерацией. В результате итерации находят
новое приближение. Итерации проводят до получения решения с
необходимой степенью точности.
Алгоритмы решения СЛАУ с использованием итерационных
методов более сложны по сравнению с прямыми методами, объем
вычислений заранее определить сложнее. Тем не менее, итерационные
методы в ряде случаев весьма эффективны. Погрешности
окончательных результатов не накапливаются, так как точность
вычислений в каждой итерации определяют исходя из результатов
предыдущей итерации и не так значительно зависит от ранее
выполненных вычислений. Итерационные методы результативны в
случаях СЛАУ больших размерностей, а также для плохо
обусловленных систем.
Итерационный метод позволяет найти последовательность
 
приближений x (n) , сходящуюся к точному решению при n   , то
есть lim x (n)  x . Поскольку бесконечные процессы нереализуемы на
n 
практике, то обычно выполняют конечное число итераций, то есть
строят конечное множество векторов x (1) , x (2) ,..., x (k) , причем, задавая
некоторое малое число  > 0 (погрешностью решения), добиваются,
чтобы x (k)  x   , где  – некоторая норма вектора.

4.1. Итерационные методы Якоби и Зейделя


Рассмотрим простейшие итерационные методы решения СЛАУ –
методы Якоби (простой итерации) и Зейделя. Рассмотрим систему
Ax  f , (4.1)
где A  (a ij )i, j1 – матрица, имеющая обратную матрицу,
n
(4.2)
x   x1 , x 2 ,..., x n  , f   f1 ,f 2 ,...,f n  – соответственно векторы-столбцы
T T

неизвестных и правых частей.

54
Решим систему (4.1) методом Якоби. Будем считать, что все
a ii  0 , i  1,2,...,n , где a ii – элементы матрицы А, лежащие на главной
диагонали. Преобразуем систему (4.1) к виду:
1  i1 n  f
x i     a ij x j   a ij x j   i , i  1,2,...,n. (4.3)
a ii  j1 ji 1  ii
a
В равенстве (4.3) значение суммы считаем, как это принято,
равным нулю, если значение верхнего предела суммирования меньше
значения нижнего предела суммирования.
Далее верхний индекс будет указывать номер итерации
(приближения), например,
x k  (x1k , x 2k ,..., x nk )T .
Зададим произвольным образом начальное приближение номера
k  0 , например, так
f
x i0  0, или x i0  i , i  1,2,...,n.
a ii
Исходя из равенства (4.3), итерационное равенство (формулу)
метода Якоби представим в виде:
1  i1 n  f
x i     a ij x j   a ij x kj   i , k  0,1,2,...
k 1 k
(4.4)
a ii  j1 ji 1  iia
Окончание итераций определяют одним из способов:
1) по числу итераций, заданному заранее (максимальному числу
итераций);
2) по величине, так называемой, стабилизации:
max x ik 1  x ik   , где   0 – заданное число, близкое к нулю;
1in

3) по убыванию нормы вектора невязки r k на k -й итерации, где


r k  f  Ax k , (4.5)
в заданное число раз меньше по сравнению с нормой вектора начальной
невязки r 0 , то есть при выполнении неравенства:
rk
 , где   0,   106  102.
r0
Напомним, что в качестве нормы вектора r k можно взять
n n n
величины: r k
 max fi   a ij x j или r k
  fi   a ij x kj ,
c i 1
j1 i 1 j1

k  0, 1, 2, ...
55
С вычислительной точки зрения третий способ хотя и более
громоздкий по сравнению с первым и вторым способами, однако, он
дает наиболее объективную информацию о погрешности полученного
решения.
Идея метода Зейделя состоит в том, чтобы найденные значения
x1 , x k21 , ..., x ik11 использовать для вычисления x ik 1 , усовершенствовав
k 1

формулу (4.4) следующим образом:


1  i1 n  f
x i     a ij x j   a ij x kj   i .
k 1 k 1
(4.6)
a ii  j1 ji 1  ii
a

4.2. Каноническая форма итерационных методов


Для исследования сходимости итерационных методов, то есть
установления справедливости равенства lim x n  x  0, где x – точное
n 
решение системы (2.1), удобнее записывать указанные методы в
матричной, а не в координатной форме.
Представим матрицу A в виде суммы трех матриц:
A  A  D  A , где

 0 0 0 ... 0 
a ... 0 
 21 0 0
A    a 31 0 0 ... 0  – строго нижняя треугольная часть
 
 ... ... ... ... ... 
a ... 0 
 n1 a n 2 a n3
матрицы А ,

 0 a12 a13 ... a1n 


0 0 a 23 ... a 2n 

A 0 0

0 ... a 3n  – строго верхняя треугольная часть
 
 ... ... ... ... ... 
0 0 0 ... 0 

матрицы А ,

56
 a11 0 0 0 
 0 a 0 0 
 22 
D 0 0 a 33 0  –д
 
 
 0 a nn 
 0 0
диагональная часть матрицы А.
Очевидно, метод Якоби, с использованием введенных
обозначений в векторной форме, принимает вид:
x k1  D1  A  A  x k  D1f ,
где D1 – матрица, обратная к матрице D :
D1  D  Е,
Е  единичная матрица.
 1 
а 0 0 0 
 11

 1 
 0 0 0 
а 22
 
1
D  1 .
 0 0
а
0 
 33 
 
 
 0 1 
 0 0
 а nn 
Метод Якоби представим следующим образом:
D  x k1  x k   Ax k  f . (4.7)
Аналогичным образом из соотношений (4.6) можно получить
представление метода Зейделя в векторной форме:
  
D  A x k1  x k  Ax k  f . (4.8)
Далее мы увидим, что векторные равенства (4.7) и (4.8) являются
частными случаями, так называемой, канонической формы
одношаговых (двухслойных) итерационных схем вида:
x k 1  x k
B  Ax k  f , (4.9)
k 1

57
где B – квадратная невырожденная матрица размера n  n , ее называют
стабилизатором, k 1 – число, называют итерационным параметром.
Напомним, что матрицу A называют положительно
определенной, если скалярное произведение  Ax, x   0 для всех
ненулевых векторов x , или, что то же самое, x T Ax  0 .
Сформулируем теорему, принадлежащую А.А. Самарскому.
Теорема 3. Пусть A – симметричная положительно определенная
матрица, k 1    0 , и пусть выполнено неравенство для любого
ненулевого вектора x из n -мерного пространства:
 B  0,5A  x, x   0 .
Тогда итерационный метод (4.9) сходится, то есть
lim x k  x  0.
k 
Покажем, как использовать данную теорему для доказательства
сходимости, например, метода Зейделя.
Сравнивая (4.8) и (4.9), приходим к равенствам:
B  D  A ,   1.
Таким образом, если A  AT и A – положительно определенная
матрица, то при условии выполнения неравенства B  0,5A  0 , что
является краткой формой записи неравенства относительно скалярных
произведений:
 B  0,5A  x, x   0 , x  R n ,
метод Зейделя сходится.
Заметим, что

B  0,5A  B  0,5A  D  A   0,5 A   D  A   
 
(4.10)
 0,5D  0,5 A   A  .
Нетрудно проверить, что для любого n -мерного вектора
x (x  R n ) справедливо:
 A 

 A   x, x  0 . (4.11)
C другой стороны, из неравенства  Ax, x   0 , x  R n вытекает
неравенство
(Dx, x)  0 . (4.12)
В самом деле, выберем x   0,...,0, i ,0,...,0  , где i  0 . Тогда

58
 0 
 
 a 1i  i 0 
 a 21 i 
(Ax, x)   ,   a ii  i  0, следовательно, а ii  0.
2

 i 
 a ni i 
 
 0 
Поскольку i – любое, то все a ii  0 , i  1,2,...,n . Значит,
справедливо неравенство (4.12). В силу (4.11) и (4.12) из (4.10) имеем:
B  0,5A  0 .

4.3. Вариационно-итерационные методы решения СЛАУ


Преимущество вариационно-итерационных методов решения
СЛАУ в том, что они не используют никакой дополнительной
информации об операторе A , то есть 1 и  2 , входящие в оценку
1E  A   2 E и необходимые для выбора 0 , здесь не требуются.
Рассмотрим метод минимальных невязок.
х k 1  x k
 Ax k  f , k  0,1,... (4.13)
k 1
Для r k  f  Ax k получим равенство, умножив обе части равенства
(4.13) на матрицу A :
Aх k 1  Ax k
 AAx k  Af .
k 1
Меняя знаки и группируя слагаемые соответствующим образом,
получаем:
(Aх k 1  f )  (Ax k  f )
 A(Ax k  f )  Af  Af или
k 1
r k 1  r k
 Ar k  0.
k 1
Параметр k 1 будем выбирать из условия минимума невязки r k 1
по норме:
r k1  r k  k1Ar k .
2 2
(k1 )  r k 1  r k  k1Ar k  ((r k  k1Ar k ),(r k  k1Ar k )) 

59
2 2
 rk  2k 1 (Ar k ,r k )  (k 1 ) 2 Ar k .
Дифференцируя   k 1  по k 1 , получим:
2  Ar k ,r k   2k 1 Ar k
2
 0,

k 1 
 Ar ,r    Ar ,r  .
k k k k

 Ar ,Ar 
k 2 k k (4.14)
Ar
Метод скорейшего спуска получают из условия минимума
энергетической нормы погрешности z k 1  (Az k 1 ,z k 1 ), где
A
k 1
z  z  x, k

x – точное решение исходной системы. Поскольку


Azk  Ax k  Ax  r k , и учитывая, что
z k 1  z k
 Az k  0 или z k 1  z k  k 1Az k , получим
k 1
k 1 2 k 1 k 1
z  (Az ,z )  (Az k  k1A 2 z k ,z k  k 1Az k ) 
A

 (r  k1Ar k ,z k  k1r k )  (r k,z k )  2k1 (r k,r k )   2k1(Ar k,r k )  (k1 ).


k

2
Дифференцируя z k 1 по k 1 , получим
A

  k1   2  rk ,rk   2k 1  Ar k ,r k  , откуда


(r k ,r k )
k 1  . (4.15)
(Ar k ,r k )

4.4. Применение итерационные методов решения СЛАУ


Решим систему уравнений, представленную ниже, методом Якоби,
Зейделя, наименьших невязок и методом скорейшего спуска.
4x1  x 2  2x 3  8,

 x1  5x 2  3x 3  0,
2x  3x  7x  17.
 1 2 3
Зададим матрицу коэффициентов и столбец свободных членов:
 4 1 2  8 
A :  1 5 3  , f   0  .
 2 3 7   17 
   
Вводим начальное приближение решения
60
0
x :  0  .
0
 
Устанавливаем значение погрешности расчета
eps : 0,000001.
Метод Якоби для решения СЛАУ.
Вводим функцию, реализующую алгоритм метода Якоби:

Yakobi( A  f  x  eps)  n  row s( A)  1


num  0
w hile A  x  f  eps
 n 
 A0  j  xj 
f0 
  
j  1 
y0 
A0  0
for i  1  n  1
 i1 n 
 Ai  j  xj 
fi 
  Ai  j  xj 
 
j  0 j  i 1 
yi 
Ai  i

 n1 
 An  j  xj 
fn 
  
j  0 
yn 
An  n
x y
num  num  1
 x 
 
 num 

Вызываем данную функцию


rez : Yakobi  A,f , x,eps  .
Выводим решение СЛАУ и количество итераций
X : rez 0 , num : rez1

61
1 
X   2  , num  58 .
3
 
Выводим значение вектора невязки
 3,751 107 
 
f  A  x   4,913  107  .
 6,421 107 
 

Метод Зейделя для решения СЛАУ.


Вводим функцию, реализующую алгоритм метода Зейделя:
Zejdel ( A  f  x  eps)  n  row s( A)  1
num  0
w hile A  x  f  eps
 n 
 A0  j  xj
f0 
  
j  1 
x0 
A0  0
for i  1  n  1
 i1 n 
 Ai j  xj 
fi 
  Ai j  xj 
 
 j  0 j  i 1 
xi 
Ai i

 n1 
 An  j  xj
fn 
  
 j  0 
xn 
An  n
num  num  1
 x 
 
 num 
Вызываем данную функцию
rez : Zejdel(A,f , x,eps) .
Выводим решение СЛАУ и количество итераций

62
X : rez 0 , num : rez1
1 
X   2  , num  12 .
3
 
Выводим значение вектора невязки
 3,128  107 
 
f  A  x   5,52  107  .
 0 
 

Метод минимальных невязок для решения СЛАУ.


Вводим функцию, реализующую алгоритм метода минимальных
невязок
MMN ( A  f  x  eps)  num  0
n  row s( A)  1
r  f  A x
w hile r  eps
( A  r)  r

( A  r)  ( A  r)
x xr
r  f  A x
num  num  1
 x 
 
 num 
Вызываем данную функцию
rez : MMN(A,f , x,eps) .
Выводим решение СЛАУ и количество итераций
X : rez 0 , num : rez1
1 
X   2  , num  21 .
3
 
Выводим значение вектора невязки

63
 2,662  107 
 
f  A  x   3,337  107  .
 2,25  107 
 

Метод скорейшего спуска для решения СЛАУ.


Вводим функцию, реализующую алгоритм метода скорейшего
спуска
MSS( A  f  x  eps)  num  0
n  row s( A)  1
r  f  A x
w hile r  eps
rr

( A  r)  r
x xr
r  f  A x
num  num  1
 x 
 
 num 
Вызываем данную функцию
rez : MSS(A,f , x,eps) .
Выводим решение СЛАУ и количество итераций
X : rez 0 , num : rez1
1 
X   2  , num  27 .
3
 
Выводим значение вектора невязки
 5,791 107 
 
f  A  x   7,621 107  .
 1,073  107 
 

64
4.5. Варианты заданий к лабораторной работе №4
Задание 1. Решите системы уравнений, представленных ниже,
итерационными методами, рассмотренными в данной главе.
6x1  3x 2  x 3  6, 5x1  2x 2  x 3  5,
 
1) 3x1  5x 2  x 3  5, 2) 2x1  6x 2  2x 3  0,
 x  x  3x  1.  x  2x  7x  7.
 1 2 3  1 2 3

4x1  2x 2  x 3  1, 5x1  x 2  3x 3  11,


 
3) 2x1  5x 2  x 3  1, 4)  x1  3x 2  x 3  6,
 x  x  3x  8. 3x  x  7x  3.
 1 2 3  1 2 3

2x1  x 2  x 3  10, 4x1  x 2  3x 3  5,


 
5)  x1  3x 2  x 3  14, 6)  x1  6x 2  4x 3  0,
 x  x  2x  6. 3x  4x  8x  11.
 1 2 3  1 2 3

5x1  2x 2  x 3  10, 7x1  3x 2  x 3  2,


 
7) 2x1  4x 2  2x 3  7, 8) 2x1  8x 2  2x 3  18,
 x  2x  5x  2.  x  2x  6x  7.
 1 2 3  1 2 3

9x1  2x 2  5x 3  12, 5x1  4x 2  x 3  5,


 
9) 2x1  10x 2  7x 3  2, 10) 4x1  6x 2  2x 3  5,
5x  7x  12x  6.  x  2x  4x  21.
 1 2 3  1 2 3
Содержание отчета
Отчет должен содержать:
− титульный лист;
− постановку задачи (согласно варианту);
− краткое описание итерационных методов расчета СЛАУ;
− программную реализацию данных методов;
− выводы о проделанной работе.

Контрольные вопросы и задания


1. Какие методы решения СЛАУ вам известны? Кратко
опишите каждый метод.
2. Запишите каноническую форму одношаговых (двухслойных)
65
итерационных схем.
3. От чего зависит скорость сходимости итерационных
методов?
4. Какие преимущества у вариационно-итерационных методов?
5. Каким образом определяют окончание итераций?
6. Запишите метод Якоби в векторной форме.
7. Запишите метод Зейделя в векторной форме.
8. Запишите формулу расчета итерационного параметра
согласно методу скорейшего спуска.
9*. Сформулируйте условие применимости метода минимальных
невязок.
10*. Сформулируйте условие применимости метода скорейшего
спуска.

66
5. Методы решения задачи Коши
Математическое моделирование многих задач механики, физики,
химии и других областей науки приводит к обыкновенным
дифференциальным уравнениям (ОДУ), или к дифференциальным
уравнениям в частных производных. Выделяют три метода решения
обыкновенных дифференциальных уравнений: точные, приближенные
и численные.
Точные методы предусматривают получение решения в виде
комбинации элементарных функций или в виде квадратур от последних.
Возможности точных методов весьма ограничены.
Приближенные методы сводятся к построению
последовательности функций w n (x) , имеющих пределом искомую
функцию v(x) . Обрывая эту последовательность на каком-то k ,
получают приближенное решение.
Наиболее универсальными методами решения являются
численные. К основному недостатку численных методов относят
возможность получения только частного решения в виде сеточной
функции. Несмотря на этот недостаток, методы применимы к очень
широкому классу задач, поэтому при современном уровне развития
вычислительной техники численные методы стали одним из основных
методов решения практических задач, математические модели которых
описывают дифференциальными уравнениями.
Следует отметить, что успех от применения численного метода
зависит и от обусловленности задачи, то есть задача должна быть
хорошо обусловлена, а именно, малые изменения начальных условий
должны приводить к малому изменению решения. В противном случае
(слабой устойчивости) малые погрешности в начальных данных или
погрешности численного метода могут приводить к большим
погрешностям в решении.
Рассмотрим задачу Коши для системы обыкновенных
дифференциальных уравнений:
du
=f(t, u) , (5.1)
dt
где u – искомая вектор-функция; t – независимая переменная;
u(t)=  u1 (t), ..., u n (t)  ; f(t) = (f 1,..., f n) , n – порядок системы; u1 (t),...,u n (t)
– координаты; t  0; u(0) = u0 .
Представим систему (6.1) в развернутом виде:

67
dui
=f i(t, u1,..., u n ) , (5.2)
dt
где i = 1,...,n ; u i (0) = u i0 .
В случае i=1 – это будет ОДУ 1-го порядка, при i=2 – система из
двух уравнений первого порядка. В случае i=1 решение задачи Коши
предполагает нахождение интегральной кривой, проходящей через
заданную точку и удовлетворяющую заданному начальному условию.
Задача состоит в том, чтобы найти искомую вектор-функцию u,
удовлетворяющую (5.1) и заданным начальным условиям.
Известны условия, гарантирующие существование и
единственность решения (5.1) или (5.2).
Предположим, что функции f i ( i = 1,...,n ) непрерывны по всем
аргументам в некоторой замкнутой области D={t  a, u i  u 0i  b }, где a, b
– известные константы.
Из непрерывности функций следует их ограниченность, то есть
функции f i сверху ограничены некоторой константой М: | f i |<M (где
М  0) всюду в области D и пусть в D функции f i удовлетворяют
условию Липшица по аргументам u1 ,...,u n . Это значит, что
| f i(t,u1 ,...,un )  f i(t,u1,...,un ) | L(| u1  u1 | +....+ | un  un |).
для любых двух точек (t,u1 ,...,un ) и (t,u1,...,un ) из области D. Тогда
существует единственное решение задачи (5.1)
u1 = u1 (t),... ,u n = u n (t) ,
определенное при t  T = min a, b/ M (5.3)
и принимающее при t=0 заданное начальное значение.
Для решения задачи (5.1) существует два класса методов
одношаговые и многошаговые методы. Ниже рассмотрены
одношаговые методы.
5.1. Метод Эйлера
Пусть требуется решить задачу Коши: найти функцию u(t) ,
непрерывную при 0  t  T, удовлетворяющую при t 0
дифференциальному уравнению и начальному условию при t  0 :
du
 f  t, u  , 0  t  T , u  0   u 0 (5.4)
dt
Решение задачи (5.4) существует и единственно, если функции f и
df
непрерывны в области D , содержащей точку M0  t 0 ,u 0  .
du
68
Ставится задача нахождения приближенных значений функции
u(t) – y0 , y1 ,..., yn в точках t 0 , t1 ,..., t n соответственно отрезка  0,T  .
Совокупность точек   {t i  i,i  0,n} называют сеткой; точки t i –
узлами сетки, i  t i  t i1 – шагом сетки.
Одним из простейших методов численного решения задачи Коши
(5.4) является метод Эйлера, основанный на использовании разностной
схемы Эйлера:
yi1  yi
 f (t i , yi ) , i  0,1,...,n , y0  u 0 . (5.5)

Разностную схему (5.5) называют явной, так как значения
y  t i   yi находят последовательно, начиная с y0  u 0 по явной
формуле:
yi1  yi  f (t i , yi ) , i  0,1,...,n , y0  u 0 .
В результате получаем приближенные значения функции u(t) в
узлах t i сетки  , то есть сеточную функцию y(t i )  yi , i  0,1,...,n .
Оценим величину аппроксимации разностной схемой Эйлера (5.5)
исходной задачи (5.7). Сеточную функцию
zi  yi  u(t i ) (5.6)
называют погрешностью разностной схемы.
Подставляя yi  zi  u(t i ) из (5.6) в уравнение (5.5), имеем:
zi1  zi
 Li zi  i , i  0,1,...,n, z 0  0 , где
 (5.7)

Li  f (t i ,u i  zi ) , 0    1.
u  ui
Невязку i  f (t i ,u i )  i1 , которую имеет разностная схема

(5.5) на решении задачи (5.4), называют погрешностью аппроксимации
разностной схемы (5.5).
Оценим величину  i . Разлагая по формуле Тейлора функцию
u(t i1 ) в окрестности точки t i , имеем:
2
u i1  u i  u(t i )  u(t i )  0(3 ) .
2
Учитывая, что u(t i )  f (t i ,u i ) , имеем i  O() или
i c  max i  0    .
0in
Таким образом, разностная схема (5.5) имеет первый порядок

69
аппроксимации.
Докажем сходимость разностной схемы Эйлера (5.5), то есть
докажем что zi c  yi  u i c  0 при   0 . Действительно,
определяя величину z i1 из (5.4) и оценивая ее, имеем:
n n
zi1  zi    i  z 0     s     s ,
s 0 s 0

z c  0     0 при   0.
В этом случае разностную схему (5.5) называют сходящейся и
имеющей первый порядок точности. Таким образом, метод Эйлера
достаточно прост, но обеспечивает низкую точность.

5.2. Метод Рунге – Кутта


Повышение порядка точности осуществляется путем усложнения
разностной схемы. Одним из наиболее применяемых методов высокой
точности является метод Рунге – Кутта. Рассмотренный выше метод
Эйлера можно рассматривать как простейший вариант метода Рунге –
Кутта. На практике наиболее широкое распространение получили
разностные схемы Рунге – Кутта второго и четвертого порядка
точности.
Рассмотрим метод Рунге – Кутта второго порядка точности.
Вычисления по этому методу осуществляют в два этапа. На
первом этапе по схеме Эйлера находят промежуточное значение yi
yi  y i
 f (t i , yi ) . (5.8)

На втором этапе находят значение yi1 по схеме:
yi1  yi
 (1  )f (t i , yi )  f (t i  , yi ) , (5.9)

где   0 ,   0 – параметры. Подставляя yi из (5.8) в (5.9), имеем:
yi1  yi
 (1  )f (t i , yi )  f (t i  , yi  f (t i , yi )) . (5.10)

Нетрудно проверить (используя разложение по формуле Тейлора),
что схема (5.10) имеет второй порядок аппроксимации при условии
  1/ 2 . Частные случаи разностной схемы (5.10):
1)   1 ,   1 / 2;
yi  y i yi 1  yi    . (5.11)
 f (t i , yi );  f  t i  , yi  .
/2   2 
70
Эта разностная схема носит название предиктор-корректор, или
счет-пересчет. Первая схема из (5.11) – схема Эйлера с шагом  / 2
(предиктор), вторая – схема со значением yi на полушаге (корректор).
2)   1 / 2 ,   1;
yi  y i yi 1  yi 1
 f (t i , yi );  (f (t i , y i )  f (t i 1, yi )).
  2
Рассмотрим метод Рунге – Кутта четвертого порядка точности.
Используем схему:
yi1  yi
 (k1 (yi )  2k 2 (yi )  2k 3 (yi )  k 4 (yi )) / 6,
 (5.12)
i  0,1,...,n , y 0  u 0 ,
где k1 ,k 2 ,k 3 ,k 4 – поправки, вычисляемые по формулам
k1  f (t i , yi ); k 2  f (t i   / 2, yi  k1 / 2);
(5.13)
k 3  f (t i   / 2, yi  k 2 / 2); k 4  f (t i  , yi  k 3 ).
При определении yi1 по заданному y i необходимо четыре раза
вычислять правую часть (5.12) в следующей последовательности:
k1 ,k 2 ,k 3 ,k 4 . Если предположить достаточную гладкость u(t) ,
(непрерывную дифференцируемость вплоть до производных 4-го
порядка) и разложить u i1 , k1 ,k 2 ,k 3 ,k 4 в окрестности t  t i , нетрудно
показать, что невязка   O(4 ) , то есть разностная схема (5.12), имеет
4-й порядок аппроксимации.

5.3. Применение итерационных методов решения систем


линейных алгебраических уравнений
Требуется решить задачу Коши при помощи численных методов
dy
  y  e t , 0  t  T , y  0   1.
dt
Вводим функцию f (t, y)
f (t, y) :  y  e t .
Задаем шаг, количество шагов по времени и начальное условие
 : 1, n : 10, y0 : 1.
Выводим длину расчетного временного интервала
t0 :   n
t0  10 .
Задаем точное значение решения (считается аналитически)

71
F(t) : e t (t  1)
i : 0..n
yi : F(i  ) .

Метод Эйлера для решения задачи Коши.


Вводим функцию, реализующую алгоритм метода Эйлера
Eiler ( n  y0)  y0  y0
for i  0  n  1

yi 1  yi    f i    yi 
y
Вызываем данную функцию
y1: Eiler(n, y0) .
Строим графики точного решения и приближенного,
рассчитанного методом Эйлера (Рис. 5.1).

0.8

0.6
y1i

yi
0.4

0.2

0
0 2 4 6 8 10
i
Рис. 5.1. Графики точного решения и приближенного,
рассчитанного методом Эйлера

Выводим значение погрешности


y  y1  0,279 .
Метод Рунге – Кутта второго порядка точности для решения
задачи Коши.
Вводим функцию, реализующую алгоритм метода Рунге – Кутта
второго порядка точности:

72
Ruhge_Kutt_2( n  y0)  y0  y0
for i  0  n  1

y1  yi 
2
 
 f i    yi

yi 1  yi    f ( i  0.5)    y1


y

Вызываем данную функцию


y2 : Ruhge _ Kutt _ 2(n, y0)

Строим графики точного решения и приближенного,


рассчитанного методом Рунге – Кутта второго порядка точности (Рис.
5.2).

0.8

0.6
y2i

yi
0.4

0.2

0
0 2 4 6 8 10
i
y  y2 точного
Рис. 5.2. Графики 0.146 решения и приближенного, рассчитанного
методом Рунге – Кутта второго порядка точности

Выводим значение погрешности


y  y2  0,146 .
Метод Рунге – Кутта четвертого порядка точности для
решения задачи Коши.
Вводим функцию, реализующую алгоритм метода Рунге – Кутта
четвертого порядка точности
73
Ruhge_Kutt_4( n  y0)  y0  y0
for i  0  n  1

k1  f i    yi 
  
k2  f ( i  0.5)    yi   k1
 2 
  
k3  f ( i  0.5)    yi   k2
 2 
k4  f ( i  1)    yi    k3


yi 1  yi   ( k1  2  k2  2  k3  k4)
6
y
Вызываем данную функцию
y3: Ruhge _ Kutt _ 4(n, y0) .
Строим графики точного решения и приближенного,
рассчитанного методом Рунге – Кутта четвертого порядка точности
(Рис. 5.3).

0.8

0.6
y3i

yi
0.4

0.2

0
0 2 4 6 8 10
i
Рис. 5.3. Графики
y  y3 точного решения
 5.468  10
3 и приближенного, рассчитанного
методом Рунге – Кутта четвертого порядка точности
Выводим значение погрешности
y  y3  5,468 103 .

74
5.4. Варианты заданий к лабораторной работе №5
Решите задачу Коши, используя методы Эйлера, Рунге – Кутта
второго и четвертого порядков точности.

1) y  2y  e t  cos(2t), y(0)  3 ;


2) y   y / 3  2  sin(t), y(0)  2 ;
3) y  3y  2t  sin(2t), y(0)  2 ;
4) y   y / 2  e3t  cos(t), y(0)  4 ;
5) y   y  e t  e2t , y(0)  1 ;
6) y  2y  cos(t)  e t , y(0)  3 ;
7) y   y  sin(2t)  e2t , y(0)  1;
8) y   y / 2  sin(2t)  e t , y(0)  2 ;
9) y  2y  cos(t)  sin(t), y(0)  3 ;
10) y   y  cos(2t)  sin(2t), y(0)  1.

Содержание отчета
Отчет должен содержать:
− титульный лист;
− постановку задачи (согласно варианту);
− точное решение задачи;
− краткое описание методов решения задачи Коши;
− программную реализацию данных методов;
− выводы о проделанной работе.

Контрольные вопросы и задания


1. Какие численные методы решения задачи Коши вам
известны? Кратко опишите каждый метод.
2. Запишите разностную схему решения задачи Коши на основе
метода Эйлера.
3. Запишите разностную схему решения задачи Коши на основе
метода Рунге – Кутта 2 порядка.
4. Приведите пример решения задачи Коши при помощи метода
Эйлера.
5. Приведите пример решения задачи Коши при помощи метода
Рунге – Кутта 2 порядка.
6. Какова погрешность метода Эйлера?

75
7. Определите погрешность решения задачи Коши методом
Эйлера на конкретном примере.
8. Определите погрешность решения задачи Коши методом
Рунге – Кутта 2 порядка на конкретном примере.
9. От чего зависит погрешность численного решения задачи
Коши?
10*. Приведите пример решения системы дифференциальных
уравнений.

76
6. Методы приближения функций
В задачах математического моделирования довольно часто
возникает необходимость заменить используемую в расчетах функцию
y(x) приближенной функцией (x) , по которой вычисляют значения
исходной функции и которая в определенном смысле близка к y(x) .
Интерполяция в общем понимании – это нахождение
промежуточных значений величины по некоторым известным ее
значениям. В первоначальном понимании – восстановление функции
(точное или приближенное) по известным ее значениям или значениям
ее производных в заданных точках. Задача интерполяции состоит в
построении такой функции, чтобы в узлах сетки эта интерполирующая
функция принимала заданные значения, а в других точках – по
возможности приемлемые значения.
Интерполяцию применяют во многих задачах, связанных с
вычислениями, например:
− восстановить функцию y(x) для всех значений x на отрезке
a,b , если известны ее значения в некотором конечном числе точек
этого отрезка;
− заменить функцию близким выражением, удобным для
проведения вычислений, если исходная функция представлена
выражением, трудным для вычислений;
− выполнить субтабулирование, то есть сгущение таблицы
значений;
− решить задачу обратного интерполирования, то есть по
заданной таблице yi  y(x i ) значений функции найти x как функцию от y .
В результате возникает следующая математическая задача: пусть
на отрезке  a,b  задана сетка   {x 0  a  x1  x 2  ...  x n  b}, в ее
узлах заданы значения функций y(x) , равные y(x 0 )  y0 , y(x1 )  y1 , …,
y(x i )  yi , …, y(x n )  yn . Требуется построить интерполянту, то есть
функцию (x) , совпадающую с функцией y(x) в узлах сетки
(x i )  yi , i  0,1,...,n . (6.1)
Интерполянту строят, как правило, в виде линейной комбинации
некоторых линейно независимых на отрезке  a,b  элементарных
функций
k (x),k  0,1,...,n ;

77
n
  x    c k k (x), (6.2)
k 0
где c k – неизвестные коэффициенты. Из условия (6.1) для определения
данных коэффициентов получим систему (n  1) уравнений:
n

 c  (x )  y ,
k 0
k k i i i  0, 1, ...,n. (6.3)

Система функций k (x) ,k  0, 1,...,n такова, что при любом


выборе сетки узлов  отличен от нуля определитель системы (6.3)
0  x 0  1  x 0  . . . n  x 0 
0  x1  1  x1  . . . n  x1 

. . . . . . . . . . . . .
0  x n  1  x n  . . . n  x n 
Поэтому из системы (6.3) коэффициенты c k могут быть
определены однозначно.
В качестве функции (x) в дальнейшем будем брать
алгебраический многочлен степени n , то есть (x)  Pn (x) . В этом
случае интерполяцию называют алгебраической. Алгебраическая
интерполяция является наиболее распространенной, так как
многочлены легко вычисляют, их легко дифференцировать и
интегрировать. Исторически сложилось, что наиболее важным классом
интерполирующих функций является кольцо алгебраических
полиномов. Кроме этого, существует еще одно свойство: если с –
постоянная величина, а Pn  x  – многочлен n-го порядка, то
многочленами будут с Pn  x  и Pn  x  с  тех же порядков.
В случае алгебраической интерполяции в качестве системы
линейно независимых функций k (x) обычно выбирают следующую
систему: k (x)  x k , k  0,1,...,n .
Двух различных интерполяционных полиномов одной и той же
степени n существовать не может. Действительно, предположив
обратное, приходим к выводу, что разность двух таких многочленов,
являющаяся многочленом степени не выше n , имеет (n  1) корень,
следовательно, равна тождественно нулю.

78
6.1. Интерполяционный полином Лагранжа и Ньютона
Интерполяционный полином Лагранжа.
Поставим следующую задачу: построить многочлен Pn (x) степени
n , который в (n  1) данных точках x 0 , x1 ,..., x n , называемых узлами
интерполяции, принимает данные значения y0 , y1 ,..., yn .
В данном случае речь идет о построении многочлена Pn (x)
степени n , который в определенном смысле «близок» к исходной
функции y(x) . Известно, что любая непрерывная на отрезке [a,b]
функция y(x) может быть хорошо приближена полиномом Pn (x) .
Имеет место следующий результат, гарантирующий существование
полинома, отклоняющегося от непрерывной функции не более чем на
заданную величину.
Теорема 4. Для любого   0 существует полином Pn (x) степени
n  n() , такой, что
max | y(x)  Pn (x) |  .
x[a,b]

Если в качестве базиса k (x) взять базис, состоящий из


функций 1, x, x 2 ,..., x n , то интерполяционный полином имеет вид
n
Pn (x)   c k x k . (6.4)
k 0
Используя условия интерполяции (6.1), имеем для определения
коэффициентов c k систему уравнений:
c0  c1x 0  ...  c n x 0n  y0 ,

c0  c1x1  ...  c n x1  y1 ,
n


 ...
c  c x  ...  c x n  y .
 0 1 n n n n
Определителем данной системы является отличный от нуля
определитель Вандермонда:
1 x 0 x 02 ... x 0n
1 x1 x12 ... x1n
  0.
... ... ... ... ...
1 x n x n2 ... x nn
Отсюда следует единственность представления (6.4).

79
Более удобным для вычислений является базис полиномов
Лагранжа lk (x) степени n относительно x , удовлетворяющий
следующим условиям:
0, если i  k;
 x   
1, если i  k.
k i

Искомый многочлен запишем согласно представлению (6.2) в виде:


n
Pn (x)  y0 0 (x)  y1 1 (x)  ...  y n n (x)   y k k (x). (6.5)
k 0
Поскольку x 0 , x1 ,..., x k 1 , x k 1 ,..., x n – нули многочлена lk (x) , а
также, учитывая, что lk (x k )  1, имеем:
(x  x 0 )(x  x1 )...(x  x k 1 )(x  x k 1 )...(x  x n )
k (x)  , (6.6)
(x k  x 0 )(x k  x1 )...(x k  x k 1 )(x k  x k 1 )...(x k  x n )
i  0,1,...,n .
Формула (6.5) с учетом (6.6) примет вид:
n
(x  x 0 )(x  x1 )...(x  x k1 )(x  x k 1 )...(x  x n )
Pn (x)   yk , (6.7)
k 0 (x k  x 0 )(x k  x 1 )...(x k  x k 1 )(x k  x k 1 )...(x k  x n )
или
n n
x  xi
Pn (x)   y k  . (6.8)
k 0 i 0 x k  x i
ik

Многочлен, определенный формулой (6.7), называют


интерполяционным полиномом Лагранжа, элементы базиса lk (x) из
формулы (6.6) – коэффициентами Лагранжа.
Формулу (6.7) можно записать в более компактной форме, если
ввести обозначение
(x)   x  x 0  x  x1 ... x  x n  .
Так как
(x k )   x k  x 0  x k  x1 ... x k  x k 1  x k  x k 1 ...  x k  x n  , то
(x)
lk (x)  .
 x  x k  (x k )
Тогда
n
Pn (x)  (x) y k / ((x  x k )(x k )) . (6.9)
k 0
Итак, в результате интерполирования функции мы заменили
данную функцию полиномом (6.9), совпадающим с ней в узлах

80
интерполяции x 0 , x1 , ..., x n . В остальных точках отрезка [a,b] разность
R(x)  y  Pn (x) называют остаточным членом интерполяции,
представляющим погрешность метода, определяемую следующей
теоремой.
Теорема 5. Если функция y(x) имеет на отрезке [a,b]
непрерывные производные до (n  1) -го порядка включительно, то
остаточный член интерполяции R(x) определяют по формуле:
y(n 1) ()(x)
R(x)  , a    b.
 n  1!
Число арифметических операций для вычисления значений
функции y(x) по формуле (6.7) равно Q  4n(n  1)  4n 2 .
Рассмотрим случай равноотстоящих узлов интерполяции, то есть
когда x i  x i1  h , i  1, 2,..., n . Сделав замену x  x 0  ht , имеем при
t 0  0, t1  1, ..., t n  n :
x  x k  h(t  k) ,
(x)  h n1t(t  1)...(t  n) , (x k )  (1) nk k!(n  k)!h k .
Тогда выражение (6.9) для интерполяционного многочлена
Лагранжа принимает вид:
n
(1) n k y k
P n (x)  Pn (x 0  ht)  t(t  1)...(t  n) .
k 0 (t  k)k!(n  k)!

Интерполяционный полином Ньютона.


Пусть y0  y(x 0 ), y1  y(x1 ),..., yn  y(x n ) – значения функции
y(x) в узлах интерполяции. Тогда разности
y0  y1  y0 , y1  y2  y1 , ..., yn1  yn  yn 1
называют конечными разностями первого порядка или просто первыми
разностями.
Разностями второго порядка или вторыми разностями называют
разности первых разностей, то есть
2
y0  y1  y0 , 2 y1  y2  y1 , ..., 2 yn 2  yn 1  yn2 .
Аналогично определяют последующие разности. Например,
разность (k  1) -го порядка получается из разности k -го порядка по
формулам:
k 1
y0  k y1  k y0 , k 1 y1  k y2  k y1 .
Разности высших порядков выражают через y i следующими
формулами:
81
 2 y 0  y 2  2y1  y 0 ,
 3y 0  y 3  3y 2  3y1  y 0 ,
.................................
n
n!
 y 0   ( 1) k c kn y k ,
n
где c nk 
k 0 k!(n  k)!
n
 y i   ( 1) k c kn y k i .
n

k 0
Введем так называемые разделенные разности.
Разделенные разности первого порядка определяют по формуле:
yi  y j
y(x i , x j )  .
xi  x j
Например,
y  y0 y
y(x1 , x 0 )  1  0 , где h1  x1  x 0 ,
x1  x 0 h1
y  y1 y
y(x 2 , x1 )  2  1 , где h 2  x 2  x1 , и т.д.
x 2  x1 h 2
Разделенные разности второго порядка определяют по формуле:
y(x i , x j )  y(x j , x k )
y(x i , x j , x k )  .
xi  x k
Разделенные разности k -го порядка определяют по формуле:
y(x k , x k 1 ,..., x1 )  y(x k 1 ,..., x 0 )
y(x k , x k 1 ,..., x1 , x 0 )  .
xk  x0
В случае равностоящих узлов с шагом h для разделенных
разностей имеем формулы:
y y y
y(x1 , x 0 )  0 , y(x 2 , x1 )  1 , ..., y(x n , x n 1 )  n 1 ;
h h h
2 2 k
y0 y1 y0
y(x 2 , x1 , x 0 )  , y(x 3 , x 2 , x1 )  , ..., y(x k , x k 1, x 0 )  .
2!h 2!h k!h
Если y(x)  Pn (x) – полином степени n , то для него первая
P(x)  P(x 0 )
разделенная разность P(x, x 0 )  есть полином степени
x  x0
(n  1) , вторая разделенная разность P(x, x 0 , x1 ) – полином степени
(n  2) , так что разделенная разность  n  1 -го порядка равна нулю.

82
Схема расположения разделенных разностей представлена на
рисунке 6.1.
x0 y0
x1 y1 y(x1,x0) y(x2,x1,x0)
y(x2,x1) y(x3,x2,x1,x0) y(x4,x3,x2,x1,x0)
x2 y2 y(x3,x2,x1)
y(x3,x2) y(x4,x3,x2,x1)
x3 y3 y(x4,x3,x2)
x4 y4 y(x4,x3)

Рис. 6.1. Схема расположения разделенных разностей

Рассмотрим первую разделенную разность для функции y(x) :


y(x)  y0
y(x, x 0 )  , откуда y(x)  y0  (x  x 0 )y(x, x 0 ) .
x  x0
Далее имеем:
y(x, x 0 )  y(x 0 , x1 )  (x  x1 )y(x, x 0 , x1 ) ,
y(x, x 0 , x1 )  y(x 0 , x1 , x 2 )  (x  x 2 )y(x, x 2 , x1, x 0 ), и т.д.
Отсюда получаем формулу:
y(x)  y0  (x  x 0 )y(x 0 , x1 )  (x  x 0 )(x  x1 )y(x 0 , x1, x 2 )  ... 
(x  x 0 )(x  x1 )...(x  x n1 )y(x 0 , x1 , x 2 ,..., x n ) 
(x  x 0 )(x  x1 )...(x  x n )y(x, x 0 , x1, x 2 ,..., x n ) , или
y(x)  Pn (x)  (x  x 0 )(x  x1 )...(x  x n )y(x, x 0 , x1, x 2 ,..., x n ) , где
Pn (x)  y0  (x  x 0 )y(x 0 , x1 )  (x  x 0 )(x  x1 )y(x 0 , x1 , x 2 ) 
...  (x  x 0 )(x  x1 )...(x  x n1 ) y(x 0 , x1,..., x n ) . (6.10)
Полагая в формуле (6.10) x  x k , k  0,1,...,n , получим
Pn (x k )  yk .
Следовательно, полином (6.10) является интерполяционным
полиномом, построенным по (n  1) узлам x 0 , x1 ,..., x n . Его называют
интерполяционным многочленом Ньютона.
В силу того, что любой k -й член полинома Ньютона (6.10)
зависит только от k первых узлов интерполяции и от значений функции
в этих узлах, добавление новых узлов вызывает лишь добавление в
формуле (6.10) новых членов без изменения первоначальных, в этом
состоит существенное, с точки зрения организации вычислений,
преимущество полинома Ньютона по сравнению с полиномом
Лагранжа.
Формулу для полинома Ньютона (6.10) можно представить в
следующем виде:

83
n
Pn (x)  y0   (x  x 0 )(x  x1 ) ... (x  x k 1 ) y(x 0 , x1 ,..., x k ) .
k 1
В данном случае базис состоит из функций вида:
k

0 (x)  1, k (x)   (x  x i1 ), k 1, 2,..., n .


i 1
n
В этом случае ck  y(x 0 , x1 ,..., x k ) , Pn (x)   ck k (x) . После
k 0
вычисления коэффициентов c k , значения полинома Ньютона в точке x
удобно вычислять по схеме Горнера:
Pn (x)  y0  (x  x 0 )  y(x 0 , x1 )  (x  x1 )  y(x 0 , x1 , x 2 )  ... .
Вычисление значений x полинома Pn (x) (после вычисления c k )
требует n умножений и 2n сложений (или вычитаний), то есть Q  3n .
На практике избегают использовать интерполяционные
многочлены высоких степеней. Объясняется это тем, что с ростом числа
узлов сетки погрешность интерполирования f (x)  Ln (x) может не
только не уменьшаться, но и в некоторых случаях постепенно расти с
увеличением n . В этом случае говорят, что интерполяционный процесс
расходится.
Например, последовательность многочленов Ньютона,
построенных для непрерывной функции f (x)  x на отрезке [1, 1] не
сходится к функции f (x)  x ни в одной точке отрезка [1, 1] , кроме
точек 1, 0, 1. Поэтому более предпочтительной является интерполяция
сплайнами.

6.2. Интерполяционный кубический сплайн


Многочлен Лагранжа или Ньютона на всем рассматриваемом
отрезке с использованием большого числа узлов интерполирования
часто приводит к плохому приближению, что объясняется накоплением
погрешностей в ходе вычислений. Из-за того, что процесс
интерполирования расходится, увеличение числа узлов не обязано
приводит к повышению точности вычислений. В силу вышесказанного,
на практике весь рассматриваемый отрезок разбивают на частичные
интервалы и на каждом из них приближающую функцию заменяют
многочленом невысокой степени. Такую интерполяцию называют
кусочно-полиномиальной интерполяцией.

84
Сплайном (сплайн-функцией) называют кусочно-полиномиальную
функцию, определенную на отрезке  a,b  и имеющую на этом отрезке
некоторое число непрерывных производных.
Слово «сплайн» означает гибкую линейку, которую используют
для проведения гладких кривых через определенное число точек на
плоскости. Преимущество применения сплайнов – сходимость и
устойчивость процесса вычисления. Рассмотрим частный случай, часто
используемый на практике, когда сплайн определяют многочленом
третьей степени.
Пусть любыми соседними узлами сетки  функция y(x)
интерполируется кубическим полиномом S3 (x) . Его коэффициенты на
каждом интервале определяют из условий: i  1, 2,..., n
S3 (x i )  yi ,
S 3(x i  0)  S 3(x i  0), S 3 (x i  0)  S 3 (x i  0), i  1, 2,..., n  1,
S 3 (x 0 )  S 3 (x n )  0.  6.11
Ищем кубический сплайн S3 (x) в виде:
S3 (x)  a i  bi (x  x i1 )  ci (x  x i1 ) 2  d i (x  x i1 )3 , (6.12)
x i1  x  x i .
Требуя, чтобы S3 (x) из (6.12) удовлетворял условиям (6.11), получим
для коэффициентов ci  , i  1, 2,..., n трехдиагональную систему:
c1  0,

  yi1  yi yi  yi1 
 i i
h c  2(h i  h i 1 )c i 1  h c
i 1 i  2  3    , i  1, 2,...,n,
  h i 1 h i 
c  0,
 n 1
которую решаем методом прогонки.
Для a i справедливо требование a i  yi1 , коэффициенты bi ,d i
находят по формулам:
1
bi   yi  yi1  / h i  h i  c i1 2c i  , i  1, 2,..., n  1 ,
3
2
bn   y n  y n 1  / h n  h nc n ,
3
1
di   ci1  ci  / h i , i  1, 2,..., n  1.
3
Для погрешности интерполяции справедлива оценка:
max S(x)  y(x)  O(h 2 ), где h  max h i , i  1, 2,..., n .
a  x b

85
6.3. Понятие о методе наименьших квадратов
Пусть проводится серия из n опытов. Результатами наблюдений
являются численные значения y(x i ) некоторой величины. Поставим
задачу: представить приближенным способом измеряемую величину
y(x) в виде линейной комбинации известных (базисных) функций –
g k (x) , k  1,2,...,m , m  n , так, чтобы полученная зависимость
согласовывалась с результатами наблюдений «наилучшим образом».
Итак, будем искать зависимость y(x) в виде:
m

c g
k 1
k k (x), (6.13)

где коэффициенты c k подлежат определению.


В общем случае, в силу ошибок в измерениях при проведении
опытов или «несовершенства» выбранной системы функций g k (x) ,
k  1,2,...,m , возможно лишь выполнение приближенных равенств:
m
y(x i )   ck g k (x i ), i  1,2,...,n. (6.14)
k 1
Сформируем разности между левыми и правыми частями
приближенных равенств (6.14), имеем:
m
ri  y(x i )   ck g k (x i ), i  1,2,...,n. (6.15)
k 1
Очевидно, если бы удалось подобрать систему функций g k (x)
идеальным образом, а результаты измерений были бы точны, то вектор
r   r1 ,r2 , ,rn  ,
Т

называемый вектором невязки, состоял бы из нулевых элементов, и его


длина была бы минимально возможной (равной нулю).
Теперь мы можем уточнить, что следует понимать под
приближением «наилучшим образом» зависимости y(x) посредством
m
линейной комбинации базисных функций c g
k 1
k k (x) . Будем требовать,

чтобы длина вектора r , которую вычисляют по формуле:


r  r12  r22  ...  rn2 , (6.16)
была минимально возможной для данной системы функций g k (x) ,
k  1,2,...,m . Мы можем «управлять» длиной вектора r , выбирая
коэффициенты ck , k  1,2,...,m . Далее вместо длины вектора r нам

86
удобнее будет использовать квадрат длины, который в соответствии с
равенствами (6.15) и (6.16) может быть представлен в виде:
2
 m

r  r  r  ...  r   y  x1    c k g k  x1   
2 2 2 2
1 2 n
 k 1 
2 2
(6.17)
 m
  m

  y  x 2    ck g k  x 2      y  x n    ck g k  x n   .
 k 1   k 1 
2
Ясно, что если r минимален, то и выбор коэффициентов c k ,
k  1,2,...,m наилучший в указанном выше смысле. Будем
рассматривать правую часть равенства (6.17) как функцию m
переменных, в роли которых выступают коэффициенты c k ,
k  1,2,...,m . Тогда необходимое условие экстремума функции r
2

состоит в обращении в ноль частных производных, то есть


r r r
2 2 2

    0. (6.18)
c1 c2 cm
Дифференцируя правую часть формулы (6.17) по переменным c k ,
k  1,2,...,m , как сложную функцию и приравнивая полученные
частные производные нулю, приходим к равенствам:
m m
2  (y(x 1)   c k g k (x 1))(g 1(x 1))  2  (y(x 2)   c k g k (x 2 ))( g1 (x 2 )) 
k 1 k 1
m
(y(x n )   ck g k (x n ))(g1 (x n ))  0 ,
k 1
m m
2  (y(x1 )   c k g k (x1 ))(g 2(x 1))  2  (y(x 2 )   c k g k (x 2 ))( g 2 (x 2 ))  
k 1 k 1
m
(y(x n )   ck g k (x n ))(g 2 (x n ))  0 ,
k 1
     
m m
2  (y(x1 )   c k g k (x 1))( g m(x 1))  2  (y(x 2)   c k g k (x 2))( g m (x 2 )) 
k 1 k 1
m
  (y(x n )   c k g k (x n ))(g m (x n ))  0.
k 1
Сокращая на 2 обе части полученных равенств и записывая их в
компактной форме, получим систему:

87
n
 m

  y(x i )   c k g k (x i )  g1 (x i )  0,
i 1  k 1 
n
 m

  y(x i )   c k g k (x i )  g 2 (x i )  0,
i 1  k 1 

n
 m

 
i 1 
y(x i )  
k 1
c k g k (x i  g m (x i )  0.
)

Раскрывая скобки и перенося известные величины в правые части,
в итоге получаем систему, которую называют системой нормальных
уравнений:
m
 n  n

   g k (x i )g 1(x i )  c k   g 1(x i )y(x i ),


k 1  i 1  i 1
m
 n  n

   g k (x i )g 2(x i )  c k   g 2(x i )y(x i ),


k 1  i 1  i 1 (6.19)

m
 n  n

   g k (x i )g m (x i )  c k   g m (x i )y(x i ).
k 1  i 1  i 1
Заметим, что система (6.19) получена из необходимых условий
экстремума функции m переменных. Можно доказать, что в точке m -
мерного пространства, которая является решением системы (6.19),
2
выполняются достаточные условия наличия минимума функции r ,
однако, ввиду громоздкости выкладок, мы этот вопрос здесь не
рассматриваем.
Рассмотренный метод нахождения наилучшего, в указанном
смысле, приближения к неизвестной функциональной зависимости
y  y(x) , если задана система базисных функций g k (x), k  1,2,...,m ,
основанный на нахождении решения системы уравнений (6.19), и
называют методом наименьших (минимальных) квадратов.

6.4. Интерполяционный тригонометрический полином


В некоторых случаях целесообразно использовать другие виды
интерполяций. Например, если функция x(t) периодическая, то в качестве
интерполирущего многочлена можно брать тригонометрический
интерполяционный полином порядка n . Если в качестве системы

88
линейно независимых функций k (t) взять систему функций
1,cos t,sin t,cos 2t,sin 2t,...,cos nt,sin nt ,
то интерполяционный тригонометрический полином имеет вид:
a0 n
  t   Tn  t     a k cos kt  b k sin kt .
2 k 1
Для нахождения a k ,b k используют дискретное преобразование
Фурье.
Дискретное преобразование Фурье – это одно из преобразований
Фурье, широко применяемых в алгоритмах цифровой обработки
сигналов (его гомоморфизмы применяют в сжатии звука в .mp3, сжатие
изображений в .jpg и др.), а также в других областях, связанных с
анализом частот в дискретном (к примеру, оцифрованном аналоговом)
сигнале. Дискретные преобразования Фурье помогают решать частные
дифференциальные уравнения и выполнять такие операции, как
свѐртки. Преобразования бывают одномерные, двумерные и даже
трехмерные.
Последовательность N действительных чисел x 0 , ... , x N 1
преобразуют в последовательность из N комплексных чисел
X0 , ... , X N 1 с помощью дискретного преобразования Фурье по
формуле:
N 1 2 i

X k   x ne
kn
N
, k  0,..., N  1,
n 0
где i – это мнимая единица. Обратное дискретное преобразование
Фурье задают формулой:
2 i
1 N 1 *  N kn
x n   X ke , n  0,..., N  1.
N k 0
Поскольку напрямую вычисления дискретного преобразования
требует O  N 2  операций, то на практике используют более быстрый
алгоритм преобразования Фурье, которое требует O  N log N  операций.
Дискретное преобразование Фурье является линейным
преобразованием, которое переводит вектор временных отсчетов x в
вектор спектральных отсчетов той же длины. Таким образом,
преобразование может быть реализовано как умножение квадратной
матрицы на вектор:
X  Ax.
Матрица А имеет вид:

89
1 1 1 1 
 
2 i

4 i

2 i
( N 1)

1 e N e N e N 
 4 i 8 i 2 i

A  1 e N

e N
 
e N
2( N 1) .
 
 
 2 i 2 i 2 i

       
2
( N 1) 2( N 1) ( N 1)
1 e 
N
e N e N
Ниже представлены некоторые свойства:
1) линейность ax(n)  by(n)  aX(k)  bY(k);
2 i

2) сдвиг по времени x  n  m   X(k)e
knm
N
;
3) периодичность X(k  rN)  X(k), r  Z;
4) выполняется теорема Парсеваля;
5) симметрии X(k)  X* (N  k).
Таким образом, информацию несут первые N / 2 гармоник;
6) обладает спектральной плотностью S(k)  x(k) ;
2

7) x(n)  R, X(0)  R, N / 2  N  X(N / 2)  R.


В случае четного числа n , из свойства 5, 7 следует
1 N1 *  2Ni kn 1  N/21 
2 i
x n   Xke   X 0   X k e N  X N/2 e in 
kn
*

N k 0 N k 1

N/21 
2 i
 1 N/21 
2 i

  0  k
kn kn
 *
Xe
k
N
  X  X *
e N
 X N/2 e in 
k  n/21  N k 1

N/21
 1
2 i
 N/21 *  2Ni kn  
  Xke  k
kn
in
 N
 0
X  2Re X e   X N/2 e  .
k 1  N   k 1  
Переходим от дискретных значений n к непрерывному аргументу
t , таким образом, чтобы выполнялось равенство t n  nh , при
n  0, 1, ..., N  1 , где h – шаг дискретизации. Формула в случае четного
числа узлов для интерполяционного тригонометрического полинома
имеет вид:
1 N/21
  2kt   2kt   
x(t)   X0  X N/2 cos t  2   ReX k cos    ImX k sin    .
N k 1   N   N 

90
Аналогичным образом можно получить формулу для
интерполяционного тригонометрического полинома в случае нечетного
числа узлов, которая может быть представлена следующим образом:
1 ( N 1)/2
  2kt   2kt   
x(t)   X 0  2   Re X k cos    Im X k sin  .
N k 1   N   N 

6.5. Применение методов приближения функций


По заданной таблице yi  y(x i ) значений функции найти y как
функцию от x на основе:
а) интерполяционного полинома Лагранжа и Ньютона;
б) интерполяционного кубического сплайна;
в) метода минимальных квадратов для линейной, квадратичной и
кубической регрессии;

X 1 3 4 5 6 7 9 11
Y –1 2 3 9 4 7 2 7

г) интерполяционного тригонометрического полинома.

X 0 1 2 3 4 5 6 7
Y 2 –4 3 9 –2 1 7 5

Интерполяционный полином Лагранжа.


Задаем таблицу значений функции
 1 1 
3 2
 
4 3
 
5 9
A :  
6 4
 
 7 7 
9 2
 
 11 7 
Вводим функцию интерполяционного полинома Лагранжа

91
Lagrang( x  A)  sum  0
for i  0  row s( A)  1
pr  Ai 1
for j  0  row s( A)  1
x  Aj  0
pr  pr  if i  j
Ai  0  Aj  0
sum  sum  pr
sum
Выводим минимальное и максимальное значение аргумента
a : min A   0
b : max A  
0

a 1 b  11
Вводим количество точек и шаг
n : 100
ba
h : .
n
Устанавливаем счетчики
i : 0..n j: 0..rows(A)  1.
Табулируем функцию
fi : Lagrang(a  i  h,A) .
Строим график функции интерполяционного полинома Лагранжа
(Рис.6.2).
100
51.97

50

fi
0
Aj  1

50

 98.832 100
2 4 6 8 10
a a ih
  Aj  0 b
Рис. 6.2. График функции интерполяционного полинома Лагранжа
92
Интерполяционный полином Ньютона.
Задаем таблицу значений функции
 1 1 
3 2
 
4 3
 
 5 9 .
A :
6 4
 
 7 7 
9 2
 
 11 7 
Вводим функцию расчета коэффициентов интерполяционного
полинома Ньютона
 0
Nuton ( A)  x A
 1
yA
k0  y 0
n  rows ( A)  1
for i  1  n
for j  0  n  i
y j 1  y j
y1 j 
 xj i  xj
y  y1
k i  y0
k
Вызываем данную функцию
k : Nuton(A) .
Строим функцию интерполяционного полинома Ньютона
rows(k)1 i 1
F(x) : k 0   k i    x  A j,0  .
i 1 j0

Выводим минимальное и максимальное значение аргумента


a : min A  0
b : max A  
0

a 1 b  11
Вводим количество точек и шаг табуляции

93
n : 100
ba
h : .
n
Устанавливаем счетчики
i : 0..n j: 0..rows(A)  1.
Табулируем функцию
fi : F(a  i  h) .
Строим график функции интерполяционного полинома Ньютона
(Рис. 6.3).
100
51.97

50

fi
0
Aj  1

50

 98.832 100
2 4 6 8 10
a a ih
  Aj  0 b
Рис. 6.3. График функции интерполяционного полинома Ньютона

Интерполяционный кубический сплайн.


Задаем таблицу значений функции
 1 1 
3 2
 
4 7
 .
5 9
A :  
6 8
 
 7 7 
9 2
 
 11 7 
Устанавливаем счетчики
i : 0..rows(A)  2 .
Считаем шаг
h i : Ai1,0  Ai,0 .
94
Устанавливаем счетчики
i : 0..rows(A)  4 j: 0..rows(A)  3 .
Задаем диагонали матрицы коэффициентов и столбец свободных
членов согласно методу прогонки
a i : h i1 
b : a c j : 2  h j  h j1 . 
 A j2,1  A j1,1 A j1,1  A j,1 
f j : 3    .
 h j1 h j 
Вводим функцию, реализующую алгоритм прогонки
progonka( a  b  c  f)  n  rows ( f)  1
b0
0 
c0
f0
0 
c0
for i  1  n  1
bi
i 
ci   i1  ai1

ai1   i1  fi
i 
ci   i1  ai1

an1   n1  fn
yn 
cn   n1  an1
for i  n  1  0
yi   i  yi 1   i
y
При помощи функции прогонки считаем значения коэффициентов ci
C : progonka(a,b,c,f ) .
Переопределяем значения коэффициентов ci
i : rows(C)  1..0
Ci1 : Ci C0 : 0 Crows(A)1 : 0 .
Cчитаем значения коэффициентов b i и d i
i : 1..rows(C)  2
A  Ai,1 Ci1,0  2  Ci,0 C  Ci,0
Bi : i1,1   h i Di : i1,0
hi 3 3  hi
95
A rows(C)1,1  A rows(C)2,1
Brows(C)1 : .
h rows(C)2
Вводим функцию интерполяционного кубического сплайна
F ( x  A)  for i  0  rows ( A)  2
if x  Ai 0  x  Ai 1  0
x0  x  Ai 0
2 3
f  Ai  1  Bi 1  x0  Ci 1  x0  Di 1  x0
f
Вводим количество точек
n : 1000 .
Определяем минимальное и максимальное значение аргумента
a : A0,0 b : A rows(A)1,0
Вводим шаг табуляции
ba
h : .
n
Табулируем функцию интерполяционного кубического сплайна
i : 0..n  1 j: 0..rows(A)
Poli : F(a  i  h,A) .
Строим график функции (Рис. 6.4).

Рис. 6.4. График функции интерполяционного кубического сплайна

96
Метод наименьших квадратов.
Задаем таблицу значений функции
 1 1 
3 2
 
4 3
 
5 9
A :  
6 4
 
 7 7 
9 2
 
 11 7 
Устанавливаем счетчики
n : rows(A)  1 .
Считаем значения x, y
x : A y : A .
0 1

Задаем СЛАУ согласно методу минимальных квадратов в случае


линейной регрессии
 n n   n 
   yi 

 
1 xi
   
 i  0 i  0   i  0 
C  D 
 n n   n 

xi  xi 
2  yi  xi 

   
i  0 i 0   i 0 

Решаем СЛАУ
k : C1  D .

Строим линейную регрессионную функцию


f (t) : k1  t  k 0 .

Устанавливаем счетчики
i : 0..n .

Строим график линейной регрессионной функции (Рис. 6.5).

97
10

5
yi
f( t)
0

5
0 2 4 6 8 10
xi  t
Рис. 6.5. График линейной регрессионной функции

Считаем квадрат невязки


n
r :   k1  x i  k 0  yi  .
2

i 0
Квадрат невязки
r  54,833 .
Задаем СЛАУ согласно методу минимальных квадратов в случае
квадратичной регрессии:
 n n n
2  n

  1  x i   x i     y i 
 i 0 i 0 i 0
  i 0

 n n n
3  n

C :   x i   xi    xi   ; D :   yi  x i  .
2

 i 0 i 0 i 0
  i 0 
 n n n
4  n
2
 i          i   
2 3
x x i x i  y x i 
 i 0 i 0 i 0   i 0 

Решаем СЛАУ
k : C1  D .
Строим квадратичную регрессионную функцию
f (t) : k 2  t 2  k1  t  k 0 .
Строим график квадратичной регрессионной функции (Рис. 6.6).

98
10

5
yi
f( t)
0

5
0 2 4 6 8 10
xi  t
Рис. 6.6. График квадратичной регрессионной функции
Считаем квадрат невязки
n
r :   k 2   x i   k1  x i  k 0  yi  .
2 2

i 0
 
Считаем квадрат невязки
r  42,187 .
Задаем СЛАУ согласно методу минимальных квадратов, в случае
кубической регрессии
 n n n n
3  n

        
2
 1 x i x i x i   y i 
 i 0 i 0 i 0 i 0
  i 0 
 n n n n
4  n

  i            i i  
2 3
x x i x i x i  y x
C :  n  ; D :  i0 .
i 0 i 0 i 0 i 0

 n n n
5  n
2
               
2 3 4
 x i x i x i x i   y i x i 
 i 0 i 0 i 0 i 0
  i 0

 n n n n
6  n
3
  xi    xi    xi    xi     yi   x i  
3 4 5

 i 0 i 0 i 0 i 0   i 0 
Решаем СЛАУ
k : C1  D .
Строим кубическую регрессионную функцию
f (t) : k 3  t 3  k 2  t 2  k1  t  k 0 .
Строим график кубической регрессионной функции (Рис. 6.7).

99
10

yi
0
f( t)

10
0 2 4 6 8 10
xi  t
Рис. 6.7. График кубической регрессионной функции
Считаем квадрат невязки
n
r :   k 3   x i   k 2   x i   k1  x i  k 0  yi  .
3 2 2

i 0
 
Считаем квадрат невязки
r  33,851.
Интерполяционный тригонометрический полином.
Задаем таблицу значений функции
 2
 4 
 
 3
 
9
x :   .
 2 
 
 1 
 7 
 
 5
Считаем число значений таблицы и задаем мнимую единицу
N : rows(x) i : 1 .
Устанавливаем счетчики
k : 0..N  1.
Считаем значение спектра

100
N 1 2ikn

X k :  x n  e N

n 0
a k : Re(X k ) bk : Im(X k ) .

Вводим функцию интерполяционного тригонометрического


полинома в случае четного числа узлов
 N
1
2 

1   2 t n   2    t  n   .
F(t) :  a 0  a N  cos(  t)  2    a n  cos    b n  sin  
N     N   N   
 
2 n 1

Устанавливаем счетчики
t : 0,0.01..N .
Строим функцию интерполяционного тригонометрического
полинома (Рис. 6.8).
10

5
F ( t)

xk
0

5
0 1 2 3 4 5 6 7 8
tk
Рис. 6.8. График функции интерполяционного
тригонометрического полинома

6.6. Варианты заданий к лабораторной работе №6

По заданной таблице значений функции yi  y(x i ) , найдите y как


функцию от x на основе:
а) интерполяционного полинома Лагранжа и Ньютона;
б) интерполяционного кубического сплайна;
в) метода минимальных квадратов для линейной, квадратичной и
кубической регрессии;

101
Вариант Значения функции
x 1 3 4 6 7 8 10 12 15
1
y 3 4 6 2 8 4 5 8 0
x 1 2 5 6 7 9 11 12 16
2
y 2 6 3 2 4 5 5 9 3
x 1 2 3 5 7 8 11 14 15
3
y –3 3 5 4 1 –5 6 3 2
Вариант Значения функции
x 1 2 4 6 7 10 12 14 17
4
y 3 4 6 3 8 1 2 3 7
x 1 3 5 6 7 9 10 12 13
5
y 3 7 1 3 –2 5 –6 4 3
x 1 3 5 6 7 9 11 13 18
6
y 3 5 9 2 –1 –4 3 4 8
x 1 3 5 6 7 9 12 14 17
7
y 4 8 2 0 7 8 –1 2 3
x 1 3 4 6 7 8 11 15 18
8
y 3 5 8 3 7 1 9 3 2
x 1 2 3 6 7 9 10 13 15
9
y 4 8 2 7 –1 2 4 8 3
x 1 3 5 6 7 8 10 12 17
10
y 3 5 –1 7 3 6 9 0 4

г) интерполяционного тригонометрического полинома.

Вариант y(0) y(1) y(2) y(3) y(4) y(5) y(6) y(7)


1 4 6 8 3 –4 3 2 –
2 3 4 4 7 –4 3 –3 3
3 4 3 9 4 1 3 6 –
4 6 1 5 8 7 2 3 4
5 7 9 7 6 3 –4 –5 –
6 3 –4 2 3 5 –4 2 3
7 2 4 –5 –2 4 3 6 –
8 9 5 0 9 3 6 5 –5
9 6 8 0 5 3 5 7 –
10 4 5 6 3 6 8 7 4

102
Содержание отчета
Отчет должен содержать:
− титульный лист;
− постановку задачи (согласно варианту);
− краткое описание методов решения задачи Коши;
− программную реализацию данных методов;
− выводы о проделанной работе.

Контрольные вопросы и задания


1. Какие виды приближения функции вам известны? Кратко
опишите каждый метод.
2. Какие виды интерполяции функции вам известны?
3. Приведите пример построения интерполяционного полинома
при помощи метода Лагранжа.
4. Приведите пример построения интерполяционного полинома
при помощи метода Ньютона.
5. Какой метод построения интерполяционного полинома
является менее трудоемким: метод Лагранжа или метод Ньютона?
6. По заданной выборке найдите оптимальную прямую методом
наименьших квадратов.
7. По заданной выборке найдите оптимальную параболу
методом наименьших квадратов.
8. Приведите пример построения интерполяционного
кубического сплайна.
9. Приведите пример построения интерполяционного
тригонометрического полинома.
10. Как изменится трудоемкость дискретного преобразования
Фурье в случае использования алгоритма быстрого преобразования
Фурье?

103

Вам также может понравиться