Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Численные методы решения некорректных задач

..pdf
Скачиваний:
6
Добавлен:
20.11.2023
Размер:
12.47 Mб
Скачать

ОС 4 4

3 0 4 5

00-6

00-4 7

0 0 4 8

0 0 4 е?

0001

0002

0003

0004

000 5

0006

0007

0008

0009

0010

0011

0012

0013

0014

0015

0001

0002

0 003

000 4

0 0 0 5

0 0 0 6

0 0 0 7

0 0 0 8

0 0 0 9

0010

0011

0012

0 0 1 3

0 0 1 4

0 0 1 5

0 0 1 6

0 0 1 7

001 8

0019

10 DO 9 I —1 ,N L = N * ( 1 - 1 ) + I

P I ( L ) = P I ( L ) + 1 . 0

PCONTINUE PE 7URN END

SUBROUTINE PTILR3(AJ, A,N ,N N ,MASK)

С* ПОДПРОГРАММА ФОРМИРОВАНИЯ

С* АКТИВНЫХ ОГРАНИЧЕНИЙ ПО МАСКЕ

 

IMPLICIT REAL*8(A -H,0-Z)

 

REAL*8

AJ , A

 

INTEGER

N,NN,MASK, К , I , J

 

DI MENS ION AJ(N N ,N ) ,A(N N ,N ),MASK(NN)

 

K=0

 

 

DO 1 1=1,NN

 

I F ( MASK( I ) .EQ .0) GOTO 1

 

K=K+i

 

 

DO 2 J = i ,N

2

AJ( К, J )=A( I , J )

CONTINUE

1

CONTINUE

 

RETURN

 

 

END

 

 

 

SUBROUTINE PTILR6( A, X, P , MASK,

С

*

*GR,N,M,NN,C,D,IED)

ПОДПРОГРАММА ВЫБРОСА ОГРАНИЧЕНИЙ

С

*

IED - КОД ОТВЕТА:

С* 0-НИЧЕГО НЕЛЬЗЯ ВЫБРОСИТЬ,

С* 1-ЧТО-ТО ВЫБРОСИЛИ

IMPLICIT REAL*8(A-H,0-Z)

REAL*8

A,X,P,GR,C,D,AL,R

INTEGER

MASK, N , M,NN,К, I , J , NNN, IED

DIMENSION

P (N N ,N ) ,GR( N ) , MASK(NN)

DIMENSION

A (N N ,N ),X (N ),C (N ,N ),D (N )

EXTERNAL

PTILR7

CALL PTILR7( X, C, N , GR, D)

K=0

I ED=0

AL=1 . 0

DO 1 1=1,NN

I F ( MASK( I ) . EQ. 0 ) GOTO 1

С-* ДЛЯ АКТИВНЫХ ОГРАНИЧЕНИЙ СЧИТАЕМ

С* ТЕНЕВОЙ ПАРАМЕТР

К=К+1 R=0. 0

DO 2 J=1,N R=R+P(К, J ) *GR(J)

2 CONTINUE

C * ИЩЕМ МИНИМАЛЬНЫЙ ТЕНЕВОЙ параметр

IF (R.GE.AL) GOTO 1

201

0020

 

AL=R

 

 

 

 

 

0021

 

NNN=I

 

 

 

 

 

0022

*

1 CONTINUE

 

 

 

 

С

ЕСЛИ ОИ > 0 , TO BCE,

 

С

*

ИНАЧЕ ВЫБРАСЫВАЕМ NNN-E ОГРАНИЧЕНИЕ

0 0 2 3

 

IF (AL .G E .0 .0)

GOTO

3

0 024

 

MASK( NNN)=0

 

 

 

0 0 2 5

 

IED=1

 

 

 

 

 

0 026

 

M=M-1

 

 

 

 

 

002 7

 

3 RETURN

 

 

 

 

0 0 2 8

 

END

 

 

 

 

 

0001

 

SUBROUTINE

PTILR1( MN, M, MASK, AQ, AJ, A,P,

 

 

* U , P I , В , GR, W, P I , WORK, ICM, IСI , С, X, D,N,NN,

С

*

*R, DEL, DGR, IEND)

 

ДИСПЕТЧЕР МЕТОДА

 

С

*

WORK=. TRUE. -

РАБОТА С

ЗАДАННОЙ МАТРИЦЕЙ А

С

*

ICI - СЧЕТЧИК

БОЛЬШИХ

ЦИКЛОВ

С * IСМ - ОГРАНИЧИТЕЛЬ ЧИСЛА БОЛЬШИХ ЦИКЛОВ

0002

 

IMPLICIT

REAL* 8 ( А-Н, 0 - Z )

0 0 0 3

 

REALKB AQ,AJ,A,P,U,PI,B,G R,W ,

00 04

 

#Р1, С , D , X, R , DEL, DGR

 

 

INTEGER

MN, M, MASK,N ,N N ,IEND,

0 0 0 5

 

* 1 , I C I , ICM,IED

 

 

 

DIMENSION A(N N ,N ),MASK(N N ),AJ(N N ,N ),

 

 

*P (N N ,N),PI(N,N),B(NN),G R(N),W (M N),

0 0 0 6

 

♦ P i ( N ) , C( N , N ) , X ( N ) , D ( N ) , AQ( MN, N ) , U(MN)

 

LOGICAL

WORK

 

 

000 7

 

EXTERNAL

PTICI2,PTICR3,PTICR5,

000 8

 

#PTILR3, PTILR4, PTILR5, PTILR6

 

CALL

PTIСI 2 ( MASK,0,NN)

C * M - ЧИСЛО АКТИВНЫХ ОГРАНИЧЕНИЙ

0 0 0 9

 

M=0

 

 

 

 

 

0010

 

ENTRY PTILR2

 

 

С * НАЧИНАЕМ ИТЕРАЦИИ БОЛЬШОГО ЦИКЛА

0011

 

1С1=0

 

 

 

 

 

0012

 

2 CONTINUE

 

 

 

12

0 0 1 3

 

IF(ICI.EQ.ICM) GOTO

0 0 1 4

 

ICI=ICI+1

 

GOTO

101

0 0 1 5

*

IF(.NOT.WORK)

С

ВЫЧИСЛЯЕМ

НЕВЯЗКУ - R1, И ЕСЛИ ОНА < DEL,

С *

ТО ВЫХОДИМ

 

 

 

0 0 1 6

 

CALL PTICR3(AQ,X,W,N,MN)

0 0 1 7

101

CALL PTICR5(W,U,MN,R1)

0 0 1 8

CONTINUE

 

 

GOTO 9

0 0 1 9

 

IF(Rl.LE.DEL)

С * ГОТОВИМ ОГРАНИЧЕНИЯ ПО MACKE

0020

 

CALL PTILR3( AJ, A,N,NN,MASK)

C *

ГОТОВИМ

ПРОЕКТОР

 

 

0021

 

CALL

PTILR4( A J , P , P I , M,N,NN)

С * МИНИМИЗИРУЕМ НА ГРАНИ

 

0022

 

CALL PTILR5(A,AJ,B,MASK, N , M,NN,GR,

0 0 2 3

 

*PI,W,P1,C,X,D,K,IED,DGR)

 

I F ( IED. EQ•0) GOTO 2

 

202

С

* ЕСЛИ НОРМА ГРАДИЕНТА

< DGR, ТО ВЫХОДИМ

0024

I F ( IED. EQ. 2 ) GOTO

11

С* ПРОВЕРЯЕМ ОГРАНИЧЕНИЯ

С* НА ВОЗМОЖНОСТЬ ВЫБРОСА И ИСКЛЮЧАЕМ

0 0 2 5

 

CALL

РТILR6( А , X, Р , MASK

С

*GR,N,M,NN,C,D,IED)

Ж ЕСЛИ ЧТО-ТО ВЫБРОСИЛИ,

С

Ж ТО

ПРОДОЛЖАЕМ,

ИНАЧЕ ВЫХОД

0026

 

IF (IE D .E Q .1)

GOTO 2

С

Ж НОРМАЛЬНОЕ ОКОНЧАНИЕ. ТОЧНЫЙ МИНИМУМ

0027

 

IEND=0

 

0 028

9

GOTO

10

 

0 0 2 9

CONTINUE

 

С

Ж НОРМАЛЬНОЕ ОКОНЧАНИЕ. ВЫХОД ПО НЕВЯЗКЕ

0 0 3 0

 

IEND=1

 

0031

12

GOTO

10

 

0032

CONTINUE

 

С

Ж ВЫХОД ПО ЧИСЛУ ИТЕРАЦИЙ

0 033

 

IEND=3

 

0034

11

GOTO

10

 

0 0 3 5

CONTINUE

ГРАДИЕНТА

С Ж ВЫХОД ПО НОРМЕ

003 6

10

IEND=2

 

0 0 3 7

CONTINUE

 

0038

 

I F ( .NOT.WORK)GOTO 102

С

Ж ВЫЧИСЛЯЕМ ЗНАЧЕНИЕ ФУНКЦИОНАЛА НЕВЯЗКИ

С

Ж ДЛЯ ВЫДАЧИ

 

003 9

 

CALL

РТICR3(AQ, X, W, N, MN)

0 0 4 0

102

CALL

РТICR5(W, U, MN, R)

0041

CONTINUE

 

004 2

 

RETURN

 

004 3

 

END

 

 

0001

 

SUBROUTINE РТILRA( AQ, U, C, D, N , MN)

СЖ ПРИВЕДЕНИЕ ФУНКЦИОНАЛА НЕВЯЗКИ

СЖ К ВИДУ (СЖХ,Х)+(0,Х)+Е

0002

 

IMPLICIT ЯЕАСЖ8( А—Н, О—Z)

0 0 0 3

 

ЯЕАСЖ8

AQ,U,C,D,R

000 4

 

INTEGER

N, MN, I , J,K

0 0 0 5

 

DIMENSION AQ( MN, N ) , U( MN) , C( N ,N ) ,D(N)

С Ж Ds =—2A' Жи

0 0 0 6

 

DO 6 1= 1,N

000 7

 

R=0. 0

 

0 0 0 8

 

DO 5 J = 1 , MN

0 009

 

R=R+ A Q (J ,I^ U < J )

0010

5

CONTINUE

0011

6

D < I) = - 2 . 0ЖЯ

0012

CONTINUE

С

Ж L:=A' ЖА,

 

0 0 1 3

 

DO 7 1=1,N

0 0 1 4

 

DO 7 J = 1 , I

0 0 1 5

 

R=0. 0

 

0 0 1 6

 

DO 8 K=1, MN

0 0 1 7

 

R=R+AQ(К, I ) ЖАО( К, J )

203

00 18

0 019

0020

0021

0022

0023

0001

0002

00 03

0004

0 0 0 5

000 6

00 07

00 08

0 009

0010

0011

0012

0013

001 4

0 0 1 5

0016

0017

001 8

0 0 1 9

0020

0021

0022

002 3

0024

0 0 2 5

0026

0 027

0 028

00 29

003 0

0031

0032

00 33

003 4

003 5

00 36

00 37

003 8

8CONTINUE C (I ,J )= R C (J ,I )= R

7CONTINUE RETURN END

С *

 

SUBROUTINE PTILRB( A, В,N ,N N ,ITASK, С, IERR L

ПРОГРАММА ФОРМИРОВАНИЯ МАТРИЦЫ ОГРАНИЧЕНИЙ

 

 

 

IMPLICIT REALMS<A-H,0-Z)

 

 

 

 

REAL*8

A, В, C

 

 

 

 

INTEGER

N ,NN,ITASK, IERR, L, I

 

 

 

 

DIMENSION A(NN,N ), В (NN)

 

C *

 

EXTERNAL PTICR2

 

ЗАДАН НЕСУЩЕСТВЫЮЩИй ТИП ОГРАНИЧЕНИЙ

 

 

 

IERR=99

 

GOTO 777

 

 

 

IF(ITASK.GT.3.0R.ITASK.LT .1)

C * НА МОНОТОННЫХ ФУНКЦИЯХ

 

с *

КОНСТАНТА ОГРАНИЧЕНИЯ 0

 

 

 

 

IERR=98

 

GOTO 777

 

 

 

IF ( I ТASK. EQ. 1 . AND.C.EQ.0.0)

С

*

 

IERR=0

 

 

ЗАНУЛЯЕМ МАТРИЦУ

 

 

 

 

CALL PTICR2( A , 0 . 0 , N#NN)

 

 

 

 

L=N-1

 

 

С

*

ПЕРЕКЛЮЧАТЕЛЬ

 

 

 

1

GOTO ( 1 , 2 , 3 ) , I TASK

 

C *

CONTINUE

 

НА

МОНОТОННЫХ ФУНКЦИЯХ

 

 

 

 

DO 11 1=1,N

 

A( I , I ) = 1 . 0

A( 1 + 1 , 1 ) = - i . 0

B < I + 1 )= 0 . 0

11CONTINUE B(1)=C GOTO 777

2 CONTINUE

C * НА ВЫПУКЛЫХ ФУНКЦИЯХ

DO 12 1 = 2 ,L

A ( I , I )= - 2 . 0

A( I , I —1 ) = 1 . 0 A( I , I + l ) = 1 . 0 B ( I ) = 0 . 0

12CONTINUE

A( 1 , 1 ) =—i .0 A(N,N)= —1 . 0 B<1)= 0 . 0 В(N )=0•0

GOTO 777

3 CONTINUE

C # НА МОНОТОННЫХ ВЫПУКЛЫХ ФУНКЦИЯХ DO 13 1 = 2 ,L

A ( I , I )= - 2 . 0

A( I , 1 - 1 ) = 1 . 0

204

0039

0 0 4 0

0041

0042

0043

0044

0 0 4 5

0046

0047

0048

004 9

0001

0002

0003

0004

0005

000 6

0007

0008

0009

0010

0011

0012

0013

0014

0015

0016

0017

0018

0019

0020

0021

0022

0023

0024

0025

0 026

0027

0028

0029

0030

0031

0 032

0033

А( I , I+ 1 ) = 1•0 В ( I ) = 0 . 0

13CONTINUE

A ( 1 , 1 )=- l . 0 A( 1 , 2 ) = 1 . 0 A (N, N)=—1 . 0

B ( i ) = 0 . 0 В(N )= 0 . 0

777CONTINUE RETURN END

SUBROUTINE PTILR0(A,N)

С* ОБРАЩЕНИЕ СИММЕТРИЧНОЙ ПОЛОЖИТЕЛЬНОЙ

С * МАТРИЦЫ A(N,N) ПОРЯДКА N. РЕЗУЛЬТАТ

С* ПОМЕЩАЕТСЯ НА МЕСТО ИСХОДНОЙ МАТРИЦЫ.

С* МАТРИЦА А ДОЛЖНА ИМЕТЬ N+1 СТОЛБЦОВ

С # ( А ( N, N+1) ) , ПОСЛЕДНИЙ ИЗ КОТОРЫХ

С* ИСПОЛЬЗУЕТСЯ КАК РАБОЧИЙ МАССИВ.

С* ДОСТАТОЧНО ЗАДАВАТЬ ЛИШЬ ЭЛЕМЕНТЫ

С* ПОД ДИАГОНАЛЬЮ МАТРИЦЫ

С

*

А( I , J ),

ГДЕ

I>=J

 

IMPLICIT REAL*8(A-H,0-Z)

 

REAL*8 A , X , Y , Z

 

 

INTEGER 1 , I I , 1 2 , 1 3 , J , J 1 , J 2 , J 4 , К, K1

 

DIMENSION A (N , 1)

 

 

DO 1

1=1,N

 

 

 

11=1+1

 

 

 

DO 1

J = I,N

 

 

 

J1=J+1

 

 

 

X = A (J ,I )

 

 

 

12=1-1

 

2

 

I F ( 1 2 . LT. 1 ) GOTO

 

DO 3

K i = i ,12

 

 

K=I-Ki

 

 

3

X = X -A(K,J1)*A(K,II)

CONTINUE

 

 

2

CONTINUE

GOTO

4

 

I F ( J . N E . I )

 

Y=1. /DSQRT( X)

 

 

A ( I , 11) =Y

 

 

4

GOTO

1

 

 

A(I,J1)=X*Y

 

 

1

CONTINUE

 

 

 

DO 5

1=1,N

 

 

 

13=1+1

 

5

 

I F ( 1 3 . GT. N )GOTO

 

DO 6

J = I 3.N

 

 

 

Z=0.

 

 

 

 

J1=J+1

 

 

 

J2=J -1

 

 

 

DO 7

K 1=I,J2

 

7

K=J-1-K1+I

 

 

Z=Z -A(K,J1)*A(I,K +1)

205

003 4

6

A ( I , J 1 ) = Z * A ( J , J 1 )

0 0 3 5

CONTINUE

0036

5

CONTINUE

00 37

 

DO

8

1=1,N

0038

 

DO

8

J = I ,N

0039

 

Z=0.

 

0040

 

J1=N+1

0041

 

J 4=J +1

0042

9

DO

9

K=J4, J 1

0043

Z=Z+A(J,K)*A(I,K)

0044

8

A( I , J +i)=Z

0045

CONTINUE

0046

 

DO

11

1=1,N

0047

 

DO

11

J = I ,N

0048

 

A ( J , I ) =A( I , J +l )

0049

11

A ( I , J )=A( I , J + l )

0050

CONTINUE

0051

 

RETURN

0052

 

END

 

 

VIII. Программарешения интегральных уравнений Фредгольма 1-го рода на множествах монотонных и (или) выпуклыхфункций.

Метод проекций сопряженных градиентов на множество векторов с неотрицательными координатами

0001

SUBROUTINE РТISR(АК, U0, X1 , X2 , Y1 , Y2, N, М,

 

* Z, AN2, ITER, DL, IМАX, IС,

0002

*R,NR,XERR)

IMPLICIT REAL*8(A-H,0-Z)

С* РЕШЕНИЕ ИНТЕГРАЛЬНОГО УРАВНЕНИЯ

С* ФРЕДГОЛЬМА ПЕРВОГО РОДА

С* МЕТОДОМ ПРОЕКЦИИ СОПРЯЖЕННЫХ ГРАДИЕНТОВ

С* ДИСПЕТЧЕР МЕТОДА

С# АК - ПОДПРОГРАММА-ФУНКЦИЯ ВЫЧИСЛЕНИЯ ЯДРА C * ТАБЛИЦА СООТВЕТСТВИЯ

C

*

ИМЯ

 

ДЛИНА

СОДЕРЖАНИЕ

C

*

A:

 

N*M

МАТРИЦА ОПЕРАТОРА

C

*

H:

 

N

НАПРАВЛЕНИЕ СПУСКА

C

*

G:

 

N

ГРАДИЕНТ

C

*

Us

 

M

ЗНАЧЕНИЕ ОПЕРАТОРА

C

*

U1 s

 

M

РАБОЧИЙ МАССИВ

C

*

Ss

 

N

РАБОЧИЙ МАССИВ

С

*

 

 

 

 

С

*

NR=N*M+3N+2M

 

0003

 

REAL*8

U0,Z,R,AK

 

0004

 

REAL*8

X1,X2,Y1,Y2,DL,AN2

0005

 

INTEGER

IMAX,IC,NR,ITER,IERR,N,M

0006

 

INTEGER

NA, NH, NG, NU, NU1, NS, NMAX, ICONT

0007

 

DIMENSION

U0(M) , Z( N ) , R( NR)

0008

 

EXTERNAL

PTICR0, PTICR1,

0009

 

*PTISR1,PTISR2,PTISR3

 

*

ICONT=0

 

 

С ПРОДОЛЖЕНИЕМ

С

ICONT - ПРИЗНАК РАБОТЫ

С

*

ICONT=0

НАЧАЛО РАБОТЫ

 

С

*

IC0NT=1

ВХОД ДЛЯ ПРОДОЛЖЕНИЯ

206

0010

0011

0012

001 3

0014

0 0 1 5

0016

0 0 1 7

0 018

0 019

0020

0021

0022

002 3

0024

0 0 2 5

0 026

0027

0 0 2 8

0 0 2 9

0 0 3 0

0031

0 0 3 2

0 0 3 3

0 0 3 4

0 0 3 5

0 0 3 6

0001

0002

0 0 0 3

0 004

0 0 0 5

0 0 0 6

0 0 0 7

0 0 0 8

000 9

0010

0011

100CONTINUE

С* ФОРМИРОВАНИЕ НАЧАЛА МАССИВОВ

NA=1

NH=N*M+1

NG=NH+N

NU=NG+N

NU1=NU+M

NS=NU1+M

IMMAX=NS+N

I F ( NMAX—1 • GT. NR)GOTO 64

I F ( ICONT•EQ.4 )GOTO 101

С

*

ФОРМИРОВАНИЕ МАТРИЦЫ ОПЕРАТОРА

С

*

CALL

PTICR0( AK, R(NA) , X I, X2,Y1, Y2,N,M)

ПЕРЕХОДИМ В ПИ-ПЛЮС

 

 

CALL

PTISR2 < R( NA) , Z, N , M, IC ,R (N S ))

 

 

CALL

PTICR1( Z, Z,R(NH), N , 0 . )

101CONTINUE

С* МИНИМИЗАЦИЯ НЕВЯЗКИ

CALL PTISR1(R(NA),R(NH), U0,N,M,ITER, * D L * ( M - 1 . ) / ( Y 2 - Y l ) , 0 . , IMAX, AN2, 0 . , 0 . ,

*Z,R (NU), R( NU1) , R( NH) , R(NG) , R( NS) , IERR) AN2=AN2*( Y2-Y1) / ( M - l . )

C * ВОЗВРАТ ИЗ пи-плюс

CALL

PTICR1( Z, Z, R(NH) , N , 0 . )

CALL

PT ISR 3(Z ,N ,IC , R( NS))

GOTO 999 ENTRY PTISRE

C * ВХОД ДЛЯ ПРОДОЛЖЕНИЯ МИНИМИЗАЦИИ ICONT=l

64CONTINUE

С# HE ХВАТАЕТ ДЛИНЫ РАБОЧЕГО МАССИВА IERR=64

GOTO 999

999CONTINUE RETURN END

SUBROUTINE PTISR1( A, Z0, U0, N , M, ITER, DL2, *ANGRD, IMAX, AN2, ALF, RO, *Z,U,U1,H,G,IPLUS,IERR)

С* МИНИМИЗАЦИЯ ФУНКЦИОНАЛА ТИХОНОВА

С* МЕТОДОМ ПРОЕКЦИИ СОПРЯЖЕННЫХ ГРАДИЕНТОВ

С* В ПЕРВОМ КВАДРАНТЕ

IMPLICIT REAL*8(A-H,0-Z)

INTEGER N,M,IMAX, IERR

INTEGER

IPLUS,ITERBN,IDIM,IDIMO,IPRIM

INTEGER

IEND,ITER,JCH,ICH,IED

REAL*8

DL2, ANGRD, AN2, ALF, RO

REAL*8

U0,Z 0,Z ,U ,A ,H ,U 1,G ,A L ,B T

REAL*8

AS2, AS20, ANGRI, ANGRIО, ALMAX

DIMENSION U 0 ( M ) ,Z 0 ( N ) ,Z ( N ) ,U ( M ) ,

*A(M ,N ),H(N),U1(M),G (N),IPLUS(N) EXTERNAL PTICRi, PTICI2 , PTICR3 EXTERNAL PTICR4,PTICR5,PTICR6

207

0 0 1 2

0013

0014

0015

0016

0017

0018

0019

0020

0021

0022

0023

0024

0025

0026

0027

0028

0029

0030

0031

0032

0033

0034

0035

0036

0037

0038

0039

0040

0041

0042

0043

0044

0045

0046

0047

0048

0049

0050

0051

0052

0053

0054

EXTERNAL PTICR7, PTICR8,PTICR9

ITERBN=0

IEND=0

ITER=0

JCH=-1

CALL

P T I C R 1 ( Z 0 ,Z 0 ,Z ,N ,0 . )

CALL

PTICR3( A , Z , U , N , M)

CALL

PTICR5( U, U0, M, AN2)

CALL

PTICR9( AS20, AN2, Z , N ,ALF, RO)

CALL

PTICR4( G, U, U0, A , N, M)

CALL

PTICR8( G, Z , N , ALF, RO)

CALL

PTICR2( H, 0 . ,N)

С Ж НАЧАЛО

ИТЕРАЦИЙ

14CONTINUE ITER=ITER+1

 

 

13

ICH=0

 

 

С

*

ICH - ПРИЗНАК ИЗМЕНЕНИЯ МНОЖЕСТВА

С

Ж АКТИВН. ОГР.

НА ПРЕДЫДУЩЕМ ШАГЕ

С *

1СН=0 - НЕ ИЗМЕНИЛОСЬ

 

 

1

IF(JCH) 1 , 2 , 3

 

 

CALL PTIСI2 ( IPLUS,1 ,N )

С

Ж IPLUS( I )=0

-

I-OE ОГРАНИЧЕНИЕ АКТИВНО

С

Ж IPLUS( I )=1

-

I-OE ОГРАНИЧЕНИЕ HE АКТИВНО

 

 

 

DO 4 1=1.N

 

 

 

 

IF ( Z ( I ) .GT .0 . . OR. G( I ) • LT ... 0) GOTO 5

 

 

 

IPLUS( I )=0

 

 

 

5

Z ( I ) = 0 .

 

 

 

 

CONTINUE

 

 

4CONTINUE

С* МНОЖЕСТВО АКТ. ОГРАНИЧЕНИЙ СФОРМИРОВАНО IDIM=0

DO 15 1=1,N

15IDIM=IDIM+IPLUS( I )

С* IDIM - РАЗМЕРНОСТЬ ТЕКУЩЕЙ ГРАНИ ICH=1

GOTO 2

3CONTINUE

с* ДОБАВЛЯЕМ НОВОЕ АКТИВНОЕ ОГРАНИЧЕНИЕ

IPLUS( IPRIM)=0

Z(IPRIM)=0

6ICH=1

IDIM=IDIM—1

2CONTINUE

CALL PTICR7( G, G, IPLUS, N , ANGRI) ITERBN=ITERBN+1

с* ITERBN - СЧЕТЧИК ИТЕРАЦИЙ НА ГРАНИ IF(ICH.EQ.l)ITERBN=1

I F ( ANGRI. GT. ANGRD. AND. ITERBN.NE.IDIM+i.

 

.AND.IEND.NE.l)GOTO 7

с

IF(IEND.EQ.i.AND.IDIM.EQ.IDIMO)GOTO 99

ж IEND=1 - ИДЕТ ПРОВЕРКА ДОСТИЖЕНИЯ

с

ж ТОЧНОГО МИНИМУМА

 

IEND=1-IEND

 

IDIMO=IDIM

 

I F ( IEND. EQ. 0 ) GOTO 7

 

JCH=-1

208

0055

0056

0057

0058

0059

0060

0061

0062

0063

0064

0065

0066

0067

0068

0069

0070

0071

0072

0073

0074

0075

0076

0077

0078

0079

0080

0081

0082

0083

0084

0085

0086

0087

0088

0089

0090

0091

0092

0093

0094

0095

0096

60Т0 8

7CONTINUE

С* ФОРМИРОВАНИЕ НАПРАВЛЕНИЯ СПУСКА - Н

ВТ=0.

IF(ICH.EQ.0)BT=ANGRI/ANGRIO

С * ЗАПОМИНАЕМ НОРМУ ПРОЕКЦИИ ГРАДИЕНТА ANGRI0=ANGRI

DO 9 1=1,N

9Н( I) = (ВТ#Н(I)+G(I ))*IPLUS<I)

С* НАПРАВЛЕНИЕ СПУСКА СФОРМИРОВАНО

с * ****** ВНИМАНИЕ? МАШИННАЯ КОНСТАНТА

 

ALMAX=1.Е18

 

IPRIM=0

 

DO 10 1=1,N

 

IF(H(I).LE..0)GOTO 11

 

A L = Z (I )/ Н (I )

 

IF(ALMAX.L T .A L )GOTO 12

 

ALMAX=AL

 

IPRIM=I

12

CONTINUE

11

CONTINUE

10

CONTINUE

с

* НАШЛИ

МАКСИМАЛЬНО ВОЗМОЖНЫЙ ШАГ

ALMAX

с

*

IPRIM

- НОМЕР НОВОГО

 

с * ВОЗМОЖНОГО АКТИВНОГО ОГРАНИЧЕНИЯ

 

 

 

CALL

PTICRO(A,Z,G,U1,H,

 

 

 

♦ALMAX,AL,N,M,ALF,RO,IED)

 

 

 

CALL

PTICR1(Z,H,Z,N,-AL)

 

 

 

CALL

PTICR3(A ,Z ,U ,N,M )

 

 

 

CALL

PTICR4(G ,U ,U 0 ,A ,N,M )

 

 

 

CALL

PTICR8(G ,Z ,N,A L F ,R O )

 

 

 

CALL

PTICR7(G ,G ,IPLUS,N,ANGRI)

 

 

 

CALL

PTICR5(U ,U 0 ,M ,A N 2 )

 

 

 

CALL

PTICR9(A S 2 ,A N 2 ,Z ,N,A L F ,R O )

 

 

 

JCH=0

 

с *

IF(IED.E Q .1)JC H = 1

 

IED=1 - ВЫШЛИ НА НОВОЕ ОГРАНИЧЕНИЕ

 

 

 

IF(IED.E Q .2)GOTO 22

 

 

 

IFIAN2.LE.DL2.0R.ITER.GE.IMAX)GOTO 20

 

 

IF(A S 2 .G E .A S 2 0 )GOTO 21

 

 

 

AS20=AS2

 

 

 

GOTO

14

 

20CONTINUE

С* ВЫХОД ПО НЕВЯЗКЕ ИЛИ ЧИСЛУ ИТЕРАЦИЙ

IERR=1

GOTO 999

99CONTINUE

С* НАШЛИ ТОЧНЫЙ МИНИМУМ.

с* НОРМАЛЬНОЕ ОКОНЧАНИЕ IERR=0

GOTO 999

8CONTINUE

с* ВОЗВРАЩАЕМСЯ НА НАЧАЛО

с* ДЛЯ ПРОВЕРКИ ТОЧНОГО МИНИМУМА GOTO 13

21 CONTINUE

209

009 7

009 0

00 99

0100

0101

0102

010 3

010 4

0001

0002

000 3

000 4

0005

0006

000 7

00 08

000 9

0010

0011

0012

001 3

001 4

00 15

001 6

0017

001 8

0 019

0020

0021

0022

002 3

002 4

00 25

002 6

0027

0028

002 9

С * НЕВЯЗКА НЕ УМЕНЬШИЛАСЬ. НЕФАТАЛЬНО ? IERR=2

GOTO 999

22CONTINUE

С* ШАГ ОТРИЦАТЕЛЕН

С* ОШИБКА ЗНАКООПРЕДЕЛЕННОСТИ IERR=65

GOTO 999

999CONTINUE RETURN END

SUBROUTINE P T IS R 2(A ,Z ,N ,M ,IC ,S)

С* ПРЕОБРАЗОВАНИЕ МАТРИЦЫ ОПЕРАТОРА A(M,N)

С# И НАЧАЛЬНОГО ПРИБЛИЖЕНИЯ Z

С* ПРИ ПЕРЕХОДЕ В ПЕРВЫЙ КВАДРАНТ

С * S (N) - РАБОЧИЙ

С * 1C - МНОЖЕСТВО КОРРЕКТНОСТИ IMPLICIT REAL# 8 ( А-Н, О—Z) REAL*8 А, Z , S , Т

INTEGER N, М, IC, IC1, N1, I , J , К

DIMENSION

A (M ,N ),Z (N ),S (N )

EXTERNAL PTICR1, PTISR4

IC1=IABS(ICJ+1

N1=N—1

 

GOTO ( 8 0 0

, 8 0 1 , 8 0 2 , 8 0 3 , 8 0 4 , 8 0 5 ) , IC1

800CONTINUE

С* НЕОТРИЦАТЕЛЬНЫЕ ФУНКЦИИ.

С* НИЧЕГО ДЕЛАТЬ НЕ НАДО GOTO 999

С* ПРЕОБРАЗОВАНИЕ НАЧАЛЬНОГО ПРИБЛИЖЕНИЯ - Z

801CONTINUE

С* МОНОТОННЫЕ, 1С=1

DO 101 1 = 2 ,N

101S ( I - 1 ) = Z ( I - 1 ) - Z ( I ) S ( N)=Z(N)

GOTO 799

802CONTINUE

С* МОНОТОННО УБЫВАЮЩИЕ,ВЫПУКЛЫЕ ВВЕРХ IC=2 DO 102 1=2,N1

102S ( I ) = ( I - N ) * ( Z ( I - i ) - 2 . * Z ( I ) + Z ( I + 1 )) S(N)=Z(N)

S ( 1 ) = ( Z( 1 ) - Z ( 2 ) ) * ( N - i . ) GOTO 799

803CONTINUE

С* ВЫПУКЛЫЕ ВВЕРХ IC=3 DO 103 1=2,N1

103S ( I ) = < Z ( I - 1 ) - 2 . * Z ( I > +

+Z < 1 + 1 ) ) * ( N - I ) * ( 1 - 1 . ) / ( 1 . - N ) S (N )=Z(N)

 

S ( 1 ) = Z ( 1 )

 

804

GOTO 799

 

CONTINUE

IC=4

C *

МОНОТОННО УБЫВАЮЩИЕ,ВЫПУКЛЫЕ ВНИЗ

210