Применение метода Ньютона для решения нелинейных дифференциально-алгебраических систем Аннотация: Предложен итерационный метод решения систем, содержащих нелинейные дифференциальные и нелинейные алгебраические уравнения. Такие системы могут возникать при решении различных физических задач (см.,. например, [1]). Число дифференциальных уравнений и число алгебраических уравнений в системе может быть произвольным. Однако основную идею метода можно показать, рассматривая систему из одного дифференциального и одного алгебраического уравнения. Задача решается численно с постоянным шагом. Для дифференциального уравнения используется разностная схема, которая сводит задачу нахождения значения функции на очередном шаге к нелинейному алгебраическому уравнению. Рассматривая совместно с этим уравнением алгебраическое уравнение исходной системы, сводим задачу к решению системы двух нелинейных алгебраических уравнений. Такая система решается итерационным методом Ньютона. В работе показано, как от одношагового метода перейти к многошаговому методу на основе формул Адамса. Составлена программа на языке Фортран. Для простых задач, которые решаются аналитически, проведены расчёты для тестирования программы. Получено фактически полное совпадение расчётных и точных аналитических результатов. Приведено решение более сложной задачи, которую нельзя решить аналитически. 1. Постановка задачи К нелинейным дифференциальным уравнениям с нелинейными алгебраическими связями могут приводить многие физические задачи. В большинстве случаев удается исключить алгебраические уравнения и свести задачу к системе дифференциальных уравнений. В тех случаях, когда операцию исключения алгебраических связей аналитическими методами осуществить не удается, прибегают к численным методам, Так в задача о проникновении волны в плазму [1] свелась к нелинейной системе из четырех комплексных дифференциальных уравнений и двух комплексных алгебраических уравнений. F1' f1 (u, E1 , E2 , F1 , F2 ) , F2' f1 (u, E1 , E2 , F1 , F2 ) , Z1' f1 (u, E1 , E2 , F1 , F2 ) , Z 2' f1 (u, E1 , E2 , F1 , F2 ) , G1 (u, E1 , E2 , F1 , F2 , Z 2 ) 0 , G2 (u, E1 , E2 , F1 , F2 , Z1 ) 0 . Для того, чтобы система содержала только дифференциальные уравнения, нужно из двух алгебраических уравнений выразить в правые части дифференциальных E1 и E 2 и подставить их уравнений. Но проделать такие выкладки в работе [1] не удалось. В работе [1] сначала решались алгебраические уравнения, которые затем использовались при решении дифференциальных уравнений. В настоящей работе показано, как такие уравнения можно решать не по очереди, а одновременно .с помощь метода Ньютона.. . Ради простоты рассмотрим систему из двух уравнений: одного дифференциального и одного алгебраического. dy f ( x, y , z ) dx (1) ( x, y , z ) 0 Здесь функция y(x) удовлетворяет начальному условию (2) y( x1 ) y1. Если алгебраическое уравнение ( x, y, z) 0 можно переписать в виде z ( x, y) , то задача сводится к решению дифференциального уравнения d ( y) f ( x , y , ( x , y )) d ( x) с начальными данными. (2). Если же по каким-либо причинам разрешить ( x, y, z) 0 относительно z не удается, то появляется необходимость решения системы (1), что и является целью настоящей работы. В следующем пункте описан итерационный метод решения системы (1), который применим и в случае, когда число уравнений больше двух. 2. Основные формулы алгоритма. Промежуток оси х, на котором нужно найти решение системы (1), разобьем точками x1, x2 ,... xn , xn1,... xN на одинаковые отрезки длиной h. Производную в уравнении (1) на промежутке ( xn , xn1 ) представим в виде разностного отношения, а правую часть заменим средним арифметическим значений функции f на концах этого промежутка. получим (3) yn 1 yn h / 2( f ( xn , yn , zn) f ( xn 1, yn 1, zn 1)) Величина, стоящая в правой части уравнения (3) равна площади трапеции c высотой h, параллельные стороны которой равны f ( xn , yn , zn) и f ( xn 1, yn 1, zn 1) . Если функции y(x) и z(x) в точке с номером n известны (в точке с номером 1 значения этих функций определяются из начальных условий (2)), то, введя функцию, ( xn1 , yn1 , zn1) yn 1 yn h / 2( f ( xn , yn , zn) f ( xn 1, yn 1, zn 1)) вместо системы (1) можно записать алгебраическую систему для определения y и z в точке с номером n+1. ( x n1 , yn1 , zn1) 0 (4) ( x n1 ,yn1 , zn1) 0 Поскольку величину x в точке с номером n+1 мы задаем, прибавляя величину h к значению x в точке с номером n, то yn 1 и zn 1 можно найти из системы (4), используя итерационный метод Ньютона. Применение его для системы (4) приводит к следующим формулам [2]. k 1 k k 1 k ( yn1 yn1) ( zn1 zn1) ( xn1 , ykn1 , zkn1) yn1 zn1 k 1 k k 1 k ( yn1 yn1) ( zn1 zn1) ( xn1 , ykn1 , zkn1) yn1 zn1 (5) Здесь k означает номер итерации. Предполагается, что все частные производные в уравнениях (5) существуют и вычисляются при значениях y и z на итерации с номером k. По правилу Крамера из системы (5) находим ykn11 ykn1 y / , zkn11 zkn1 z / , (6) где , y , z определители второго порядка y n 1 z n 1 y n 1 z n 1 , y ( x n 1 , y kn 1, z kn 1) z n 1 ( x n 1 , y kn 1, z kn 1) z n 1 , z y n 1 ( x n 1 , y kn 1, z kn 1) y n 1 ( x n 1 , y kn 1, z kn 1) (7) Значения y и z в точке с номером n+1 находятся последовательными приближениями по формулам (6). Если число уравнений в системе (1) равно K>2, то и число уравнений в системе (5) тоже будет равно K, а следовательно, и порядок определителей (7) будет равным K, т. е. увеличение числа уравнений в системе (1) не приводит к принципиальному усложнению алгоритма. 3. О погрешности метода. При сходимости метода Ньютона решение системы (4) можно получить с любой точностью, увеличивая число итераций и количество разрядов в представлении чисел в компьютере. Поэтому погрешностью метода можно считать разницу между точным решением системы (1) и точным решением системы (4). На эту разницу влияет величина шага h. Кроме того, на нее можно повлиять, если применить формулу Адамса [3], которая используется при решении дифференциальных уравнений. Вместо (3) можно воспользоваться формулой yn+1 – yn = (1/24)h(9у'n+1 +19у'п -5у'n-1+у'n-2), y n 1 y n h / 24(9 f ( x n 1, y n 1, z n 1) 19 f ( x n , y n , z n) 5 f ( x n 1, y n 1, z n 1) f ( x n 2 , y n 2 , z n 2)) (8) y n 1 y n h / 24(9 f ( xn1 ,...) 19 f ( x ,...) 5 f ( xn1 ,...) f ( xn2 ,...)) , n (8) которая используется при численном решении дифференциальных уравнений в методе Адамса - Башфорта на этапе коррекции Полученная интегрированием обратной интерполяционной формулы Ньютона формула прогноза в методе Адамса - Башфорта имеет следующий вид: yп+1=yп+(1/24)h(55у'п -59у'п-1 +37у'п-2-9у'п-3)+(251/720)h5 у(5) На этапе коррекции в методе Адамса - Башфорта используется формула yп+1 = yп +(1/24)h(9у'п+1 +19у'п -5у'п-1+у'п-2)+(19/720)h5 у(5) Для вычисления положения новой точки используется информация о четырех ранее полученных точках. На этапе коррекции возможно применение итераций. При решении дифференциального уравнения методом Адамса - Башфорта первые четыре шага выполняют одношаговым методом. 4. Результаты расчетов В настоящей работе расчеты проводились лишь для сравнения с аналитической формулой с целью проверки работы программы, которая составлена на языке фортран. Численно при начальном условии y(0)=1 решалась система из двух уравнений, одно из которых дифференциальное, другое алгебраическое dy xz x /( 2 y ) dx (9) z y /( 2( x 1)) 0 2 Легко заметить, что задача (9) равносильна задаче Коши для дифференциального уравнения dy 2 xy /( 2( x 1)) x /( 2 y ) , dx (10) y(0)=1. Решением задачи (10) является функция [4]. y 2 1 x2 x2 1 (11) При шаге h = 0.01 численное решение задачи (9) практически полностью совпало с аналитическим решением (11). Разница 0.01 наблюдалась лишь при приближении к точке x=1. На рис. 1 график функции y(x), полученной численным решением системы (9), сливается в одну кривую с графиком функции (11). Рис. 1. Ниже представлены результаты решения более сложной системы. Правая часть дифференциального уравнения и уравнение связей взяты непосредственно из программы на фортране. Они используются во всех расчетных вариантах, представленных ниже. FUNCTION F(X,Y,Z) F=1.*Y*SIN(X*Z/10.0)+COS(SQRT(3.*Z/Y))*X RETURN END 10.*Z*X-Y**2*Z**5+7.*X*Y*Z**4+3.*Y*SQRT(Z*X)*Z+ +5.*Y**3*X*ALOG(ABS(Z+1.))+10.=0 Cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc Рис. 2 KOLSTE=1500 H=0.03 XN=0. YN=10. Это начальные условия, а уравнения записаны выше . Ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 300 200 100 0 0 Рис. 3 20 40 60 KOLSTE=1500 H=0.03 XN=10. YN=100. К варианту расчета на рис. 2 добавлена кривая, посчитанная при других начальных условиях. Интересно, что кривые быстро сливаются, т. е. начальные условия не влияют на результат Cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 200 160 120 80 40 0 0 10 20 30 40 50 Рис. 4 KOLSTE=150 H=0.3 XN=0. YN=10. С кривой рисунка 1 сравнивается кривая, посчитанная с крупным шагом. Расхождение незначительно. cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 5. Выводы 1. Разработан итерационный метод для решения системы, содержащей дифференциальные и алгебраические уравнения 2. Составлена программа на фортране и проведены тестовые расчеты, которые показали совпадение численных и аналитических результатов. 3. Увеличение числа уравнений не приводит к принципиальному усложнению алгоритма и программы, которая может быть использована при решении различных физических и инженерных задач. 4. Разработанная программа позволяет находить решения систем, содержащих только алгебраические уравнения и решения систем, содержащих только дифференциальные уравнения. Остается выразить благодарность Беседину Николаю Тихоновичу. научному руководителю Литература 1. Беседин Н. Т., Панкратов И. М., Петржилка В. А. О влиянии ВЧдавления на проникновение волн в плазму при нагреве ее в условиях ион-ионного гибридного резонанса. Физика плазмы. 1984. Том 10, вып 6, с. 1234 - 1241. 2. Мак-Кракен Д. , Дорн У. Численные метолы и программирование на фортране. Мир 1969. 3. Шуп Т. Решение инженерных задач на ЭВМ: Практическое руководство. Пер. с англ.—М.: Мир, 1982. 4. Степанов В. В. Курс дифференциальных уравнений. 1950. Программа на языке фортран, которая использовалась для расчетов: PROGRAM DOKLAD 6 FORMAT(1X,4F10.3,2I7,E12.4) 66 FORMAT(1X,2I7,6E12.4) EPS=1.0E-15 DEL=0.001 C KOLSTE=150 H=0.3 C START VALUE SSSSSSSSSS START VALUE XN=0. YN=10. ZN=30. C START VALUE SSSSSSSSS START VALUE YK=YN ZK=ZN XNM1=XN YNM1=YN ZNM1=ZN open(9,form='FORMATTED',file='REZALT.dat') open(10,form='FORMATTED',file='ITER7.for') open(11,form='FORMATTED',file='zzz7.dat') open(12,form='FORMATTED',file='DDDz7.dat') N=0 10 N=N+1 XNP1=XN+H C K=0 20 K=K+1 DFDY=(F(XNP1,YK+DEL,ZK)-F(XNP1,YK,ZK))/DEL DFIDY=1.-H/2.*DFDY C DFDZ=(F(XNP1,YK,ZK+DEL)-F(XNP1,YK,ZK))/DEL DFIDZ=-H/2.*DFDZ C DETADY=(ETA(XNP1,YK+DEL,ZK)ETA(XNP1,YK,ZK))/DEL C DETADZ=(ETA(XNP1,YK,ZK+DEL)-ETA(XNP1,YK,ZK))/DEL C DELTA=DFIDY*DETADZ-DETADY*DFIDZ C IF(N.LE.2)THEN FIK=YK-H/2.*F(XNP1,YK,ZK)-YN-H/2.*F(XN,YN,ZN) ELSE FIK=YK-YN-H/24.*(9.*F(XNP1,YK,ZK)+19.*F(XN,YN,ZN)*5.*F(XNM1,YNM1,ZNM1)+F(XNM2,YNM2,ZNM2)) ENDIF C ETAK=ETA(XNP1,YK,ZK) C YKP1=YK+(-FIK*DETADZ+ETAK*DFIDZ)/DELTA C ZKP1=ZK+(-DFIDY*ETAK+DETADY*FIK)/DELTA C ABSER=ABS(YKP1-YK) RELER=ABS(ABSER/YKP1) YK=YKP1 ZK=ZKP1 c IF(N.EQ.1830)WRITE (10,66) N,K,RELER,ABSER,FIK,YK,ZK c IF(N.EQ.1830)WRITE (10,66) N,K,DETADZ,DFIDY IF(RELER.GT.EPS.AND.K.LT.197)GOTO 20 XNM2=XNM1 YNM2=YNM1 ZNM2=ZNM1 XNM1=XN YNM1=YK ZNM1=ZK c c c c XN=XNP1 YN=YKP1 ZN=ZKP1 Y=SQRT(2*SQRT(1.-XN*XN)+XN*XN-1.) WRITE (9,6) XN,YN,Y,ZN,K,N,ABSER IF(K.GT.177)WRITE (10,66) N,K,RELER,ABSER,FIK,YN,ZN WRITE (9,6) XN,YN WRITE (11,6) XN,ZN WRITE (12,6) XN,DETADZ WRITE (10,66) N,K,RELER,ABSER,FIK,XN,YN,ZN IF(N.EQ.2188)WRITE (10,66) N,K,XN,YN,YN ENDIF IF(N.LE.KOLSTE)GOTO 10 stop END C FUNCTION F(X,Y,Z) F=1.*Y*SIN(X*Z/10.0)+COS(SQRT(3.*Z/Y))*X RETURN END C FUNCTION ETA(X,Y,Z) ETA=10.*Z*X-Y**2*Z**5+7.*X*Y*Z**4+3.*Y*SQRT(Z*X)*Z+ 1 5.*Y**3*X*ALOG(ABS(Z+1.))+10. RETURN END