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

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

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

0048

0049

0050

0051

0052

0053

0054

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

IF (DABS(AN4) . LE. EPS) GOTO 100

С* ЕСЛИ ОБОБЩЕННАЯ НЕВЯЗКА <-EPS,

С* TO ПЕРЕХОДИМ НА МОДИФИЦИРОВАННЫЙ

С* МЕТОД ХОРД

IF(AN4.LE.-EPS)GOTO 2

IF(ALFA.EQ.0.)GOTO 68 K2=K2+1

IF (K2. EQ. IMAX)GOTO 66 С * СОБСТВЕННО МЕТОД ХОРД

Y=X0-F0/(AN4-F0)* (X-X0) X0=X

X=Y

F0=AN4 ALFA=1 ./X

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

CALL PTIZR1(U(NA), Zt U0,N,Mf ITER, * 0 . ,0 . ,N ,AN2, ALFA*DD, RO, Z, *U(NGRD), U(NS), U(NP), IER)

С * ВЫЧИСЛЯЕМ OBOBIHEHHYK) HEBfl3KY

CALL PTIZRA(AN2,Z,N,DU,DH,HX,HY,RO,AN4) GOTO 14

2CONTINUE

С* СЮДА ПОПАДАЕМ, ЕСЛИ ОБОБЩЕННАЯ НЕВЯЗКА

С* СТАЛА <-EPS. ПЕРЕХОДИМ НА МОДИФИЦИРОВАННЫЙ

С* МЕТОД ХОРД

F=AN4

23CONTINUE

Y=X0+F* (X-X0) / (F -F 0) ALFA=1./Y

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

CALL PTIZR1(U(NA), Z,U0,N,M,ITER, * 0 . ,0 . ,N ,AN2, ALFA*DD, RO, Z, *U(NGRD),U(NS),U(NP), IER)

С * ВЫЧИСЛЯЕМ OBOBDIEHHYK) HEBH3KY

CALL PTIZRA(AN2, Z ,N ,DY,DH,HX,HY,RO,AN4)

С* ЕСЛИ ОБОБЩЕННАЯ НЕВЯЗКА <EPS,HO >-EPS,

С* TO ПРОГРАММА PABOTY ЗАКАНЧИВАЕТ IF(DABS(AN4). LE.EPS) GOTO 101 IF(AN4. LE.-EPS) GOTO 37 IFCALFA.EQ.0.)GOTO 68

K2=K2+1

IF(K2.EQ.IMAX)GOTO 67

X0=Y

F0=AN4

GOTO 23

37 CONTINUE

С* ИЗМЕНЕНИЕ ИНТЕРВАЛА

X=Y

F=AN4

GOTO 23 ENTRY PTIZRE

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

GOTO 110 64 CONTINUE

171

0084

С *

НЕ ХВАТАЕТ ДЛИНЫ РАБОЧЕГО МАССИВА

 

IERR=64

0085

65

GOTO 999

0086

CONTINUE

 

С * СДЕЛАНО IMAX УМНОЖЕНИЙ НА 2,

0087

С *

А НЕВЯЗКА-ОТРИЦАТЕЛЬНАЯ

 

IERR=65

0088

66

GOTO 999

0089

CONTINUE

0090

С *

СДЕЛАНО IMAX ИТЕРАЦИЙ МЕТОДОМ ХОРД

 

IERR=66

0091

67

GOTO 999

0092

CONTINUE

 

С *

СДЕЛАНО IMAX ИТЕРАЦИЙ,

0093

С *

ПРИМЕНЯЛСЯ МОДИФИЦИРОВАННЫЙ МЕТОД

 

IERR=67

0094

68

GOTO 999

0095

CONTINUE

0096

С *

ЗАДАНО ИЛИ ПОЛУЧИЛОСЬ ALFA=0.

 

IERR=68

0097

 

GOTO 999

0098

100 CONTINUE

0099

С *

РЕШЕНИЕ НАЙДЕНО МЕТОДОМ ХОРД

 

IERR=0

0100

101

GOTO 999

0101

CONTINUE

 

С * РЕШЕНИЕ НАЙДЕНО С ПРИМЕНЕНИЕМ

0102

С *

МОДИФИЦИРОВАННОГО МЕТОДА ХОРД

999

IERR=1

0103

CONTINUE

0104

 

RETURN

0105

 

END

0001

 

SUBROUTINE PTIZR1(A,Z0,U0,N,M,ITER, DL2,

 

 

*ANGRD,IMAX, AN2 , ALF, RO, Z, GRAD, S , U, IERR)

С* ПОДПРОГРАММА МИНИМИЗИРУЕТ ФУНКЦИОНАЛ

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

С *

AK(M,N) -

МАТРИЦА ОПЕРАТОРА В УР-НИИ AZ=U

С *

Z0 -

НАЧАЛЬНОЕ ПРИБЛИЖЕНИЕ

С *

U0 -

ПРАВАЯ ЧАСТЬ УРАВНЕНИЯ AZ=U

С *

DL2 -

УРОВЕНЬ ВЫХОДА ПО НЕВЯЗКЕ

С *

ANGRD - ПО НОРМЕ ГРАДИЕНТА

С *

AN2 -

ПОЛУЧЕННАЯ НЕВЯЗКА

С

*

ALF -

ПАРАМЕТР РЕГУЛЯРИЗАЦИИ

С

*

НО -

ВЕС РАЗНОСТНОЙ ПРОИЗВОДНОЙ

С *

РЕШЕНИЕ -

В СТАБИЛИЗАТОРЕ

С *

ЭКСТРЕМАЛЬ В МАССИВЕ Z

0002

 

IMPLICIT REAL*8(А -Н,О -Z)

0003

 

INTEGER ITER, N, М, IMAX, IERR, IED

0004

 

REAL*8

A, Z0, U0, Z, GRAD, S , U

0005

 

REAL*8

DL2,ANGRD,AN2,ALF,RO,ALM

0006

 

REAL*8

RNORM1, RNORM, BETA, RNM

0007

 

DIMENSION A(M,N), Z0(N),U0(M ),

 

 

*Z(N),GRAD(N),S(N) ,U(M)

172

0 0 0 8

0009

0010

0011

0012

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

EXTERNAL PTICR1, PTICR4, PTICR8, *FTICR6, PTICR3, PTICR5, PTICRO

ITER=0

CALL PT IC R 1(Z 0,Z 0,Z ,N ,0 .)

С* НАХОДИМ ГРАДИЕНТ ФУНКЦИОНАЛА CALL PTICR3(A, Z, U, N, M)

CALL PT ICR4 (GRAD, U, CJ0, A, N, M) CALL PTICR8 (GRAD, Z, N, ALF, RO)

С* НАХОДИМ СОПРЯЖЕННОЕ НАПРАВЛЕНИЕ S

CALL PTICR1(GRAD, GRAD, S , N, 0 .) C * НАХОДИМ НОРМУ S

CALL PTICR6( S , S ,N ,RNORM1) С * ВНИМАНИЕ! МАШИННАЯ КОНСТАНТА

ALM=1. E+18

С* РЕШАЕМ ОДНОМЕРНУЮ ЗАДАЧУ МИНИМИЗАЦИИ,

С* НАХОДИМ ШАГ

7 CONTINUE

CALL PTICRO( А, Z, GRAD, U, S , ALM, BETA, *N, M, ALF, RO, IED)

IF(BETA.EQ.0.)GOTO 14 BETA=-BETA

C * НАХОДЙМ НОВОЕ ПРИБЛИЖЕНИЕ Z CALL PTICR1( Z, S , Z,N ,BETA)

С * ВЫЧИСЛЯЕМ НЕВЯЗКУ

CALL FTICR3(A,Z,U,N,M)

CALL PTICR5(U, U0, M, AN2)

С* ЕСЛИ НЕВЯЗКА < DL2,

С* TO ПРОГРАММА РАБОТУ ЗАКАНЧИВАЕТ IF(AN2'.LE.DL2)GOTO 10

ITER=ITER+1

С* НАХОДИМ ГРАДИЕНТ ФУНКЦИОНАЛА CALL PTICR4(GRAD, U, U0, А, N, М) CALL PTICR8CGRAD,Z,N,ALF,RO)

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

CALL PTICR6(GRAD,GRAD,N,RNORM)

RNM=RNORM/RNORMl

С* НАХОДИМ СОПРЯЖЕННОЕ НАПРАВЛЕНИЕ CALL PTICR1(GRAD, S , S ,N ,RNM) RNORMl=RNORM

С* . ЕСЛИ НОРМА ГРАДИЕНТА < ANGRD,

С* ПРОГРАММА РАБОТУ ЗАКАНЧИВАЕТ

IF (RNORM1. LE. ANGRD) GOTO 11

IF ( ITER.GE.IMAX) GOTO 13

GOTO 7

10CONTINUE

С* НЕВЯЗКА СТАЛА < DL2

IERR=0

GOTO 999

11CONTINUE

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

IERR=1

GOTO 999

13CONTINUE

С* СДЕЛАНО IMAX ИТЕРАЦИЙ IERR=2

GOTO 999

0044

14

CONTINUE

0045

С * шаг МИНИМИЗАЦИИ НУЛЕВОЙ

999

IERR= 3

0046

CONTINUE

0047

 

RETURN

0048

 

END

0001

 

SUBROUTINE PTIZRACAN2, Z,N,

*DL, DH, HX, HY, RO, AN4)

С * ПОДПРОГРАММА ВЫЧИСЛЯЕТ ОБОБЩЕННУЮ НЕВЯЗКУ

0002

 

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

0003

 

INTEGER I ,N

0004

 

REAL*8 AN2 , AN4 , DL, DH, HX, HY, S , S I ,RO, Z

0005

 

DIMENSION

Z(N)

0006

*

EXTERNAL PTICR6,DSQRT

С

НОРМИРУЕМ НЕВЯЗКУ

0007

 

AN2=AN2*HY

0008

*

AN4=AN2-DL**2

С

ЕСЛИ H=0. ,

TO

С* ВЫЧИСЛЯТЬ НОРМУ РЕШЕНИЯ HE НУЖНО 0009 IFCDH.EQ.0.)GOTO 999

С* ВЫЧИСЛЯЕМ НОРМУ РЕШЕНИЯ В W21

0010

 

CALL PTICR6C Z,Z ,N ,S)

0011

 

S=S*HX

С

Ж S - КВАДРАТ НОРМЫ РЕШЕНИЯ В L2

0012

 

S1=0'.

0013

 

DO 1 1=2,N

0014

1

S 1 = S 1 + (Z (I)-Z (I-1 ))* * 2

0015

CONTINUE

0016

* SI

S1=S1*HX

C

- КВАДРАТ НОРМЫ ПРОЗВОДНОЙ РЕШЕНИЯ В L2

0017

 

S=DSQRT(S+RO*Sl)

С Ж S - НОРМА РЕШЕНИЯ В W21

0018

999

AN4=AN2-(DL+DH*S)**2

0019

CONTINUE

0020

 

RETURN

0021

 

END

111. Программа решения интегральных уравнений Фредгольма

1-го рода на множестве неотрицательных функций

методом

регуляризации

0001

SUBROUTINE РТIPR( АК, U 0,A ,B ,C ,D ,N ,M ,Z ,

 

♦ IС, AN2, DL, Н, C l , ANGRD, IMAX,

 

♦ALFA, R, NR, IERR)

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

С* ПЕРВОГО РОДА МЕТОДОМ РЕГУЛЯРИЗАЦИИ

С * ТИХОНОВА С ВЫБОРОМ ПАРАМЕТРА РЕГУЛЯРИЗА-

С* ЦИИ В СООТВЕТСТВИИ С ПРИНЦИПОМ ОБОБЦЕННОй

С* НЕВЯЗКИ. ДЛЯ МИНИМИЗАЦИИ ФУНКЦИОНАЛА

С* ТИХОНОВА ИСПОЛЬЗУЕТСЯ МЕТОД

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

0002

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

0003

INTEGER IERR, К1 , K2, NR, M,N ,NA, NG, NH , NU,

174

0004

0005

000 6

0007

0008

000 9

0010

0011

0012

0 013

0014

0015

0016

0017

001 8

0 019

0020

0021

0022

0023

0024

0025

0026

002 7

0028

0 029

0 0 3 0

0031

0 0 3 2

0 0 3 3

0034

0035

 

 

*NU1 , NS , NMAX , N1 , I , IMAX , ITER, IER

 

 

REAL*8

U 0 ,R ,Z , DU,DH,AK,DD

 

 

REAL*8

A , В , C , D , AN2, DL, H, C l , ALFA

 

 

REAL*8

RQ, EPS, AN4, F 0 , F , X0, X, Y, HX, HY

 

 

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

 

 

EXTERNAL PTICR0, PTICR1,

С *

♦PTISR1, PTISR2, PTISR3

 

AK - ПОДПРОГРАММА-ФУНКЦИЯ ВЫЧИСЛЕНИЯ ЯДРА

С *

ТАБЛИЦА СООТВЕТСТВИЯ

 

С *

ИМЯ

ДЛИНА

СОДЕРЖАНИЕ

С *

A:

N*M

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

С *

H:

N

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

С *

G:

N

ГРАДИЕНТ

С *

Us

M

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

с

*

Ul:

M

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

с

*

S:

N

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

с*

с* NR=N*M+3N+2M

с

*

ICONT=0

ICONT -

ПРИЗНАК РАБОТЫ С ПРОДОЛЖЕНИЕМ

с

*

ICONT=0

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

с

*

ICONT=l

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

110CONTINUE

IF ( IС. NE. 0 . AND.IC.NE• 1 ) GOTO 69

с* ФОРМИРОВАНИЕ НАЧАЛА МАССИВОВ NA=1

NH=N*M+i

NG=NH+N

NU=NG+N

NUi=NU+M

NS=NU1+M

NMAX=NS+N

IF(NMAX—1 • GT. NR)GOTO 64 DU=DSQRT(DL) DH=DSQRT(H)

с * K1,K2 - СЧЕТЧИКИ ИТЕРАЦИЙ K1=0

K2=0

N1=N+1

HX=(В- A ) / (N - i . ) HY=(D—C) / ( M—1 • ) DD=HX/HY

с * RO - ВЕС ПРОИЗВОДНОЙ В ПРОСТРАНСТВЕ W21,

с* ДЕЛЕННЫЙ НА КВАДРАТ ШАГА СЕТКИ IF(IC .E Q .0)R O =1./H X **2

IF ( IC .E Q .1 )RO=0.0

с* EPS - ТОЧНОСТЬ РЕШЕНИЯ УРАВНЕНИЯ НЕВЯЗКИ

EPS=(C 1-1.)*DL

IF(ICO NT .EQ .l) GOTO 111

с * ФОРМИРУЕМ МАТРИЦУ ОПЕРАТОРА A

CALJ_ PT ICR0 ( AK , R ( NA ) ,A ,B ,C ,D ,N ,M )

111 CONTINUE

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

CALL

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

CALL

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

с * ПОДБИРАЕМ ALFA ТАК, ЧТОБЫ

175

0036

0037

0 038

0 039

0 0 4 0

0041

0 0 4 2

0 0 4 3

0044

0 0 4 5

004 6

0047

004 8

0 0 4 9

005 0

0051

0052

0 053

0054

005 5

0 0 5 6

005 7

0058

0059

0060

0061

0062

0063

0064

0065

0066

0067

С * ОБОБЩЕННАЯ НЕВЯЗКА БЫЛА ПОЛОЖИТЕЛЬНОЙ

13CONTINUE

С* ИЩЕМ МИНИМУМ ФУНКЦИОНАЛА

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

CALL PTISRKR(NA) ,Z ,U 0,N ,M , ITER, * 0 • , 0 . , N , AN2, ALFA*DD, RO, Z, R( NU), *R (N U 1),R (N H ),R (N G ),R (N S), IER)

С * ВЫЧИСЛЯЕМ ОБОБЩЕННУЮ НЕВЯЗКУ

CALL PTIZRA( AN2, Z,N , DU, DH, HX , HY, RO, AN4) IF ( C l . LE. 1 . ) GOTO 100

IF (ALFA•EQ. 0 . ) GOTO 68

I F ( AN4. GT. EPS) GOTO 11

С * ЕСЛИ ОБОБЩЕННАЯ НЕВЯЗКА <EPS,

С * TO УМНОЖАЕМ ALFA НА 2 , ПОКА НЕ СТАНЕТ >EPS

С* ИЛИ НЕ БУДЕТ СДЕЛАНО IMAX ИТЕРАЦИЙ К1=К1+1

IF(Kl.EQ.IMAX) GOTO 65 ALFA=2. *ALFA

GOTO 13

С* ЗАДАЕМ ДВЕ НАЧАЛЬНЫЕ ТОЧКИ МЕТОДА ХОРД 11 CONTINUE

F0=SAN4 Х0=1• /ALFA

ALFA=ALFA*2. X = i• /ALFA

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

CALL PTISR1(R(NA), Z,U0,N,M ,ITER, * 0 . , 0 . ,N,AN2,ALFA*DD,R0,Z,R(NU), *R(NU1), R( NH) ,R (NG) ,R (N S ),IE R )

С # ВЫЧИСЛЯЕМ ОБОБЩЕННУЮ НЕВЯЗКУ

CALL PTIZRA(AN2,Z, N,DU,DH,HX,HY,R0,AN4) 14 CONTINUE

С* ЕСЛИ ОБОБЩЕННАЯ НЕВЯЗКА <EPS,HO >-EPS,

С* TO ПРОГРАММА РАБОТУ ЗАКАНЧИВАЕТ

I F ( DABS( AN4) . LE. EPS) GOTO 100

С* ЕСЛИ ОБОБЩЕННАЯ НЕВЯЗКА <-EPS,

С* TO ПЕРЕХОДИМ НА МОДИФИЦИРОВАННЫЙ

С* МЕТОД ХОРД

I F ( AN4•LE. -E P S ) GOTO 2

I F ( ALFA. EQ. 0 . )GOTO 68 K2=K2+i

I F ( K2. EQ. IMAX)GOTO 66 С * СОБСТВЕННО МЕТОД ХОРД

Y = X 0 -F 0/(AN4-F0) * ( X-X0) X0=X

X=Y

F0=AN4

ALFA=1./X

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

CALL PTISR1(R(NA),Z,U0,N,M ,ITER, *0 0 . , N, AN2 , ALFA*DD , RO , Z , R ( NU ) , *R(NU1), R( NH) , R( NG) , R( NS) , IER)

С * ВЫЧИСЛЯЕМ ОБОБЩЕННУЮ НЕВЯЗКУ

CALL

PTIZRA( AN2, Z,N ,DU, DH, HX, HY, RO, AN4)

GOTO

14

2 CONTINUE

176

0068

0069

007 0

0071

0072

0073

0074

0075

007 6

0077

0078

0 079

0080

0081

008 2

0083

0084

0085

0086

0087

0088

0089

009 0

0091

0 092

0093

0094

0 0 9 5

0 0 9 6

0 0 9 7

0 0 9 8

0 0 9 9

0100

0101

0102

0 1 0 3

0104

С* СЮДА ПОПАДАЕМ ЕСЛИ ОБОБЩЕННАЯ НЕВЯЗКА

С* СТАЛА <-EPS

С* ПЕРЕХОДИМ НА МОДИФИЦИРОВАННЫЙ МЕТОД ХОРД

F=AN4

23CONTINUE

Y=X0+F*( X-X0) / ( F - F 0 ) ALFA=1./У

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

CALL PTISR1(R(NA),Z,U0,N,M ,ITER, * 0 . , 0 . , N , AN2, ALFA#DD, RO, Z, R(NU) , *R(NU1),R(NH), R( NO) , R( NS) »IER)

С * ВЫЧИСЛЯЕМ ОБОБЩЕННУЮ НЕВЯЗКУ

CALL PTIZRA(AN2,Z,N,DY,DH,HX,HY>R0,AN4)

С* ЕСЛИ ОБОБЩЕННАЯ НЕВЯЗКА <EPS,HO >-EPS,

С* TO ПРОГРАММА РАБОТУ ЗАКАНЧИВАЕТ

I F ( DABS( AN4) • LE. EPS) GOTO 101

I F ( AN4. LE• —EPS) GOTO 37

IF ( ALFA. EQ• 0 . ) GOTO 68

K2=K2+1

I F (K2«EQ• IMAX)GOTO 67

X0=Y

F0=AN4

GOTO 23

37CONTINUE

С* ИЗМЕНЕНИЕ ИНТЕРВАЛА X=Y

F=AN4 GOTO 23

ENTRY PTIPRE

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

ICONT=l

GOTO 110

64CONTINUE

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

GOTO 9999

65CONTINUE

С* СДЕЛАНО IMAX УМНОЖЕНИЙ HA 2 ,

С* А НЕВЯЗКА-ОТРИЦАТЕЛЬНАЯ IERR=65

GOTO 999

66CONTINUE

С* СДЕЛАНО IMAX ИТЕРАЦИЙ МЕТОДОМ ХОРД IERR=66

GOTO 999

67CONTINUE

С* СДЕЛАНО IMAX ИТЕРАЦИЙ,

С* ПРИМЕНЯЛСЯ МОДИФИЦИРОВАННЫЙ МЕТОД IERR=67

GOTO 999

68CONTINUE

СЖ ЗАДАНО ИЛИ ПОЛУЧИЛОСЬ ALFA=0. IERR=68

69

GOTO 999

CONTINUE

C #

IC HE PABEHO 0 ИЛИ 1

177

010 5

 

 

IERR=69

0 106

100

GOTO 9999

0 1 0 7

CONTINUE

0 1 0 8

С *

РЕШЕНИЕ НАЙДЕНО МЕТОДОМ ХОРД

 

 

IERR=0

010 9

101

 

GOTO 999

0110

 

CONTINUE

 

С * РЕШЕНИЕ НАЙДЕНО С ПРИМЕНЕНИЕМ

0111

С *

МОДИФИЦИРОВАННОГО МЕТОДА ХОРД

999

 

IERR=1

0112

 

CONTINUE

0 1 1 3

С *

ВОЗВРАТ

ИЗ ПИ-ПЛЮС

 

 

CALL

PTIC R 1(Z,Z,R (N H ), N , 0 . )

0114

9999

 

CALL

РТISR3( Z , N , IC , R( NS))

011 5

 

CONTINUE

0116

 

 

RETURN

0 1 1 7

 

 

END

 

IV. Программарешения одномерных интегральных уравнений типа свертки

0001

0002

0003

0004

0005

0006

0007

0008

0009

SUBROUTINE РТIKR( АК, U 0, А , В , С , D,

*L1, L 2 , N, Z, AN, DL, НИ, C l , IMAX, ALPHA,

#U, NU, IERR)

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

REAL*8

A, AK, ALPHA, AN, В , C, C l , D, DL, HH

REAL*8

L1,L2,OM ,T,U,U0,Z,EPRO

INTEGER

IERR,IMAX, IP ,IQ ,N

INTEGER

NAI, NAR, NMAX, NU, NUI, NUR, NW, NZI

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

EXTERNAL PTICR1, РТICR2, PTIKR1

С

*

ТАБЛИЦА СООТВЕТСТВИЯ

 

 

С

*

имя

ДЛИНА

НАЗНАЧЕНИЕ

 

с

*

ARE

N

ДЕЙСТВ. ЧАСТЬ

ЯДРА

с

*

AIM

N

ОБРАЗА

ФУРЬЕ

с

»

МНИМ. ЧАСТЬ

ЯДРА

с

*

URE

N

ОБРАЗА

ФУРЬЕ

с

*

ДЕЙСТВ.

ЧАСТЬ

ПРАВОЙ ЧАСТИ

с

*

UIM

N

ОБРАЗА ФУРЬЕ

с

*

МНИМ. ЧАСТЬ

ПРАВОЙ ЧАСТИ

с

*

ZIM

N

ОБРАЗА ФУРЬЕ

с

*

МНИМАЯ ЧАСТЬ РЕШЕНИЯ

с

*

W

N

СТАБИЛИЗАТОР

 

с

*

IP==1

РАБОТЫ:

 

 

IP -

ПРИЗНАК

 

 

С* ПРИ ПЕРВОМ ОБРАЩЕНИИ 1Р=+1

С* ПРИ ПОВТОРНОМ ВХОДЕ ЧЕРЕЗ PTIKRE 1Р=-1

0010

 

EPRO=0.

0011

*

I F ( C l . GT• 1 . ) EPRO=( C l - 1 . )*DL

C

EPRO - ТОЧНОСТЬ РЕШЕНИЯ УРАВНЕНИЯ НЕВЯЗКИ

С

*

ЕСЛИ EPRO=0, ТО ВЫЧИСЛЯЕТСЯ ЭКСТРЕМАЛЬ

С * ПРИ ФИКСИРОВАННОМ ALFA

0012

100

CONTINUE

С * ВЫЧИСЛЕНИЕ ЛОКАЛЬНОГО НОСИТЕЛЯ РЕШЕНИЯ

0013

 

A =C -.5*(L1+L2)

0014

 

B =D -.5*(L 1+L 2)

178

 

 

0015

001 6

0017

0 0 1 8

0 0 1 9

0020

0021

0022

0 0 2 3

002 4

002 5

0026

0 0 2 7

0 0 2 8

0 0 2 9

0 0 3 0

0031

0 0 3 2

003 3

0034

003 5

0 0 3 6

0 0 3 7

0 0 3 8

0001

0002

0 0 0 3

000 4

0 0 0 5

0 0 0 6

0 0 0 7

0 0 0 8

0009

С* Т- ПЕРИОД ПРОДОЛЖЕНИЯ T=D-C

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

NAI=NAR+N

NW=N A I +N

NZI=NW+N

NUR=NZI+N

NUI=NUR+N

NMAXbfslUI+N

С * КОНТРОЛЬ ДЛИНЫ

РАБОЧЕГО МАССИВА

IF ( NMAX-1. GT. NU)

GO

TO 64

I F ( I P . E Q . - l)

GO

TO

101

С * ЗАДАНИЕ ПРАВОЙ

ЧАСТИ

 

CALL

PTICR1(U 0, U0, U(NUR) , N , 0 . )

CALL

PTICR2(U(NUI) , 0 . ,N)

101CONTINUE

С♦ СОБСТВЕННО РЕШЕНИЕ УРАВНЕНИЯ CALL PTIKR1 ( AK, U( NAR) , U( NAI ) , Z ,

♦U(NZI) , U( NUR) , U( NUI) ,U(NW),N,ALPHA, *Li,L2,AN,0M ,T,DSQRT(DL), DSQRT( HH) , ♦ I P , EPRO, IQ,IMAX,IERR)

GO TO 999

64CONTINUE

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

GO TO 999

С♦ ВХОД PTIKRE ПРЕДНАЗНАЧЕН

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

С# С ТЕМИ ЖЕ ЯДРОМ И ПРАВОЙ ЧАСТЬЮ ENTRY PTIKRE

IP=-1

GO TO 100

999CONTINUE RETURN END

SUBROUTINE PTIKR1 ( AK, ARE,AIM,ZRE,ZIM, *URE, UIM, W,N , ALP, L I , L 2, BETA, RO, A, ♦DEL, HH, IPAR, EPRO, IQ,IMAX, IERR)

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

REAL*8 A, AB, AIM, AK, ALP, ARE, A0, A1, A2, ♦BA, BETA, C l , C 2, C3, DEL, DP, DQ, EPRO,

♦F1 , F 2 , F 3 , H, HA, HH, L I , L 2, P , RO, R0, R1, S S I , ♦UIM, URE, U 2, W, X, ZIM, ZNOR, ZRE, Z Z

INTEGER I , IERR,IMAX, IPAR,IQ,M,N

DIMENSION ARE( N ) , ZRE( N ) , URE(N ), ♦AIM(N), ZIM(N),UIM(N),W(N) EXTERNAL FTF1C

H=A/N

HA=H/N

C ♦ ПРОВЕРЯЕМ ПЕРВЫЙ ЛИ ВХОД I F ( IPAR. EQ- —1) GO TO 2

C ♦ ЗАДАНИЕ ЯДРА УРАВНЕНИЯ

179

0 0 1 0

0011

0012

0 013

001 4

0 0 1 5

0 0 1 6

0 0 1 7

0 0 1 8

0 0 1 9

0020

0021

0022

0 0 2 3

0024

0 0 2 5

002 6

002 7

0 0 2 8

0 0 2 9

0 0 3 0

0031

0 0 3 2

0 0 3 3

0034

003 5

0036

0037

0 0 3 8

0 0 3 9

0 0 4 0

0041

0 0 4 2

0 0 4 3

0 0 4 4

0 0 4 5

0 0 4 6

0 0 4 7

0 0 4 8

0 0 4 9

0 0 5 0

0051

DO 1 1=1,N

AR6=( I - N / 2 - 1 ) *H+0. 5 * ( L1+L2) ARE( I ) =AK( ARG) *H

AIM( I ) = 0 . 0

I F ( ARG•L T .L I . OR•ARG. GT. L 2 ) A R E (I)= 0 .0

W< I)= (2 .0 /H * D S IN (3 .1 4 1 5 9 2 6 5 3 5 8 D 0 /

/N * ( 1 - 1 ) ) ) **2

1CONTINUE

P=1.0

С* ПРЕОБРАЗОВАНИЕ ФУРЬЕ ЯДРА И ПРАВОЙ ЧАСТИ

 

CALL

FTF1C( ARE, AIM, N, 1 , 1 ,Р )

 

CALL

FTF1C(URE,UIM,N,1 , 1 ,P )

С *

2 CONTINUE

ПОДБИРАЕМ ALP ТАК, ЧТО RO(ALP) > 0

C *

IQ - СЧЕТЧИК ИТЕРАЦИЙ

 

IQ=0

 

77CONTINUE IQ=IQ+1

С* ВЫЧИСЛЕНИЕ НЕВЯЗОК

F i= 0 .0 F 2= 0•0

DO 44 M=1,N U2=URE<M)**2+UIM(M)**2 A2=ARE( M) **2+AIM(M) **2 X=1.0+W(M)

I F ( A2•EG. 0 . 0 ) GO TO 42 BA=X/ ( A2+ALP* X)

AB=1. 0-ALP*BA C1=HA*U2*( BA*ALP) **2 C2=HA*U2*AB*BA F1=F1+C1

F2=F2+C2

GO TO 44

42 F1=F1+HA*U2

44CONTINUE

С* ВЫЧИСЛЕНИЕ ОБОБЩЕННОЙ НЕВЯЗКИ

С* ДЛЯ ПРОВЕРКИ RO( ALP)>0 BETA=Fi

С *

R Q =Fi-( DEL+HH*DSQRT( F 2 ) )**2

ЕСЛИ ЗАДАНО EPRO=0,

ТО КОНЧАЕМ

С *

I F ( EPRO. EQ. 0 . 0 )

GO

ТО 10

ЕСЛИ ЗАДАНО ALP=0.0,

ТО КОНЧАЕМ

 

IF ( ALP. EQ. 0 . 0 )

GO

ТО 68

IF (R O .G T .0 .0) GO ТО 33

С* ПЕРЕХОД К ВЫЧИСЛЕНИЮ РЕШЕНИЯ,

С* ЕСЛИ НЕ УДАЛОСЬ

С * ПОДОБРАТЬ ALP ТАКОЕ,

ЧТО RO(ALP) > 0

I F ( IQ.GT.IMAX) GO

TO 65

ALP=2.0*ALP GO TO 77

С * НАЧАЛО ПОИСКА КОРНЯ МЕТОДОМ НЬЮТОНА 33 CONTINUE

IQ=0

3 CONTINUE

IQ=IQ+1

180