www.uchites.ru 2.2. Решение систем нелинейных уравнений Систему нелинейных уравнений с n неизвестными можно записать в виде ⎧ f 1 ( x1 , x 2 ,..., x n ) = 0 ⎪ f ( x , x ,..., x ) = 0 ⎪ 2 1 2 n ⎨ ⎪ ............................ ⎪⎩ f n ( x1 , x 2 ,..., x n ) = 0 (2.10) или, более коротко, в векторной форме f ( x) = 0 , (2.11) где x - вектор неизвестных величин, f - вектор-функция ⎛ x1 ⎞ ⎜ ⎟ ⎜x ⎟ x = ⎜ 2 ⎟, ... ⎜ ⎟ ⎜x ⎟ ⎝ n⎠ ⎛ ⎜ ⎜ f =⎜ ⎜ ⎜ ⎝ f 1 ( x) ⎞ ⎟ f 2 ( x) ⎟ , ... ⎟ ⎟ f n (x) ⎟⎠ ⎛0⎞ ⎜ ⎟ ⎜0⎟ 0 = ⎜ ⎟. ... ⎜ ⎟ ⎜0⎟ ⎝ ⎠ В редких случаях для решения такой системы удается применить метод последовательного исключения неизвестных и свести решение исходной задачи к решению одного нелинейного уравнения с одним неизвестным. Значения других неизвестных величин находятся соответствующей подстановкой в конкретные выражения. Однако в подавляющем большинстве случаев для решения систем нелинейных уравнений используются итерационные методы. В дальнейшем предполагается, что ищется изолированное решение нелинейной системы. Как и в случае одного нелинейного уравнения, локализация решения может осуществляться на основе специфической информации по конкретной решаемой задаче (например, по физическим соображениям), и - с помощью методов математического анализа. При решении системы двух уравнений, достаточно часто удобным является графический способ, когда месторасположение корней определяется как точки пересечения кривых f1 ( x1 , x2 ) = 0 , f 2 ( x1 , x 2 ) = 0 на плоскости ( x1 , x 2 ) . 1 www.uchites.ru Метод Ньютона. Если определено начальное приближение x ( 0 ) = ( x1( 0 ) , x 2( 0 ) ,..., x n( 0 ) ) T , итерационный процесс нахождения решения системы (2.10) методом Ньютона можно представить в виде ⎧ x1( k +1) = x1( k ) + ∆x1( k ) ⎪ ( k +1) = x 2( k ) + ∆x 2( k ) ⎪ x2 ⎨ ⎪ ..................... ⎪⎩ x n( k +1) = x n( k ) + ∆x n( k ) k = 0,1, 2, ... (2.12) где значения приращений ∆x1( k ) , ∆x 2( k ) ,…, ∆x n(k ) определяются из решения системы линейных алгебраических уравнений, все коэффициенты которой выражаются через известное предыдущее приближение x ( k ) = ( x1( k ) , x 2( k ) ,..., x n( k ) ) ⎧ ∂f1 (x ( k ) ) ( k ) (k ) ( ) + x ∆x1 f ⎪ 1 ∂ x 1 ⎪ ∂f (x ( k ) ) ( k ) ⎪⎪ ∆x1 f 2 (x ( k ) ) + 2 ⎨ ∂x1 ⎪ ⎪ (k ) ⎪ f n (x ( k ) ) + ∂f n (x ) ∆x1( k ) ∂x1 ⎩⎪ ∂f1 (x ( k ) ) ( k ) ∂f (x ( k ) ) ( k ) ∆x 2 + ... + 1 ∆x n = 0 ∂x 2 ∂x n ∂f (x ( k ) ) ( k ) ∂f (x ( k ) ) ( k ) + 2 ∆x 2 + ... + 2 ∆x n = 0 ∂x 2 ∂x n ..................... ∂f (x ( k ) ) ( k ) ∂f (x ( k ) ) ( k ) + n ∆x 2 + ... + n ∆x n = 0 ∂x 2 ∂x n + (2.13) В векторно-матричной форме расчетные формулы имеют вид x ( k +1) = x ( k ) + ∆x ( k ) где вектор приращений ∆x ( k ) k = 0,1, 2, ... (2.14) ⎛ ∆x1( k ) ⎞ ⎜ (k ) ⎟ ⎜ ∆x ⎟ = ⎜ 2 ⎟ находится из решения уравнения ⎜ ... ⎟ ⎜ ∆x ( k ) ⎟ ⎝ n ⎠ f (x ( k ) ) + J (x ( k ) )∆x ( k ) = 0 (2.15) 2 www.uchites.ru ⎡ ∂f1 (x) ∂f 1 (x) ∂f1 (x) ⎤ ... ⎢ ∂x ∂x 2 ∂x n ⎥ 1 ⎢ ⎥ ⎢ ∂f 2 (x) ∂f 2 (x) ... ∂f 2 (x) ⎥ Здесь J (x) = ⎢ ∂x1 ∂x 2 ∂x n ⎥ - матрица Якоби первых производных ⎢ ⎥ ..................... ⎢ ∂f (x) ∂f (x) ∂f (x) ⎥ n ⎢ n ... n ⎥ ∂ ∂ ∂x n ⎦⎥ x x 1 2 ⎣⎢ вектор-функции f ( x) . Выражая из (2.15) вектор приращений ∆x (k ) и подставляя его в (2.14), итерационный процесс нахождения решения можно записать в виде x ( k +1) = x ( k ) − J −1 (x ( k ) )f (x ( k ) ) k = 0,1, 2, ... (2.16) где J −1 (x) - матрица, обратная матрице Якоби. Формула (2.16) есть обобщение формулы (2.2) на случай систем нелинейных уравнений. При реализации алгоритма метода Ньютона в большинстве случаев предпочтительным является не вычисление обратной матрицы J −1 (x ( k ) ) , а нахождение из системы (2.13) значений приращений ∆x1( k ) , ∆x 2( k ) ,…, ∆x n(k ) и вычисление нового приближения по (2.12). Для решения таких линейных систем можно привлекать самые разные методы, как прямые, так и итерационные (см. раздел 1.1), с учетом размерности n решаемой задачи и специфики матриц Якоби J ( x) (например, симметрии, разреженности и т.п.). Использование метода Ньютона предполагает дифференцируемость функций f1 (x) , f 2 (x) ,…, f n (x) и невырожденность матрицы Якоби ( det J (x ( k ) ) ≠ 0 ). В случае, если начальное приближение выбрано в достаточно малой окрестности искомого корня, итерации сходятся к точному решению, причем сходимость квадратичная. В практических вычислениях в качестве условия окончания итераций обычно используется критерий [3,5] x ( k +1) − x ( k ) ≤ ε , (2.17) где ε - заданная точность. Пример 2.2. Методом Ньютона найти положительное решение системы нелинейных уравнений 3 www.uchites.ru ⎧ f1 ( x1 , x 2 ) = 0.1x12 + x1 + 0.2 x 22 − 0.3 = 0 ⎨ 2 ⎩ f 2 ( x1 , x 2 ) = 0.2 x1 + x 2 − 0.1x1 x 2 − 0.7 = 0 (2.18) с точностью ε = 10 −4 . Решение. Для выбора начального приближения применяем графический способ. Построив на плоскости ( x1 , x 2 ) в интересующей нас области кривые f1 ( x1 , x2 ) = 0 и f 2 ( x1 , x 2 ) = 0 (рис. 2.2), определяем, что положительное решение системы уравнений находится в квадрате 0 < x1 < 0.5 , 0.5 < x2 < 1.0 . Рис. 2.2 За начальное приближение примем x1( 0 ) = 0.25 , x 2( 0) = 0.75 . Для системы двух уравнений расчетные формулы (2.12), (2.13) удобно записать в виде разрешенном относительно x1( k +1) , x 2( k +1) ⎧ ( k +1) det A 1( k ) (k ) = − x x ⎪⎪ 1 1 det J ( k ) ⎨ (k ) ⎪ x 2( k +1) = x 2( k ) − det A 2 ⎪⎩ det J ( k ) где J (k ) ⎡ ∂f 1 ( x1( k ) , x 2( k ) ) ⎢ ∂x1 =⎢ (k ) (k ) ⎢ ∂f 2 ( x1 , x 2 ) ⎢ ∂x1 ⎣ k = 0,1, 2, ... (2.19) ∂f1 ( x1( k ) , x 2( k ) ) ⎤ ⎥ ∂x 2 ⎥, ∂f 2 ( x1( k ) , x 2( k ) ) ⎥ ⎥ ∂x 2 ⎦ 4 www.uchites.ru A 1( k ) ⎡ (k ) (k ) ⎢ f 1 ( x1 , x 2 ) =⎢ ⎢ (k ) (k ) ⎢ f 2 ( x1 , x 2 ) ⎣ ∂f1 ( x1( k ) , x 2( k ) ) ⎤ ⎥ ∂x 2 ⎥, ∂f 2 ( x1( k ) , x 2( k ) ) ⎥ ⎥ ∂x 2 ⎦ A (2k ) ⎡ ∂f1 ( x1( k ) , x 2( k ) ) ⎢ ∂x1 =⎢ (k ) (k ) ⎢ ∂f 2 ( x1 , x 2 ) ⎢ ∂x1 ⎣ ⎤ f1 ( x1( k ) , x 2( k ) ) ⎥ ⎥. ⎥ f 2 ( x1( k ) , x 2( k ) )⎥ ⎦ В рассматриваемом примере: f1 ( x1( k ) , x 2( k ) ) = 0.1x1( k ) 2 + x1( k ) + 0.2 x 2( k ) 2 − 0.3 f 2 ( x1( k ) , x 2( k ) ) = 0.2 x1( k ) 2 + x 2( k ) − 0.1x1( k ) x 2( k ) − 0.7 ∂f 1 ( x1( k ) , x 2( k ) ) = 0.2 x1( k ) + 1 , ∂x1 ∂f 1 ( x1( k ) , x 2( k ) ) = 0.4 x 2( k ) ∂x 2 ∂f 2 ( x1( k ) , x 2( k ) ) = 0.4 x1( k ) − 0.1x 2( k ) , ∂x1 ∂f 2 ( x1( k ) , x 2( k ) ) = 1 − 0.1x1( k ) . ∂x1 Подставляя в правые части соотношений (2.19) выбранные значения x1( 0) , x 2( 0) , получим приближение x1(1) , x 2(1) , используемое, в свою очередь, для нахождения x1( 2) , x 2( 2 ) . Итерации продолжаются до выполнения условия (2.17), где x ( k +1) − x ( k ) = max xi( k +1) − xi( k ) . i Результаты вычислений содержатся в таблице 2.4. Таблица 2.4 k (k ) 1 (k ) 2 x x f1 ( x1( k ) , x 2( k ) ) f 2 ( x1( k ) , x 2( k ) ) 0 0.25000 0.06875 0.75000 0.04375 1 0.19498 -0.00138 0.70654 0.00037 2 0.19646 0.00005 0.70615 0.00000 3 0.19641 0.70615 (∗) x1 ≈ 0.1964, x 2(∗) ≈ 0.7062 . ∂f1 ( x1( k ) , x 2( k ) ) ∂x1 ∂f1 ( x1( k ) , x 2( k ) ) ∂x 2 ∂f 2 ( x1( k ) , x 2( k ) ) ∂x1 1.01250 0.02500 1.00760 0.00734 1.00772 0.00797 ∂f 2 ( x1( k ) , x 2( k ) ) ∂x 2 0.30000 0.97500 0.28262 0.98050 0.28246 0.98035 det A1( k ) det A (2k ) det J ( k ) 0.05391 0.04258 0.97969 0.00038 0.98588 0.00146 0.00005 0.00000 0.98567 Метод простой итерации. При использовании метода простой итерации система уравнений (2.10) приводится к эквивалентной системе специального вида 5 www.uchites.ru ⎧ x1 = ϕ 1 ( x1 , x 2 ,..., x n ) ⎪ x = ϕ ( x , x ,..., x ) ⎪ 2 2 1 2 n ⎨ ⎪ ............................ ⎪⎩ x n = ϕ n ( x1 , x 2 ,..., x n ) (2.20) ⎛ ϕ 1 ( x) ⎞ ⎜ ⎟ ⎜ ϕ 2 ( x) ⎟ ϕ( x ) = ⎜ ... ⎟ ⎜ ⎟ ⎜ ϕ ( x) ⎟ ⎝ n ⎠ (2.21) или, в векторной форме x = ϕ( x) , где функции ϕ1 (x) , ϕ 2 (x) , …, ϕ n (x) - определены и непрерывны в некоторой окрестности искомого изолированного решения x (∗) = ( x1(∗) , x 2(∗) ,..., x n(∗) ) T . Если выбрано некоторое начальное приближение x ( 0 ) = ( x1( 0 ) , x 2( 0 ) ,..., x n( 0 ) ) T , последующие приближения в методе простой итерации находятся по формулам ⎧ x1( k +1) = ϕ 1 ( x1( k ) , x 2( k ) ,..., x n( k ) ) ⎪ ( k +1) = ϕ 2 ( x1( k ) , x 2( k ) ,..., x n( k ) ) ⎪ x2 ⎨ ............................ ⎪ ( k + 1 ) ⎪⎩ x n = ϕ n ( x1( k ) , x 2( k ) ,..., x n( k ) ) k = 0,1, 2, ... (2.22) или, в векторной форме x ( k +1) = ϕ(x ( k ) ) , k = 0,1, 2, ... Если последовательность векторов x ( k ) = ( x1( k ) , x 2( k ) ,..., x n( k ) ) T (2.23) сходится, то она сходится к решению x (∗) = ( x1(∗) , x 2(∗) ,..., x n(∗) ) T . Достаточное условие сходимости итерационного процесса (2.22) формулируется следующим образом [2]: Теорема 2.4. Пусть вектор-функция ϕ(x) непрерывна, вместе со своей производной ⎡ ∂ϕ 1 (x) ∂ϕ1 (x) ∂ϕ1 (x) ⎤ ... ⎢ ∂x ∂x 2 ∂x n ⎥ 1 ⎢ ⎥ ⎢ ∂ϕ 2 (x) ∂ϕ 2 (x) ... ∂ϕ 2 (x) ⎥ ϕ′(x) = ⎢ ∂x1 ∂x 2 ∂x n ⎥ , ⎢ ⎥ ..................... ⎢ ∂ϕ (x) ∂ϕ (x) ∂ϕ (x) ⎥ n ⎢ n ... n ⎥ ∂x 2 ∂x n ⎦⎥ ⎣⎢ ∂x1 6 www.uchites.ru в ограниченной выпуклой замкнутой области G и max ϕ′(x) ≤ q < 1 , (2.24) x∈G где q - постоянная. Если x ( 0 ) ∈ G и все последовательные приближения x ( k +1) = ϕ(x ( k ) ) , k = 0,1, 2, ... также содержатся в G , то процесс итерации (2.22) сходится к единственному решению уравнения x = ϕ( x) в области G и справедливы оценки погрешности (∀k ∈ N ) : x ( ∗) −x ( k +1) q k +1 (1) ≤ x − x ( 0) , 1− q x (∗) − x ( k +1) ≤ q x ( k +1) − x ( k ) 1− q (2.25) Пример 2.2. (продолжение). Найти положительное решение системы (2.18) методом простой итерации с точностью ε = 10 −4 . Преобразуем исходную систему уравнений (2.18) к виду ⎧ x1 = 0.3 − 0.1x12 − 0.2 x 22 ≡ ϕ1 ( x1 , x 2 ) ⎨ 2 ⎩ x 2 = 0.7 − 0.2 x1 + 0.1x1 x 2 ≡ ϕ 2 ( x1 , x 2 ) Проверим выполнение условия (2.24) в области G: x1 − 0.25 ≤ 0.25 , x2 − 0.75 ≤ 0.25 . Для этого найдем n ⎧⎪ ∂ϕ i ( x1 , x 2 ) ⎫⎪ max ϕ′(x) = max ⎨max ∑ ⎬ x∈G x∈G ∂x j ⎪⎩ (i ) j =1 ⎪⎭ Так как ∂ϕ1 ( x1 , x 2 ) = −0.2 x1 , ∂x1 ∂ϕ1 ( x1 , x 2 ) = −0.4 x 2 , ∂x 2 ∂ϕ 2 ( x1 , x 2 ) = −0.4 x1 + 0.1x 2 , ∂x1 ∂ϕ 2 ( x1 , x 2 ) = 0.1x1 , ∂x 2 (2.26) то в области G имеем ∂ϕ1 ( x1 , x 2 ) ∂ϕ1 ( x1 , x 2 ) + = − 0.2 x1 + − 0.4 x 2 ≤ 0.5 ∂x1 ∂x 2 7 www.uchites.ru ∂ϕ 2 ( x1 , x 2 ) ∂ϕ 2 ( x1 , x 2 ) + = − 0.4 x1 + 0.1x 2 + 0.1x1 ≤ 0.2 ∂x1 ∂x 2 max ϕ′(x) ≤ 0.5 = q < 1 . x∈G Следовательно, если последовательные приближения ( x1( k ) , x 2( k ) ) не покинут области G (что легко обнаружить в процессе вычислений), то итерационный процесс будет сходящимся. В качестве начального приближения примем x1( 0 ) = 0.25 , x 2( 0) = 0.75 . Последующие приближения определяем как ⎧ x1( k +1) = ϕ1 ( x1( k ) , x 2( k ) ) ⎨ ( k +1) (k ) (k ) ⎩ x 2 = ϕ 2 ( x1 , x 2 ) где k = 0,1, 2, ... ϕ1 ( x1( k ) , x 2( k ) ) = 0.3 − 0.1x1( k ) 2 − 0.2 x 2( k ) 2 , ϕ 2 ( x1( k ) , x 2( k ) ) = 0.7 − 0.2 x1( k ) 2 + 0.1x1( k ) x 2( k ) В соответствии с (2.25), вычисления завершаются при выполнении условия q x ( k +1) − x ( k ) ≤ ε , 1− q x ( k +1) − x ( k ) = max xi( k +1) − xi( k ) . где i Результаты вычислений содержатся в таблице 2.5 Таблица 2.5 k 0 1 2 3 4 x1(∗) x1( k ) x 2( k ) 0.25000 0.75000 0.18125 0.70702 0.19674 0.70617 0.19639 0.70615 0.19641 0.70615 ≈ 0.1964, x 2(∗) ≈ 0.7062 . ϕ1 ( x1( k ) , x 2( k ) ) ϕ 2 ( x1( k ) , x 2( k ) ) 0.18125 0.70702 0.19674 0.70617 0.19639 0.70615 0.19641 0.70615 8 www.uchites.ru Замечание. В случае, когда при анализе сходимости конкретной итерационной схемы проверка условия (2.26) является затруднительной, можно определить норму «мажорирующей матрицы» [5,6] M ( x) с элементами mij (x) = max x∈G ∂ϕ i (x) , ∂x j так что max ϕ′(x) ≤ M(x) . Если Μ (x) ≤ q < 1 , то последовательные приближения x∈G сходятся к решению x (∗) . Найдите больше информации на сайте Учитесь.ру (www.uchites.ru)! 9