Применение метода Ньютона для решения нелинейных дифференциально-алгебраических систем

advertisement
Применение метода Ньютона для решения нелинейных
дифференциально-алгебраических систем
Аннотация:
Предложен итерационный метод решения систем, содержащих
нелинейные дифференциальные и нелинейные алгебраические
уравнения. Такие системы могут возникать при решении различных
физических задач (см.,. например, [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 , xn1,... xN на одинаковые отрезки
длиной h. Производную в уравнении (1) на промежутке ( xn , xn1 )
представим в виде разностного отношения, а правую часть заменим
средним арифметическим значений функции 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)), то, введя
функцию,
( xn1 , yn1 , zn1)  yn  1  yn  h / 2( f ( xn , yn , zn)  f ( xn  1, yn  1, zn  1))
вместо системы (1) можно записать алгебраическую систему для
определения y и z в точке с номером n+1.
 ( x n1 , yn1 , zn1)  0
(4)
( x n1 ,yn1 , zn1)  0
Поскольку величину x в точке с номером n+1 мы задаем,
прибавляя величину h к значению x в точке с номером n, то yn 1 и
zn 1 можно найти из системы (4), используя итерационный метод
Ньютона. Применение его для системы (4) приводит к следующим
формулам [2].
 k 1 k
 k 1 k
( yn1  yn1) 
( zn1  zn1)  ( xn1 , ykn1 , zkn1)
 yn1
 zn1
 k 1 k
 k 1 k
( yn1  yn1) 
( zn1  zn1)   ( xn1 , ykn1 , zkn1)
 yn1
 zn1
(5)
Здесь k означает номер итерации. Предполагается, что все
частные производные в уравнениях (5) существуют и вычисляются
при значениях y и z на итерации с номером k. По правилу Крамера
из системы (5) находим
ykn11  ykn1  y /  , zkn11  zkn1   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 ( xn1 ,...)  19 f ( x ,...)  5 f ( xn1 ,...)  f ( xn2 ,...)) ,
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
Download