n&lt

реклама
Вычислительная математика
Лекции
Алгоритмы вычислительной математики – курс лекций
278
Тема 1
Введение.
В настоящее время в науке и инженерной практике широко используется
метод математического моделирования.
Математическим моделированием1 называется изучение реального объекта
на ЭВМ с помощью математической модели этого объекта.
Например:
1. Совершенствование ядерного оружия путем расчетов на супер-ЭВМ.
Удалось отказаться от испытаний ядерного вооружения.
2. Компьютерные тренажеры (симуляторы), созданные на основе математических моделей, появились сначала у военных, сейчас они широко
применяются в производственном и учебном процессе.
Математическая модель – это приближенное математическое описание объекта (технологического процесса, реакции, явления и т.д.).
Примеры простейших моделей:
mRT
M
m1  m 2
F =G
R2
pV 
уравнение состояния идеального газа
(1.1)
закон всемирного тяготения
(1.2)
mv 2
 mgh
2
закон сохранения энергии
(1.3)
Fk
закон Кулона
(1.4)
закон сохранения энергии для фотона,
где v – частота излучения.
(1.5)
q1  q 2
R2
mc 2  hv
Сложные модели описывают объект точнее (адекватнее2).
Математическое моделирование позволило исследовать на ЭВМ очень
сложные процессы, такие, например, как глобальные климатические изменения
в результате применения ядерного оружия (натурный эксперимент имеет катастрофические последствия).
В литературе математическое моделирование часто принято называть вычислительным экспериментом.
Основные этапы математического моделирования:
Здесь и далее основные определения выделяются в рамке.
Здесь и далее специальные термины и определения выделяются полужирным курсивом.
1
2
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
378
1. Разработка модели – формализация. Изучается в прикладных и фундаментальных науках.
2. Разработка метода (алгоритма) решения уравнения модели – алгоритмизация. Изучается в вычислительной математике.
3. Создание программы – программирование. Изучается в информатике.
4. Расчеты, анализ результатов – практическое использование.
Использование результатов:
Результат
Расчёты
Программа
для совершенствования
Программирование
программы
Алгоритм
для совершенствования
Алгоритмизация
Мат. модель
алгоритма
для совершенствования
Формализация
модели
для изучения, управления
Объект
проектирования
Предметом вычислительной математики являются численные методы (алгоритмы) решения математических задач, возникающих при исследовании реальных объектов методом математического моделирования.
Например, пусть нужно найти R из уравнения (1.2) или (1.4), v из уравнения (1.3) или c из уравнения (1.5). Что общего в этих задачах? То, что нужно
решить уравнение вида:
x2= a
(1.6)
Вычислительная математика не рассматривает решения конкретных задач
(1.2÷1.5), а изучает их решение в общем, абстрактном виде (1.6).
С точки зрения обычной математики точное решение уравнения (1.6)
имеет вид:
*
x1,2
=  a
причем
,
если a > 0 , то два вещественных решения;
*
*
если а = 0 , то тривиальное решение x1  x2  0 ;
если а < 0, то вещественных решений нет.
Но знак
не решает задачу, так как не дает практического способа
(алгоритма) вычисления значения х для конкретного значения а.
478
Алгоритмы вычислительной математики – курс лекций
Вычислительная математика предлагает следующий алгоритм вычисления x*:
1. Выбрать начальное значение х, например x 0 =а. Это начальное приближение решения.
2. Вычислять новые приближения решения xi по формуле:
1
а
)
xi = (x i 1 
(1.7)
2
х i 1
до достижения условия:
(1.8)
x i  x i-1  
Здесь
i = 1,2,.. – номер вычисления - итерации.
 – требуемая точность.
2
Пример. Нужно решить уравнение x  3  0 с точностью =0,001.
Зададимся x0  a  3 ,
1
a
1
3
Вычислим первое приближение: x1  ( x0  )  (3  )  2 ,
2
x0
2
3
оценим точность | x1 – x0 | = | 2  3 | 1   .Требуемая точность не достигнута,
нужно продолжить расчет.
Вычислим второе приближение:
1
a
1
3
7
x2  ( x1  )  (2  )  1,75  ,
2
x1
2
2
4
оценим точность | 1,75  2 | 0,25   .
1
2
Вычислим третье приближение: x3  ( x2 
a
1 7 12
)  (  )  1,7321 ,
x2
2 4 7
оценим точность | 1,7321  1,75 | 0,0179   .
Вычислим четвертое приближение: x 4  1,73205 ,
оценим точность | 1,73205  1,7321 | 0,00005   − точность достигнута.
x1, 2  1,73205 .
Ответ:
Точное значение (до 8 значащих цифр):
3  1,7320508 .
Рассмотренный пример демонстрирует принципы, общие для итерационных методов решения задач вычислительной математики:
1. Исходная задача (1.6) заменяется другой задачей – вычислительным алгоритмом по формулам (1.7), (1.8), где используются только арифметические операции +   / . Принято называть (1.7) формулой итерационного
процесса (итерационным процессом), (1.8) - условием завершения
итерационного процесса.
2. Задача (1.7) содержит новый параметр i – номер итерации. Очевидно,
что
число
итераций
влияет
на
точность
решения.
xi  x    a , то итерационный процесс является сходящимЕсли lim
i 
ся – позволяет получить решение исходной задачи (1.6).
3. Решение, полученное итерационным методом, всегда является приближенным, так как точное решение получить невозможно – нужны бесконечные вычисления.
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
578
Важно подчеркнуть, что формула (1.7) получена из (1.6) путём тождественных преобразований:
1
a
x 2  a  0  a  x 2  0 2 a  x 2  2 x 2  x  (x  )
*( 1 )
:2 x
2 x
2
x
Но не всякое тождественное преобразование позволяет получить сходящийся итерационный процесс.
Например:
a
2
2
a) x  a  0  x  a  x  ,
x
Выполним расчет при а=3:
a
a
 1 ; x2 
 3 ; x3  1...
x0  3 ; x1 
x0
x1
Итерационный процесс не сходится; значения приближений колеблются.
2
x  x2  x  a
б) x  a  0 
x
x 0  3 ; x1  32  3  3  9; x 2  92  9  3  87. …
Итерационный процесс расходится.
Рассмотренный пример иллюстрирует один из видов численных методов
– итерационный.
Виды численных методов:
1. Прямые – решение получают за конечное число арифметических действий.
2. Итерационные – точное решение может быть получено теоретически в
виде предела бесконечной сходящейся последовательности вычислений.
3. Вероятностные – методы случайного поиска решения (угадывания).
Все виды численных методов позволяют получить только приближенное решение задачи, то есть численное решение всегда содержит погрешность.
Алгоритмы вычислительной математики – курс лекций
678
Тема 2
Структура погрешности численного решения задачи.
Точность решения задачи оценивается абсолютной или относительной
погрешностью.
Абсолютная погрешность:
  x  x ,
где
(2.1)

x - точное решение,
x - численное решение.
Относительная погрешность:
Δ
x*  x
δ
 *
*
x
x
,
x  0
(2.2)
Источники погрешности численного решения задачи:
1. Погрешность математической модели.
Возникает в результате допущений, принятых при получении модели. Реальность всегда сложнее любой модели, поэтому этот источник погрешности всегда влияет на численное решение. Величина этой погрешности
определяется сравнением экспериментальных данных с результатами расчетов по модели (оценивается адекватность модели объекту).
2. Погрешность исходных данных.
Зависит от точности измерения параметров, используемых в модели. Любые
измерения приближенны, поэтому и этот источник всегда влияет на решение.
В вычислительной математике эти два вида погрешности (погрешность
математической модели и погрешность исходных данных) принято называть
неустранимой погрешностью, т.к. она не зависит от метода решения задачи и
всегда влияет на ее решение, и ее обязательно нужно учитывать при анализе
полученного решения.
3. Погрешность метода решения задачи.
Возникает в результате применения итерационного или вероятностного метода решения.
Эти методы позволяют получить точное решение только в результате бесконечной последовательности действий. Поэтому для получения приближенного решения бесконечный процесс прерывают при достижении требуемой
точности решения.
4. Погрешность округления.
Возникает в результате проведения вычислений с конечным числом значащих цифр.
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
778
Погрешность элементарных арифметических действий изучается в теории
погрешности. Учесть погрешность округления при большом количестве
арифметических действий практически невозможно.
Есть случайные и систематические источники погрешности округления.
Случайные источники обычно компенсируют друг друга.
Например:
c  x 1  x 2  ...  x n
c  x 1  x 2  ...  x n
Знаки x i случайны и компенсируют друг друга при большом n.
Систематические источники вызывают накопление погрешности округления. Они являются дефектом структуры вычислений (алгоритма).
Пример 2.1
Требуется вычислить:
c  0,476  0,411  1,47  26,2  83.
Сложим эти числа столбиком и, округлив результат до 3-х значащих
цифр, получим значение с:
0,476
0,411
1,47
26,2
83,
111,557  112.
ЭВМ выполняет действия поочередно (складывает пару чисел) и
округляет результат после каждого действия.
Выполним суммирование слева направо в порядке записи (как ЭВМ):
+ 0,476
+ 0,887
+ 2,36
+ 28,6
0,411
1,47
26,2
83,
0,887  0,887
2,3572,36
28,56 28,6
111,6  112.
Пусть теперь выражение записано в обратном порядке:
c  83  26,2  1,47  0,411  0,476.
Выполним суммирование как ЭВМ:
83
109
110
110
+
+
+
+
26,2
1,47
0,411
0,476
109,2  109
110,47  110
110,411  110
110,476  110
От перестановки слагаемых сумма изменилась, то есть
n
x
i 1
Пример 2.2
1
i
  xi
in
878
Алгоритмы вычислительной математики – курс лекций
Требуется перемножить 100 чисел, причем первая половина из них равна
0,1, вторая 10 (числа упорядочены по возрастанию значений).
Если в программе на языке Pascal последовательно перемножать числа,
начиная с первого, то результат будет равен 0 (самое маленькое по модулю
значение переменной типа Real на языке Pascal ± 2,9 ·10-39 ).
Если же последовательно перемножать с конца, то произойдет переполнение (самое большее по модулю значение переменной типа Real на языке Pascal 1,7·10 38 ).
Если же эти значения чередуются, то независимо от порядка
умножения результат будет равен 1,0.
Следовательно, от перестановки мест сомножителей значение
произведения в рассмотренном случае меняется.
n
1
x  x
i
i 1
i
in
В машинной арифметике законы коммутативности (переместительный) и дистрибутивности (распределительный) не всегда соблюдаются.
Рекомендации для снижения ошибок округления:
1. При сложении и вычитании последовательности чисел действия необходимо начинать с наименьших по абсолютной величине значений.
2. Следует избегать вычитания двух близких чисел, преобразуя выражения.
3. Количество арифметических действий для решения задачи нужно сводить
к минимуму.
4. Для уменьшения ошибки округления расчеты следует проводить с повышенной разрядностью (double precision в Pascal).
При выборе численного метода решения задачи необходимо учитывать следующее:
1. Погрешность метода должна быть на порядок меньше неустранимой погрешности. Увеличение погрешности метода снижает точность, уменьшение – увеличивает время решения задачи.
2. Погрешность округления должна быть значительно меньше (на два порядка) погрешности метода и неустранимой погрешности.
Для оценки погрешности решения на практике можно использовать
следующие приемы:
1. Решить задачу различными численными методами и результаты сравнить.
2. Незначительно изменить исходные данные и повторно решить задачу.
Результаты сравнить. Если они различаются сильно, задача или метод ее
решения являются неустойчивым – выбрать другой.
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
978
Тема 3
Численное решение алгебраических и трансцендентных уравнений.
Решение уравнений – это одна из древнейших математических задач. Ещё
в Древней Греции умели решать линейные и квадратные алгебраические уравнения. В эпоху Возрождения (XV век) Джироламо Кардано и его ученик Луиджи Феррари получили точные решения для алгебраических многочленов 3 и 4
степени. Позднее много усилий было затрачено на получение точного решения
многочленов 5 степени и выше. Но только в 20-х годах XIX века было доказано, что решение алгебраического многочлена n-ой степени
an x n + an-1xn-1 +...+ a0 = 0, где an  0
при n  5 нельзя выразить через коэффициенты с помощью арифметических
действий и операций извлечения корня.
Известно, что алгебраический многочлен n-ой степени имеет n корней,
причём они могут быть вещественными и комплексными (теорема Гаусса).
Решение трансцендентных уравнений в явном виде также может быть получено в редких, простейших случаях. Трансцендентные уравнения, включающие алгебраические, тригонометрические, экспоненциальные функции от неизвестного x, как правило, имеют неопределённое число корней. Необходимость
решения трансцендентных уравнений возникает, например, при расчёте устойчивости систем, расчете парожидкостного равновесия и т.п.
Достаточно распространенной задачей является так же нахождение некоторых или всех решений системы из n нелинейных алгебраических или трансцендентных уравнений с n неизвестными.
Рассмотрим вначале методы решения нелинейных уравнений с одним неизвестным.
Пусть задана непрерывная функция fx и требуется найти корни уравнения
fx=0
(3.1)
на всей числовой оси или на некотором интервале a  x  b .
*
*
Всякое значение x  (a, b) , удовлетворяющее условию f(x )  0 , называется
корнем уравнения (6.1), а способ нахождения этого значения x * и есть решение
уравнения (3.1).
Методы решения уравнений:
 Прямые (формула Виета для квадратного уравнения и Кардано для кубического и другие)
 Итерационные – для решения любого уравнения
Численное решение уравнения проводится в два этапа:
1 этап. Отделение корней уравнения.
2 этап. Уточнение интересующих корней с заданной точностью ε.
Алгоритмы вычислительной математики – курс лекций
1078
3.1. Отделение корней нелинейного уравнения.
Отделение корней – это определение их наличия, количества и нахождение для каждого их них достаточно малого отрезка [a,b], которому он
принадлежит.
На первом этапе определяется число корней, их тип. Определяется интервал, в котором находятся эти корни, или определяются приближенные значения
корней.
В инженерных расчетах, как правило, необходимо определять только вещественные корни. Задача отделения вещественных корней решается аналитическими и графическими методами.
Аналитические методы основаны на функциональном анализе.
Для алгебраического многочлена n-ой степени (полинома) с действительными коэффициентами вида
Pn(x) = an x n + an-1xn-1 +...+a1x+ a0 = 0, (an >0)
(3.2)

верхняя граница положительных действительных корней R B определяется по
формуле Лагранжа (Маклорена):
R
B  1 k
B
, B  max a i ,
an
a 0
(3.3)
i
где: k  1 – номер первого из отрицательных коэффициентов полинома;
B – максимальный по модулю отрицательный коэффициент.
Нижнюю границу положительных действительных корней RН можно
определить из вспомогательного уравнения
1
Pn' ( x)  x n  Pn  
 x
(3.4)
Если для этого уравнения по формуле Лагранжа верхняя граница равна
R1, то
R Н =
1
R1
(3.5)
Тогда все положительные корни многочлена лежат в интервале
R Н ≤x+≤ R В .
Интервал отрицательных действительных корней многочлена определяется с использованием следующих вспомогательных функций.
Pn2 x   Pn  x 
R Н ≤x–≤ R В
 1
Pn3 x   x n  Pn    .
 x
1
R Н =
R В = R 22 .
R3
и
Рассмотрим пример отделения корней с использованием этого
аналитического метода.
Методом Лагранжа определим границы положительных и отрицательных
корней многочлена.
3x8 – 5x7 – 6x3 – x – 9 = 0
k=1
B = |– 9|
an = 3
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
R B  1  1
1178
9
=4
3
Pn (x)  9x8 + x7 + 6x5 + 5x – 3 = 0
k=8
R Í 
B=3
1

R
1
1 8
3
9

an = 9
1
 0,5
1,87
Отсюда границы положительных корней 0,5 ≤ x+ ≤ 4
Pn2  Pn  x   3x8 + 5x7 + 6x3 + x – 9 = 0
9
 1  8 3  2,0
3
 1
R 3Н x   x n  Pn      9x8 – x7 – 6x5 – 5x – 3 = 0
 x
R В = 1  8
k=1
R Н 
B=6
1

R4
1
1
6
9

an = 9
1 3
  0,6
5 5
3
Следовательно, границы отрицательных корней –2 ≤ x– ≤ –0,6
Формула Лагранжа позволяет оценить интервал, в котором находятся все
действительные корни, положительные или отрицательные. Поэтому, для определения расположения каждого корня необходимо проводить дополнительные
исследования.
Для трансцендентных уравнений не существует общего метода оценки
интервала, в котором находятся корни. Для этих уравнений оцениваются значения функции в особых точках: разрыва, экстремума, перегиба и других.
На практике получил большее распространение графический метод
приближённой оценки вещественных корней. Для этих целей строится график функции по вычисленным её значениям.
Графически корни можно отделить 2-мя способами:
1. Построить график функции y = f(x) и определить координаты пересечений с осью абсцисс− это приближенные значения корней уравнения.
y
y=f(x)
x
a
x1* b x2*
На графике 3 корня.
Первый корень
x*  [a,b]
x3 *
Рис. 3.1 Отделение корней на графике f(x).
Алгоритмы вычислительной математики – курс лекций
1278
2. Преобразовать f(x)=0 к виду (x) = (x), где (x) и (x) – элементарные
функции, и определить абсциссу пересечений графиков этих функций.
y
y=(x)
y= (x)
x
a
x1* b
На графике 2 корня.
Первый корень
x1*  [a,b]
x2*
Рис. 3.2 Отделение корней по графикам функций (x) и (x).
Графический метод решения нелинейных уравнений широко применяется
в технических расчётах, где не требуется высокая точность.
Для отделения вещественных корней можно использовать ЭВМ. Алгоритм отделения корней основан на факте изменения знака функции в окрестности корня. Действительно, если корень вещественный, то график функции
пересекает ось абсцисс, а знак функции изменяется на противоположный.
Рассмотрим схему алгоритма отделения корней нелинейного уравнения
на заданном отрезке в области определения функции.
Алгоритм позволяет определить приближённые значения всех действительных корней на отрезке [a, b]. Введя незначительные изменения в алгоритм,
его можно использовать для определения приближённого значения максимального или минимального корня.
Приращение неизвестного Δx не следует выбирать слишком большим,
чтобы не «проскочить» два корня.
Недостаток метода – использование большого количества машинного
времени.
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
1378
1
Root_Separation
2
Исходные данные:
a – начало отрезка поиска корней
b – конец отрезка поиска корней
Δx – шаг изменения неизвестного
Ввод
a, b, Δx
3
ya − значение функции в начале
поиска очередного корня
k − номер корня
x=a
ya= f(a)
k=0
нет
4
x≤b
да
5
x = x + Δx
6
y = f(x)
нет
7
y* ya ≤ 0
да
8
ya = y
k=k+1
9
Вывод
k, x – Δx,
x, y
Результаты:
k− номер корня
x - Δx – начало отрезка существования
корня;
x – конец отрезка существования
корня;
y – значение функции при x.
10
Конец
Рис. 3.3 Схема алгоритма отделения корней.
Алгоритмы вычислительной математики – курс лекций
1478
3.2. Алгоритмы уточнения корней уравнения.
Уточнение корня – это вычисление интересующего корня с заданной
точностью .
Приближённые значения корней уравнения, полученные на предыдущем
этапе, уточняются различными итерационными методами.
Рассмотрим некоторые из них.
3.2.1. Метод дихотомии (половинного деления, бисекций).
Постановка задачи:
Дано нелинейное уравнение (x = 0.
Корень отделен, т.е. известно, что x*  [a,b].
Требуется вычислить корень с заданной точностью ε.
Метод реализует стратегию постепенного уменьшения отрезка существования корня, используя факт изменения знака функции в окрестности корня.
Алгоритм метода.
1. Вычислить координату середины отрезка [a,b] x = (a+b)/2 и значение
(x в этой точке.
2. Уменьшить отрезок, отбросив ту его половину, на которой корня нет.
Если знак функции в начале отрезка и в его середине одинаков, то корень
находится на второй половине, первую половину можно отбросить, переместив начало отрезка в его середину:
если (a ·(x>0 => x* [x,b] => a=x, иначе x* [a, x] => b=x
3. Проверить условие завершения вычислений : длина отрезка не превышает
заданную точность и значение функции близко к 0 с заданной точностью:
b-a ≤ ε ∩ |(x| ≤ ε.
Если условие достигнуто, расчет завершен, иначе повторить алгоритм
сначала.

 концы отрезка [a,b]
 середина отрезка [a,b]
 x 
 a
x*
/
a
x
/
b
/
/
a
a
b
–
 b
1 итерация
2 итерация
3 итерация
...
Рис. 3.4 Геометрическая иллюстрация метода бисекций.
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
1
Входные данные:
 – заданная точность;
a – левая граница отрезка;
b – правая граница отрезка.
Bisection
2
ya =f(a)
yb =f(b)
3
yayb0
1578
нет
да
4
11
i=0
Вывод
"Корней нет"
5
i = i+1;
x =(a+b)/2
6
12
Stop
y=f(x)
7 yay>0
да
8
a=x
нет 9
нет
7
b=x
|y|/\ b-a<ε
да
10
Exit
Выходные данные:
x – приближенное значение корня;
y – значение функции при найденном корне х;
i – выполненное число итераций.
Рис. 3.5 Схема алгоритма метода бисекций (дихотомии)
Количество итераций n, требуемых для достижения требуемой точности ε
можно оценить заранее из соотношения
ba
  n n
2
ln
ba

ln 2
(3.6)
Метод дитохомии − простой и надежный метод поиска простого корня
любой функции, устойчивый к погрешности округления. Даже если на отрезке
есть несколько корней (нечетное количество),то будет найден один из них.
Недостатки метода: скорость сходимости низкая, не обобщается на систему уравнений.
Алгоритмы вычислительной математики – курс лекций
1678
Метод дихотомии нельзя использовать для уточнения не простого корня
− корень совпадает с точкой экстремума функции, т.к. в этом случае функция
не изменяет свой знак в окрестности корня.

(x
x*
x

0
Рис. 3.6. Непростой корень уравнения.
Пример 3.1. Требуется решить уравнение
x3+2x=1
Сначала нужно отделить решения.
Удобно записать уравнение в виде x3=1-2x и построить графики двух
элементарных функций 1(x= x3 и 2(x=1-2x
f
f1
1
x
-1
0
1
-1
f2
Рис. 3.7 Отделение корней уравнения x3 = 1 - 2 x.
Из графика следует, что корень один: x*  [0;1].
Проверим наличие корня на отрезке
(a = (0 = 03+2·0 = -1, (b = (1 = 13+2·1 = 2
Знаки на концах отрезка разные, следовательно, корень отделен верно.
Выполним несколько итераций уточнения корня.
1 итерация. Середина отрезка x = ( 0 + 1) / 2 = 0,5
Значение функции в середине (x=(0,5= 0,53+2·0,5-1=0,125>0
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
1778
Функция меняет свой знак на первой половине отрезка, следовательно,
корень на первой половине, поэтому отбросим вторую половину, переместив
конец отрезка в середину: x*  [0;0,5]
2 итерация. Середина отрезка x = ( 0 + 0,5) / 2 = 0,25
Значение функции в середине
(x=(0,25= 0,253+2·0,25-1=0,0115625-0,5=-0,484375
Функция не меняет свой знак на первой половине отрезка, поэтому отбросим ее: x*  [0,25;0,5]
Вычисления следует продолжить до достижения требуемой точности.
Например, если ε=0,001 то потребуется не менее 10 итераций:
n
ln
ba

ln 2
ln

1 0
0,001 ln 1000

 9,96
ln 2
ln 2
3.2.2. Метод простых итераций (метод последовательных приближений).
Метод реализует стратегию постепенного уточнения значения корня.
Постановка задачи. Дано нелинейное уравнение (3.1). Корень отделен x*
 [a;b]. Требуется уточнить корень с точностью ε.
Уравнение ( 3.1) преобразуем к эквивалентному виду x=φ(x),
(3.7)
что можно сделать всегда и притом множеством способов.
Выберем начальное приближение x0 [a;b].
Вычислим новые приближения:
x1=φ(x0)
x2=φ(x1)
………..
xi=φ(xi-1) , i=1,2,… где i − номер итерации.
(3.8)
Последовательное вычисление значений xi по формуле (3.8) называется
итерационным процессом метода простых итераций, а сама формула - формулой итерационного процесса метода.
Если lim xi  x , то итерационный процесс сходящийся .
*
i
'
Условие сходимости  ( x )  1x  [ a, b]
(3.9)
Точное решение x* получить невозможно, так как требуется бесконечный
итерационный процесс.
Алгоритмы вычислительной математики – курс лекций
1878
Можно получить приближенное решение, прервав итерационный (3.8)
при достижении условия
xi  xi 1   ,
(3.10)
где ε - заданная точность; i - номер последней итерации.
В большинстве случаев условие завершения итерационного процесса
(3.10) обеспечивает близость значения xi к точному решению:
x *  xi  
Рассмотрим геометрическую иллюстрацию метода простых итераций.
Уравнение (3.7) представим на графике в виде двух функций: y1 = x и
y2= φ(x).
Возможные случаи взаимного расположения графиков функций, и соответственно, видов итерационного процесса показаны на рис. 3.7 – 3.10.
y1=x
Y
y2=φ(x)
φ(x0
)
Итерационный процесс
монотонно сходится
из любой точки [a,b]
φ(x1
)
X
a
x*
x2
x1
b=x0
Рис. 3.7 Итерационный процесс для случая 0<  x <1
'
 x[a,b].
y1
Y
y2
Итерационный процесс
колебательно (около
корня x*) сходится из
любой точки [a,b]
Х
a =X 0
X2 X*
X1
b
Рис. 3.8 Итерационный процесс для случая -1<  x <1
'
 x[a,b].
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
y2=φ(x)
Y
1978
y1=x
Итерационный процесс
монотонно расходится для
любого x0 [a,b]
φ(x0)
φ(x2)
Х
x*
a x2 x1 x0
b
Рис. 3.9 Итерационный процесс для случая
 x' >1 
x[a,b].
y2
y1
Y
φ(x2)
Итерационный процесс колебательно (относительно корня x*)
расходится для любого x0 [a,b]
φ(x0)
φ(x1)
φ(x3)
Х
a
x2 x0 x* x1
x3
b
Рис. 3.10 Итерационный процесс для случая
 x'
-1
 x[a,b].
Из анализа графиков следует, что скорость сходимости растет при
уменьшении значения
 'x
Метод достаточно прост, обобщается на системы уравнений, устойчив к
погрешности округления (она не накапливается).
При разработке алгоритма решения нелинейного уравнения методом
простых итераций следует предусмотреть защиту итерационного процесса от
зацикливания: использовать в качестве дополнительного условия завершения
итерационного процесса превышение заданного максимального числа итераций.
Алгоритмы вычислительной математики – курс лекций
2078
1
Iterations
2
Входные данные:
 – заданная точность;
imax– заданное число итераций;
x0 – начальное значение корня.
i=0
3
i=i+1
x0=x
4
x=φ(x0)
нет
5 |x- x0|< 
i > imax
6
7
да
F=(x)
Выход
Выходные данные:
x – приближенное значение корня;
i – выполненное число итераций;
F – значение функции при найденном корне.
Рис 3.11. Алгоритм решения нелинейного уравнения методом
простых итераций:
Основной проблемой применения метода является обеспечение сходимости итерационного процесса: нужно найти такое эквивалентное преобразование (3.1) в (3.7), чтобы обеспечивалось условие сходимости (3.9) .
Простейшие эквивалентные преобразования, например:
f(x) = 0 => x+f(x) = x, т.е. φ(x) = x + f(x)
или выразить явно x из (3.1)
f(x) = 0 => x - φ(x) = 0 => x = φ(x)
не гарантируют сходимость.
Рекомендуется следующий способ получения формулы сходящегося итерационного процесса.
Пусть f ' ( x)  0x  [a, b] .
Если это не так, переписать уравнение (3.1) в виде
 f ( x)  0
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
2178
Умножить обе части уравнения на   (  0) и к обеим частям прибавить x:
x  x  f ( x )   ( x )
Константу  вычислить по формуле:

1
max f ' ( x)
(3.11)
x[ a ,b ]
Такое значение λ гарантирует сходящийся итерационный процесс по
формуле
xi = xi+1− λ f(x)
(3.12)
где i=1,2,… - номер итерации, x0[a,b] – начальное приближение.
Пример 3.2.
Методом простых итераций уточнить корень уравнения x3=1-2 x с точностью ε=0,001. Корень отделен ранее (см. пример 3.1), x*  [0;1].
Сначала нужно получить формулу сходящегося итерационного процесса.
Из уравнения выразим явно x:
x
1
(1  x 3 )   ( x)
2
Проверим условия сходимости для полученной формулы:
3
2
 'x   x 2 ,
 '( 0 )  0 ,
 '(1)  
3
2
 ' x  1 для x  (0;1].
Условие сходимости не соблюдается, полученная формула не позволит
уточнить корень.
Воспользуемся описанным выше способом получения формулы итерационного процесса (формулы 3.11, 3.12).
2
f ( x)  x 3  2 x  1  0 , f '( x )  3x  2 , f ' ( x )  0 для всех x  [0;1].
Наибольшее значение f '( x ) принимает при x = 1, т.е.
max
x[ 0,1]
f '( x )  f '(1)  3  12  2  5
Следовательно  
1
 0,2 .
5
Формула сходящегося итерационного процесса
Алгоритмы вычислительной математики – курс лекций
2278
xi  xi1  0,2( xi31  2 xi1  1),
i  1,2,..
Уточним корень с помощью данной формулы.
Выберем начальное приближение на [0;1], например x0=0,5 (середина отрезка).
Вычислим первое приближение
x1  x0  0,2( x03  2 x0  1)  0,5  0,2(0,53  2  0,5  1) 
 0,5  0,2(0,125  1  1)  0,5  0,2  0,125  0,475
Проверим условие завершения итерационного процесса
x1  x0  0,475  0,5  0,025  
Расчет следует продолжить.
x2  x1  0,2( x13  2 x1  1)  0,475  0,2(0,4753  2  0,475  1) 
 0,475  0,2(0,107172  0,95  1)  0,475  0,2  0,057172 
 0,475  0,011434  0,463566
x2  x1  0,463566  0,475  0,011434  
x3 = 0,458216
x4 = 0,455688
x5 = 0,454488
x6 = 0,453917 − ответ, т.к. x6  x5  0,000571  
Проверим полученное значение, подставив в исходное уравнение:
f ( x6 )  0,453917 3  2  0,453917  1  0,093525  0,907834  1  0,001359
Значение f(x) близко к 0 с точностью, близкой к ε, следовательно, корень
уточнен правильно.
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
2378
3.2.3 Метод Ньютона (касательных).
Постановка задачи.
Дано нелинейное уравнение (3.1) f(x)=0. Корень отделен x*  [a;b]. Требуется уточнить корень с точностью ε.
Метод основан на стратегии постепенного уточнения корня. Формулу
уточнения можно получить из геометрической иллюстрации идеи метода.
f
f(x)
A
x*
a
0
C
*
x1
B
x0
x
b
Рис. 3.12. Геометрическая иллюстрация метода Ньютона.
На отрезке существования корня выбирается начальное приближение x0.
К кривой f(x) в точке А с координатами (x0, f(x0)) проводится касательная.
Абсцисса x1 точки пересечения этой касательной с осью ОХ является новым
приближением корня.
Из рисунка следует, что x1 = x0 − CB
Из ∆ABC: CD=
AB
. Но tgACB  f ' ( x0 ),
tgACB
Следовательно, x1  x0 
AB  f ( x0 ) .
f ( x0 )
f ' ( x0 )
Аналогично, для i-го приближения можно записать формулу итерационного процесса метода Ньютона:
xi  xi 1 
f ( xi 1 )
, i  1,2,... ,
f ' ( xi 1 )
Условие окончания расчета:
где   xi 1  xi 
где x0  [a;b].
(3.13)
  ,
(3.14)
f ( xi 1 )
−корректирующее приращение или поправка.
f ' ( xi 1 )
Условие сходимости итерационного процесса:
f ( x)  f ' ' ( x )  ( f ' ( x ) ) 2 x  [a, b]
(3.15)
Алгоритмы вычислительной математики – курс лекций
2478
Если на отрезке существования корня знаки f ' ( x ) и f ' '( x ) не изменяются, то начальное приближение, обеспечивающее сходимость, нужно выбрать из
условия
f ( x0 )  f ' ' ( x0 )  0 , x0[a;b].
(3.16)
т.е. в точке начального приближения знаки функций и ее второй производной
должны совпадать.
f
f(x)
x*
a
b
x
x1 x0
0
Рис. 3.13. Геометрическая иллюстрация выбора начального приближения:
график f(x) вогнутый, f ' ' ( x )  0 , тогда x0=b, т.к. f(b)>0.
Если же выбрать x0=a, то итерационный процесс будет сходиться медленнее или даже расходиться (см. касательную для x0=a).
f
f(x)
a
0
b
x
x*
●
Рис. 3.14. Геометрическая иллюстрация выбора начального приближения:
график f(x) выпуклый, f ’’(x)<0 , тогда x0 =a, т.к. f(a)<0.
Метод Ньютона в отличие от ранее рассмотренных методов используют
свойства функции в виде значения производной, что значительно ускоряет
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
2578
итерационный процесс. При этом, чем больше значение модуля производной в
окрестности корня (чем круче график функции), тем быстрее сходимость.
1
Входные данные
a – левая граница отрезка;
b – правая граница отрезка;
 – заданная точность.
imax –максимальное число итераций
Newton
2
fa=f(a)
f2a=f’’(a)
3
fa· f2a>0
да
44
нет
5
x=a
x=b
6
i=0
77
i=i+1
fx =f(x)
f1x=f ’(x)
8

f ( x)
f ' ( x)
9
x=x-
нет
10
i>imax 
| |<ε  |fx|≤ε
да
11
Выход
Выходные данные:
x – приближенное значение корня;
fx – значение функции при x;
– достигнутая точность;
i–количество выполненных итераций.
Рис 3.15. Схема алгоритма метода Ньютона:
Достоинства метода: высокая скорость сходимости; обобщается на системы уравнений.
Недостатки: сложный, т.к. требуется вычисление производных; сильная
зависимость сходимости от вида функции и выбора начального приближения.
Алгоритмы вычислительной математики – курс лекций
2678
Пример 3.3.
Методом Ньютона уточнить корни уравнения x3 = 1− 2x с точностью
ε=0,001. Корень отделён ранее (пример 3.1), x*  [0,1].
Сначала нужно выбрать начальное приближение.
f(x) = x3+ 2 x−1
f ’(x) = 3 x2 +2
f ’’(x) = 6 x
Производные имеют постоянный знак на отрезке (0,1], поэтому для выбора начального приближения достаточно использовать условие (3.16).
Знак второй производной на отрезке положительный, следовательно
x0 = b = 1, т.к. f(b) = f(1) = 13+2·1−1 = 2 > 0
Вычислим несколько приближений:
x1 = x 0 
f ( x0 )
13  2  1  1
2
 1
 1   0,6
2
f ' ( x0 )
5
3 1  2
f ( x1 )
0,63  2  0,6  1
 0,6 
 0,6  0,135065  0,464935
x2 = x1 
f ' ( x1 )
3  0,6 2  2
x3 =0,464935−0,011468=0,453467
x3 =0,453463−0,0000695=0,453398
Решение получено за 4 итерации, так как поправка стала меньше заданной точности: 0,0000695 < ε.
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
2778
Тема 4
Решение систем линейных уравнений.
Дана система линейных уравнений (СЛУ) с n неизвестными:
a11x1  a12 x 2  ...  a1n x n  b1
a 21x1  a 22 x 2  ...  a 2n x n  b 2
(4.1)
...
a n1x1  a n2 x 2  ...  a nn x n  b n
В матричной форме записи система (4.1) имеет вид:
AXB
(4.2)
где : n – порядок системы;
 a11

a
A   21
...

a
 n1
 b1 
 
b 
B   2
...
 
b 
 n
a12 ... a1n 

a 22 ... a 2n 
 – матрица коэффициентов системы;

a n2 ... a nn 
 x1 
 
x 
– вектор свободных членов; X   2  – вектор неизвестных;
...
 
x 
 n
В свернутой форме записи СЛУ имеет вид:
n
a
j i
i, j
 x j  bi ;
i  1, n
(4.3)
Система называется обусловленной (не вырожденной, не особенной), если определитель системы   0, и тогда система (4.1) имеет единственное
решение.
Система называется не обусловленной (вырожденной, особенной), если
 = 0, и тогда система (4.1) не имеет решений или имеет бесконечное множество решений.
На практике коэффициенты системы aij и свободные члены bi часто задаются приближенно, с некоторой неустранимой погрешностью. Поэтому, кроме
существования и единственности решения СЛУ, важно еще знать, как влияет
такая погрешность на получаемое решение.
Система называется плохо обусловленной, если неустранимая погрешность оказывает сильное влияние на решение; у таких систем определитель
близок, но не равен 0.
Рассмотрим пример плохо обусловленной системы.
Дана система
x 1  0x 2  1
x 1  0,001x 2  1
ΔA  detA 
1
0
1 0,001
Решение x 1*  1; x *2  0.
Пусть b2 имеет неустранимую погрешность  1 %.
 0.001  0
Алгоритмы вычислительной математики – курс лекций
2878
Если b2 = 1,01, то x 1*  1; x *2  10.
Если b2 = 0,99, то x1*  1; x *2  10.
Решение изменяется очень сильно, следовательно, система плохо обусловлена, о чем говорит значение её определителя.
Рассмотрим геометрическую иллюстрацию обусловленности СЛУ на
примере системы двух уравнений с двумя неизвестными:
a11 x1+ a12 x2 = b1
уравнение (I)
a21 x1+ a22 x2= b2
уравнение (II)
x2
(II) ΔA≠0
(I)
(I) = (II)
x2*
(II)
ΔA=0
ΔA≈0
(II)
(I)


x1
x1*
Рис. 4.1. Геометрическая иллюстрация обусловленности СЛУ.
Каждому уравнению в плоскости (x1,x2) соответствует прямая, а точка пересечения этих прямых является решением этой системы. Если ΔA = 0, то
наклоны прямых одинаковы, и они либо параллельны (т.е. не имеют решения),
либо совпадают (имеют бесконечное множество решений). Если ΔA  0, то
прямые имеют единственную точку пересечения.
Но если система плохо обусловлена (∆А≈0), даже незначительное изменение одного из коэффициентов приведет к сильному изменению решения системы, т.к. прямые почти параллельны.
Для решения СЛУ широко применяться прямые и итерационные методы.
Область применения некоторых из них показана в таблице.
Тип
Название метода
Формулы Крамера
Прямые
Итерационные
Исключения Гаусса
Простых итераций
Гаусса-Зейделя
Число арифметических
действий (при n = 20)
~ n!n 2 ( 9,7  1020 )
~
2 3
n  n 2 (5733)
3
~ n² на каждой итерации (400n)
Область
примененения
n<5
n<200
до 105
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
2978
Современная супер-ЭВМ имеет производительность 30 терафлоп –
30·10 операций с вещественными числами в секунду. Такой машине для решения СЛУ для n=20 по формуле Крамера требуется:
12
t
9,7  10 20
30  1012  365  24  60  60
 1,03 года.
На решение СЛУ прямым методом сильное влияние оказывает погрешность округления, т.к. требуется огромное количество арифметических действий.
На решение СЛУ итерационным методом погрешность округления практически не влияет, но не всегда удается обеспечить сходимость итерационного
процесса.
4.1. Формулы Крамера.
xi* = i / , i = 1, n, 1
(4.4)
где Ai – вспомогательная матрица, полученная из A заменой i-го столбца
вектором свободных членов.
Пример 4.1. Решить СЛУ, используя формулы Крамера.
x1 + 5x2 x3 = 2
x1
2x3 = -1
2x1 x2 – 3x3 = 5
Вычислим определители по правилу треугольников:
1
5
 = 1
0
1
2 = 0 + 1 + 20 + 0 + 15 + 2 = 38 – система обусловлена.
2 1  3
2
5
1
1 =  1 0
2 = 0 + 50 - 1 - 0 + 4 - 15 = 38
5
1  3
1
2
1
2 = 1  1 2 = 3 + 8 – 5 – 2 + 6 - 10 = 0
2
5
3
1
5
2
3 = 1 0  1 = 0 - 10 – 2 – 0 -25 - 1 = -38
2 1
5
Вычислим решения:
x1* = 1 /  = 38/38 = 1;
x2* = 2 /  = 0/38 = 0;
x3* = 3 /  =-38/38 = -1.
3078
Алгоритмы вычислительной математики – курс лекций
Проверим полученное решение подстановкой в исходную систему.
1 + 50 – (-1) = 2
1 + 2(-1) = -1
21 – 0 – 3(-1) = 5
Система обращается в тождество, решение верное.
Формулы Крамера применяться редко, только для n≤4.
4.2. Метод исключений Гаусса.
Решим рассмотренную ранее систему (пример 4.1) методом исключения
Гаусса.
Пример 3.2. Решение проводиться в два этапа.
1 этап Прямой ход - матрица A преобразуется к треугольному виду: путем эквивалентных линейных преобразований уравнений системы поддиагональные коэффициенты матрицы А обнуляются.
x1 + 5x2 x3 = 2
x1
2x3 = -1
2x1 x2 – 3x3 = 5
Исключим x1 из 2-го и 3-го уравнения: ко 2-му уравнению прибавим 1-ое,
умноженное на (-1); к 3-му уравнению прибавим 1-ое, умноженное на (-2).
x1 + 5x2 x3 = 2
- 5x2 + 3x3 = -3
- 11x2 –
x3 = 1
Исключим x2 из 3-го уравнения: к 3-му уравнению прибавим 2-ое, умноженное на (-11/5). Полученный вид системы после прямого хода
x1 + 5x2 x3 = 2
- 5x2 + 3x3 = -3
– 38/5x3 = 38/5
2 этап Обратный ход - вычисляются значения неизвестных, начиная с
последнего уравнения:
x3* = -1
-5x2 + 3x3*=-3  x2*=(3 + 3x3*)=(3 + 3(-1))=0
x1 +5x2* - x3*=2  x1*=2 + 5x2* + x3*=2 + 50 + (-1)=1
Полученное решение нужно обязательно проверить, подставив в исходную систему!
Словесное описание алгоритма метода исключения Гаусса. Схема алгоритма приведена на рисунках 4.1-4.6.
Алгоритм прямого хода:
Шаг 1. Примем k=1
Шаг 2. Выбираем рабочую строку.
Если akk ≠ 0, то k-ая строка – рабочая.
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
3178
Если нет, меняем k-ю строку на m-ю (n≥m>k), в которой amk ≠ 0,
m  k  1, n . Если такой строки нет, система вырожденная, решение прекратить.
Шаг 3. Для строк i=k+1, k+2, …, n вычисляются новые значения коэффициентов.
a
q i  ik , a ij  a ij  q i a kj , j  k, n и новые правые части bi  bi  qi bk
a kk
Шаг 4. Увеличиваем k = k + 1. Если k = n, прямой ход завершен, иначе алгоритм повторяется со второго шага.
Получаем верхнюю треугольную матрицу А:
 a11 a12

 0 a 22
A
...

 0
0

a13 ... a1n 
 b1 

 
a 23 ... a 2n 
 b2 
B

,

 ... 

 
b 
0 ... a nn 
 n
Алгоритм обратного хода:
Шаг 1. Вычислим x *n 
bn
a nn
Шаг 2. Вычислим:
n
1
*
xi 
(b 
a ij x *j ) , i  n  1, n  2,...,1
* i
a ii
j i 1

1
Gauss
2
Запоминание исходных коэффициентов системы
Входные данные:
n – размерность системы;
A – матрица коэффициентов;
B – свободные члены.
3
1
Прямой ход
4
Обратный ход
5
Расчет невязок
 = ( δi)n
6
Выход
Выходные переменные:
X = (xi)n– решение системы;
 = I , i=1,2,…,n - невязки.
Алгоритмы вычислительной математики – курс лекций
3278
Рис. 4.1. Основной алгоритм решения СЛУ методом исключения Гаусса.
Для контроля правильности решения нужно считать невязки δi по формуле (4.5).
δi  b i 
n
a x
j1
ij
*
j
, i  1, n
(4.5)
Если невязки велики, задача решена неверно. Причиной может быть
сбой машины (крайне редко), ошибки в программе, погрешность округления
(при большом n и когда  = detA = 0- система плохо обусловлена).
Разновидности метода исключения:
а) Метод исключения Гаусса с выбором главного элемента в столбце.
В алгоритме прямого хода на шаге 2 рабочая строка выбирается из условия
am,k  max | a j ,k | ,
j k ,n
т.е. рабочей выбирается та строка, в которой находится наибольший по модулю
коэффициент k-го столбца, расположенный на главной диагонали и под ней.
б) Метод Гаусса-Жордана.
В алгоритм прямого хода нужно внести следующие изменения:
- на шаге 3 i  1, k - 1, k  1, n
- на шаге 4 прямой ход завершиться при достижении условия k>n.
Вид матрицы коэффициентов после прямого хода
 a 11

 0
A   0

 ...
 0

0
0
a 22
0
0
a 33
0
0
0 

... 0 
... 0 


... a nn 
...
Упрощается обратный ход: xi =bi / ai,i , i =1,2,…,n
Недостаток метода – увеличение общего числа действий, и соответственно, влияния погрешности округления.
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
3378
k=1,n-1,1
i=1,n,1
Выбор рабочей строки
j=1,n,1
i=k+1,n,1
a ij0  a ij
q
a ik
a kk
bi0  bi
j=k,n,1
aij=aij - qakj
bi=bi - qbk
Рис. 4.2. Алгоритм прямого хода
Рис. 3. Алгоритм запоминания
коэффициентов.
3478
Алгоритмы вычислительной математики – курс лекций
нет
akk=0
да
m=k + 1
нет
m≤n 
amk=0
да
Определение номера
строки m, в которой
коэффициент в к-ом
столбце не равен нулю.
m=m+1
нет
m>n
да
Вывод "Система не
обусловлена
”
Stop
Завершение алгоритма при отсутствии ненулевых
элементов под
главной диагональю в к-ом столбце.
j=1,n,1
R=amj
amj=akj
akj=R
Перестановка
элементов строк
с номерами
mиk
R=bm
bm=bk
bk=R
Рис. 4.5. Алгоритм выбора рабочей строки.
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
3578
xn=bn/ann
i=1,n,1
i=n-1,1,-1
s=0
s=0
j=1,n,1
j=i+1,n,1
s=s + aij0 xj
s=s+aijxj
δi = bi0 - s
xi=(bi-s)/aii
Рис. 4.6. Алгоритм расчета невязок
Рис. 4.5. Алгоритм обратного хода.
Нужно подчеркнуть, что для вычисления значения определителя квадратной матрицы можно использовать алгоритм прямого хода: для треугольной или
диагональной квадратной матрицы определитель равен произведению элементов главной диагонали.
Алгоритмы вычислительной математики – курс лекций
3678
4.3. Метод простых итераций.
Рассмотрим особенности решения СЛУ методом простых итераций на
примере.
Пример 4.3. Требуется найти решение системы с точностью ε=0,001.
x1 + 5x2 x3 = 2
x1
2x3 = -1
2x1 x2 – 3x3 = 5
Приведем систему к новому, каноническому виду метода простых итераций. Для этого нужно преобразовать исходную систему так, чтобы в каждой
строке новой матрицы А коэффициент, расположенный на главной диагонали,
превышал по абсолютной величине сумму абсолютных значений остальных коэффициенты в этой сроке.
При выполнении эквивалентных линейных преобразований системы
нужно соблюдать следующие требование: каждое уравнение исходной системы
должно участвовать хотя бы в одном преобразовании.
В первом уравнении исходной системы коэффициент при х2 больше суммы модулей других коэффициентов: 5> 1+1. Поэтому это уравнение в новой
системе нужно записать вторым уравнением. Для получения нового первого
уравнения можно второе уравнение умножить на 2 и сложить с третьим уравнением. Для получения нового третьего уравнения можно из третьего уравнения вычесть второе.
В итоге описанных преобразований получиться следующая система:
4x 1

x2

x3

3
x1

5x 2

x3

2
x1

x2
 5x 3

6
Важно отметить, что подобные преобразования не меняют решения системы.
Выразим явно из каждого нового уравнения очередное неизвестное – получим формулы итерационного процесса.
1
(3  x 2  x 3 )
4
1

(2  x 1  x 3 )
5
1
  (6  x 1  x 2 )
5
x1 
x2
x3
x 1(0)
()
(0)
(0)
(0)
(0)
Возьмем любое начальное приближение X  (x 1 , x 2 , x 3 ) , например
(0)
 0, x (0)
2  0, x 3  0 .
(1)
(1)
(1)
(1)
Вычислим новое приближение решения X  (x 1 , x 2 , x 3 ) , подставив
в правую часть () начальное приближение:
1
3
(0)
x 1(1)  (3  x (0)
 0,75
2  x3 ) 
4
4
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
x (1)

2
3778
1
2
(2  x 1(0)  x 3(0) ) 
 0,4
5
5
1
6
(6  x 1(0)  x (0)
 1,2
2 )  
5
5
Оценим достигнутую точность δ по формуле:
(0)
(1)
(0)
δ max x i(1)  x i(0)  max x1(1)  x1(0) , x (1)
 max 0,75;0,4;1 ,2  1,2
2  x 2 , x3  x3
x 3(1)  

i 1,3

Итерационный процесс нужно продолжить, т.к. δ > ε.
(2)
Вычислим второе приближение X (2)  (x 1(2) , x (2)
2 , x 3 ) , подставив в правую
часть () первое приближение:
1
1
4,6
(1)
x 1(2)  (3  x (1)
(3  0,4  1,2) 
 1,15
2  x3 ) 
4
4
4
1
1
0,05
x (2)
(2  x 1(1)  x 3(1) )  (2  0,75  1,2) 
 0,01
2 
5
5
5
1
1
5,65
x 3(2)   (6  x 1(1)  x (1)
 1,13
2 )   (6  0,75  0,4)  
5
5
5
δ max x i(2)  x i(1)  max | 1,15 - 0,75 |; | 0,01 - 0,4 |; | -1,13  1,2 |  0,4
i 1,3
Третье приближение:
1
4,14
(3  0,01  1,13) 
 1,0350
4
4
1
0,28
 (2  1,15  1,13)  
 0,056
5
5
1
4,86
  (6  1,15  0,01)  
 0,972
5
5
x 1(3) 
x (3)
2
x 3(3)
δ 0,158
Четвертое приближение:
(4)
x 1(4)  1,007, x (4)
2  0,0014, x 3  0,9818,
δ 0,0546
Очевидно, что итерационный процесс сходиться, т.к. значение δ монотонно убывает. Для достижения требуемой точности ε=0,001 потребуется еще
несколько итераций.
Скорость сходимости зависит от уровня преобладания значений диагональных коэффициентов.
Основные расчетные зависимости метода простых итераций:
Формула итерационного процесса:
x
(k)
i
n
1

(b i   a ij  x (kj 1) ) , i  1, n
a ii
j1
(4.6)
i j
где: k = 1, 2, … – номер приближения.
x i(0) – начальное приближение, i  1, n ;
Условия завершения итерационного процесса:

где
(4.7)
 – требуемая точность;
Алгоритмы вычислительной математики – курс лекций
3878
x i(k)  x i(k 1)
 – оценка достигнутой точности,   max
i 1,n
(4.8)
1 n (k)
x i  x i(k 1)
(4.9)

n i1
Условие сходимости итерационного процесса (условие преобладания
диагональных коэффициентов):
или  
n
a ii   a ij
j1
i j
 i  1, n
(4.10)
Схема алгоритма метода представлена на рис. 4.7.
Если в полученных результатах значения δ >  и k > kmax, то задача не решена, т.е. x(1:n) не является решением системы. Необходимо проверить условия сходимости или увеличить kmax.
4.4 Метод Гаусса-Зейделя
В формуле итерационного процесса метода простых итераций (4.6) к моменту вычисления xi(k) уже вычислены значения x1(k),x2(k),...,xi-1(k).
Очевидно, что эти значения в большинстве случаев ближе к решению и
их можно использовать для вычисления xi(k). Исходя из этого, Гаусс и Зейдель
предложили видоизмененную формулу итерационного процесса
X
(k )
i
i 1
n
1
k

(bi   ai , j x j   ai , j x kj 1 ),
ai ,i
j 1
j 11
i  1, n
(4.11)
Условие завершения итерационного процесса (4.7) и условия сходимости
(4.10) справедливы и для данного метода. Поэтому схема алгоритма ГауссаЗейделя отлична только формулой расчета нового приближения:
n
1
xi 
(bi   ai , j x j ),
ai ,i
j 1
i  1, n
i j
Метод этот, как правило, позволяет достичь требуемой точности ε за
меньшее число итераций, т.е. имеет лучшую сходимость.
Достоинства итерационных методов:
1. Погрешность округления не накапливается от итерации к итерации.
2. Число итераций при n>100 обычно меньше n , поэтому общее число действий меньше n3, т.е. меньше, чем в методе исключений Гаусса.
3. Не требуется больший объем памяти.
4. Итерационные методы особенно выгодны для систем с большим количеством нулевых коэффициентов (систем с разряженной итерацией). Методы исключения наоборот: чем больше нулей, тем чаще требуется выбирать новую
рабочую строку.
Недостаток - не всегда можно обеспечить сходность итерационного процесса. С увеличением размерности системы труднее выполнить линейные преобразования для обеспечения сходимости.
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
1
SimpleIterations
2
K=0
3
xi = 0
i  1, n
3978
Входные данные:
n – порядок системы;
a (1:n,1:n), b (1:n) - коэффициенты системы в
каноническом виде;
– точность задания;
кmax– максимальное число итераций.
Задаётся нулевое начальное приближение
4
k=k+1
x0i =xi,
i=1,2,…,n
Увеличивается счётчик итераций
Запоминается старое приближение
5
Вычисление
нового приближения
n
1
xi 
(b i   a ij  x0 j ), i  1,2,..., n
a ii
j1
i j
6
Оценка
достигнутой
точности
нет
7
δ ≤ 
k>kmax
8
да
Выход
1 n
   x i  õ0i или   max x i  õ0 i
i 1,n
n i1
Завершение по точности или
по превышению числа итераций
Выходные данные:
к – число итераций
 - достигнутая точность
x(1:n) – приближенное решение
Рис. 4.7. Схема алгоритма метода простых итераций
4078
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
Тема 5
Решение систем нелинейных уравнений (СНУ).
При моделировании задача нахождения решения системы алгебраических
или трансцендентных уравнений является распространенной вычислительной
задачей. Например, к решению таких систем сводятся расчеты фазового и химического равновесия многокомпонентных смесей, расчеты статических режимов многих технологических процессов и др.
Запишем систему n нелинейных уравнений с n неизвестными (СНУ) в
общем виде:
f1(x1, x2, …, xn) = 0
f2(x1, x2, …, xn) = 0
(5.1)
…
fn(x1, x2, …, xn) = 0
Эту систему можно записать в компактной, операторной форме:
F(X) = 0
(5.2)
где
 f1 
f 
F   2
 ... 
 
f n 
вектор-функция
 x1 
x 
X   2
 ... 
 
x n 
вектор неизвестных

Решением системы называется набор значений x i , i  1, n (вектор X*),
при которых все функции fi равны 0 (система (5.1) обращается в тождество.)
СНУ могут иметь единственное решение, множество решений или вообще не иметь его. Поэтому численное решение СНУ проводят в два этапа:
1 этап – отделение решений.
2 этап – уточнение всех или только нужных решений.
5.1. Отделение решений.
Отделить решения – значит установить количество решений, определить приближенные значения каждого из них или указать область, в которой
решение существует и является единственным.
Задача отделения решений достаточно просто решается только для системы двух уравнений с двумя неизвестными.
f1(x1, x2) = 0
f2(x1, x2) = 0
Для этого необходимо в координатах (x1, x2) построить кривые
f1(x1,х2) = 0, f2(x1,х2) = 0.
Точки пересечения этих кривых являются решениями системы. Так
как координаты точек пересечения определяются приближенно, целесообразно
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
4178
говорить об области существования решения D. Эта область задается интервалами по каждой координате, внутри которых находятся искомые значения неизвестных.
f2(x1,х2)=0
x2
Имеется два решения.

D1 – область существования
первого решения.
D1
b2
x2*
a2

0
a1 x 1 * b 1
f1(x1,х2)=0
D1 = {a1 < x 1< b1 , a2 < x 2< b2}.
x1
Рис. 5.1. Графическое отделение решений СНУ.
Для систем с большим числом неизвестных (n  3) удовлетворительных общих методов определения области существования решения нет. Поэтому при решении СНУ эта область обычно определяется при анализе решаемой задачи, например, исходя из физического смысла неизвестных.
Отделение решений позволяет:
1. Выявить число решений и область существования каждого из них.
2. Проанализировать возможность применения выбранного метода решения
СНУ в каждой области.
3. Выбрать начальное приближение решения X(0) из области его существования, так что X(0)D.
При отсутствии информации об области существования решения СНУ
выбор начального приближения X(0) проводиться методом проб и ошибок (методом “тыка”).
Пример 5.1. Отделить решения системы
x2 + y2=1
ln(x)+2y=-1
Запишем систему в стандартном виде (5.1).
f1 (x 1 , x 2 )  x12  x22  1  0
f 2 (x 1 , x 2 )  ln(x 1 )  2 x2  1  0
Область определения функций
D f1  {| x1 | 1, | x2 | 1}
D f2  {x1  0, x2  R}
Очевидно, что решения могут быть только в общей области определения
этих функций.
D0  D f1  D f 2  {0  x1  1; | x2 |  1}
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
4278
Решения существуют, т.к. D0 ≠ .
Для отделения решения нужно построить графики функций в общей области определения.
График первой функции – окружность единичного радиуса с центром в
начале координат.
Для построения графика второй функции нужно вычислить значение
1
x 2   (1  ln x1 ) в нескольких точках общей области определения D0:
2
- при x1 = +0 (очень маленькое положительное число) х2 = +.
1
2
1
e
1
2
- при x1 = (1/е) ≈ 0,33 x2   (1  ln )   (1  1)  0. .
1
2
1
2
- при x1 = 1 x2   (1  ln 1)   .
1
2
1
2
1
2
- при x1 = 0,5 x2   (1  ln )   (1  0,693)  0,153.
x2
+1
f1
0
x1
0,5
1
.
f2
Имеются два решения.
Область существования первого
решения
D1  {0  x1  0,2; 0,8  x2  1} ,
второго решения
D2  {0,8  x1  1;  0,5  x2  0,3} .
Точность отделения решений зависит от точности построения графиков.
-1
5.2. Методы уточнения решений СНУ.
Уточнение интересующего решения до требуемой точности ε производится итерационными методами.
Основные методы уточнения решений СНУ получены путем обобщения
итерационных процессов, используемых при решении одного нелинейного
уравнения.
5.2.1. Метод простых итераций.
Как и в случае одного уравнения, метод простых итераций заключается в
замене исходной системы уравнений (5.1) эквивалентной системой
X=Φ(X)
(5.3)
и построении итерационной последовательности
X(k) = Φ(X(k-1)) , где k=1,2,3,… - номер итерации,
(5.4)
которая при k→∞ сходится к точному решению.
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
1 
 
   2
 ...  - итерирующая вектор-функция, X(0)
 
 n  приближение решения.
Здесь
4378
 D – начальное
В развернутом виде формула итерационного процесса (выражение для
вычисления очередного k-го приближения решения) имеет вид:
xi.(k) = φi(x1(k-1), x2(k-1), … , xn(k-1)), i  1, n .
(5.5)
Условие окончания расчета
δ≤ε
(5.6)
где ε  заданная точность решения;
| xi( k )  xi( k 1) |
δ = max
i 1, n
(5.7)
или
1 n
(k )
( k 1)
|
δ =  | xi  xi
(5.8)
n i 1
Итерационный процесс (5.5) сходиться к точному решению, если в окрестности решения соблюдаются условия сходимости:
i
n
 x
j 1
 1, i  1, n
(5.9)
j
или
n
i
 x
i 1
 1, j  1, n
(5.10)
j
Таким образом, для уточнения решения СНУ методом простых итераций
нужно найти такое эквивалентное преобразование (5.1) в (5.3), чтобы в области
существования решения выполнялись условия (5.9) или (5.10).
В простейшем случае эквивалентную систему можно получать как:
x i  x i  f i (x1 , x 2 ,..., x n )  i (x1 , x 2 ,..., x n ) ,
i  1, n
Можно выделить (не обязательно явно) все неизвестные из уравнений системы так, что:
x i  i (x1 , x 2 ,..., x n )  f i (x1 , x 2 ,..., x n )  0 ,
i  1, n
Как и в случае одного уравнения задачу поиска эквивалентного преобразования можно свести к задаче определения (в простейшем случае подбора)
значений констант i ≠ 0, i  1, n , обеспечивающих сходимость
f i ( x)  0  i  f i ( x)  0  xi  xi  i  f i ( x), i  1, n
4478
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
 i (x)
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
1
Iteration
2
4578
Входные данные:
n – размерность системы;
ε – заданная точность;
kmax – максимальное число итераций;
X (1:n) – начальное приближение X(o).
k=0
Обнуление счетчика итераций
k=k+1
Увеличение номера итераций.
3
4
yi = xi
i  1, n
5
Вычисление
нового приближения
6
Оценка достигнутой
точности
нет
Запоминается старое приближение.
x1  1 (y1 , y 2 ,..., y n )
x 2   2 (y1 , y 2 ,..., y n ) .
..
x n   n (y1 , y 2 ,..., y n )
| xi  yi | или δ =
δ = max
i 1,n
1 n
 | xi  yi |
n i 1
7
δ ≤ ε \/
k > kmax
да
8
Выход
Выходные данные:
х(1:n) – приближенное решение;
δ – достигнутая точность;
k – выполненное количество итераций.
Рис. 5.1. Схема алгоритма метода простых итераций.
Сходимость метода простых итераций можно несколько улучшить, если
(K)
при вычислении очередного приближения x i использовать уже найденные
(K)
(K)
(K)
значения х1 , х 2 ,..., х i 1 .
Выражение для расчета очередного к-го приближения примет вид:
(K)
(K 1)
1)
x i(K)   i (x 1(K) , x (K)
,..., x (K
) , i  1, n ;
(5.11)
2 ,..., x i 1 , x i
n
Для реализации данного приема, аналогичного методу Гаусса-Зейделя
для систем линейных уравнений, в алгоритм расчета следует внести изменения:
формулу расчета очередного приближения (символ 5) записать как X=Φ(X) или
в развернутом виде:
xi  i (x1, x 2 ,..., x n ) ,
i  1, n
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
4678
Существуют и другие приемы улучшения сходимости метода простых
итераций. Например, новое приближение вычислять как среднее арифметическое двух предшествующих приближений:
x
(k)
i
x i(k 1)  x i(k  2)

, i  1, n
2
(5.12)
Можно использовать поправку Эйткена для улучшения сходимости:
x i(k)  x i(k 1) 
(x i(k 1)  x i(k  2) ) 2
, i  1, n
2x i(k  2)  x i(k 1)  x i(k  2)
(5.13)
Пример 5.2.
Методом простых итераций уточнить ранее (пример 5.1) отделенные решения системы уравнений:
x12+x22=1
ln x1+2x2= –1
Области существования решений:
D1 {0  x1  0,2;0,8  x2  1}, D2 {0,8  x1  1;0,5  x2  0,3}
Для получения эквивалентной системы из первого уравнения выразим x1
x 1  1  x 22  1 (x 1 , x 2 )
из второго уравнения x2
x2  0,5  (1  ln x1 )  2 ( x1 , x2 )
Определим частные производные:
1
1
x2
 2
1
x 1
 0;
x 2

1  x 22
;
x 1

2x 1
;
 2
 0;
x 2
Проверим условия сходимости в окрестности первого решения, взяв точку в центре области существования этого решения х1=0,1; х2=0,9.
1 1
x2

 0 

2
x 1 x 2
1 x2
0,9
1 - 0,9 2

0,9
0,19

0,9
 1;
0,436
Использовать полученную эквивалентную систему для уточнения первого решения нельзя, т.к. условия сходимости не соблюдаются.
Проверим условия сходимости для этой же эквивалентной системы в
окрестности второго решения: х1=0,9; х2=-0,4.
1 1
x2
0,4
0,4
0,4

 0 



 1;
x 1 x 2
0,84 0,917
1  x 22
1 - 0,4 2
 2  2
1
1
1

 0 


 1;
x 1
x 2
2 x1 2  0,9 1,8
Условия сходимости соблюдаются, следовательно полученную эквивалентную систему можно использовать для уточнения второго решения.
Выполним несколько итераций для уточнения 2-го решения:
Начальные значения k = 0 x1(0)  0,9 ; x (0)
2  0,4 ;
Первая итерация
k=1
2
2
x 1(1)  1  (x (0)
2 )  1  0,4  0,9165 ;
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
4778
( 0)
x (1)
2  0,5  (1  ln( x1 )  0,5(1  ln 0,9)  0,4473;
Вторая итерация
k=2
x 1(2)  1  0,4473 2  0,8944 ;
(1)
x (2)
2  0,5  (1  ln( x1 )  0,5(1  ln 0,9165)  0,4564;
Третья итерация
k=3
x 1(3)  1  0,4564 2  0,8898
x (3)
2  0,5(1  ln 0,8944)  0,4442;
Четвертая итерация
k=4
x 1(4)  1  0,4442 2  0,8959
x (4)
2  0,5(1  ln 0,8898)  0,4316;
Итерационный процесс сходиться, для достижения требуемой точности
нужно выполнить еще несколько итераций.
После 8-ой итерации х1=0,8956, х2=-0,4446, δ по формуле (5.7) равна
0,0005.
Рассмотрим использование приема Гаусса–Зейделя (5.11) для ускорения
итерационного процесса.
(0)
Начальные значения k = 0, x1  0,9 ; x (0)
2  0,4 ;
Первая итерация
k=1
2
x 1(1)  1  (x (0)
 1  0,4 2  0,9165 ;
2 )
(1)
x (1)
2  0,5  (1  ln( x1 )  0,5(1  ln 0,9165)  0,4564;
Вторая итерация
k=2
2
2
x 1(2)  1  (x (1)
2 )  1  0,4564  0,8898 ;
( 2)
x (2)
2  0,5  (1  ln( x1 )  0,5(1  ln 0,8898)  0,4416;
После 5 итерации получим следующие результаты: х1=0,8957, х2=-0,4449
δ=0,0006.
Для уточнения первого решения нужно найти другую формулу итерационного процесса.
Например, если из первого уравнения выразить х 2, а из второго х1 получим:
x2  1  x12   2 ( x1 , x2 )
x1  e 12 ( x2 )  1 ( x1 , x2 )
Проверка условий сходимости в окрестности первого решения показывает, что приведенные формулы можно использовать для уточнения первого решения.
1
 0;
x 1
1
 2е 12 х2 ;
x 2
Для х(0)=(0,1;0,9)
1
1
x1

x 2
 0  2е 120,9 
 2
 2
x1

 
0
x1
x 2
1  x12
 2
 2
x2
 0;

;
2

x
x 1
1 x2
2
2
 1;
e 2,8
0,1
2
1 - 0,1

0,1
 1;
0,99
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
4878
5.2.2. Метод Ньютона–Рафсона.
Идея метода заключается в линеаризации уравнений системы (5.1), что
позволяет свести исходную задачу решения СНУ к многократному решению
системы линейных уравнений.
Рассмотрим, как были получены расчетные зависимости метода.
Пусть известно приближение xi(k) решения системы нелинейных уравнений xi*. Введем в рассмотрение поправку xi как разницу между решением и
его приближением:
x i  x *i  x i(k)  x *i  x i(k)  x i , i  1, n
Подставим полученное выражение для xi* в исходную систему.
f1 (x 1(k)  Δx 1 , x (k)
x 2 , ... , x (k)
xn )  0
2 Δ
n Δ
f 2 (x 1(k)  Δx1 , x (k)
x 2 , ..., x (k)
xn )  0
2 Δ
n Δ
…
f n (x 1(k)  Δx1 , x (k)
x 2 , ..., x (k)
xn )  0
2 Δ
n Δ
Неизвестными в этой системе нелинейных уравнений являются поправки
xi. Для определения xi нужно решить эту систему. Но решить эту задачу так
же сложно, как и исходную. Однако эту систему можно линеаризовать, и, решив ее, получить приближенные значения поправок xi для данного приближения, т.е. xi(k). Эти поправки не позволяют сразу получить точное решение
x *i , но дают возможность приблизиться к решению, – получить новое приближение решения
x i(k 1)  x i(k)  x i(k) , i  1, n
(5.14)
Для линеаризации системы следует разложить функцию fi в ряды Тейлора
в окрестности xi(k), ограничиваясь первыми дифференциалами.
Полученная система имеет вид:
(k)
n
f i (x 1(k) , x (k)
(k)
2 ,..., x n )
x i(k)  f j (x 1(k) , x (k)
j  1, n
(5.15)

2 ,..., x n ) ,
x i
i 1
Все коэффициенты этого уравнения можно вычислить, используя последнее приближение решения xi(k). Для решения системы линейных уравнений
(5.15) при n=2,3 можно использовать формулы Крамера, при большей размерности системы n – метод исключения Гаусса.
Значения поправок используются для оценки достигнутой точности решения. Если максимальная по абсолютной величине поправка меньше заданной
точности , расчет завершается. Таким образом, условие окончания расчета:
(k)
δ = max x i  ε
i 1,n
Можно использовать и среднее значение модулей поправок:
1 n
   | xi |  
n i 1
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
4978
В матричной форме систему (5.15 ) можно записать как:
W(X (k) )  X (k)  F(X (k) )
(5.16)
где:
 f j
W(X)  
 x i
X (k)


 n,n
 f1

 x 1
  ...
 f n
 x
 1
f 1
x 2
...
f n
x 2
f 1
x n
... ...
f n
...
x n
...



 , - матрица Якоби (производных),



x 1(k) 
 (k) 
x
  2  - вектор поправок
 ... 
 (k) 
x n 
F(X) - вектор-функция
W(X ) – матрица Якоби, вычисленная для очередного приближения.
F(X(k)) – вектор-функция, вычисленная для очередного приближения.
Выразим вектор поправок ∆X(k) из (5.16):
X (k)  W 1 (X (k) )  F(X (k) )
где W-1 – матрица, обратная матрице Якоби.
Окончательно формула последовательных приближений метода Ньютона
решения СНУ в матричной форме имеет вид:
X (k 1)  X (k)  W 1 (X (k) )  F(X (k) )
(5.17)
Достаточные условия сходимости для общего случая имеют очень сложный вид, и на практике проверяются редко. Нужно отметить, что метод сходится очень быстро (за 3 – 5 итераций), если det|W|  0 и начальное приближение
X(0) выбрано близким к решению (отличаются не более чем на 10%).
Алгоритм решения СНУ методом Ньютона состоит в следующем:
1. Задается размерность системы n, требуемая точность ε, начальное приближенное решение X = (xi)n.
2. Вычисляются элементы матрицы Якоби W = (i  xj)n,n.
3. Вычисляется обратная матрица W-1.
4. Вычисляется вектор функция F=(fi)n , f i  f i (x 1 , x 2 ,..., x n ) , i  1, n .
(k)
1
5. Вычисляются вектор поправок X  W  F.
6. Уточняется решение Õ  Õ  X.
1 n
x или    | xi |
7. Оценивается достигнутая точность δ= max
i 1,n
n i 1
8. Проверяется условие завершения итерационного процесса
δ≤ε
Если оно не соблюдается, алгоритм исполняется снова с пункта 2.
Для уменьшения количества арифметических действий Рафсон предложил
не вычислять обратную матрицу W-1, а вычислять поправки как решение СЛУ
(5.15)
(k)
i
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
5078
W  X  F.
Схема алгоритма метода Ньютона - Рафсона представлена на рис.5.2. При
разработке схемы учтена необходимость защиты итерационного цикла от зацикливания: введен счетчик итераций k и ограничение на число итераций kmax
(на практике не более 100).
1
Входные данные:
Newton
n – размерность системы;
 – заданная точность;
2
kmax – максимальное число итераций;
X (1:n) – начальное приближение.
k=0
3
k=k+1
4
Расчет
W, F
5
Расчет поправок ∆хi
i=1,n,1
Вычисление элементов матрицы
Якоби и значений функции для
очередного приближения
Решение системы линейных уравнений
W  ΔX  F. методом Крамера или Гаусса.
6
xi = xi + Δxi
i =1,n
7
  max Δx i
i 1,n
нет
8
δ  ε \/
k>kmax
да
9
Выход
Выходные данные:
x(1:n) – приближенное решение;
f(1:n) – значение функций;
δ – достигнутая точность.
K – количество выполненных итераций;
Рис 5.5. Схема алгоритма решения СНУ методом Ньютона – Рафсона.
Достоинством методов Ньютона является быстрая сходимость, недостатками - сложность расчетов (вычисление производных, многократное решение
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
5178
системы линейных уравнений), сильная зависимость от начального приближения.
Пример 5.3. Требуется методом Ньютона-Рафсона уточнить одно из решений системы
x12+x22=1
ln x1+2x2= –1
Заданная точность ε=0,001. Решения отделены ранее (пример 5.1)
D2 {0,8  x1  1;0,5  x2  0,3}
Запишем уравнения в стандартном виде:
f1 (x 1 , x 2 )  x12  x22  1  0
f 2 (x 1 , x 2 )  ln(x 1 )  2 x2  1  0
Начальное приближение Х(0)=(0,9;-0,4).
Первая итерация.
Элементы матрицы Якоби W=(wi,j)2,2
f1
x1
f
w1,2= 1
x 2
f
w2,1= 2
x 1
f
w2,2= 2
x 2
w1,1=
 2 x1  2  0,9  1,8;
 2 x 2  2  (0,4)  0,8;

1
 1/0,9  1,1111;
x1
 2;
Значение функций
f1(0,9;-0,4) = 0,92 + 0,42 – 1 = 0,81+ 0,16 – 1 = -0,03
f2(0,9;-0,4) = ln(0,9) + 2*(-0,4) + 1 = -0,1054 + 0,2 + 1 = 0,0946
Для вычисления поправок нужно решить систему
1,8∆x1 - 0,8x2= -(-0,03)
1,1111∆x1 + 2∆x2= –0,0946
По формулам Крамера
1,8
 0,8
det W 
 1,8  2  0,8 1,1111  3,6  0,88888  4,4889
1,1111
2
detW≠0 – система обусловлена.
det W1 
det W2 
0,03
 0,8
 0,0946
2
1,8
0,03
1,1111  0,0946
 0,03  2  0,8  0,0946  0,0157
 1,8  0,0946  0,03  1,1111  0,2036
x1 
det W1  0,0157

 0,0035
det W
4,4889
x 2 
det W2  0,2036

 0,0454
det W
4,4889
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
5278
Первое приближение решения
х1 = х1 + ∆х1 = 0,9+(-0,0035) = 0,8965
х2 = х2 + ∆х2 = -0,4 + (-0,0454) = -0,4454
Оценка достигнутой точности
  max x i  max(| x1 |, | x2 |)  0,0454
i 1,2
Нужно продолжить итерационный процесс т.к. δ>ε.
После второй итерации требуемая точность достигается, х 1=0,8995 х2=0,4449,   0,001.
5.2.3. Метод минимизации..
Рассмотрим функцию
n
Q(X)   f i (X) 
2
i 1
Она неотрицательна и обращается в нуль в том и только в том случае, если
f i (X)  0 , i  1, n
Таким образом, решение исходной системы нелинейных уравнений
F(X) = 0
будет одновременно нулевым минимумом скалярной функции многих переменных Q(X).
Искать такой минимум часто бывает проще, чем решать СНУ. Методы
поиска минимума таких функций изучаются отдельно.
Основная идея этих методов состоит в последовательном выборе таких
значений хi, которые уменьшают значения критерия Q.
Часто метод минимизации используется как вспомогательный, для получения значения корней, близких к решению. Затем эти значения уточняются
методом Ньютона.
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
5378
Тема 6
Численное интегрирование
Необходимость вычисления значений определенных интегралов при моделировании возникает достаточно часто.
b
Формула Ньютона-Лейбница I 
*

f ( x)dx  F(b)  F(a) (6.1)
a
имеет ограниченное применение:
 во-первых, не позволяет вычислить интегралы от таблично заданной
подынтегральной функции f(x);
 во-вторых, не всякая подынтегральная функция имеет первообразную F(x).
Численные методы интегрирования универсальны: позволяют вычислить
значение определенного интеграла непосредственно по значениям подынтегральной функции f(x), независимо от способа ее задания или вида аналитического выражения.
Геометрический смысл определенного интеграла – площадь криволинейной трапеции, ограниченной осью OX, кривой f(x), и прямыми x=a и x=b
(Рис.6.1.).
Численные методы интегрирования основаны на различных способах
оценки этой площади, поэтому полученные формулы численного интегрирования называются квадратурными (формулами вычисления площади).
Рассмотрим получение и применение простейших формул.
f
fn
fn-1
fi+1
fi
f1
f0
S0
0
a=x0
Sn-1
Si
S1
1
2
x1
i
xi
i+1
xi+1
n
x
b=xn
Рис. 6.1. Геометрический смысл определённого интеграла
Отрезок [a, b] делят на n необязательно равных частей – элементарных
отрезков. Принято такое деление отрезка называть сеткой, а точки x0, x1,…, xn
– узлами сетки.
Если сетка равномерная, то h 
ba
– шаг сетки, при интегрировании –
n
шаг интегрирования, а координата i-го узла вычисляется по формуле:
i  0, n
xi  a  i  h ,
(6.2)
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
5478
Полная площадь криволинейной трапеции состоит из n элементарных
криволинейных трапеций – элементарных площадей:
I
*

n 1
 Si
(6.3)
i0
Квадратурные формулы отличаются друг от друга способом оценки
значения Si – площади элементарной криволинейной трапеции.
Рассмотрим получение простейших формул для часто используемой равномерной сетки.
6.1. Формулы прямоугольников.
Площадь i-той элементарной трапеции можно оценить (приближенно вычислить) как площадь прямоугольника со сторонами x i 1  x i  h и fi. Тогда
Si  f i  h и значение интеграла:
I* 
n 1
n 1
n 1
n 1
n 1
i0
i 0
i0
i0
i 0
 Si 
 f i  h  h  f i  h  f(x i )  h  f(a  i  h)
(6.4)
fi+1
→ Погрешность
fi
Si
xi
xi+1
Рис. 6.2. Оценка элементарной площади Si левым прямоугольником.
Полученная формула называется формулой левых прямоугольников, т.к.
для оценки площади использовалось левое основание элементарной криволинейной трапеции.
Аналогично можно получить формулу правых прямоугольников:
fi+1
Погрешность ←
fi
Si
xi+1
xi
Рис. 6.3. Оценка элементарной площади Si правым прямоугольником.
Для данного случая Si  f i1  h и тогда значение интеграла:
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
*
I 
n 1
n 1
n
n
5578
n
 Si   f i 1  h  h  f i  h  f(x i )  h  f(a  i  h)
i 0
i 0
i 1
i 1
i 1
(6-5)
Эти формулы не находят широкого применения, т.к. имеют большую погрешность, пропорциональную величине шага δ M  O(h)
Как появляется эта погрешность, видно на рисунках.
Для повышения точности площадь Si можно оценить, используя прямоугольник со стороной, равной значению подынтегральной функции в середине
~
h
2
элементарного отрезка fi  f(x i  ) .
δ1 ←
~
fi
→ δ2
Si
xi
xi+1
Рис. 6.4. Оценка элементарной площади Si центральным прямоугольником.
~
Для данного случая Si  fi  h и формула центральных прямоугольников
имеет вид:
n 1
n 1
n -1
n -1
n -1
~
~
h
h
I   Si   fi  h  h  fi  h  f(x i  )  h  f(a  i  h  )
2
2
i 0
i 0
i 0
i 0
i0
*
(6.6)
Как видно из рис. 6.4, погрешность в оценке площади Si в данном случае
существенно меньше, чем в двух предыдущих (погрешность оценивается разницей площадей δ1 и δ2).
Погрешность метода пропорциональная квадрату величины шага
 M  O(h 2 )
Схема алгоритма вычисления значения определённого интеграла по приведённым квадратурным формулам представлена на рис. 6.6.
Пример 6.1. Вычисление значения определённого интеграла по формулам
прямоугольников. Для упрощения ручных расчетов рассмотрим достаточно
простую задачу.
Требуется вычислить:
 x
2,0
I
2
 1dx
0,5
Точное значение легко вычисляется по формуле Ньютона-Лейбница:
2 23
x3
0,53
8
1 1
I  (  x)
 2(
 0,5)  (  2) - (
 )=
0,5 3
3
3
3
83 2
=
14 13 112  13 99 33




 4,125
3 24
24
24 8
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
5678
Для вычисления интеграла по квадратурной формуле необходимо выбрать число узлов n.
b  a 2  0,5

 0,3.
Пусть n=5, тогда h 
n
5
Расчет по формуле левых прямоугольников:
n 1
4
i 0
i 0
I ëï  h   f(a  i  h)  0,3 f(0,5  i  0,3) 
0,3f(0,5)  f(0,8)  f(1,1)  f(1,4)  f(1,7)  


 0,3 (0,5 2  1)  (0,8 2  1)  (1,12  1)  (1,4 2  1)  (1,7 2  1) 
0,31,25  1,64  2,21  2,96  3,89   0,3  11,95  3,585
Погрешность расчета   I* - I ëï  4,125  3,585  0,540 .
Знак и значение погрешности можно легко оценить по геометрической
иллюстрации вычисления интеграла по квадратурной формуле.
f = x² +1
Суммарная площадь прямоугольников заметно меньше
площади
криволинейной
трапеции.
Рис. 6.5. Геометрическая иллюстрация вычисления значения определённого интеграла по формуле левых прямоугольников.
Расчет по формуле правых прямоугольников:
n
5
i 1
i 1
I ïï  h   f(a  i  h)  0,3 f(0,5  i  0,3) 
0,3f(0,8)  f(1,1)  f(1,4)  f(1,7)  f(2,0)  


0,3 (0,8 2  1)  (1,12  1)  (1,4 2  1)  (1,7 2  1)  (2,0 2  1) 
0,31,64  2,21  2,96  3,89  5  4,71
Погрешность расчета   4,125 - 4,71 = - 0,585.
Для повышения 0,5
точности0,4необходимо
увеличить
n или использовать бо0,8
1,2
1,6
лее точные квадратурные формулы.
Расчет по формуле центральных прямоугольников:
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
5778
n -1
4
h
)  0,3 f(i  0,3  0,15) 
2
i 0
i 0
0,3f(0,65)  f(0,95)  f(1,25)  f(1,55)  f(1,85)  
I öï  h   f(a  i  h 


0,3 (0,65 2  1)  (0,95 2  1)  (1,25 2  1)  (1,55 2  1)  (1,85 2  1) 
0,31,4225  1,9025  2,5625  3,4025  4,4225  4,114
Погрешность расчета   4,125 - 4,114= 0,011.
Формула центральных прямоугольников на порядок точнее предыдущих
формул.
1
Rectan
2
h=(b-a)/n
S=0
a = a + k·h
Входные данные:
a – начало отрезка;
b – конец отрезка;
n – число узлов;
k – вариант метода прямоугольников:
k = 0 – левые
k = ½ –центральные
k = 1 –правые
3
i=0,n-1, 1
4
S= S + f(a + i·h)
5
S= h·S
6
Выход
Выходные данные:
S – значение интеграла.
Рис. 6.6. Схема алгоритма метода прямоугольников.
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
5878
6.2. Формула трапеций.
В данном методе элементарная криволинейная трапеция заменяется трапецией (кривая f(x) заменяется хордой CD).
D
C
fi+1
fi
Si
xi
xi+1
Рис. 6.7. Оценка элементарной площади Si трапецией.
f i  f i 1
 h.
Из рисунка видно, что Si 
2
Отсюда:
I* 
n 1
 Si 
i0
n 1
f f f f
f f
f i  f i 1
f
f
f
f
 h  h  ( 0 1  1 2  2 3  ...  n  2 n 1  n 1 n ) 
2
2
2
2
2
2
i0

 f(a)  f(b) n 1

f 0  f n n 1
 h (
  fi )  h  
  f (a  i  h) 


2
2
i 1
i 1


(6.7)
Погрешность формулы трапеций пропорциональная квадрату шаг h
δ M  O(h 2 ) т.е. формулы центральных прямоугольников и трапеций имеют близкую точность.
Пример 6.2. Вычислить по формуле трапеций значение ранее рассмот-
 x
2
ренного определённого интеграла I 
2
 1 dx при n =5, h = 0,3.
0,5
4
 f(a)  f(b) n 1

 f(0,5)  f(2)

I òð  h  
  f(a  i  h)   0,3
  f(0,5  0,3  i)  
2
2
i 1
i 1




 (0,5 2  1)  ( 2 2  1)

0,3
 f(0,8)  f(1,1)  f(1,4)  f(1,8)  
2


 1,25  5

0,3
 (0,8 2  1)  (1,12  1)  (1,4 2  1)  (1,8 2  1)  
2


0,32,125  1,64  2,21  2,96  3,89   0,3  13,825  4,1475
Погрешность расчета   4,125 – 4,1475.
Формула трапеций имеет такую же точность, как и формула центральных
прямоугольников.
Знак погрешности легко объяснить по геометрической иллюстрации применения формулы.
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
1
Trap
5978
Входные данные:
a – начало отрезка;
b – конец отрезка;
n – число узлов.
2
h
ba
n
3
S
f(a)  f(b)
2
4
i=1,n-1, 1
5
S= S + f(a + i·h)
6
S= h·S
7
Выход
Выходные данные:
S – значение интеграла.
Рис. 6.8. Схема алгоритма метода трапеций.
6.3. Формула Симпсона.
На каждом элементарном отрезке подынтегральная функция f(x) заменяется квадратичной параболой, построенной по трем точкам: концам элементарного отрезка ( x i , f i ), ( x i 1, f i 1 ) и его середине ( x i 
h ~
, fi ).
2
Площадь полученной криволинейной трапеции служит оценкой элементарной площади Si:
Si 


~
h
h 
h

 f i  4 fi  f i1    f(x i )  4f(x i  )  f(x i1 ) 
6
6 
2

Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
6078
Тогда значение интеграла:

n 1

~
h
f i  4 fi  f i 1 
i 0 6
~
~
~
~
h
f 0  4 f0  f1  f1  4 f1  f 2  ...  f n  2  4 fn  2  f n 1  f n 1  4 fn 1  f n
6
I*  


Добавим в скобки  f 0  f 0 , вынесем общий множитель за скобки:


~ 
h  f n  f 0 n 1
I  
  f i  2 fi  
3  2
i 0

*
h  f(b)  f(a) n 1 
h 

   f(a  ih)  2f(a  ih  ) 
3 
2
2 
i 0 
(6.8)
Формула Симпсона имеет высокую точность, так как погрешность метода
м = О(h3)
Входные данные:
a – начало отрезка;
b – конец отрезка;
n – число узлов.
1
Simpson
2
h
ba
n
3
S
f(b)  f(a)
2
4
i=0,n-1,1
5
S= S + f(a + i·h)
h
2
+ 2f(a + i·h + )
6
S=
7
1
h·S
3
Выход
Выходные данные:
S – значение интеграла.
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
6178
Рис 6.9. Схема алгоритма метода Симпсона.
Пример 6.3. Вычисление значения ранее рассмотренного интеграла
 x
2
I
2

 1 dx по формуле Симпсона:
0,5
Для упрощения расчета возьмем n=2, тогда h=0,75.
h 
 f(b)  f(a) n 1
Ic  h  
  (f(a  i  h)  2  f(a  i  h  ))  
2
2 
i 0

0,75  f(2)  f(0,5) 1


  (f(0,5  i  0,75)  2  f(0,5  i  0,75  0,375))  
3 
2
i 0


1  (2 2  1)  (0,5 2  1)
 
 f(0,5)  2  f(0,875)  f(1,25)  2  f(1,625)  
4 
2

1  5  1,25


 (0,5 2  1)  2  (0,875 2  1)  (1,25 2  1)  2  (1,625 2  1)  
4  2

1
16,5
 1,875  1,25  3,53125  2,5625  7,28125 
 4,125
4
4
Погрешность расчета  = 4,125 – 4,125 = 0.
Такой результат объясняется тем, что подынтегральная функция в примере является квадратичной параболой, и замена ее параболой не вносит погрешности метода, а погрешность округления в расчётах отсутствует.
Рассмотренные формулы являются частным случаем формулы НьютонаКотеса, полученной в общем виде при замене подынтегральной функции f(x)
полиномом k-ой степени (при k=1 – формула трапеций, при k=2 – формула
Симпсона). Чем больше k, тем точнее вычисляется интеграл при одинаковом числе узлов n.
6.4. Выбор шага интегрирования.
При вычислении значения определенного интеграла от функций, заданных аналитически, необходимо обеспечить требуемую точность расчета ε.
Точность вычисления можно повысить двумя способами:
1. Использовать более точную квадратурную формулу.
2. Увеличить количество узлов, соответственно уменьшить шаг интегрирования h.
На практике обычно используется формула Симпсона, а требуемая точность расчета достигается вторым из указанных выше способов. Выполняется
расчет с выбранным числом узлов n, затем выполняется расчет с удвоенным их
числом. Если результаты отличаются более чем на требуемую точность, число
узлов вновь удваивается. Расчет заканчивают, когда I n  I 2n  ε , полагая, что
| I 2n  I * |  , т.е. последнее вычисленное приближенное значение интеграла
отличается от точного значения не больше чем на заданную точность.
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
6278
Такой способ называется автоматическим выбором шага интегрирования и легко реализуется на ЭВМ.
Начальный шаг интегрирования рекомендуется выбирать из соотношения:
hk 
где
k = 1 для формул правых и левых прямоугольников;
k = 2 для формул трапеций и центральных прямоугольников;
k = 3 для формулы Симпсона.
1
Начало
2
Ввод
a, b, ε
3
S=0
n=1
4
n = 2n
S0 = S
5
Вычисление S
Вычисление интеграла по
квадратурной формуле.
6
δ = S – S0
7
нет
8
Вывод
n, S, δ
|δ| ≤ ε
да
9
Конец
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
6378
Рис. 6.10. Схема алгоритма вычисления определенного интеграла
с автоматическим выбором шага интегрирования.
Важно напомнить, что погрешность решения включает погрешности метода δM и погрешность округления δO. При увеличении числа узлов n δM
уменьшается, но растет δO, т.к. увеличивается количество арифметических действий для решения задачи. Зависимость этих величин показана на графике.
δ
δ = δО + δМ
δМ
δО
ε
δкр
n
nтр
nкр
Рис. 6.11. Структура погрешности численного интегрирования.
δкр,
Из графика следует, что требуемую точность ε следует выбирать больше
иначе
требуемая
точность
не
может
быть
достигнута.
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
6478
Тема 7
Решение обыкновенных дифференциальных уравнений.
Уравнение, содержащее производные от искомой функции y = y(x), называется обыкновенным дифференциальным уравнением (ОДУ).
Общий вид дифференциального уравнения:
F(x, y, y, y,..., y(n) )  0
(7.1)
где n – наивысший порядок производной, определяет порядок уравнения.
Решением ОДУ называется функция y = y(x), которая после ее подстановки в уравнение (7.1) обращает его в тождество.
Общее решение ОДУ имеет вид:
y  y(x, C1, C2 ,..., Cn )
(7.2)
где C1, C2, …, Cn – постоянные интегрирования.
Частное решение получается из общего при конкретных значениях Ci,
i  1, n . Эти значения определяются из n дополнительных условий. В качестве
таких условий могут быть заданы значения функции и ее производных при некоторых значениях аргумента x, иначе говоря, в некоторых точках.
В зависимости от того, как заданы эти дополнительные условия, выделяют 2 типа задач:
 Задача Коши. Все условия заданы в одной, начальной точке, поэтому
они называются начальными условиями.
 Краевая задача. Условия заданы в более чем одной точке, обычно в
начальной и конечной. Условия в этом случае называются краевыми или
граничными. Такая задача может возникнуть только при решении
ОДУ с порядком выше первого.
Разработано множество методов решения подобных задач:
1. Графические методы. Например, метод изоклин - путем графических
построений находят точки исходной функции и строят ее график.
2. Аналитические методы позволяют получить формулу исходной функции путем аналитических преобразований.
3. Приближенные методы позволяют получить приближенное аналитическое решение в результате принятых упрощений. К приближенным относятся асимптотические методы и метод малых возмущений.
4. Численные методы позволяют получить таблицу приближенных значений искомой функции для ряда заранее выбранных значений ее аргумента.
На практике чаще всего применяются численные методы: они просты в
использовании и не имеют ограничений.
Задача решения ОДУ 1-го порядка (задача Коши) формулируется следующим образом:
Найти y = y(x), удовлетворяющую уравнению
y’ = f(x,y)
(7.3)
для x  [a,b] при заданном начальном условии y(a) = y0.
Рассмотрим численные методы решения этой задачи.
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
6578
7.1. Метод Эйлера (метод Рунге-Кутта 1-го порядка).
Разобьем [a, b] на n равных частей – элементарных отрезков, x0, x1,…,xn
будем называть узлами сетки, h = (b-a)/n - шаг сетки.
Очевидно, что x i  a  i  h , i  0,1,..., n ; x 0  a , x n  b .
Заменим в уравнении (7.1) y’ в точке xi её приближенной оценкой – отношением приращений (это следует из определения производной):
y i y i1  y i y i1  y i
yi 


x i x i1  x i
h
Тогда получаем:
y i1  y i
 f(x i , y i )
h
Отсюда формула Эйлера:
yi1  yi  h  f(x i , yi )
(7.4)
x i  a  i  h , i  0,1,..., n - 1 – номер узла
Зная y0 в точке x0 (начальное условие) можно найти y1, затем, используя
уже известные значения x1 и y1, вычислить x2 и y2 и так далее.
Рассмотрим геометрическую иллюстрацию метода Эйлера. В координатах (x,y) отобразим известные данные: отрезок [a,b] на оси Х и начальное условие y0 – точка А с координатами (a, y0). Отрезок [a,b] разобьем на n равных частей, получим узлы равномерной сетки a = x0, x1, x2, … , xn = b. Вычислим значения первой производной искомой функции в точке А, используя координату
этой точки и исходное уравнение (7.3)
y(x 0 )  f(x 0 , y 0 )  tg 0
Полученное значение позволяет построить касательную к искомой функции в точке А. Эту касательную можно использовать для вычисления приближенного значения искомой функции в новом узле х1 (кривую y(x) заменяем на
отрезком АВ на элементарном отрезке [x0, x1]).
y
y1 = y0 + BC =
y0 + h*tg0 =
y0 + h*f(x0,y0)
y2
y1
y0
B
D
А
0
h
y=y(x)
C
0
a=x0
x1
x2
0
b=xn
Рис. 7.1. Геометрическая иллюстрация метода Эйлера.
Зная (x1,y1), можно аналогично получить новую точку (x2,y2) и т.д.
Из геометрической иллюстрации следует, что:
x
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
6678
1. На каждом шаге есть погрешность (на рисунке это отрезок BD). Погрешность тем больше, чем больше шаг.
2. Ошибка может накапливаться.
2
Формула Эйлера (7.4) имеет погрешность метода  M  O(h )
Для практического выбора h с целью обеспечения заданной точности решения задачи  применяется следующий прием.
Выполняются 2 расчета: с n и 2n узлами. Если полученные значения
функции в во всех узлах отличаются не более чем на , задача считается решенной. Если нет, число узлов вновь удваивают и опять сравнивают полученные
значения функций.
Таким образом, расчет продолжается до достижения условия
  max | yin  y i2 n | 
(7.5)
i 1, n
Значение n может достигать большой величины – более 1000. Чтобы не
печатать столько значений функции, в алгоритме решения ОДУ методом Эйлера нужно предусмотреть печать не всех рассчитанных значений, а только части
их, например, 10-ти значений, распределенных равномерно по всему отрезку.
1
Eiler
2
c0=f(x,y)
y=y+c0h
x=x+h
3
Выход
Входные данные:
h - шаг
x – координата текущего узла
y – значение функции в узле
Выходные данные:
x – координата узла
y – значение функции в новом узле
Рис. 7.2. Алгоритм расчета новой точки методом Эйлера:
2
Пример 7.1. Дано уравнение y  2y  x  1
Найти решение для отрезка [0; 1], если y(0) = 1.
Выберем n = 10, тогда шаг h =(1-0)/10 = 0,1.
2
Запишем уравнение в каноническом виде y  f ( x, y)  1  2y - x
Начальная точка x0 = 0, y0 = 1.
Вычислим первую точку
y1  y 0  h  f(x 0 ; y 0 )  1  0,1  f(0; 1)  1  0,1  (1  2  1  0 2 )  1  0,1  3  1,3
x1 = x0 + h = 0 + 0,1 = 0,1
Вычислим вторую точку
y 2  y1  h  f(x 1 ; y1 )  1,3  0,1  f(0,1;1,3)  1,3  0,1  (1  2,6  0,01)  1,3  0,1  3,59  1,659
x 2  x 1  h  0,1  0,1  0,2
Аналогично нужно вычислить еще восемь точек (выбрано n=10).
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
6778
1
Начало
Исходные данные:
a – начальное значение аргумента;
b – конечное значение аргумента;
y – начальное значение функции;
n – количество отрезков.
2
Ввод
a, b, y, n
3
ba
h
n
h – шаг сетки;
x – координата узла;
k – шаг по номеру печатаемого узла;
i – номер узла;
j – номер печатаемого узла.
n
x = a, k =  
10 
i = 0, j = 0
4
нет
i=j
да
5
Вывод
i, x, y
6
j=j+k
7
Расчет
новой
точки
Eiler(h,x,y)
8
i=i+1
нет
9
i>n
10
Конец
да
Рис. 7.3. Алгоритм решения ОДУ 1-го порядка методом Эйлера.
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
6878
7.2. Модифицированный метод Эйлера (метод Рунге-Кутта 2-го порядка).
Для повышения точности формула Эйлера применяется дважды на каждом элементарном отрезке: сначала для вычисления значения функции в середине отрезка y , затем это значение используется для вычисления тангенса угла
наклона касательной к графику искомой функции в середине отрезка.
А- начальная точка.
L1- касательная к
y(x) в точке А.
L2- касательная к
у(х) в середине
элементарного отрезка
L3 параллельно L2
через т. А
y
_
y1
y1
y0
L1
B
0
L3
C
А
h/2
x0
L2
h/2
x1
у=у(х)
x
Рис. 7.4. Геометрическая иллюстрация модифицированного метода Эйлера.
Расчётные формулы:
h
y1  y 0   f(x 0 , y 0 ) - значение функции в середине отрезка [x0,x1].
2
h
y1  y 0  h  f(x 0  , y1 ) - значение функции в конце отрезка [x0,x1].
2
Формула модифицированного метода Эйлера:
h
h
y i 1  y i  h  f(x i  , y i   f(x i , y i ))
2
2
где i = 0, 1, …., n-1 - номер узла;
xi = a + ih - координата узла;
у0 = у(х0) - начальное условие.
(7.6)
Алгоритм решения ОДУ отличается от описанного ранее алгоритма метода Эйлера (рис 7.3) только алгоритмом расчета новой точки (Рис. 7.5).
Погрешность метода   О(h3).
Пример 7.2. Решение ранее рассмотренного уравнения (пример 7.1)
модифицированным методом Эйлера.
y’ - 2y + x2 = 1, x  [0;1], y(0) = 1.
Пусть n = 10 , h = (1 - 0)/10 = 0,1.
Начальная точка x0 = 0, y0 = 1.
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
6978
Расчёт первой точки.
h
h
0,1
0,1
y1  y 0  h  f(x 0  ; y 0   f(x 0 ; y 0 ))  1  0,1  f(0 
; 1
 f(0; 1)) 
2
2
2
2
1  0,1  f(0,05; 1  0,05  (1  2  1 - 0 2 ))  1  0,1  f(0,05; 1,15) 
1  0,1  (1  2  1,15  0,05 2 )  1,32975
x 1  x0  h  0,1
Аналогично расчёт следующих точек: 2, 3, ... ,10.
1
М_Eiler
2
c0=f(x,y)
с1=f(x+h/2,y+h/2c0)
y=y+c1h
x=x+h
3
Выход
Входные данные:
h - шаг
x – координата текущего узла
y – значение функции в узле
Выходные данные:
x – координата узла
y – значение функции в новом узле
Рис. 7.5. Алгоритм расчёта новой точки модифицированным методом Эйлера:
7.3. Исправленный метод Эйлера.
В этом методе для повышения точности используется усреднённое значение производной на рассматриваемом отрезке:
y  yi 1
h
y i 1  y i  h  i
 y i   [f(x i , y i )  f(x i 1 , y i 1 )]
2
2
В приведённой формуле yi+1 входит в обе части уравнения и не может
быть выражено явно. Чтобы обойти эту трудность, в правую часть, вместо yi+1
подставляется значение, рассчитанное по формуле Эйлера(7.4).
y i 1  y i  h  f(x i , y i )
Получаем формулу исправленного метода Эйлера:
y i 1  y i 
h
 f(x i , y i )  f(x i 1 , y i  h  f(x i , y i ))  ,
2
i  0, n  1
где i = 0, 1, …., n-1 - номер узла;
xi = a + ih - координата узла;
у0 = у(х0) - начальное условие.
Погрешность исправленного метода Эйлера М = О(h3).
(7.7)
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
7078
Алгоритм решения ОДУ отличается от описанного ранее алгоритма метода Эйлера (рис 7.3) только алгоритмом расчета новой точки (Рис. 7.6).
1
С_Eiler
Входные данные:
h - шаг
x – координата текущего узла
y – значение функции в узле
2
c0 = f(x, y)
x=x+h
с1 = f(x, y + hc0)
y = y + h(c0 + c1)/2
Выходные данные:
x – координата узла
y – значение функции в новом узле
3
Выход
Рис. 7.6. Алгоритм расчёта новой точки исправленным методом Эйлера:
y
L1
_
y1
y1
L3
L2
B
L4
y = y(x)
y0
А
h
0
x1
x0
x
L1- касательная к у(х) в начальной точке А, с tg0 = f(x0, y0).
т. В – значение
y1
вычисляется по формуле Эйлера.
L2 – касательная к у(х) в точке В, с tg1 = f(x1, y 1 ).
L3 – прямая через В со среднеарифметическим углом наклона.
L4 - прямая, паралельная L3, проведенная через точку А.
Рис. 7.6. Геометрическая иллюстрация исправленного метода Эйлера.
Пример 7.3. Решение ранее рассмотренного уравнения (пример 7.1)
исправленным методом Эйлера.
y’ - 2y + x2 = 1, x  [0;1], y(0) = 1.
Пусть n = 10 , h = (1 - 0)/10 = 0,1.
Начальная точка x0 = 0, y0 = 1.
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
7178
Рассчет первой точки.
h
y1  y 0   f(x 0 ; y 0 )  f(x 0  h; y 0  h  f(x 0 , y 0 ))  
2
0,1
1
 f(0;1)  f(0  0,1; 1  0,1  f(0, 1))  
2
0,1
1
 [(1  2  1  0 2 )  f(0,1; 1  0,1  (1  2 - 02 ))] 
2
1  0,05  [3  f(0,1;1,3) ]  1  0,05  [3  (1  2  1,3  0,12 )] 
 1  0,05  [3  3,59]  1  0,05  6,59  1,3295
x1  x0  h  0,1
Аналогично можно вычислить значения функции во 2, 3, ... , 10 точках.
7.4. Метод Рунге-Кутта 4 порядка.
На практике наибольшее распространение получил метод Рунге-Кутта 4го порядка, в котором усреднение проводится по трём точкам, формула Эйлера
на каждом отрезке используется 4 раза: в начале отрезка, дважды в его середине и в конце отрезка.
Расчетные формулы метода для дифференциального уравнения (7.3)
имеют вид:
y i 1  y i 
h
(c 0  2с1  2с 2  с 3 ) ,
6
(7.8)
где i = 0, 1, …., n-1 - номер узла;
xi = a + ih - координата узла;
у0 = у(х0) - начальное условие.
с 0  f(x i , y i )
с
h
с1  f(x i  , y i  h  0 )
2
2
с
h
с 2  f(x i  , y i  h  1 )
2
2
с 3  f(x i  h, y i  h  с 2 )
Погрешность метода М = О(h5).
Схема алгоритма решения ОДУ методом Рунге-Кутта 4-го порядка отличается алгоритмом расчёта новой точки (Рис. 7.5).
Пример 7.4. Решение ранее рассмотренного уравнения (пример 7.1)
методом Рунге-Кутта 4 порядка.
y’ - 2y + x2 = 1, x  [0;1], y(0) = 1.
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
7278
Пусть n = 10 , h = (1 - 0)/10 = 0,1.
Начальная точка x0 = 0, y0 = 1.
Рассчет первой точки.
Сначала вычислим значения C0, C1, C2, C3:
C 0  f(x 0 ; y 0 )  f(0; 1)  1  2 1  0 2  3
K
h
C1  f(x 0  ; y 0  h  0 )  f(0,05; 1,15)  1  2 1,15  0,05 2  3,2975
2
2
K
h
C 2  f(x 0  ; y 0  h  1 )  f(0,05; 1,164875)  1  2 1,164875  0,05 2  3,32725
2
2
C 3  f(x 0  h; y 0  h  K 2 )  f(0,1; 1,332725)  1  2 1,332725  0,12  3,65545
Вычислим значение y1:
h
y1  y 0   (C 0  2  C1  2  C 2  C 3 ) 
6
0,1
1
 (3  2  3,2975  2  3,32725  3,65545)  1,3317491667
6
Аналогично можно вычислить значения функции во 2, 3, ... , 10 точках.
1
Runge-Kutt_4
2
Входные данные:
h - шаг
x – координата текущего узла
y – значение функции в узле
c0 = f(x, y)
x = x + h/2
с1 = f(x, y + h/2c0)
с2 = f(x, y + h/2c1)
x = x + h/2
с3 = f(x, y + hc2)
y=y+h/6(c0+2c1+2c2+c3)
3
Выход
Выходные данные:
x – координата узла
y – значение функции в новом узле
Рис. 7.7. Схема алгоритма расчета новой точки методом Рунге-Кутта 4-го
порядка.
Общая характеристика методов:
1. Все методы являются одношаговыми, то есть для вычисления значения
функции в новой точке используется ее значение в предыдущей точке.
Это свойство называется самостартованием.
2. Все методы легко обобщаются на системы дифференциальных уравнений
1-го порядка.
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
7378
Тема 8
Решение систем обыкновенных дифференциальных уравнений.
Дана система дифференциальных уравнений:
dy1
 F1 (x, y1 , y 2 ,..., y n )
dx
dy 2
 F2 (x, y1 , y 2 ,..., y n )
dx
, где n – размерность системы.
...
dy n
 Fn (x, y1 , y 2 ,..., y n )
dx
Рассмотрим задачу Коши для данной системы. Пусть известны начальные
условия при x0 = a: y1(x0) = y10, y2(x0) = y20, …, yn(x0) = yn0. Требуется найти
y1(x), y2(x),…, yn(x), проходящие через заданные точки: (x0,y10), (x0,y20), …,
(x0,yn0).
Методы решения одного дифференциального уравнения можно обобщить
и на их системы.
8.1. Метод Рунге-Кутта 4-го порядка для системы ОДУ 1-го порядка
Расчетные формулы метода Рунге-Кутта 4-го порядка для системы ОДУ
1-го порядка:
h
y i, j1  y i, j   (K oi  2K1i  2K 2i  K 3i )
6
ba
где h 
;
m
a  x0 ;
b  xm ;
m – количество узлов;
i  1, n – номер функции;
j  0,1,..., m  1 – номер узла;
K 0i  Fi (x j , y1j , y 2j ,..., y nj ) ;
h
h
h
h
, y1j   K 0i , y 2j   K 0i ,..., y nj   K 0i ) ;
2
2
2
2
h
h
h
h
K 2i  Fi (x j  , y1j   K 1i , y 2j   K 1i ,..., y nj   K1i ) ;
2
2
2
2
K 3i  Fi (x j  h, y1j  hK 2i , y 2j  hK 2i ,..., y nj  hK 2i ) .
K1i  Fi (x j 
На рис. 8.1 – 8.3 представлен алгоритм решения системы обыкновенных
дифференциальных уравнений.
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
7478
Входные переменные:
a – начало отрезка;
b – конец отрезка;
m – количество расчетных узлов;
n – размерность системы;
Y  (Yi ) n – вектор уравнений;
m p – число печатаемых точек.
1
S_ODE
2
j=0
k=
m
mp
l=0
x=a
3
нет
l=j
да
4
Вывод
j, x, Yil,
i  1, n
5
l=l+k
6
Расчет
Y  (Yi ) n
7
x=x+h
8
8
j=j+1
нет
9
j>m
10
да
Конец
RK4_SYS (n, h, x, Y)
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
Рис. 8.1. Алгоритм решения системы ОДУ.
7578
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
7678
1
Входные данные:
n – размерность системы;
x – аргумент;
Y  (Yi ) n – вектор уравнений
RK4_SYS
2
y oi  y i ,
c i  0, i  1, n
3
K=0,3,1
11
Выход
4
Выходные данные:
y – значение новой точки
K=?
5
K=0
dx  0, P 
h
6
6
K=1,2
K=3
dx 
h
h
,P 
2
3
7
dx  h, P 
h
6
8
y1i = y0i + dx·ci,
i  1, n
9
Right (n, x+dx,
Y1, c)
10
yi = yi + P·ci,
i  1, n
Рис. 8.2. Алгоритм расчета новой точки методом Рунге-Кутта 4-го порядка:
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
7778
Алгоритмы вычислительной математики – КУРС ЛЕКЦИЙ
7878
1
Right
2
n – размерность системы;
x – аргумент;
Y  (Yi ) n – вектор уравнений.
f 1  F1 (x, Y)
f 2  F2 (x, Y)
...
f n  Fn (x, Y)
3
Конец
F  (f i ) n – вектор искомых функций
Рис. 8.3. Схема процедуры вычисления правой части системы ОДУ 1-го
порядка:
8.1. Решение обыкновенных дифференциальных уравнений высших порядков.
Рассмотрим задачу Коши для ОДУ n-го порядка:
y (n)  f(x, y, y, y,..., y (n 1) )
(8-1)
с начальными условиями:
y(x0) = y0, y(x0) = y0, y(x0) = y0,…, y(n-1)(x0) = y0(n-1).
Задача сводится к решению задачи Коши для систем n ОДУ первого порядка.
Обозначим:
y  y1 , y  y 2 ,…, y (n 1)  y n 1 .
Тогда для решения уравнения (1) получаем систему ОДУ:
y   y1
y1  y 2
...
y n  2  y n 1
y n 1  f(x, y, y1 , y 2 ,..., y n 1 )
с начальными условиями:
y(x 0 )  y 0 , y1 (x 0 )  y0 , y 2 (x 0 )  y0 ,…, y n -1 (x 0 )  y (n0 -1) .
Скачать