АСТРАХАНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ Институт Информационных технологий и коммуникаций Кафедра Информаци...
892 downloads
228 Views
594KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
АСТРАХАНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ Институт Информационных технологий и коммуникаций Кафедра Информационных систем
Численное решение уравнений и систем уравнений
Методическое пособие для студентов института Информационных технологий и коммуникаций
Астрахань 2001
2
Автор:
к.т.н., доц. кафедры ИС Ханова А.А.
Рецензент: зав. кафедрой АСОиУ, к.т.н., доц. Лаптев В.В.
Пособие представляет собой руководство по изучению математических методов решения уравнений и систем уравнений и предназначено для студентов, изучающих в курсе «Вычислительная математика» или «Математическое моделирование инженерных задач» Mathcad 2000. Пособие содержит описание методов вычислительной математики для решения уравнений и систем уравнений, примеры, снабженные необходимыми комментариями, задания к практическим занятиям, порядок выполнения лабораторной работы и варианты индивидуальных упражнений для группы студентов из 15 человек, контрольные вопросы.
Методическое пособие утверждено на заседании кафедры ИС протокол № 2 от «21» ноября 2000 г.
3
Содержание
ВВЕДЕНИЕ .................................................................................................... 4 РЕШЕНИЕ НЕЛИНЕЙНЫХ УРАВНЕНИЙ ........................................... 5 Метод половинного деления.................................................................. 7 Метод хорд ............................................................................................. 8 Метод Ньютона .................................................................................. 10 Метод простой итерации .................................................................. 12 РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ УРАВНЕНИЙ ............................ 15 Решение матричных уравнений .......................................................... 15 Метод Гаусса ....................................................................................... 17 Метод итерации .................................................................................. 19 Метод Зейделя...................................................................................... 23 РЕШЕНИЕ СИСТЕМ НЕЛИНЕЙНЫХ УРАВНЕНИЙ ...................... 25 Метод Ньютона .................................................................................. 25 РЕШЕНИЕ УРАВНЕНИЙ СРЕДСТВАМИ MATHCAD ..................... 29 Решение одного уравнения .................................................................. 29 Решение систем уравнений ................................................................. 32 Символьное решение уравнений .......................................................... 35 ПРАКТИЧЕСКИЕ ЗАДАНИЯ.................................................................. 36 УПРАЖНЕНИЯ К ЛАБОРАТОРНОЙ РАБОТЕ.................................. 37 КОНТРОЛЬНЫЕ ВОПРОСЫ.................................................................. 42 ЛИТЕРАТУРА ............................................................................................. 43
4
Введение Инженеру часто приходится решать алгебраические и трансцендентные уравнения, что может представлять собой самостоятельную задачу или являться частью более сложных задач. В обоих случаях практическая ценность метода в значительной мере определяется быстротой и эффективностью полученного решения. Выбор подходящего метода для решения уравнений зависит от характера рассматриваемой задачи. Задачи, сводящиеся к решению алгебраических и трансцендентных уравнений, можно классифицировать по числу уравнений и в зависимости от предлагаемого характера и числа решений (Рисунок 1). Одно уравнение будем называть линейным, алгебраическим или трансцендентным в зависимости от того, имеет ли оно одно решение, n решений или неопределенное число решений. Систему уравнений будем называть линейной или нелинейной в зависимости от математической природы входящих в нее уравнений. Решение линейного уравнения с одним неизвестным получается достаточно просто и здесь не рассматривается.
Рисунок 1. Классификация уравнений
5
Решение нелинейных уравнений Нелинейные уравнения можно разделить на 2 класса - алгебраические и трансцендентные. Алгебраическими уравнениями называют уравнения, содержащие только алгебраические функции (целые, рациональные, иррациональные). В частности, многочлен является целой алгебраической функцией. Уравнения, содержащие другие функции (тригонометрические, показательные, логарифмические и другие) называются трансцендентными. Методы решения нелинейных уравнений делятся на две группы: 1) точные методы; 2) итерационные методы. Точные методы позволяют записать корни в виде некоторого конечного соотношения (формулы). Из школьного курса алгебры известны такие методы для решения тригонометрических, логарифмических, показательных, а также простейших алгебраических уравнений. Как известно, многие уравнения и системы уравнений не имеют аналитических решений. В первую очередь это относится к большинству трансцендентных уравнений. Доказано также, что нельзя построить формулу, по которой можно было бы решить произвольное алгебраическое уравнение степени выше четвертой1. Кроме того, в некоторых случаях уравнение содержит коэффициенты, известные лишь приблизительно, и, следовательно, сама задача о точном определении корней уравнения теряет смысл. Для их решения используются итерационные методы с заданной степенью точности. Пусть дано уравнение f ( x) = 0,
(1)
где: 1) Функция f(x) непрерывна на отрезке [a, b] вместе со своими производными 1-го и 2-го порядка. 2) Значения f(x) на концах отрезка имеют разные знаки (f(a) ⋅ f(b) < 0). 3) Первая и вторая производные f ′ (x) и f ″ (x) сохраняют определенный знак на всем отрезке. Условия 1) и 2) гарантируют, что на интервале [a, b] находится хотя бы один корень, а из 3) следует, что f(x) на данном интервале монотонна и поэтому корень будет единственным. 1
Доказательство этого факта связано с именами замечательных математиков Абеля (1802 – 1829) и Галуа (1811 – 1832).
6 Решить уравнение (1) итерационным методом значит установить, имеет ли оно корни, сколько корней и найти значения корней с нужной точностью. Всякое значение ξ , обращающее функцию f(x) в нуль, т.е. такое, что: f (ξ) = 0,
называется корнем уравнения (1) или нулем функции f(x). Задача нахождения корня уравнения f(x) = 0 итерационным методом состоит из двух этапов: 1) отделение корней - отыскание приближенного значения корня или содержащего его отрезка; 2) уточнение приближенных корней - доведение их до заданной степени точности. Процесс отделения корней начинается с установления знаков функции f(x) в граничных x = a и x = b точках области ее существования. Пример 1. Отделить корни уравнения: f(x) ≡ x3 - 6х + 2 = 0.
(2)
Составим приблизительную схему: х f(x)
−∞ −
−3 −
−1 +
0 +
1 −
3 +
+∞ +
Следовательно, уравнение (2) имеет три действительных корня, лежащих в интервалах [-3, -1], [0, 1] и [1, 3]. Приближенные значения корней (начальные приближения) могут быть также известны из физического смысла задачи, из решения аналогичной задачи при других исходных данных, или могут быть найдены графическим способом. В инженерной практике распространен графический способ определения приближенных корней. Принимая во внимание, что действительные корни уравнения (1) это точки пересечения графика функции f(x) с осью абсцисс, достаточно построить график функции f(x) и отметить точки пересечения f(x) с осью Ох, или отметить на оси Ох отрезки, содержащие по одному корню. Построение графиков часто удается сильно упростить, заменив уравнение (1) равносильным ему уравнением: f1 ( x) = f 2 ( x) ,
(3)
7 где функции f1(x) и f2(x) - более простые, чем функция f(x). Тогда, построив графики функций у = f1(x) и у = f2(x), искомые корни получим как абсциссы точек пересечения этих графиков. Пример 2. Графически отделить корни уравнения (Рисунок 2): x lg x = 1.
(4)
Уравнение (4) удобно переписать в виде равенства: lg x=
Рисунок 2. Пример 2
1 . x
Отсюда ясно, что корни уравнения (4) могут быть найдены как абсциссы точек пересечения логарифмической кривой y = lg x и гиперболы y =
1 . Построив эти кривые, приближенно найдем единственный корень x ξ ≈ 2,5 уравнения (4) или определим его содержащий отрезок [2, 3]. Итерационный процесс состоит в последовательном уточнении начального приближения х0. Каждый такой шаг называется итерацией. В результате итераций находится последовательность приближенных значений корня х1, х2, ..., хn. Если эти значения с увеличением числа итераций n приближаются к истинному значению корня, то говорят, что итерационный процесс сходится. Метод половинного деления
Для нахождения корня уравнения (1), принадлежащего отрезку a+b ⎛a +b⎞ [a, b], делим этот отрезок пополам. Если f ⎜ яв⎟ = 0 , то ξ = 2 ⎝ 2 ⎠ ⎛a +b⎞ ляется корнем уравнения. Если f ⎜ ⎟ ≠ 0 (что, практически, наиболее ⎝ 2 ⎠ ⎡ a + b⎤ ⎡a + b ⎤ вероятно), то выбираем ту из половин ⎢a, ⎥ или ⎢ 2 , b ⎥ , на кон2 ⎣ ⎦ ⎣ ⎦ цах которой функция f(x) имеет противоположные знаки. Новый суженный отрезок [а1, b1] снова делим пополам и производим те же самые действия.
8 Метод половинного деления практически удобно применять для грубого нахождения корня данного уравнения, метод прост и надежен, всегда сходится. Пример 3. Методом половинного деления уточнить корень уравнения
f(x) ≡ x4 + 2 x3 – x – 1 = 0 лежащий на отрезке [0, 1]. Последовательно имеем: f(0) = - 1; f(1) = 1; f(0,5) = 0,06 + 0,25 – 0,5 – 1 = - 1,19; f(0,75) = 0,32 + 0,84 – 0,75 – 1 = - 0,59; f(0,875) = 0,59 + 1,34 – 0,88 – 1 = + 0,05; f(0,8125) = 0,436 + 1,072 – 0,812 – 1 = - 0,304; f(0,8438) = 0,507 + 1,202 – 0,844 – 1 = - 0,135; f(0,8594) = 0,546 + 1,270 – 0,859 – 1 = - 0,043 и т. д. Можно принять
ξ=
1 (0,859 + 0,875) = 0,867 2
Метод хорд
В данном методе процесс итераций состоит в том, что в качестве приближений к корню уравнения (1) принимаются значения х1, х2, ..., хn точек пересечения хорды АВ с осью абсцисс (Рисунок 3). Сначала запишем уравнение хорды AB: y − f (a) x−a = . f (b) − f (a) b − a
Для точки пересечения хорды AB с осью абсцисс (х = х1, y = 0) получим уравнение: x1 = a −
f (a) (b − a ). f (b) − f (a )
Пусть для определенности f ″ (x) > 0 при а ≤ х ≤ b (случай f ″ (x) < 0 сводится к нашему, если записать уравнение в виде - f(x) = 0). Тогда кривая у = f(x) будет выпукла вниз и, следовательно, расположена ниже сво-
9 ей хорды АВ. Возможны два случая: 1) f(а) > 0 (Рисунок 3, а) и 2) f(b) < 0 (Рисунок 3, б). В первом случае конец а неподвижен и последовательные приближения: x0 = b; xi + 1 = xi −
f ( xi ) (xi − a ), f ( xi ) − f ( a )
(i = 0, 1, 2, ...)
(5)
образуют ограниченную монотонно убывающую последовательность, причем a < ξ < K < xi +1 < xi < K < x1 < x0 .
Во втором случае неподвижен конец b, а последовательные приближения: x0 = а; xi +1 = xi −
f ( xi ) (b − xi ) f (b) − f ( xi )
(6)
образуют ограниченную монотонно возрастающую последовательность, причем x0 < x1 < K < xi < xi +1 < K < ξ < b.
Обобщая эти результаты, заключаем: 1) неподвижен тот конец, для которого знак функции f (х) совпадает со знаком ее второй производной f ″ (х); 2) последовательные приближения xn лежат по ту сторону корня ξ, где функция f (х) имеет знак, противоположный знаку ее второй производной f ″ (х). Итерационный процесс продолжается до тех пор, пока не будет обнаружено, что ⏐xi – xi - 1 ⏐< ε, где ε - заданная предельная абсолютная погрешность.
а)
б) Рисунок 3. Метод хорд
10 Пример 4. Найти положительный корень уравнения
f(x) ≡ x3 – 0,2 x2 – 0,2 х – 1,2 = 0 с точностью ε = 0,01. Прежде всего, отделяем корень. Так как f (1) = -0,6 < 0 и f (2) = 5,6 > 0, то искомый корень ξ лежит в интервале [1, 2]. Полученный интервал велик, поэтому разделим его пополам. Так как f (1,5) = 1,425 > 0, то 1< ξ < 1,5. Так как f ″ (x) = 6 x – 0,4 > 0 при 1 < х < 1,5 и f (1,5) > 0, то воспользуемся формулой (5) для решения поставленной задачи: x1 = 1 +
0,6 (1,5 − 1) = 1,15; 1,425 + 0,6
⏐x1 – x0 ⏐ = 0,15 > ε , следовательно, продолжаем вычисления; f (х1) = -0,173; x 2 = 1,15 +
0,173 (1,5 − 1,15) = 1,190; 1,425 + 0,173
⏐x2 – x1 ⏐ = 0,04 > ε , f (х2) = -0,036; x 3 = 1,190 +
0,036 (1,5 − 1,190) = 1,198; 1,425 + 0,036
⏐x3 – x2 ⏐ = 0,008 < ε . Таким образом, можно принять ξ = 1,198 с точностью ε = 0,01. Заметим, что точный корень уравнения ξ = 1,2. Метод Ньютона
Отличие этого итерационного метода от предыдущего состоит в том, что вместо хорды на каждом шаге проводится касательная к кривой y = f(x) при x = хi и ищется точка пересечения касательной с осью абсцисс (Рисунок 4). При этом не обязательно задавать отрезок [а, b], со-
11 держащий корень уравнения (1), достаточно найти лишь некоторое начальное приближение корня x = х0. Применяя метод Ньютона, следует руководствоваться следующим правилом: в качестве исходной точки х0 выбирается тот конец интервала [а, b], которому отвечает ордината того же знака, что и знак f ″ (х). Уравнение касательной, проведенной к кривой y = f(x) через точку В0 с координатами х0 и f(х0), имеет вид:
Рисунок 4. Метод Ньютона
y − f ( x0 ) = f ′( x0 )( x − x0 ).
Отсюда найдем следующее приближение корня х1 как абсциссу точки пересечения касательной с осью Ох (y = 0):
Рисунок 5. Решение уравнения f(x) = 0 методом Ньютона
12 x1 = x0 −
f ( x0 ) . f ′( x0 )
Аналогично могут быть найдены и следующие приближения как точки пресечения с осью абсцисс касательных, проведенных в точках В1, В2 и так далее. Формула для i +1 приближения имеет вид: x i +1 = x i −
f ( xi ) . f ′( x i )
(7)
Для окончания итерационного процесса может быть использовано или условие ⎪f(xi)⎪ < ε, или условие близости 2х последовательных приближений ⏐xi – xi - 1 ⏐< ε. Итерационный процесс сходится если f(х0) ⋅ f ″ (х0) > 0. Реализация метода Ньютона средствами MathCAD приведена на Рисунке 5. Для организации итерационных вычислений используется функция until. until(a, z) Возвращает z, пока выражение a не становится отрицательным; а должно содержать дискретный аргумент. Метод простой итерации
Для использования метода итерации2 исходное нелинейное урав-
Рисунок 6. Сходящиеся итерационные процессы
2
Часто метод итерации называют методом последовательных приближений.
13 нение f(х) = 0 заменяется равносильным уравнением x = ϕ(x).
(8)
Пусть известно начальное приближение корня х = х0. Подставляя это значение в правую часть уравнения (8), получим новое приближение: х1 = ϕ(х0). Далее, подставляя каждый раз новое значение корня в (8), получаем последовательность значений: xi +1 = ϕ( xi ), (i = 0, 1, K).
(9)
Геометрически метод итерации может быть пояснен следующим образом. Построим на плоскости хОу графики функций у = х и у = ϕ(х). Каждый действительный корень ξ уравнения (8) является абсциссой точки пересечения М кривой у = ϕ(х) с прямой у = х (Рисунок 6, а). Отправляясь от некоторой точки А0 [x0, ϕ (x0)], строим ломаную А0В1А1В2А2... (“лестница”), звенья которой попеременно параллельны оси Ох и оси Оу, вершины А0, А1, А2, ...лежат на кривой у=ϕ (х), а вершины В1, В2, В3, …, - на прямой у = х. Общие абсциссы точек А1 и В1, А2 и В2, ..., очевидно, представляют собой соответственно последовательные приближения х1, х2, ... корня ξ . Возможен также другой вид ломаной А0В1А1В2А2 ... – «спираль» (Рисунок 6, б). Решение в виде «лестницы» получается, если производная ϕ′ (х) положительна, а решение в виде «спирали», если ϕ′ (х) отрицательна. На Рисунке 6, а, б кривая у = ϕ(х) в окрестности корня ξ - пологая, то есть ϕ′(x) <1, и процесс итерации сходится. Однако, если рассмотреть случай, где ϕ′(x) >1, то процесс итерации может быть расходящимся (Рисунок 7). Поэтому для практического применения метода итерации нужно выяснить достаточные условия сходимости итерационного процесса. Теорема: Пусть функция ϕ(х) определена и дифференцируема на отрезке [a, b], причем все ее значения ϕ(х) ∈ [a, b]. Тогда, если существует пра-
Рисунок 7. Расходящийся итерационный процесс
14 вильная дробь q такая3, что ϕ′(x) ≤ q < 1
при a < x < b, то: 1) процесс итерации xi +1 = ϕ( xi ), (i = 0, 1, K).
сходится независимо от начального значения х0 ∈ [a, b]; 2) предельное значение ξ = lim x n является единственным корнем уравn →∞
нения х = ϕ(х) на отрезке [a, b]. Пример 5. Уравнение
f(x) ≡ x3 – x – 1 = 0
(10)
имеет корень ξ ∈ [1, 2], так как f(1) = - 1 < 0 и f(2) = 5 > 0. Уравнение (10) можно записать в виде х = х3 – 1.
(11)
Здесь ϕ(х) = х3 – 1
и
ϕ′ (х) = 3х2;
поэтому ϕ′ (х) ≥ 3 при 1 ≤ х ≤ 2 и, следовательно, условия сходимости процесса итерации не выполнены. Если записать уравнение (10) в виде (12)
x = 3 x + 1,
то будем иметь: ψ ( x) = 3 x + 1 и ψ′( x) =
1 33 (x + 1)2
.
1 1 Отсюда 0 < ψ′( x) < 3 < при 1 ≤ х ≤ 2 и значит, процесс итера3 4 4 ции для уравнения (12) быстро сойдется.
3
За число q можно принять наименьшее значение или нижнюю грань модуля производной ⎪ϕ′(х)⎪ при a < x < b.
15 Найдем корень ξ уравнения (10) с точностью до 10-2. Вычисляем последовательные приближения хn с одним запасным знаком по формуле xi = 3 xi + 1 (i = 0, 1, 2, K).
Найденные значения помещены в Таблицу 1: Таблица 1 Значения последовательных приближений xi.
i xi
0 1
1 1,260
2 1,312
3 1,322
4 1,3243
С точностью до 10-2 можно положить ξ = 1,324.
Решение систем линейных уравнений Способы решения систем линейных уравнений делятся на две группы: 1) точные методы, представляющие собой конечные алгоритмы для вычисления корней системы (решение систем с помощью обратной матрицы, правило Крамера, метод Гаусса и др.), 2) итерационные методы, позволяющие получить решение системы с заданной точностью путем сходящихся итерационных процессов (метод итерации, метод Зейделя и др.). Вследствие неизбежных округлений результаты даже точных методов являются приближенными. При использовании итерационных методов, сверх того, добавляется погрешность метода. Эффективное применение итерационных методов существенно зависит от удачного выбора начального приближения и быстроты сходимости процесса. Решение матричных4 уравнений
Рассмотрим систему n линейных алгебраических уравнений относительно n неизвестных х1, х2, …, хn:
4
Матричным уравнением называется уравнение, коэффициенты и неизвестные которого – прямоугольные матрицы соответствующей размерности.
16
Рисунок 8. Решение матричных уравнений ⎧a11 x1 + a12 x 2 + ... + a1n xn = b1 , ⎪a x + a x + ... + a x = b , ⎪ 21 1 22 2 2n n 2 ⎨ . . . . . . . . ⎪ ⎩⎪a n1 x1 + a n 2 x2 + ... + a nn x n = bn .
(13)
В соответствии с правилом умножения матриц рассмотренная система линейных уравнений может быть записана в матричном виде Ах = b,
(14)
где: ⎡ a11 ⎢a A = ⎢ 21 ⎢K ⎢a ⎣ n1
a12 a22 K an 2
K a1n ⎤ K a2 n ⎥ ⎥, K K⎥ K ann ⎥⎦
⎡ x1 ⎤ ⎢x ⎥ x = ⎢ 2 ⎥, ⎢... ⎥ ⎢x ⎥ ⎣ n⎦
⎡b1 ⎤ ⎢b ⎥ b = ⎢ 2⎥ . ⎢... ⎥ ⎢b ⎥ ⎣ n⎦
(15)
17 Матрица А, столбцами которой являются коэффициенты при соответствующих неизвестных, а строками – коэффициенты при неизвестных в соответствующем уравнении, называется матрицей системы; матрицастолбец b, элементами которой являются правые части уравнений системы, называется матрицей правой части или просто правой частью системы. Матрица-столбец х, элементы которой - искомые неизвестные, называется решением системы. Если матрица А - неособенная, то есть det A ≠ 0 то система (13), или эквивалентное ей матричное уравнение (14), имеет единственное решение. В самом деле, при условии det A ≠ 0 существует обратная матрица А-1. Умножая обе части уравнения (14) на матрицу А-1 получим: A −1 Ax = A −1b,
(16)
−1
x = A b.
Формула (16) дает решение уравнения (14) и оно единственно. Системы линейных уравнений удобно решать с помощью функции lsolve. lsolve(А, b) Возвращается вектор решения x такой, что Ах = b. Аргументы: А - квадратная, не сингулярная матрица. b - вектор, имеющий столько же рядов, сколько рядов в матрице А.
На Рисунке 8 показано решение системы трех линейных уравнений относительно трех неизвестных. Метод Гаусса
Метод Гаусса, его еще называют методом Гауссовых исключений, состоит в том, что систему (13) приводят последовательным исключением неизвестных к эквивалентной системе с треугольной матрицей: ⎧ x1 + α12 x2 + K + α1n xn = β1 , ⎪ x2 + K + α 2 n xn = β 2 , ⎪ ⎨ KKKKKKK ⎪ xn = β n , ⎩⎪
решение которой находят по рекуррентным формулам:
18 n
xn = β n ,
xi = β i −
∑α
i jxj,
j = i +1
(i = n − 1, n − 2, K , 1) .
(17)
В матричной записи это означает, что сначала (прямой ход метода Гаусса) элементарными операциями5 над строками приводят расширенную матрицу системы к ступенчатому виду: ⎡ a11 ⎢a A p = ⎢ 21 ⎢K ⎢ ⎣ a n1
a12
K a1n
a 22
K a 2n
K
K
a n2
K a nn
K
b1 ⎤ ⎡ 1 α 12 b2 ⎥⎥ ⎢⎢ 0 1 ⇒ K ⎥ ⎢K K ⎥ ⎢ bn ⎦ ⎣ 0 0
K α 1n
K α 2n K
K
K
1
β1 ⎤ β 2 ⎥⎥ , K⎥ ⎥ βn ⎦
а затем (обратный ход метода Гаусса) эту ступенчатую матрицу преобразуют так, чтобы в первых n столбцах получилась единичная матрица: ⎡ 1 0 K 0 x1 ⎤ ⎢ ⎥ ⎢ 0 1 K 0 x2 ⎥ . ⎢K K K K K ⎥ ⎢ ⎥ ⎣ 0 0 K 1 xn ⎦
Последний, (n + 1) столбец этой матрицы содержит решение системы (13). В Mathcad прямой и обратный ходы метода Гаусса выполняет функция rref(A). На Рисунке 9 показано решение системы линейных уравнений методом Гаусса, в котором используются следующие функции: rref(A) Возвращается ступенчатая форма матрицы А. augment(A, В) Возвращается массив, сформированный расположением A и В бок о бок. Массивы A и В должны иметь одинаковое число строк.
5
Элементарными операциями над строками матрицы называются: перестановка строк, умножение или умножение строки на число (кроме 0), сложение одной строки матрицы с другой строкой. Доказано, что после элементарных операций над строками расширенной матрицы системы получается расширенная матрица эквивалентной системы.
19
Рисунок 9. Метод Гаусса submatrix(A, ir, jr, ic, jc) Возвращается субматрица, состоящая из всех элементов с ir по jr и столбцах с ic по jc. Удостоверьтесь, что ir ≤ jr и ic ≤ jc, иначе порядок строк и (или) столбцов будет обращен. Метод итерации
Пусть дана линейная система (13). Введя в рассмотрение матрицы (15), систему (13) коротко можно записать в виде матричного уравнения (14). Предполагая, что диагональные коэффициенты aij ≠ 0
(i = 1, 2, …, n),
разрешим первое уравнение системы (13) относительно х1, второе – относительно х2 и т. д. Тогда получим эквивалентную систему
20 ⎧ x1 = β1 + α12 x2 + α13 x3 + ... + α1n xn , ⎪ x = β + α x + α x + ... + α x , ⎪ 2 2 21 1 23 2 2n n ⎨ . . . . . . . . ⎪ ⎪⎩ xn = β n + α n1 x1 + α n 2 x2 + ... + α n, n −1 xn −1 ,
(18)
где βi =
bi ; aii
α ij = −
aij aii
при i ≠ j
и α ij = 0 при i = j (i, j = 1, 2, …, n). Введя матрицы ⎡ α 11 ⎢α α = ⎢ 21 ⎢K ⎢ ⎣α n1
α 12
K α 1n ⎤ K α 2 n ⎥⎥ и K K⎥ ⎥ K α nn ⎦
α 22
K
α n2
⎡β1 ⎤ ⎢ ⎥ β β= ⎢ 2⎥, ⎢... ⎥ ⎢ ⎥ ⎣⎢β n ⎦⎥
систему (18) можно записать в матричной форме x = β + αx,
а любое (k + 1) приближение вычисляется по формуле x (k+1) = β + αx (k).
(19)
Напишем формулы приближений в развернутом виде: ⎧ x i(0) = β i , ⎪ n ⎪ ( k +1) = βi + α i j x i( k ) ⎨xi ⎪ j =1 ⎪ α i i = 0; i = 1, K , n; k = 0, 1, 2, K . ⎩
(
∑
(19′)
)
Приведем достаточное условие сходимости метода итераций. Теорема: Процесс итерации для приведенной линейной системы (18) сходится к единственному ее решению, если какая-нибудь каноническая норма матрицы α меньше единицы, т.е. для итерационного процесса (19) достаточное условие есть α < 1.
(20)
21 Следствие 1. Процесс итерации для системы (18) сходится, если: 1) α
m
= max i
∑α
ij
< 1 (m-норма или неопределенная норма)
j
или 2) α
l
= max j
∑α
ij
< 1 (l-норма или норма L1)
i
или 3) α
k
∑α
=
2 ij
< 1 (k-норма или Евклидова норма).
i, j
Следствие 2. Для системы (13) процесс итерации сходится, если выполнены неравенства: n
1)
ai i >
∑' a
ij
(i = 1, 2, K , n)
ij
( j = 1, 2, K , n) ,
j =1
или n
2) a j j >
∑' a i =1
где штрих у знака суммы означает, что при суммировании пропускаются значения i = j, т. е. сходимость имеет место, если модули диагональных элементов матрицы А системы (13) или для каждой строки превышают сумму модулей недиагональных элементов этой строки, или же для каждого столбца превышают сумму модулей недиагональных элементов этого столбца. Пример 6. Пусть ⎡ 1 2 3⎤ A = ⎢ 4 5 6⎥ . ⎢ ⎥ ⎣⎢7 8 9⎦⎥
Имеем: A
m
= max(1+ 2 + 3, 4 + 5 + 6, 7 + 8 + 9) = max (6, 15, 24) = 24;
22 A l = max(1+ 4 + 7, 2 + 5 + 8, 3 + 6 + 9) = max (12, 15, 18) = 18;
A
k
= 12 + 2 2 + 3 2 + 4 2 + 5 2 + 6 2 + 7 2 + 8 2 + 9 2 = 285 ≈ 16,9 .
В Mathcad существуют специальные функции для вычисления норм матриц: normi(A) Возвращает неопределенную норму матрицы А. norm1(A) Возвращает L1, норму матрицы А. normе(A) Возвращает Евклидову норму матрицы А.
В качестве условия окончания итерационного процесса можно взять условие x ( k +1) − x ( k ) x ( k +1)
≤ ε,
ε - заданная погрешность приближенного решения х ≈ x(k +1). Пример 7. Решить систему ⎧ 100 x1 + 6 х 2 − 2 х 3 = 200, ⎪ ⎨6 x1 + 200 х 2 − 10 х 3 = 600, ⎪ x − 2 х − 100 х = 500 2 3 ⎩ 1
(21)
методом итераций. Диагональные коэффициенты 100; 200; 100 системы (21) значительно преобладают над остальными коэффициентами при неизвестных, т.е., выполняется следствие 2. Приведем эту систему к нормальному виду (18) ⎧ x1 = 2 − 0,06 х 2 + 0,02 х 3 , ⎪ ⎨ x 2 = 3 − 0,03 х1 + 0,05 х 3 , ⎪ x = 5 − 0,01х − 0,02 х . 1 2 ⎩ 3
В матричной форме ее можно записать так:
23 − 0,06 0,02⎤ ⎡ x1 ⎤ ⎡ x1 ⎤ ⎡2⎤ ⎡ 0 ⎢ x ⎥ = ⎢3⎥ + ⎢− 0,03 0 0,05⎥⎥ ⎢⎢ x 2 ⎥⎥ . ⎢ 2⎥ ⎢ ⎥ ⎢ ⎢⎣ x 3 ⎥⎦ ⎢⎣5⎥⎦ ⎢⎣ − 0,01 0,02 0 ⎥⎦ ⎢⎣ x 3 ⎥⎦
На Рисунке 10 приведен фрагмент рабочего документа Mathcad, содержащий дальнейшее решение этой системы. Метод Зейделя
Метод Зейделя представляет собой некоторую модификацию метода итераций. Основная его идея заключается в том, что при вычислении (k + 1)-го приближения неизвестной xi учитываются уже вычисленные ранее (k + 1)-е приближения неизвестных x1, x2, …, xi - 1. Пусть получена эквивалентная система (18). Выберем произвольно начальные приближения корней x1(0) , x 2(0) , K , x n(0) . Далее, пред-
полагая, что k-ые приближения x n(k ) корней известны, согласно Зейделю
Рисунок 10. Метод итераций для линейных систем уравнений
24 будем строить (k + 1)-е приближения корней по формулам: x1( k +1) = β1 + α12 x2( k ) + α13 x3( k ) + ... + α1n xn( k ) , x2( k +1) = β 2 + α 21 x1( k +1) + α 23 x2( k ) + ... + α 2 n xn( k ) , . . . . . . . . xn( k +1) = β n + α n1 x1( k +1) + α n 2 x2( k +1) + ... + α nn xn( k )
(22) (k = 0, 1, 2, K).
Заметим, что указанные выше условия сходимости для простой итерации остается верной для итерации по методу Зейделя. Обычно метод Зейделя дает лучшую сходимость, чем метод простой итерации, но приводит к более громоздким вычислениям. Пример 8. Методом Зейделя решить систему уравнений ⎧ 10 x1 + х 2 + х 3 = 12, ⎪ ⎨ 2 x1 + 10 х 2 + х 3 = 13, ⎪2 x + 2 х + 10 х = 14. 2 3 ⎩ 1
Приведем эту систему к виду, удобному для итерации: ⎧ x1 = 1,2 − 0,1х 2 − 0,1х 3 , ⎪ ⎨ x 2 = 1,3 − 0,2 х1 − 0,1х 3 , ⎪ x = 1,4 − 0,2 х − 0,2 х . 1 2 ⎩ 3
В х1(0 ) = 1,2;
качестве нулевых х 2(0 ) = 0; х 3(0 ) = 0.
приближений
корней
возьмем:
Применяя процесс Зейделя, последовательно получим: ⎧ х1(1) = 1,2 − 0,1 ⋅ 0 − 0,1 ⋅ 0 = 1,2; ⎪ (1) ⎨ х 2 = 1,3 − 0,2 ⋅1,2 − 0,1 ⋅ 0 = 1,06; ⎪ х (1) = 1,4 − 0,2 ⋅1,2 − 0,2 ⋅1,06 = 0,948; ⎩ 3 ⎧ х1(2 ) = 1,2 − 0,1 ⋅1,06 − 0,1 ⋅ 0,948 = 0,9992; ⎪ (2 ) ⎨ х 2 = 1,3 − 0,2 ⋅ 0,9992 − 0,1 ⋅ 0,948 = 1,00536; ⎪ х (2 ) = 1,4 − 0,2 ⋅ 0,9992 − 0,2 ⋅1,00536 = 0,999098 и. т .д. ⎩ 3
Результаты вычислений с точностью до четырех знаков приведены в Таблице 2.
25 Таблица 2 Нахождение корней линейной системы методом Зейделя
i
х1(i )
х 2(i )
х 3(i )
0 1 2 3 4 5
1,2000 1,2000 0,9992 0,9996 1,000 1,000
0,0000 1,0600 1,0054 1,0001 1,000 1,000
0,000 0,9480 0,9991 1,0001 1,000 1,000
Точные значения корней: х1 = 1; х2 = 1; х3 = 1.
Решение систем нелинейных уравнений В отличие от систем линейных уравнений для систем нелинейных уравнений не известны прямые методы решения. Лишь в отдельных случаях систему можно решить непосредственно. Например, для системы из двух уравнений иногда удается выразить одно неизвестное через другое и таким образом свести задачу к решению одного нелинейного уравнения относительно одного неизвестного. Поэтому итерационные методы для нелинейных систем приобретают особую актуальность. Метод Ньютона
Рассмотрим нелинейную систему уравнений ⎧ f1 ( x1 , x2 , ..., xn ) = 0, ⎪ f ( x , x , ..., x ) = 0, ⎪ 2 1 2 n ⎨ K K K K ⎪ ⎪⎩ f n ( x1 , x2 , ..., xn ) = 0
(23)
или в векторной форме f (x) = 0,
где
(23′)
26 ⎡ f1 ⎤ ⎢f ⎥ f = ⎢ 2 ⎥, ⎢K ⎥ ⎢f ⎥ ⎣ n⎦
⎡ x1 ⎤ ⎢x ⎥ x = ⎢ 2 ⎥. ⎢K ⎥ ⎢x ⎥ ⎣ n⎦
Для решения системы (23′) будем пользоваться методом последовательных приближений. Предположим, известно k-е приближение
(
x(k) = x1(k ) , x 2(k ) , K , x n(k )
)
(
)
одного из изолированных корней x = x1 , x 2 , K , x n векторного уравнения (23′). Тогда точный корень уравнения (23′) можно представить в виде х = x(k) + Δx(k),
(
)
(24)
где Δx(k) = Δx1(k ) , Δx 2(k ) , K , Δx n(k ) - поправка (погрешность корня). Подставляя выражение (24) в (23′), будем иметь f (x(k) + Δ x(k)) = 0.
(25)
Предполагая, что функция f (x) непрерывно дифференцируема в некоторой выпуклой области, содержащей x и x(k), разложим левую часть уравнения (25) по степеням малого вектора Δx(k) , ограничиваясь линейными членами, f (x(k) + Δ x(k)) = f (x(k)) + f ′ (x(k)) Δ x(k) = 0
(26)
или, в развернутом виде, ⎧ (k ) (k ) (k ) ( k ) ∂f 1 (k ) (k ) (k ) ⎪ f 1 ( x1 + Δx1 , K , x n + Δx n ) = f 1 ( x1 , K , x n ) + Δx1 ∂x + K 1 ⎪ ⎪ f ∂ K + Δx n( k ) 1 = 0, ⎪ ∂x n ⎪ ⎪ K K K K K K K K K K K K K K K K K K K K K K K ⎨ ⎪ ∂f ⎪ f n ( x1( k ) + Δx1( k ) , K , x n( k ) + Δx n( k ) ) = f n ( x1( k ) , K , x n( k ) ) + Δx1( k ) n + K ∂x1 ⎪ ⎪ ∂f ⎪ K + Δx n( k ) n = 0. ⎪⎩ ∂x n
(26′)
27 Из формул (26) и (26′) вытекает, что под производной f ′ (x) следует понимать матрицу Якоби системы функций f1, f2, ..., fn относительно переменных x1, x2, ..., xn, т. е. ⎡ ∂f 1 ⎢ ⎢ ∂x1 ⎢ ∂f 2 f ′ (x) = W(x) = ⎢ ∂x ⎢ 1 ⎢K ⎢ ∂fn ⎢ ∂x ⎣ 1
∂f 1 ∂x 2 ∂f 2 ∂x 2 K ∂fn ∂x 2
∂f 1 ⎤ ⎥ ∂x n ⎥ ∂f 2 ⎥ K ∂x n ⎥ , ⎥ K K⎥ ∂fn ⎥ K ∂x n ⎥⎦ K
или в краткой записи ⎡ ∂f ⎤ f ′ (x) = W(x) = ⎢ i ⎥ (i, j = 1, 2, …, n). ⎣⎢ ∂x j ⎥⎦
Поэтому формула (26) может быть записана в следующем виде: f (x(k) ) + W (x(k) ) Δ x(k) = 0
⎡ ∂f ⎤ Если det W ( х ) = det ⎢ ⎥ ≠ 0 , то Δ x(k) = - W -1(x(k)) f (x(k)). ⎣ ∂x ⎦ Отсюда видно, что метод Ньютона решения системы (23) состоит в построении итерационной последовательности: x(k + 1) = x(k) - W –1(x(k)) f (x(k)) (k = 0, 1, 2, …).
(27)
Если все поправки становятся достаточно малыми, счет прекращается. Иначе новые значения xi используются как приближенные значения корней, и процесс повторяется до тех пор, пока не будет найдено решение или не станет ясно, что получить его не удастся. Пример 9. Методом Ньютона приближенно найти положительное решение системы уравнений ⎧ f 1 (x, y, z ) = x 2 + y 2 + z 2 − 1, ⎪⎪ 2 2 ⎨ f 2 ( x, y , z ) = 2 x + y − 4 z , ⎪ 2 2 ⎪⎩ f 3 (x, y, z ) = 3x − 4 y + z .
исходя из начального приближения x0 = y0 = z0 =0,5. Полагая:
28
х
(0)
⎡0,5⎤ ⎢ ⎥ = ⎢0,5⎥ , ⎢ ⎥ ⎢⎣0,5⎥⎦
⎡ f 1 ( x, y , z ) ⎤ ⎥ ⎢ f (х) = ⎢ f 2 (x, y, z )⎥ , ⎥ ⎢ ⎢⎣ f 3 (x, y, z )⎥⎦
имеем: ⎡ x 2 + y 2 + z 2 − 1⎤ ⎢ ⎥ f (х ) = ⎢ 2 x 2 + y 2 − 4 z ⎥ ⎢3x 2 − 4 y + z 2 ⎥ ⎣ ⎦
Отсюда ⎡0,25 + 0,25 + 0,25 − 1⎤ ⎡− 0,25⎤ f ( х(0) ) = ⎢⎢0,50 + 0,25 − 2,00 ⎥⎥ = ⎢⎢ − 1,25 ⎥⎥. ⎢⎣0,75 − 2,00 + 0,25 ⎥⎦ ⎢⎣ − 1,00 ⎥⎦
Составим матрицу Якоби ⎡ ∂f 1 ∂f 1 ⎢ ∂y ⎢ ∂x ∂f 2 ∂f 2 ⎢ W(x) = ⎢ ∂x ∂y ⎢ ∂f f3 ∂ ⎢ 3 ⎢⎣ ∂x ∂y
∂f 1 ⎤ ⎥ ∂z ⎥ ⎡2 x 2 y 2 z ⎤ ⎥ ∂f 2 ⎥ ⎢ ⎢ 4 x 2 y − 4⎥ = ∂z ⎥ ⎢ ⎥ ∂f 3 ⎥⎥ ⎢⎣6 x − 4 2 z ⎥⎦ ∂z ⎥⎦
Имеем 1⎤ ⎡1 1 W ( х(0) ) = ⎢⎢2 1 − 4⎥⎥ , причем Δ = det W ( х(0) ) = ⎢⎣3 − 4 1 ⎥⎦
1⎤ ⎡1 1 ⎢2 1 − 4⎥ = −40. ⎢ ⎥ ⎢⎣3 − 4 1 ⎥⎦
Следовательно, матрица W ( х(0) ) – неособенная. Составим обратную ей матрицу ⎡3 ⎢ ⎡ − 15 − 5 − 5⎤ ⎢ 8 1 7 ⎢ ⎥ − 14 − 2 6 ⎥ = ⎢ W -1 ( х(0) ) = − ⎢ 40 ⎢ 20 ⎢⎣ − 11 7 − 1⎥⎦ ⎢ 11 ⎢ 40 ⎣
1 8 1 20 7 − 40
По формуле (27) получаем первое приближение
1 ⎤ 8 ⎥ 3⎥ − ⎥. 20 ⎥ 1 ⎥ 40 ⎥⎦
29 х
(1)
=x
(0)
–1
- W (x
(0)
(0)
) f (x ) =
1 ⎤ ⎡− 0,25⎤ ⎥ 8 ⎥ ⎢ ⎥ 3⎥ ⎢ − ⎥ ⎢ − 1,25 ⎥ 20 ⎥ ⎢ ⎥ = 1 ⎥ ⎢ ⎥ ⎢ ⎥ ⎥ − 1 , 00 40 ⎦ ⎣ ⎦ ⎡0,5⎤ ⎡ 0,375 ⎤ ⎡0,875⎤ ⎢ ⎢ ⎥ ⎥ = ⎢0,5⎥ + ⎢ 0 ⎥ = ⎢⎢0,500⎥⎥ . ⎢⎣0,5⎥⎦ ⎢⎣− 0,125⎥⎦ ⎢⎣0,375⎥⎦ Аналогично находятся дальнейшие приближения. Результаты вычислений приведены в Таблице 3. ⎡0,5⎤ ⎡3 ⎢ ⎥ ⎢8 ⎢ ⎥ ⎢7 ⎢0,5⎥ ⎢ = ⎢ ⎥ - ⎢ 20 ⎢ ⎥ ⎢ 11 ⎢0,5⎥ ⎢ 40 ⎣ ⎦ ⎣
1 8 1 20 7 − 40
Таблица 3 Последовательные приближения корней
i
x
y
z
0 1 2 3
0,5 0,875 0,78981 0,78521
0,5 0,5 0,49662 0,49662
0,5 0,375 0,36993 0,36992
Останавливаясь на приближении x(3) , будем иметь: x = 0,7852; y = 0,4966; z =0,3699.
Решение уравнений средствами Mathcad Решение одного уравнения
Для простейших уравнений вида f(x) = 0 решение в Mathcad находится с помощью функции root. root( f(х1, x2, …), х1, a, b ) Возвращает значение х1, принадлежащее отрезку [a, b], при котором выражение или функция f(х) обращается в 0. Оба аргумента этой функции должны быть скалярами. Функция возвращает скаляр. Аргументы:
30 f(х1, x2, …) - функция, определенная где-либо в рабочем документе, или выражение. Выражение должно возвращать скалярные значения. х1 - - имя переменной, которая используется в выражении. Этой переменной перед использованием функции root необходимо присвоить числовое значение. Mathcad использует его как начальное приближение при поиске корня. a, b – необязательны, если используются, то должны быть вещественными числами, причем a < b. Если после многих итераций Mathcad не находит подходящего (отсутстприближения, то появится сообщение вует сходимость). Эта ошибка может быть вызвана следующими причинами: • Уравнение не имеет корней. • Корни уравнения расположены далеко от начального приближения. • Выражение имеет локальные max и min между начальным приближением и корнями. • Выражение имеет разрывы между начальными приближениями и корнями. • Выражение имеет комплексный корень, но начальное приближение было вещественным. Чтобы установить причину ошибки, исследуйте график f(x). Он поможет выяснить наличие корней уравнения f(x) = 0 и, если они есть, то определить приблизительно их значения. Чем точнее выбрано начальное приближение корня, тем быстрее будет root сходиться. Рекомендации по использованию функции root:
•
•
Для изменения точности, с которой функция root ищет корень, нужно изменить значение системной переменной TOL. Если значение TOL увеличивается, функция root будет сходиться быстрее, но ответ будет менее точен. Если значение TOL уменьшается, то функция root будет сходиться медленнее, но ответ будет более точен. Чтобы изменить значение TOL в определенной точке рабочего документа, используйте определение вида . Чтобы изменить значение TOL для всего рабочего документа, выберите команду Математика ⇒ Параметры… ⇒ Переменные ⇒ Допуск сходимости (TOL). Если два корня расположены близко друг от друга, следует уменьшить TOL, чтобы различить их.
•
31 Если функция f(x) имеет малый наклон около искомого корня, функция root(f(x), x) может сходиться к значению r, отстоящему от корня достаточно далеко. В таких случаях для нахождения более точного значения корня необходимо уменьшить значение TOL. Другой вариант заключается в замене уравнения f(x) = 0 на g(x) = 0 g ( x) =
•
f ( x) . d f ( x) dx
Для выражения f(x) с известным корнем а нахождение дополнительных корней f(x) эквивалентно поиску корней уравнения h(x) = f(x)/(x - a). Подобный прием полезен для нахождения корней, расположенных близко друг к другу. Проще искать корень выражения h(x), чем пробовать искать другой корень уравнения f(x) = 0, выбирая различные начальные приближения.
Рисунок 11. Решение уравнений средствами Mathcad
32 Нахождение корней полинома
Для нахождения корней выражения, имеющего вид vnxn + ... + v2x2 + v1x + v0, лучше использовать функцию polyroots, нежели root. В отличие от функции root, функция polyroots не требует начального приближения и возвращает сразу все корни, как вещественные, так и комплексные. Polyroots(v) Возвращает корни полинома степени n. Коэффициенты полинома находятся в векторе v длины n + 1. Возвращает вектор длины n, состоящий из корней полинома. Аргументы: v – вектор, содержащий коэффициенты полинома.
Рисунок Mathcad.
11
иллюстрирует
решение
уравнений
средствами
Решение систем уравнений
MathCAD дает возможность решать также и системы уравнений. Максимальное число уравнений и переменных равно 50. Результатом решения системы будет численное значение искомого корня. Для решения системы уравнений необходимо выполнить следующее: • Задать начальное приближение для всех неизвестных, входящих в систему уравнений. Mathcad решает систему с помощью итерационных методов. • Напечатать ключевое слово Given. Оно указывает Mathcad, что далее следует система уравнений. • Введите уравнения и неравенства в любом порядке. Используйте [Ctrl]= для печати символа =. Между левыми и правыми частями неравенств может стоять любой из символов <, >, ≥ и ≤. • Введите любое выражение, которое включает функцию Find, например: а:= Find(х, у). Find(z1, z2, . . .) Возвращает точное решение системы уравнений. Число аргументов должно быть равно числу неизвестных.
Ключевое слово Given, уравнения и неравенства, которые следуют за ним, и какое–либо выражение, содержащее функцию Find, называют блоком решения уравнений.
33
Рисунок 12. Решение систем уравнений в Mathcad
Следующие выражения недопустимы внутри блока решения: Ограничения со знаком ≠ . Дискретный аргумент или выражения, содержащие дискретный аргумент в любой форме. • Неравенства вида a < b < c. Блоки решения уравнений не могут быть вложены друг в друга, каждый блок может иметь только одно ключевое слово Given и имя функции Find. Функция, которая завершает блок решения уравнений, может быть использована аналогично любой другой функции. Можно произвести с ней следующие три действия: • Можно вывести найденное решение, напечатав выражение вида: • •
Find(var1, var2,…) =. •
Определить переменную с помощью функции Find: a := Find(x) – скаляр,
34 var := Find(var1, var2,…) – вектор.
•
Это удобно сделать, если требуется использовать решение системы уравнений в другом месте рабочего документа. Определить другую функцию с помощью Find f(a, b, c, …) := Find(x, y, z, …). Эта конструкция удобна для многократного решения системы уравнений для различных значений некоторых параметров a, b, c,…, непосредственно входящих в систему уравнений.
Сообщение об ошибке (Решение не найдено) при решении уравнений появляется, когда: • Поставленная задача может не иметь решения. • Для уравнения, которое не имеет вещественных решений, в качестве начального приближения взято вещественное число и наоборот. • В процессе поиска решения последовательность приближений попала в точку локального минимума невязки. Для поиска искомого решения нужно задать различные начальные приближения. • Возможно, поставленная задача не может быть решена с заданной точностью. Попробуйте увеличить значение TOL. Пример 1 Рисунка 12 иллюстрирует решение системы уравнений в Mathcad. Для решения линейных систем уравнений используется функция lsolve (см. стр. 17). Приближенные решения
Функция Minner очень похожа на функцию Find (использует тот же алгоритм). Если в результате поиска не может быть получено дальнейшее уточнение текущего приближения к решению, Minner возвращает это приближение. Функция Find в этом случае возвращает сообщение об ошибке. Правила использования функции Minner такие же, как и функции Find. Minerr(z1, z2, . . .) Возвращает приближенное решение системы уравнений. Число аргументов должно быть равно числу неизвестных.
Если Minner используется в блоке решения уравнений, необходимо всегда включать дополнительную проверку достоверности результатов.
35 Символьное решение уравнений
В Mathcad можно быстро и точно найти численное значение корня с помощью функции root. Но имеются некоторые задачи, для которых возможности Mathcad позволяют находить решения в символьном (аналитическом) виде. Решение уравнений в символьном виде позволяет найти точные или приближенные корни уравнения: • Если решаемое уравнение имеет параметр, то решение в символьном виде может выразить искомый корень непосредственно через параметр. Поэтому вместо того, чтобы решать уравнение для каждого нового значения параметра, можно просто заменять его значение в найденном символьном решении. • Если нужно найти все комплексные корни полинома со степенью меньше или равной 4, символьное решение даст их точные значения в одном векторе или в аналитическом или цифровом виде. Команда Символы ⇒ Переменные ⇒ Вычислить позволяет решить уравнение относительно некоторой переменной и выразить его корни через остальные параметры уравнения. Чтобы решить уравнение символьно необходимо: • Напечатать выражение (для ввода знака равенства используйте комбинацию клавиш [Ctrl]=). • Выделить переменную, относительно которой нужно решить уравнение, щелкнув на ней мышью. • Выбрать пункт меню Символы ⇒ Переменные ⇒ Вычислить. Нет необходимости приравнивать выражение нулю. Если Mathcad не находит знака равенства, он предполагает, что требуется приравнять выражение нулю. Чтобы решить систему уравнений в символьном виде, необходимо выполнить следующее: • Напечатать ключевое слово Given. • Напечатать уравнения в любом порядке ниже слова Given. Удостоверьтесь, что для ввода знака = используется [Ctrl]=. • Напечатать функцию Find, соответствующую системе уравнений. • Нажать [Ctrl]. (клавиша CTRL, сопровождаемая точкой). Mathcad отобразит символьный знак равенства →. • Щелкнуть мышью на функции Find. Пример 2 Рисунка 12 иллюстрирует символьное решение системы уравнений в Mathcad.
36
Практические задания Задание 1. Найти методом половинного деления отличный от нуля корень трансцендентного уравнения
1)
x2 - 5 sin х = 0;
2)
sin х – 1/x = 0;
3)
lg x – cos x = 0
с четырьмя знаками после запятой. Корни отделить графически. Задание 2. Найти, используя метод хорд, действительный корень ξ уравнения
1)
x3 – 2 x2 + х – 3 = 0;
2)
x3 – 2 x2 + 3 х – 5 = 0;
3)
x4 - 5x3 + 2 x2 - 10 х + 1 = 0
с точностью ε = 10-4. Корни отделить аналитически. Задание 3. Найти, используя метод Ньютона, действительный корень ξ уравнения
1)
x3 – 2 x2 + х – 3 = 0;
2)
x3 – 2 x2 + 3 х – 5 = 0;
3)
x4 - 5x3 + 2 x2 - 10 х + 1 = 0
с точностью ε = 10-4. Корни отделить аналитически. Задание 4. Найти наибольший положительный корень ξ уравнения
1)
x3 + х = 1000;
2)
4 x – 5 ln x = 5;
3)
ex – 10 x = 0
с точностью ε = 10-4, используя метод итераций. Корни отделить графически. Задание 5. Систему
37 ⎧ 2 x1 + 3х 2 − 4 х 3 + х 4 − 3 = 0, ⎪⎪ x − 2 х − 5 х + х − 2 = 0, 1 2 3 4 ⎨ 5 − 3 + − 4 x х х х 2 3 4 − 1 = 0, ⎪ 1 ⎪⎩10 x1 + 2 х 2 − х 3 + 2 х 4 + 4 = 0
привести к виду, годному для применения метода итерации. Задание 6. Решить систему
1)
⎧ 4 x1 + 0,24 х 2 − 0,08 х 3 = 8, ⎪ ⎨ 0,09 x1 + 3х 2 − 0,15 х 3 = 9, ⎪0,04 x − 0,08 х + 4 х = 20, 1 2 3 ⎩
2)
⎧3x1 + 2 х 2 + х 3 = 4, ⎪ ⎨ x1 + х 2 − х 3 = 1, ⎪ x − 2х + х = 3 2 3 ⎩ 1
методом итерации. Задание 7. Методом Зейделя решить систему уравнений ⎧ 2 x1 − х 2 + х 3 = −3, ⎪ ⎨ 3 x1 + 5 х 2 − 2 х 3 = 1, ⎪ x − 4 х + 10 х = 0, 2 3 ⎩ 1
Задание 8. Приближенно найти положительные решения системы нелинейных уравнений методом Ньютона ⎧⎪ f 1 ( x1 , x 2 ) ≡ x1 + 3 lg x1 − x 22 = 0, ⎨ ⎪⎩ f 2 ( x1 , x 2 ) ≡ 2 x12 − x1 x 2 − 5 x1 + 1 = 0.
Упражнения к лабораторной работе Упражнение 1. Построить график функции f(x) (Таблица 4) и приблизительно определить один из корней уравнения. Решить уравнение f(x)= 0 с точностью ε = 10 - 4: 1) с помощью встроенной функции Mathcad root; 2) методом Ньютона (касательных), используя функцию until; 3) методом итерации, используя функцию until.
38 Определить число итераций в каждом методе с помощью функции last. Таблица 4 Варианты упражнения 1 №
№
f(x)
варианта
1
e x −1 − x 3 − x x ∈ [0, 1]
F(x)
варианта
9
0.25 x 3 + x − 2 x ∈ [0, 2]
1 − x2 -x 1 + x2
1 3 + sin(3.6 x ) x ∈ [0, 1]
10
3
arccos x − 1 − 0.3 x 3 x ∈ [0, 1]
11
3x − 4 ln x − 5 x ∈ [2, 4]
4
1 − 0.4 x 2 − arcsin x x ∈ [0, 1]
12
e x − e−x − 2 x ∈ [0, 1]
5
3x − 14 + e x − e− x x ∈ [1, 3]
13
1 − x − tg x x ∈ [0, 1]
6
2 x 2 + 1.2 − cos x − 1 x ∈ [0, 1]
14
1 − x + sin x − ln(1 + x) x ∈ [0, 2]
7
⎛2⎞ ⎛1⎞ 1 cos⎜ ⎟ − 2 sin ⎜ ⎟ + ⎝x⎠ ⎝x⎠ x x ∈ [1, 2]
15
2
8
x−
arccos
х ∈ [2, 3]
х5 – х - 0,2 х ∈ [1, 2]
0.1x 2 − x ln x
x ∈ [1, 2]
Упражнение 2. Для полинома g(x) (Таблица 5) выполнить следующие действия: 1) с помощью команды Символы ⇒ Коэффициенты полинома создать вектор V, содержащий коэффициенты полинома; 2) решить уравнение g(x) = 0 с помощью функции polyroots; 3) решить уравнение символьно, используя команду Символы ⇒ Переменные ⇒ Вычислить; 4) разложить на множители, используя Символы ⇒ Фактор.
39 Таблица 5 Варианты упражнения 2
№ варианта
g(x)
№ варианта
g(x)
1
x4 - 2x3 + x2 - 12x + 20
9
x4 + x3 - 17x2 - 45x - 100
2
x4 + 6x3 + x2 - 4x - 60
10
x4 - 5x3 + x2 - 15x + 50
3
x4 - 14x2 - 40x - 75
11
x4 - 4x3 - 2x2 - 20x + 25
4
x4 - x3 + x2 - 11x + 10
12
x4 + 5x3 + 7x2 + 7x - 20
5
x4 - x3 - 29x2 - 71x -140
13
x4 - 7x3 + 7x2 - 5x + 100
6
x4 + 7x3 + 9x2 + 13x - 30
14
x4 + 10x3 +36x2 +70x+ 75
7
x4 + 3x3 - 23x2 - 55x - 150
15
x4 + 9x3 + 31x2 + 59x+ 60
8
x4 - 6x3 + 4x2 + 10x + 75
Упражнение 3. Решить систему линейных уравнений (Таблица 6): 1) используя функции Find; 2) матричным способом и используя функцию lsolve; 3) методом Гаусса; 4) методом итерации. Оценить погрешность решения методом итерации. Таблица 6 Варианты упражнения 3
№
№ варианта
1
Система линейных уравнений ⎧2 x1 + x2 + 2 x3 + 3x4 = 8 ⎪⎪3 x + 3 x = 6 1 3 ⎨2 x − x + 3 x = 4 1 2 4 ⎪ ⎩⎪ x1 + 2 x2 − x3 + 2 x4 = 4
варианта
9
Система линейных уравнений ⎧2 x1 + x2 − 5 x3 + x4 = −4 ⎪⎪ x − 3x − 6 x = −7 1 2 4 ⎨2 x − x + 2 x = 2 2 3 4 ⎪ ⎪⎩ x1 + 4 x2 − 7 x3 + 6 x4 = −2
40 Продолжение таблицы 6
№
№ варианта
Система линейных уравнений
2
⎧ x1 + 2 x2 + 3 x3 + 4 x4 = 22 ⎪⎪2 x + 3x + x + 2 x = 17 1 2 3 4 ⎨x + x + x − x = 8 2 3 4 ⎪ 1 ⎪⎩ x1 − 2 x3 − 3x4 = −7
варианта
Система линейных уравнений
10
⎧ x1 + 2 x2 + 3 x3 + 4 x4 ⎪⎪2 x + 3 x + 4 x + x 1 2 3 4 ⎨3x + 4 x + x + 2 x 2 3 4 ⎪ 1 ⎪⎩4 x1 + x2 + 2 x3 + 3x4
= 26 = 34 = 26 = 26
3
⎧9 x1 + 10 x2 − 7 x3 − x4 = 23 ⎪⎪7 x − x − 5 x = 37 1 3 4 ⎨5 x − 2 x + x = 22 3 4 ⎪ 1 ⎪⎩4 x1 + x2 + 2 x3 + 3x4 = 26
11
⎧2 x1 − 8 x2 − 3 x3 − 2 x4 = −18 ⎪⎪ x − 2 x + 3x − 2 x = 28 1 2 3 4 ⎨ x + x + x = 10 3 4 ⎪ 2 ⎪⎩11x2 + x3 + 2 x4 = 21
4
⎧6 x1 − x2 + 10 x3 − x4 = 158 ⎪⎪2 x + x + 10 x + 7 x = 128 1 2 3 4 ⎨3x − 2 x − 2 x − x = 7 1 2 3 4 ⎪ ⎩⎪ x1 − 12 x2 + 2 x3 − x4 = 17
⎧2 x1 − x2 + 4 x3 + x4 = 66 ⎪⎪2 x − 6 x + x = −63 2 3 4 12 ⎨8 x − 3 x + 6 x − 5 x = 146 1 2 3 4 ⎪ ⎩⎪2 x1 − 7 x2 + 6 x3 − x4 = 80
5
⎧ x1 − 2 x2 + 6 x3 + x4 = 88 ⎪⎪5 x + 2 x − 3 x = 88 1 3 4 ⎨7 x − 3 x + 7 x + 2 x = 181 2 3 4 ⎪ 1 ⎪⎩3x1 − 7 x2 + 5 x3 + 2 x4 = 99
⎧2 x1 − 3 x3 − 2 x4 = −16 ⎪⎪2 x − x + 13 x + 4 x = 213 1 2 3 4 13 ⎨3x + x + 2 x + x = 72 3 4 ⎪ 1 2 ⎪⎩ x1 − 12 x3 − 5 x4 = −159
6
⎧ x1 − 2 x2 − 8 x4 = −7 ⎪⎪ x + 4 x − 7 x + 6 x = −8 1 2 3 4 ⎨ x + x − 5 x + x = −10 3 4 ⎪ 1 2 ⎪⎩2 x1 − x2 + 2 x4 = 7
⎧7 x1 + 7 x2 − 7 x3 − 2 x4 = 5 ⎪⎪3 x + 4 x + 5 x + 8 x = 60 1 2 3 4 14 ⎨2 x + 2 x + 2 x + x = 27 2 3 4 ⎪ 1 ⎪⎩2 x1 − 2 x3 − x4 = −1
7
⎧2 x1 + 2 x2 + 6 x3 + x4 = 15 ⎪⎪− x + 2 x + x = 18 2 3 4 ⎨4 x − 3 x + x − 5 x = 37 1 2 3 4 ⎪ ⎪⎩3 x1 − 5 x2 + x3 − x4 = 30
⎧6 x1 − 9 x2 + 5 x3 + x4 = 124 ⎪⎪7 x − 5 x − x = −54 2 3 4 15 ⎨ x x x 5 − 5 + 2 1 2 3 + 4 x4 = 83 ⎪ ⎪⎩3 x1 − 9 x2 + x3 + 6 x4 = 45
8
⎧4 x1 − 5 x2 + 7 x3 + 5 x4 = 165 ⎪⎪2 x + x − 3 x − x = −15 1 2 3 4 ⎨9 x + 4 x − x = 194 1 3 4 ⎪ ⎩⎪ x1 − x2 − 2 x3 − 3 x4 = −19
41 Упражнение 4. Преобразовать нелинейные уравнения системы из Таблицы 7 к виду f 1(x) = y и f 2 (y)= x. Построить их графики и определить начальное приближение решения. Решить систему нелинейных уравнений 1) с помощью функции Minerr; 2) методом Ньютона. Таблица 7 Варианты упражненияя 4
№ варианта
Система нелинейных уравнений
№ варианта
Система нелинейных уравнений
1
⎧sin x + 2 y = 2, ⎨cos( y − 1) + x = 0,7. ⎩
9
⎧sin y + x = −0,4, ⎨2 y − cos(x + 1) = 0. ⎩
2
⎧sin( x + 0,5) − y = 1, ⎨cos( y − 2) + x = 0. ⎩
10
⎧sin( x + 2) − y = 1,5, ⎨cos( y − 2) + x = 0,5. ⎩
3
⎧cos x + y = 1,5, ⎨2 x − sin ( y − 0,5) = 1. ⎩
11
⎧cos( x + 0,5) − y = 2, ⎨ ⎩sin y − 2 x = 1.
4
⎧cos(x + 0,5) + y = 0,8, ⎨sin y − 2 x = 1,6. ⎩
12
⎧cos( x − 2) + y = 0, ⎨ ( ⎩sin y + 0,5) − x = 1.
5
⎧sin( x − 1) = 1.3 − y, ⎨ x − sin ( y + 1) = 0.8. ⎩
13
⎧cos( x + 0,5) + y = 1, ⎨ ⎩sin ( y + 0,5) − x = 1.
6
⎧cos( x + 0,5) + y = 1, ⎨ ⎩sin y − 2 x = 2.
14
⎧sin( x) − 2 y = 1, ⎨ ⎩cos( y + 0,5) − x = 2.
7
⎧− sin( x + 1) + y = 0,8, ⎨ ⎩sin( y − 1) + x = 1,3.
15
⎧2 y − sin( x − 0,5) = 1, ⎨ ⎩cos( y ) + x = 1,5.
8
⎧sin( x) − 2 y = 1, ⎨ ⎩sin( y − 1) + x = 1,3.
Упражнение 5. Символьно решить системы уравнений: ⎧3 x + 4πy = a, ⎨ 2 x + y = b. ⎩
⎧2y − πz = a, ⎪ ⎨ πz − z = b, ⎪⎩ 3y + x = c.
42
Контрольные вопросы 1. Какие методы решения нелинейных уравнений вам известны? 2. В каких случаях необходимо использовать итерационные методы? 3. Каким условиям должна соответствовать функция f(x) и что они гарантируют? 4. Что значит решить уравнение итерационным методом? 5. Из каких этапов состоит задача нахождения нуля функции f(x) итерационным методом? 6. Назовите способы отделения корней? 7. В чем состоит итерационный процесс? 8. В чем сущность метода половинного деления? 9. В чем сущность метода хорд? 10. Какой из концов отрезка [а, b] в методе хорд считается неподвижным? 11. Условие окончания итерационного процесса в методе хорд? 12. В чем сущность метода Ньютона? 13. Как выбрать начальное приближение для метода Ньютона? 14. Как в Mathcad организовать итерационный процесс? 15. Что влияет на скорость сходимости итерационного процесса? 16. В чем сущность метода итерации, как еще называют этот метод? 17. Какие виды итерационных процессов вам известны? 18. Сформулируйте достаточные условия сходимости метода итерации? 19. Назовите точные методы решения систем линейных уравнений? 20. Какие функции Mathcad используются для их реализации? 21. Сформулируйте достаточные условия сходимости метода итерации для систем линейных уравнений. 22. Какие виды норм матриц вам известны и как их вычислять? 23. Назовите особенности метода Зейделя. 24. В чем сущность метода Ньютона для решения систем нелинейных уравнений? 25. Какой должна быть матрица Якоби? 26. Когда можно прекратить вычисления по методу Ньютона? 27. Какие функции для решения одного уравнения в Mathcad вы знаете? 28. В каких случаях Mathcad не может найти корень уравнения? 29. Как изменить точность, с которой функция root ищет корень? 30. Назовите функции для решения систем уравнений в Mathcad и особенности их применения. 31. Дайте сравнительную характеристику функциям Find и Minerr. 32. Как символьно решить уравнение или систему уравнений в Mathcad? 33. Назовите особенности использования символьного решения уравнений.
43
Литература 1. Mathcad 6.0 Plus. Финансовые, инженерные и научные расчеты в среде Windows 95./Перевод с англ. - М.: Информационно-издательский дом “Филинъ”, 1996. -712 с. 2. Амосов А.А. И Др. Вычислительные методы для инженеров. - М.: Высшая Школа, 1994. 3. Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы. - М.: Наука, 1987. 4. Боглаев Ю.П. Вычислительная математика и программирование. М.: Высшая Школа, 1990. 5. Воробьева Г.Н., Данилова А.Н. Практикум по вычислительной математике. - М.: Высшая Школа, 1990.- 207 с. 6. Демидович Б.П., Марон И.А. Основы вычислительной математики. М.: Наука, 1970. - 664 с. 7. Дьяконов В.П. Справочник по алгоритмам и программам на языке бейсик для персональных ЭВМ. - М.: Наука, 1987. - 240 с. 8. Дьяконов В.П. Справочник по MathCAD PLUS 6.0 PRO. - М.: “СК Пресс”, 1997. - 336 с.: ил. 9. Зверев В.С. Mathcad. Математическая компьютерная поддержка проектирования: Учеб. пос. для инженерно-технических специальностей. - Астрахань: Изд-во АГТУ, 1996. - 160 с. 10. Очков В.Ф. Mathcad 7 Pro для студентов и инженеров. - М.: КомпьютерПресс, 1998. - 384 с.: ил. 11. Плис А.И., Сливина Н.А. Лабораторный практикум по высшей математике. - М.: Высш. шк., 1994. - 416 с.: ил. 12. Турчак Л.И. Основы численных методов. - М.: Наука, 1987.- 320 с. 13. Ханова А.А., Макарова И.Г. Лабораторный практикум по математическому моделированию и методам в расчетах на ЭВМ. - Астрахань: Изд-во АГТУ, 1998. - 93 с. 14. Шуп Терри Е. Прикладные численные методы в физике и технике. М.: Высшая Школа, 1990. - 254 с.