Вы находитесь на странице: 1из 36

Институт проблем механики

Российской Академии Наук

С. Д. Алгазин

ЧИСЛЕННЫЕ АЛГОРИТМЫ КЛАССИЧЕСКОЙ


МАТФИЗИКИ.

I. СПЕКТРАЛЬНЫЕ ЗАДАЧИ ДЛЯ УРАВНЕНИЯ


ЛАПЛАСА.

Препринт № 671

Москва 2000 г.
Аннотация.

Рассматриваются спектральные задачи для уравнения Лапласа в


произвольной гладкой области. Приводятся программы на Фортране
для численного решения поставленных задач. Программы устроены
таким образом, что если известны параметрические уравнения
границы области, то возможно вычислить до ста первых
собственных значений и соответствующих им собственных
функций.

The summary.

The spectral problems for an equation Laplases in any smooth area


are considered. The programs on a Fortran for the numerical solution of
the put problems are resulted. The programs are arranged in such a
manner that if the parametric equations of border of area, that, probably
are known, to calculate up to the hundred first own values and own
functions, appropriate to them.

055(02)2  Институт проблем механики РАН 2000

2
I. Интерполяционная формула для функции 2-х-переменных в
круге.
Пусть Tm(r) полином Чебышева четной степени m, rν=cosψν ,
ψν=(2ν-1)π/2m - нули полинома (ν=1,2,…,m). Таким образом,
выбираем в круге сетку из m/2 окружностей, по Nν =2nν+1- точек на
каждой окружности. Тогда применяется интерполяционная формула:

∑∑
m/ 2 2 nν
2uνl Tm (r )  Dnν (θ − θ νl ) Dnν (θ + π − θ νl ) 
u ( r ,θ ) ~  − ,
2nν + 1 Tm' (rν )  r − rν r + rν 
ν =1 l =0

θ νl = 2πl /(2nν + 1), l = 0,1,...,2nν ;


(1) Dnν (θ − θ νl ) = 1 / 2 + cos k(θ − θ νl );


k =1


Dnν (θ + π − θ νl ) = 1 / 2 + (−1) k cos k(θ − θ νl );


k =1
ν −1
(−1)
Tm′ (rν ) = m; uνl = u (rν ,θ νl ).
sin ψ ν

Поэтому если в круге в точках zνl = rν e iθ задана функция u=u(r,θ), νl

то по формуле (1) мы её можем приближённо вычислить в других


точках.
Практически это вычисление осуществляется при помощи
подпрограмм URT и EIGEN.

SUBROUTINE URT (TETA,M,NL,U,Z)


IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION U(21),NL(M),Z(M)
K=0
PI=3.141592653590D0
DO 2 NU=1,M
Z(NU)=0.
NL1=NL(NU)

3
DO 1 L1=1,NL1
L=L1-1
P=TETA-2.*PI*L/NL1
DN=0.5
N1=(NL1-1)/2
DO 3 I=1,N1
3 DN=DN+COS(I*P)
DN=2.*DN/NL1
IF (P.EQ.0.) DN=1.
L2=L1+K
1 Z(NU)=Z(NU)+U(L2)*DN
2 K=K+NL1
RETURN
END

Применяется при двумерной интерполяции. Если в круге радиуса


1 заданы m окружностей, а на каждой из них NL(I) точек через
равные углы, причем радиусы окружностей - нули полинома
Чебышева степени 2m, то подпрограмма URT позволяет нам
восстановить значения функции на радиусе θ в точках пересечения
этого радиуса с окружностями.
Описание параметров:
TETA – θ,
M - m (число окружностей),
NL - целый массив длины M, i-ый элемент которого содержит
число точек (нечетное) на i -ой окружности.


m

U - одномерный массив длины N = (2nν + 1) , содержащий


ν

значения восстанавливаемой функции в узлах интерполяции. Узлы


нумеруются начиная с 1-ой окружности против часовой стрелки.

Z – выходной массив длины M, содержащий результаты


переинтерполяции.

DOUBLE PRECISION FUNCTION EIGEN (X,Y,Z,N,A,B)


IMPLICIT DOUBLE PRECISION (A-H,O-Z)

4
DIMENSION Y(N),Z(N)
X1=(2.*X-B-A)/(B-A)
PI =3.141592653589D0
EIGEN=0.D0
DO 1 I=1,N
1 EIGEN=EIGEN +Y(I)
CALL T(X1,Z,N)
NN=N-1
DO 2 K=1,NN
BE=0.D0
DO 3 J=1,N
P=(2.*J-1.)*PI/2./N
3 BE=BE+2.*Y(J)*COS(K*P)
2 EIGEN=EIGEN+Z(K+1)*BE
EIGEN=EIGEN/N
RETURN
END

Функция EIGEN восстанавливает значение функции в точке X на


отрезке [A,B], если заданы ее значения в узлах: (2Xi –B-A)/(B-A), где
Xi- нули полином Чебышев степени N.

Описание параметров:

X - значение аргумента при котором мы хотим вычислить функцию;

Y - массив длины N , который содержит на входе значение функции


в узлах;
Z - рабочий массив длины N;
N- число узлов интерполяции;
A, B -координаты концов отрезка.

Требуемые подпрограммы: T.

SUBROUTINE T(X,Z,K)
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
DIMENSION Z(K)
Y=X
Z1=1.0D+0
Z2=Y
Z(1)=Z1
Z(2)=Z2
5
DO 1 I=3,K
Z3=2.0D0*Y*Z2-Z1
IF (ABS(Z3).LE.1.D-19)Z3=0.D0
Z(I)=Z3
Z1=Z2
1 Z2=Z3
RETURN
END

Вычисляет значения полиномов Чебышева ст. от 0 да ст. (K-1) в


т. X.
Описание параметров:
X - значение аргумента ;
Z - выходной массив длины K , содержавши значения полиномов в т.
X;
К - размерность массива Z ;

Пример 1. Пусть U - массив, содержащий значения функции в


узлах интерполяции (узлы занумерованы начиная с 1-ой окружности
против часовой стрелки) и мы хотим вычислить ее в точке (r, θ).
Тогда нужно проделать следующую последовательность
вычислений:

DIMENSION U( ),Y( ),Z( )


M1=2*M
CALL URT(TETA,M,NL,U,Y)
CALL URT(TETA+3.141592653589D0,M,NL,U,Z)
DO 4 I=1,M
I1=M1-I+1
4 Y(I1)=Z(I)
FUN=EIGEN(R,Y,Z,M1,-1.D0,1.D0)

6
В ячейке FUN - содержится результат вычислений.

II. Вычисление собственных чисел и собственных функций


оператора Лапласа.

Мы будем рассматривать три краевые задачи: (2),(3); (2),(4) и


(2),(5).
(2) ∆ u(z)+(Q+λP)u=0, z∈G,
(3) u|∂G = 0
∂u
(4) =0
∂n ∂G

∂u
(5) Au + =0
∂n ∂G

где Q,P,A - некоторые функции, заданные в области G, n - внешняя


нормаль к дG. Мы предполагаем, что Q,P,A и дG ∈ С ∞ .
Пусть z=ϕ(ζ), |ζ|≤1 - конформное отображение единичного круга
на область G; тогда в плоскости ζ формально получаем те же
соотношения (2)-(5), где, однако, вместо u(z) и (Q+λP)u следует
писать u(ζ)=u(z(ζ)) и |ϕ′(ζ)|2(q+λp)u, q(ζ)=Q(z(ζ)), p(ζ)=P(z(ζ)), а
вместо A - α (θ ) = A( z(e iθ )) | ϕ ′(e iθ ) | . Граничное условие теперь
выполняется при r=1. Вместо производной по нормали в
соотношениях (4), (5) будет входить производная по радиусу.
Вычисление собственных значений и собственных функций
краевых задач (2)-(5) производит программа LAP123G.

PROGRAM LAP123G
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION A(378225),AB(378225),X(615),Y(615),IANA(615),
*HN(25215),NL(15),B(49,49),C(50625)
DIMENSION B1(15),BC(30,24),E(29,15),H(49),
*U(615),Z(615),Y2(11)
DIMENSION E2(49,49)
7
DIMENSION C0(225),C1(225)
EQUIVALENCE (AB(1),HN(1))
COMMON//EPS1,NP
COMMON /DM/ DM
COMMON /CZ/ ZY(615)
COMMON /CZG/ ZG(615)
CHARACTER*1 IC
EXTERNAL QMOD2,PMOD2
DM=1.D0
15 WRITE (*,*) 'Аналитическое конформное отображение или
счет
*(Y/N)'
READ (*,14) IC
14 FORMAT(A)
IF (IC.NE.'Y'.AND.IC.NE.'N') GO TO 15
IF (IC.EQ.'Y') THEN
WRITE(*,*) ' NP = ? , EPS1 = ? '
READ(*,*) NP,EPS1
ENDIF
WRITE(*,*) 'M = ? '
READ(*,*) M1
WRITE(*,*) 'N = ? '
READ (*,*) N
C
C KAHAЛ BBOДA ДAHHЫX
NREAD = 3
OPEN(UNIT=3,FILE='DATA')
C KAHAЛ ПPOMEЖУTOЧHЫX BЫДAЧ
NOUT = 4
OPEN(UNIT=4,FILE='NOUT')
C
IM = 0
300 IM = IM + 1
IF (IM.GT.10) STOP
READ(NREAD,*) M
C
NT=M*N
NM=(N-1)/2
M2=M*M
C
READ (NREAD,*) (C0(I),I=1,M2)

8
READ (NREAD,*) (C1(I),I=1,M2)
IF (M1.NE.M) GO TO 300
DO 10 I = 1,M 10 NL(I) = N
WRITE (NOUT,*) ' M = ', M
WRITE(NOUT,*) 'LAMDA0'
WRITE(NOUT,*) (C0(I),I=1,M2)
WRITE(NOUT,*) 'LAMDA1'
WRITE(NOUT,*) (C1(I),I=1,M2)
C
IF (IC.EQ.'N') THEN
OPEN (2,FILE='FILEZ')
READ (2,*) (Z(I),I=1,NT+N)
DO 16 I=1,N
16 ZG(I)=SQRT(Z(I))
DO 17 I=1,NT
17 ZY(I)=Z(N+I)
ENDIF
CALL HMATR1 (A,M,N,C0,C1,C)
CALL RASPAK(A,M,NM)
WRITE(*,*) 'Введи номер краевой задачи ? '
READ(*,*) IP
IF(IP.EQ.1.OR.IP.EQ.2) GO TO 100
IF (IC.EQ.'Y') CALL MOD2G (ZG,N)
IF(IP.EQ.3) CALL LAP3
*(A,N,M,NL,NM,HN,B1,X,C,B,BC,E,H)

100 CALL TRANSP (A,NT)


IF (IC.EQ.'Y') THEN
CALL MOD2(Y,M,N)
DO 6 I=1,NT
6 ZY(I)=Y(I)
ENDIF
IF (IC.EQ.'N') THEN
DO 7 I=1,NT
7 Y(I)=ZY(I)
ENDIF
IF (IP.EQ.2) GO TO 200
C
I1=0
DO 5 I=1,NT
DO 5 J=1,NT
I1=I1+1
9
5 A(I1)=A(I1)*Y(I)
IF (IP.EQ.1.OR.IP.EQ.3) GO TO 400
200 CONTINUE
C Задача Неймана
CALL BIJ(A ,NT,N,M,NL,NM,HN,B1,X,C,BC,E,H,E2)
I1=0
DO 55 I=1,NT
DO 55 J=1,NT
I1=I1+1
55 AB(I1)=A(I1)
CALL LDUDN (A,AB,NT,Y,C,NL,M,QMOD2,PMOD2)
CALL DMINV (A,NT,DD1,X,Y)
CALL DIVAB (NT,A,AB,Y)
400 CONTINUE
NT2=NT*NT
CALL ELMHES (NT,NT,1,NT,A,IANA)
WRITE(*,*) 'ELMHES'
CALL ELTRAN (NT,NT,1,NT,A,IANA,AB)
WRITE(*,*) 'ELTRAN'
CALL HQR2 (NT,NT,1,NT,A,X,Y,AB,IERR)
WRITE(*,*) 'HQR2'
WRITE (NOUT,*) ' IERR = ', IERR
13 FORMAT (13I5)
12 FORMAT (4E18.11)
C WRITE(*,12) (X(I),I=1,NT)
C
WRITE (NOUT,*) 'X'
WRITE (NOUT,12) (X(I),I=1,NT)
WRITE (NOUT,*) 'Y'
WRITE (NOUT,12) (Y(I),I=1,NT)
C
RMAX=0.D0
IJ=1
I1=1
IF (IP.EQ.2) THEN
Y(1)=X(1)
IANA(1)=1
IJ=2
I1=2
ENDIF
110 DO 60 I=I1,NT
IF (X(I).GT.RMAX) THEN
10
RMAX=X(I)
IANA(IJ)=I
Y(IJ)=X(I)
ENDIF
60 CONTINUE
X(IANA(IJ))=0.D0
RMAX=0.D0
IJ=IJ+1
IF(IJ.LE.NT) GO TO 110
C
WRITE(NOUT,12) (X(I),I=1,NT)
WRITE(NOUT,12) (Y(I),I=1,NT)
IF (IP.EQ.1.OR.IP.EQ.3) THEN
DO 210 I=1,NT
210 Y(I)=1.D0/SQRT(ABS(Y(I)))
ELSE
DO 1 I=1,NT
1 Y(I)=SQRT(ABS(1.D0+1.D0/Y(I)))
C1 Y(I)=SQRT(1.D0+1.D0/Y(I))
Y(1)=0.D0
ENDIF
WRITE (NOUT,*) 'Eigenvalue'
WRITE(NOUT,12) (Y(I),I=1,NT)
C
M11=2*M
IF(IP.EQ.2) KN=2
IF(IP.NE.2) KN=1
DO 21 K=KN,10
WRITE (*,*) 'Введи номер собственного значения ?'
READ (*,*) IJ
WRITE (*,*) IJ, Y(IJ)
I2=NT*(IANA(IJ)-1)
DO 22 I=1,NT
I3=I2+I
22 U(I)=AB(I3)
CALL URT (0.D0,M,NL,U,X)
CALL URT (3.14159265359D0,M,NL,U,Z)
DO 4 I=1,M
I1=M11-I+1 4
X(I1)=Z(I)
DO 20 LL=1,11
IF (IP.EQ.1.OR.IP.EQ.3) THEN
11
X2=0.1*(LL-1)/Y(IJ)
ELSE
X2=0.1*(LL-1)
C X2=0.1*(LL-1)/Y(IJ)
ENDIF
20 Y2(LL)=EIGEN (X2,X,Z,M11,-1.D0,+1.D0)
CALL NORM1(Y2,11)
WRITE (NOUT,12) Y2
PRINT 12,Y2
21 PAUSE
120 FORMAT(A)
121 END

FUNCTION ALFA (X)


IMPLICIT REAL*8 (A-H,O-Z)
COMMON//EPS1,NP
COMMON /DM/ DM
ALFA=DM
RETURN
END

SUBROUTINE MOD2G (Z,N)


IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION Z(1)
COMMON // EPS,L
PI=3.141592653589D0
I0=0
DO 5 K=1,N
T=2.*PI*(K-1)/N
I0=I0+1
5 Z(I0)=SQRT(1.+2.*EPS*(L+1)*COS(L*T)+EPS**2*(L+1)**2)
RETURN
END

SUBROUTINE MOD2 (Z,M,N)


IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION Z(1)
COMMON // EPS,L
PI=3.141592653589D0
I0=0
DO 5 NU=1,M
R=COS((2.*NU-1.)*PI/4./M)
12
DO 5 K=1,N
T=2.*PI*(K-1)/N
I0=I0+1
5 Z(I0)=

*1.+2.*EPS*(L+1)*R**L*COS(L*T)+EPS**2*(L+1)**2*(R*R)**L
RETURN
END

SUBROUTINE NORM1(Y,N)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION Y(1)
P=0.D0
DO 1 I=1,N
IF (ABS(Y(I)).GT.P) IP=I
IF (ABS(Y(I)).GT.P) P=ABS(Y(I))
1 CONTINUE
P=Y(IP)
DO 2 I=1,N 2
Y(I)=Y(I)/P
RETURN
END

SUBROUTINE PMOD2 ( Z,M,N)


IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION Z(1),Y(615)
COMMON /CZ/ ZY(615)
I=0
DO 1 NU=1,M
DO 1 L=1,N
I=I+1
1 Z(I)=ZY(I)
RETURN
END

SUBROUTINE QMOD2 (Z,M,N )


IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION Z(1),Y(615)
COMMON /CZ/ ZY(615)
I=0
DO 1 NU=1,M
DO 1 L=1,N
13
I=I+1
1 Z(I)=ZY(I)
RETURN
END

Подпрограмма MOD2 (Z,M,N) вычисляет | ϕ ′(ς ) | 2 для эпитрохоиды.

Описание параметров:
Z – массив, который содержит результат вычисления | ϕ ′(ς ) | 2 в
узлах интерполяции внутри круга. Длина этого массива равна числу
точек в круге;
M – число окружностей в круге;
N –число точек (нечётное) на i-ой окружности;
EPS, N – ε, N.
Примечание. Параметры области обозначены EPS1, NP и
передаются в подпрограмму MOD2 через непомеченный COMMON
блок.
Подпрограмма MOD2G (Z,N) вычисляет | ϕ ′(ς ) | на границе круга в
узлах интерполяции. Описание параметров аналогично.
1. Задача Дирихле. Сводится к алгебраической проблеме
собственных значений
(6) u=HZf+R.
Здесь u – вектор-столбец, компоненты которого содержат
значения искомого решения (собственной функции) в узлах сетки; H
– матрица размера M x M, получаемая из соотношения [3.8], когда ζ
пробегает узлы сетки; Z- диагональная матрица с числами zνl,
ν=1,2,…,m; l=0,1,…,2n на диагонали (см. главу 3); f – либо заданный
вектор-столбец, компоненты которого содержат значения
соответствующей функции в узлах сетки, либо f=(Q+λP)u, где Q и

14
P – диагональные матрицы, содержащие на диагонали значения
соответствующих функций в узлах сетки; в последнем случае имеем
задачу на собственные значения; R- вектор погрешности
дискретизации, содержащий значения функции RM (ς ; F ) в узлах
сетки. Отбрасывая в (6) погрешность дискретизации R, получаем
приближённую конечномерную задачу.
Вычисление матрицы H производит программа HMATR1:

SUBROUTINE HMATR1(H,M,N,LAMDA0,LAMDA1,C)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION H(1),C(M,M),R(15),
1LAMDA0(M,M),LAMDA1(M,M),LX(15),MX(15)
REAL*8 LAMDA0,LAMDA1
INTEGER P,LX,MX
PI=3.141592653589D0
DO 4 I=1,M
4 R(I)=1.D0/COS((2.D0*I-1.D0)*PI/4.D0/M)**2
NM=(N+1)/2
DO 20 NU=1,M
DO 20 MU=1,M
20 C(NU,MU)=LAMDA0(NU,MU)
CALL DMINV(C,M,D,LX,MX)
I0=0
DO 1 NU=1,M
DO 1 MU=1,M
DO 1 L=1,NM
I0=I0+1
1 H(I0)=C(NU,MU)/N
NM1=NM-1
DO 2 K=1,NM1
KK=K-2*(K/2)
IF(KK.EQ.0) GO TO 10
GO TO 11
10 DO 5 NU=1,M
DO 5 MU=1,M
C(NU,MU)=LAMDA0(NU,MU)
IF(NU.EQ.MU)
*C(NU,MU)=C(NU,MU)+4.*(K/2)**2*R(NU)
15
5 CONTINUE
CALL DMINV(C,M,D,LX,MX)
GO TO 12
11 DO 6 NU=1,M
DO 6 MU=1,M
C(NU,MU)=LAMDA1(NU,MU)
IF(NU.EQ.MU)
*C(NU,MU)=C(NU,MU)+4.*(K/2)*(K/2+1)*R(NU)
6 CONTINUE
CALL DMINV(C,M,D,LX,MX)
12 I0=0
DO 3 NU=1,M
DO 3 MU=1,M
I2=0
DO 3 P=1,NM
I0=I0+1
H(I0)=
*H(I0)+(2.D0/N)*C(NU,MU)*COS(K*2.D0*PI*I2/N)
3 I2=I2+1
2 CONTINUE
RETURN
END
Описание параметров:
H – выходной массив длины m2(n+1);
M – m (число окружностей сетки);
N=2n+1 – число точек на каждой окружности;
LAMDA0, LAMDA1 – входные массивы размерности m x m, таблицы
которых приведены ниже;
C – рабочий массив m x m.
Требуемые подпрограммы.
DMINV – вариант с двойной точностью подпрограммы MINV, текст
которой опубликован в [4].

Начальные данные.

16
Начальные данные, к этой программе должны размещаться в
файле DATA. Для m=3,5 эти данные приведены ниже. В
практических расчётах использовались значения m=3,5,7,9,11,13,15.
Таблицы этих массивов распространяются автором на дискете.
Запрос присылайте на адрес Института проблем механики РАН, или
по электронному адресу algazinsd@mail.ru.

Файл DATA.
3
4.11941825936E2 -4.51418752798E1 3.51897397936E1 -6.11418752812E1
2.93333333334E1 -2.41914580529E1 7.47692687292E0 -8.19145805268E0
1.47248407322E1
4.57798232344E2 -5.82837505577E1 2.66666666663E1 -8.01401570151E1
3.73333333328E1 -2.14734903555E1 2.66666666637E1 -1.56170838946E1
3.28684342717E1
5
3.05917979362E3 -2.45397191475E2 5.85756222727E1 -4.16357979478E1
8.61492076074E1 -4.79437239948E2 1.88502911226E2 -6.41781919923E1
2.12813887565E1 -3.38835422739E1 8.44641660921E1 -7.40667358125E1
7.20000000005E1 -4.04199446368E1 3.00225143569E1 -2.59406123323E1
1.40969411312E1 -3.05314008163E1 4.44135831757E1 -5.18469560093E1
6.47246249766E0 -3.08000609888E0 4.13397053668E0 -1.47786539187E1
3.59037120027E1
3.18279525483E3 -2.85286659253E2 7.99576262484E1 -4.87482886718E1
4.01993788820E1 -5.23871972443E2 2.04318047413E2 -7.21308166817E1
2.41993788780E1 -1.72591219339E1 1.16118802431E2 -8.45911088089E1
8.00000000012E1 -4.31013227380E1 1.83914115290E1 -5.55228900368E1
2.41993788778E1 -3.67524867912E1 5.30442717230E1 -4.22769412998E1
4.01993788889E1 -1.51532576528E1 1.26640438806E1 -2.30228910489E1
7.98424270845E1

Результат вычисления h-матрицы H выдаётся в упакованном виде,


т.е. выдаются только различные элементы [3]. Подпрограмма
RASPAK производит распаковку упакованной записи и выдаёт
массив H по строкам.

SUBROUTINE RASPAK (A,M,NM)


IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION A(1)
N=2*NM+1
N1=NM+1
N2=M*N1
N3=M*N
N4=N-1
17
N5=N3*N
DO 1 MU=1,M
MU1=M-MU+1
DO 1 NU=1,M
NU1=M-NU+1
I1=N2*(MU1-1)+N1*(NU1-1)
I2=(MU1-1)*N5+(NU1-1)*N
DO 2 I=2,N1
I10=N1-I+2
I3=I1+I10
I4=I2+I10
A(I4)=A(I3)
I5=I2+N +2-I10
2 A(I5)=A(I3)
I3=I1+1
I4=I2+1
A(I4)=A(I3)
DO 3 I=2,N
I6=I2+(I-1)*N3
I7=I6-N3
DO 4 J=1,N4
I8=I7+J
I9=I6+J+1
4 A(I9)=A(I8)
3 A(I6+1)=A(I7+N)
1 CONTINUE
RETURN
END

Описание параметров.
A - выходной массив размера M x M, M=mN, N=2n+1;
M - m;
NM - n.
2. Смешанная задача сводится к алгебраической задаче на
собственные значения следующим образом. Проведя дискретизацию
интегрального уравнения [3.6] получим

18
∑ ∑
M 2n

u (ς ) = H p (ς ) f p + H 0j (ς )ψ j + RM (ς ; f ) + ρ~n (ς ;ψ ),
p =1 j =0

ρ~n (ς ;ψ ) =

0
K 0 (ς ,θ ) ρ n (θ ;ψ )dθ .

где величины H 0j (ς ), ς = re iϕ определены в [3] и вычисляются


подпрограммой

SUBROUTINE HJ0 (R,F,H,N1)


IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION H(1)
PI=3.14159265359D0
N=(N1-1)/2
DO 1 J=1,N1
J1=J-1
P=F-2.D0*PI*J1/N1
H(J)=0.5D0
DO 2 L=1,N
2 H(J)=H(J)+R**L*COS(L*P)
1 H(J)= 2.D0*H(J)/N1
RETURN
END

Описание параметров.
R –ρ ;
F – φ;
H – массив длины N1=2n+1, содержащий на выходе вычисленные
интегралы;
N1=2n+1 – число точек в тригонометрической интерполяции.
Величины H ν′l (θ i ) , определённые в [3] вычисляются
подпрограммой HNLI:

19
SUBROUTINE HNLI (A,M,M1,M2,N,NL,NM,B,X,C,BC,E)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION
*A(18),NL(M),B(M),X(M),C(9),BC(M1,NM),E(M2,M)
PI=3.141592653590D0
DO 1 NU=1,M
P=PI*(2.*NU-1.)/2./M1
X(NU)=COS(P)
E(1,NU)=X(NU)
DO 1 KS=2,M2
1 E(KS,NU)=COS(KS*P)
DO 2 NU=1,M
B(NU)=0.
DO 2 KS=1,M2,2
2 B(NU)=B(NU)-4.*X(NU)*E(KS,NU)/(1.+KS*
*(-1)**((KS-1)/2))
CALL IKJ0 (BC,M1,NM)
C(1)=1.D0
I1=0
DO 7 NU=1,M
N2=NL(NU)
N3=(N2-1)/2
MNU=M-NU+1
IF (N2.EQ.N) N4=N
IF (N2.NE.N) N4=N2*N
DO 6 J=2,N4
6 C(J)= COS(2.*PI*(J-1)/N4)
DO 7 L=1,N2
DO 7 I=1,N
I1=I1+1
A(I1)=B(NU)
IF (N2.NE.N) I2=IABS((I-1)*N2-(L-1)*N)
IF (N2.EQ.N) I2=IABS(I-L)
DO 8 K=1,N3,2
LK=MOD (K*I2,N4)+1
8 A(I1)=A(I1)+C(LK)*(4.*
*(-1)**NU*X(MNU)*BC(M1,K)-4.*X(NU)/(1+K))
DO 10 KS=1,M2
J=(1-(-1)**KS)/2+1
IF(J.GT.N3) GO TO 10
DO 20 K=J,N3,2
LK= MOD(K*I2,N4)+1
20 A(I1)=A(I1)-8.*X(NU)*E(KS,NU)*BC(KS,K)*C(LK)

20
10 CONTINUE
7 A(I1)=A(I1)/FLOAT(N2*M1)
RETURN
END
Описание параметров:


m/ 2

A – выходной массив длины N (2nν + 1) , т.е. (число точек


ν =1

интерполяции в круге) х (число узлов интерполяции на границе).


Содержит величины H ν′l (θ i ) для каждой точки в естественном
порядке;
М – число окружностей,
М1=2*М;
М2=2*М-1;
N – число узлов интерполяции на границе;
NL – массив длины M, ν-ый элемент которого содержит число точек
сетки на ν-ой окружности;
NM=max nν;
B(M), X(M), BC(M1,NM), E(M2,M), C((2*NM+1)*N) – рабочие
массивы.
Требуемые подпрограммы.
IKJ0.

SUBROUTINE IKJ0 (A,M1,N)


IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION A(M1,N)
A(2,1)=0.D0
DO 3 K=4,M1,2
P1=K*K-4
3 A(K,1)=(-1-(-1)**(K/2))/P1
IF(N.EQ.1) RETURN
DO 2 J=2,N,2
2 A(1,J)=1./(J+2)
M=M1-1
21
N1=N-1
DO 4 K=1,M
I=(1-(-1)**K)/2+1
P=-1./K/(K+2)
IF(I.GT.N1) GO TO 4
DO 5 J=I,N1,2
P4=K+J+3
P1=(K+1)*(J+1)
5 A(K+1,J+1)=A(K,J)*P1/P4/K+P*(K+2)/P4
4 CONTINUE
RETURN
END
Производит вычисление интеграла
1

I kj0 =

0
Tk (r )r j dr , (k + j ) − нечёт но.

Описание параметров:
А – выходной массив размерности M1 x N, который содержит на
соответствующих местах вычисленные интегралы;
M1, N – размерности массива A.
Подпрограмма BN вычисляет матрицу обратную к матрице B (см.
[3]):

SUBROUTINE BN(B,N,C)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION B(N,N) ,C(1)
DIMENSION LL(49),MM(49)
COMMON /CZG/ ZG(615)
PI=3.141592653590D0
N1=(N-1)/2
N2=N-1
DO 1 I=1,N2
J1=I+1
DO 1 J=J1,N
B(I,J)=0.D0
DO 2 L=1,N1
2 B(I,J)=B(I,J)+2.D0*L*COS(L*2.D0*PI*(I-J)/N)/N
22
1 B(J,I)=B(I,J)
DO 3 I=1,N
3 B(I,I)=ZG(I)*ALFA(2.D0*PI*(I-1)/N)+0.25D0*(N-1.D0/N)
CALL DMINV (B,N,D,LL,MM)
IF (ABS(D).LT.1.E-3) WRITE(*,*) 'IN BN D = ',D
RETURN
END
Описание параметров:
B – матрица N x N, которая содержит выходную матрицу;
N – размерность матрицы B;
C – рабочий массив размерности 1 (в этом варианте программы не
используется).
Примечание. Результаты вычисления ϕ ′(ς ) передаются через

COMMON /CZG/ ZG(615).


Требуемые функции и подпрограммы:
ALFA, DMINV.
FUNCTION ALFA(T)
Вычисляет значение функции α на границе круга. DMINV вариант
с двойной точностью программы MINV [4].
Подпрограмма LAP3 вычисляет матрицу H-E (см. [3]) смешанной
задачи.

SUBROUTINE LAP3
*(A,N,M,NL,NM,HN,B1,X,C,B,BC,E,H)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION A(1),NL(M),HN(18),B1(M),X(M),
1C(9),BC(1),E(1),B(N,N),H(3)
PI=3.14159265359D0
M1=2*M
M2=M1-1
CALL BN(B,N,C)
CALL HNLI (HN,M,M1,M2,N,NL,NM,B1,X,C,BC,E)
I1=0
DO 2 MU=1,M
N1=NL(MU)
23
DO 2 K=1,N1
F=2.D0*PI*(K-1)/N1
CALL HJ0 (X(MU),F,H,N)
J1=0
DO 2 NU=1,M
N2=NL(NU)
DO 2 L=1,N2
I1=I1+1
J1=J1+1
DO 4 I=1,N
I2=(J1-1)*N+I
DO 4 J=1,N
4 A(I1)=A(I1)-H(J)*B(J,I)*HN(I2)
2 CONTINUE
RETURN
END
Описание параметров:
А – матрица, которая на входе содержит матрицу для задачи
Дирихле, а на выходе матрицу для смешанной задачи. Причём
матрица задачи Дирихле должна задаваться по строкам и, результат
поэтому тоже получается расположенным по строкам.
Следовательно после окончания работы (если нужно вычислять
собственные векторы) матрица А должна транспонироваться;
N – число точек интерполяции на границе;
NL – массив длины M, ν-ый элемент которого содержит число точек
на ν-ой окружности сетки;
NM=max nν;
HN, B1, X, C, B, BC, E, H – рабочие массивы размерности: HN((число
точек интерполяции в круге)х(число узлов интерполяции на границе
круга)), B1(M), X(M), C((2*NM+1)*N), B(N,N), BC(M1,NM), E(M2,M),
H(N), где M1=2*M, M2=2*M-1.
Требуемые подпрограммы:
BN, HNLI, HJ0.

24
Транспонирование матрицы после окончания работы LAP3
проводит программа TRANSP.

SUBROUTINE TRANSP (A,N)


REAL*8 A,P
DIMENSION A(N,N)
N1=N-1
DO 30 I=1,N1
I1=I+1
DO 30 J=I1,N
P=A(I,J)
A(I,J)=A(J,I)
30 A(J,I)=P
RETURN
END

Производит транспонирование матрицы A размера N x N.


3. Задача Неймана. Матрицу (H-E)Z (см. [3]) вычисляет
подпрограмма BIJ:

SUBROUTINE BIJ
*(B,NT,N,M,NL,NM,HN,B1,X,C,BC,E1,H,E)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION B(NT,NT),NL(M),HN(18),B1(1),X(1),
*H(1),E(N,N),C(1),BC(1),E1(1),
INTEGER P,Q
N1=(N-1)/2
PI=3.14159265359D0
C(1)=1.D0
N2=N-1
DO 3 J=1,N2
3 C(J+1)=COS(2.*PI*J/N)
DO 1 J=1,N1
HN(J)=N1*(N1+1.)/2.
DO 1 L=1,N1
DO 1 K=1,N1
M1=MOD(IABS(K*(L-J)),N)+1
M2=MOD(K*(L+J),N)+1
1 HN(J)=HN(J)+L*(C(M1)+C(M2))
DO 2 P=1,N
25
DO 2 Q=1,N
E(P,Q)=0.
DO 2 J=1,N1
M3=MOD(IABS((P-Q)*J),N)+1
2 E(P,Q)=E(P,Q)+ C(M3)/HN(J)
M1=2*M
M2=M1-1
CALL HNLI(HN,M,M1,M2,N,NL,NM,B1,X,C,BC,E1)
I=0
DO 4 NU=1,M
N11=NL(NU)
DO 4 L=1,N11
I=I+1
CALL HJ0(X(NU),2.*PI*(L-1)/N11,H,N)
DO 4 J=1,NT
I2=(J-1)*N
DO 4 P=1,N
DO 4 Q=1,N
I3=I2+Q
4 B(I,J)=B(I,J)-H(P)*E(P,Q)*HN(I3)
RETURN
END
B – массив NT x NT содержащий результат вычислений. На входе
этот массив содержит матрицу A задачи Дирихле расположенную по
столбцам;
NT – число точек интерполяции в круге;
N – число точек интерполяции на границе;
M – число окружностей в круге;
NL – массив длины M, ν-ый элемент которого содержит число точек
на ν-ой окружности сетки;
NM=max nν;
HN, B1, X, C, B, BC, E1, H, E – рабочие массивы размерности:
HN((число точек интерполяции в круге)х(число узлов интерполяции
на границе круга)), B1(M), X(M), C((2*NM+1)*N), B(N,N),
BC(M1,NM), E1(M2,M), H(N), E(N,N) где M1=2*M, M2=2*M-1.

26
Требуемые подпрограммы:
HNLI, HJ0.
Вычитаем первую строку соотношения [3.11] из остальных и
заменяем её на дискретное условие разрешимости. Тогда получаем
окончательную алгебраическую задачу на собственные значения:
A1u=λ A2u+ δ2,
где матрицы A1 и A2 получаются из матриц R(I-(H-E)ZQ) и R(H-E)ZP
заменой первой строки на строки c1q1z1 … cM qM zM и -c1p1z1 …-c1p1zM
соответственно.
Матрицы A1 и A2 вычисляются подпрограммой LDUDN:

SUBROUTINE LDUDN (A,B,NT,Z,C,NL,M,QMOD2,PMOD2)


IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION A(NT,NT),B(NT,NT),Z(NT),C(M),NL(M)
PI=3.14159265359D0
DO 8 I=1,NT
DO 9 J=1,NT
9 A(I,J)=0.D0
8 A(I,I)=1.D0
DO 10 I=2,NT
10 A(I,1)=-1.D0
DO 7 I=1,NT
7 A(1,I)=0.
DO 3 J=1,NT
DO 2 I=2,NT
Z(I)=0.D0
DO 2 L=1,NT
2 Z(I)=Z(I)+A(I,L)*B(L,J)
DO 3 I=2,NT
3 B(I,J)=Z(I)
CALL CNU (2*M,NL,C)
I=0
DO 4 NU=1,M
N1=NL(NU)
DO 4 L=1,N1
I=I+1
4 B(1,I)=C(NU)
CALL QMOD2 (Z,M,NL)
27
DO 5 I=1,NT
DO 5 J=1,NT
5 A(I,J)=A(I,J)-B(I,J)*Z(J)
CALL PMOD2 (Z,M,NL)
DO 6 I=1,NT
DO 6 J=1,NT
6 B(I,J)=B(I,J)*Z(J)
RETURN
END
Описание параметров:
A,B – матрицы размера NT x NT, которые содержат результат
вычислений A1 и A2. На входе в матрицу В засылается результат
работы программы BIJ;
NT – число точек интерполяции в круге;
Z,C – рабочие массивы длины NT и M соответственно;
NL – массив длины M, ν-ый элемент которого содержит число точек
на ν-ой окружности сетки;
M – число окружностей в круге;
QMOD2, PMOD2 – названия подпрограмм, которые должны быть
описаны в операторе EXTERNAL в вызывающей программе.
SUBROUTINE QMOD2(Z,M,NL)
Производит вычисление одномерного массива
| ϕ ′(ς i ) | 2 q (ς i ), i = 1,2,..., NT .

Описание параметров:
Z – массив длины NT, который содержит на выходе результат
вычислений | ϕ ′(ς i ) | 2 q(ς i ), i = 1,2,..., NT ;
M – число окружностей в круге;
NL – массив длины M, ν-ый элемент которого содержит число точек
на ν-ой окружности сетки;
SUBROUTINE PMOD2(Z,M,NL)
Производит вычисление одномерного массива
28
| ϕ ′(ς i ) | 2 p (ς i ), i = 1,2,..., NT .

Требуемые подпрограммы:
CNU – вычисление коэффициентов квадратурной формулы.

SUBROUTINE CNU (M,NL,C)


IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION NL(1),C(1)
PI=3.14159265359D0
M1=M-1
M2=M/2
DO 2 NU=1,M2
N1=NL(NU)
P=(2.*NU-1.)*PI/2./FLOAT(M)
P1=COS(P)
C(NU)=0.5*P1
DO 3 KS=3,M1,2
T=((-1)**((KS-1)/2)*FLOAT(KS)-
-1.)/(FLOAT(KS*KS)-1.)
3 C(NU)=C(NU)+ T*COS(KS*P)
2 C(NU)=C(NU)*4.*P1/FLOAT(M*N1)
RETURN
END

Описание параметров:
M – удвоенное число окружностей в круге;
NL – массив длины M/2, ν-ый элемент которого содержит число
точек на ν-ой окружности сетки;
C – массив длины M/2, ν-ый элемент которого содержит
коэффициент сν при ν=1,2,…,M/2
4. Описание программы LAP123G.
1. Программа осуществляет счёт при α ≡ DM (см. начало
программы).
2. Параметры области NP, EPS1 считываются в режиме диалога.
Для аналитически заданного конформного отображения
вычисления ведутся для эпитрохоиды, т.е. области
29
получающейся из круга конформным отображением
z=ς(1+εςn), |ς|≤1, ε <(n+1). Для других областей пользователь
должен заменить программы MOD2 и MOD2G, которые
вычисляют |z’|2 в узлах сетки внутри области и |z’| на границе
круга в узлах сетки.
3. Параметры сетки M, N считываются в режиме диалога. Здесь M
число окружностей сетки в круге, а N число точек на каждой
окружности.
4. Данные для программы должны быть размещены в файле
DATA.
5. Номер краевой задачи запрашивается в режиме диалога.
6. Результаты выводятся на экран и записываются в файл NOUT.
7. Результаты счёта собственной функции выводятся на
действительной оси в 11 точках (см. программу).
8. Программа осуществляет счёт конформного отображения
аналитически или считывает результаты вычисления с диска из
файла FILEZ. Описание программы, проводящей эти
вычисления, приведено ниже.
9. Программа использует для решения алгебраической проблемы
собственных значений подпрограммы пакета EISPACK:
ELMHES, ELTRAN, HQR2. Тексты этих подпрограмм доступны
в Интернет по адресу: htpp://www.netlib.org/eispack/.
10.Ниже в файлах NOUT1, NOUT2, NOUT3 приведены результаты
тестовых расчётов первой, второй и третьей краевых задач
(Дирихле, Неймана и смешанной) для эпитрохоиды EPS1=1/6,
NP=4 на сетке M=3, N=7 (для первых пяти собственных
значений). Эти результаты программа записывает в файл
NOUT.

30
NOUT1
M= 3
LAMDA0
411.941825936000 -45.1418752798000 35.1897397936000
-61.1418752812000 29.3333333334000 -24.1914580529000
7.47692687292000 -8.19145805268000 14.7248407322000
LAMDA1
457.798232344000 -58.2837505577000 26.6666666663000
-80.1401570151000 37.3333333328000 -21.4734903555000
26.6666666637000 -15.6170838946000 32.8684342717000
IERR = 0
X
0.17652925285E+00 0.73617203152E-01 0.44307523376E-01 0.72789702502E-01
0.37933028422E-01 0.25209236536E-01 0.18579192222E-01 0.31389198480E-01
0.27305791331E-01 0.13342756833E-01 0.19932879110E-01 0.12722448607E-01
0.69245000609E-02 0.61940716769E-02 0.53605109241E-02 0.48574010821E-03
0.26756420900E-02 0.49854482653E-03 0.26029335063E-02 0.49981975563E-02
0.66914956087E-02
Y
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00
0.17652925285E+00 0.73617203152E-01 0.72789702502E-01 0.44307523376E-01
0.37933028422E-01 0.31389198480E-01 0.27305791331E-01 0.25209236536E-01
0.19932879110E-01 0.18579192222E-01 0.13342756833E-01 0.12722448607E-01
0.69245000609E-02 0.66914956087E-02 0.61940716769E-02 0.53605109241E-02
0.49981975563E-02 0.26756420900E-02 0.26029335063E-02 0.49854482653E-03
0.48574010821E-03
Eigenvalue
0.23800805673E+01 0.36856181936E+01 0.37065087338E+01 0.47507399945E+01
0.51344182305E+01 0.56442973753E+01 0.60516334741E+01 0.62982537422E+01
0.70829631703E+01 0.73364605404E+01 0.86571952877E+01 0.88657329883E+01
0.12017269154E+02 0.12224705383E+02 0.12706088814E+02 0.13658308167E+02
0.14144685353E+02 0.19332409706E+02 0.19600559253E+02 0.44786579280E+02
0.45373054559E+02
0.10000000000E+01 0.99802215301E+00 0.99125814730E+00 0.97981342549E+00
0.96381673166E+00 0.94341753548E+00 0.91878345637E+00 0.89009768761E+00
0.85755642049E+00 0.82136626845E+00 0.78174169119E+00 -0.39235917486E-01
0.68412781674E-01 0.17713877991E+00 0.28623724160E+00
0.39499409353E+00 0.50268916235E+00 0.60859931202E+00 0.71200158122E+00
0.81217632080E+00 0.90841033122E+00 0.10000000000E+01 -0.17226619411E+00-
0.48064622992E-01 0.76536074970E-01 0.20080391700E+00
0.32400436971E+00 0.44540298138E+00 0.56426801424E+00 0.67987307681E+00
0.79149975616E+00 0.89844025020E+00 0.10000000000E+01
0.10000000000E+01 0.80542115797E+00 0.62594796099E+00 0.46261829022E+00
0.31637743587E+00 0.18807240851E+00 0.78446250259E-01-0.11867653888E-01 -
0.82351264858E-01-0.13260757823E+00-0.16236631297E+00
31
0.95908825529E+00 0.97546924726E+00 0.98787130129E+00 0.99610555065E+00
0.10000000000E+01 0.99940085118E+00 0.99417382894E+00 0.98420550670E+00
0.96940463235E+00 0.94970345395E+00 0.92505904551E+00

NOUT2
M= 3
LAMDA0
411.941825936000 -45.1418752798000 35.1897397936000
-61.1418752812000 29.3333333334000 -24.1914580529000
7.47692687292000 -8.19145805268000 14.7248407322000
LAMDA1
457.798232344000 -58.2837505577000 26.6666666663000
-80.1401570151000 37.3333333328000 -21.4734903555000
26.6666666637000 -15.6170838946000 32.8684342717000
IERR = 0
X
-0.10000000000E+01 0.62953408990E+00 0.61213257805E+00 0.18765111000E+00
0.98460527735E-01 0.88027329915E-01 0.49947964838E-01 0.65645629867E-01
0.36180878204E-01 0.26131114490E-01 0.22968741051E-01 0.38113729920E-01
0.34822108734E-02 0.68032921003E-02 0.14249506809E-01 0.12365957609E-01
0.19425215436E-01 0.37394698619E-02 0.15067823070E-01 0.64320635145E-02
0.12067584339E-01
Y
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00
-0.10000000000E+01 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00
-0.10000000000E+01 0.62953408990E+00 0.61213257805E+00 0.18765111000E+00
0.98460527735E-01 0.88027329915E-01 0.65645629867E-01 0.49947964838E-01
0.38113729920E-01 0.36180878204E-01 0.26131114490E-01 0.22968741051E-01
0.19425215436E-01 0.15067823070E-01 0.14249506809E-01 0.12365957609E-01
0.12067584339E-01 0.68032921003E-02 0.64320635145E-02 0.37394698619E-02
0.34822108734E-02
Eigenvalue
0.00000000000E+00 0.16088742427E+01 0.16228471995E+01 0.25157580477E+01
0.33401129108E+01 0.35156945667E+01 0.40290577680E+01 0.45848484979E+01
0.52189332396E+01 0.53515333311E+01 0.62664627426E+01 0.66736370841E+01
0.72442722574E+01 0.82077151279E+01 0.84366976624E+01 0.90480478727E+01
0.91578723596E+01 0.12165017963E+02 0.12508840937E+02 0.16383454614E+02
0.16975684901E+02
0.10000000000E+01 0.10000000000E+01 0.10000000000E+01 0.10000000000E+01
0.10000000000E+01 0.10000000000E+01 0.10000000000E+01 0.10000000000E+01
0.10000000000E+01 0.10000000000E+01 0.10000000000E+01 -0.21364488345E-01
0.91108227687E-01 0.20911512544E+00 0.33097101221E+00
0.45441286502E+00 0.57648541245E+00 0.69342671659E+00 0.80055375491E+00
0.89214800215E+00 0.96134101219E+00 0.10000000000E+01 -0.33765506507E-01
0.83223567787E-01 0.20428791557E+00 0.32807841757E+00
0.45268199452E+00 0.57546610469E+00 0.69292324134E+00 0.80051543015E+00
0.89251872672E+00 0.96186771406E+00 0.10000000000E+01
32
0.15493359455E+00 0.35714586529E-02-0.67247686799E-01-0.59479877622E-01
0.20188724090E-01 0.16019224271E+00 0.34393550182E+00 0.54964443693E+00
0.75021650823E+00 0.91307111334E+00 0.10000000000E+01
0.97313245166E+00 0.10000000000E+01 0.96436432935E+00 0.86250722528E+00
0.69600528881E+00 0.47270044705E+00 0.20767046372E+00-0.75800550228E-01 -
0.34525162601E+00-0.55807442647E+00-0.66054273544E+00

NOUT3
M= 3
LAMDA0
411.941825936000 -45.1418752798000 35.1897397936000
-61.1418752812000 29.3333333334000 -24.1914580529000
7.47692687292000 -8.19145805268000 14.7248407322000
LAMDA1
457.798232344000 -58.2837505577000 26.6666666663000
-80.1401570151000 37.3333333328000 -21.4734903555000
26.6666666637000 -15.6170838946000 32.8684342717000
IERR = 0
X
0.62323422018E+00 0.19532366583E+00 0.10514928125E+00 0.19395409756E+00
0.74952042045E-01 0.64157947750E-01 0.43100531422E-01 0.52419378772E-01
0.32556701459E-01 0.23798498313E-01 0.34325033708E-01 0.21029739648E-01
0.32646339842E-02 0.67157774395E-02 0.13507873256E-01 0.11767577470E-01
0.18044140786E-01 0.34898681298E-02 0.14279479382E-01 0.63594589437E-02
0.11471884947E-01
Y
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00
0.62323422018E+00 0.19532366583E+00 0.19395409756E+00 0.10514928125E+00
0.74952042045E-01 0.64157947750E-01 0.52419378772E-01 0.43100531422E-01
0.34325033708E-01 0.32556701459E-01 0.23798498313E-01 0.21029739648E-01
0.18044140786E-01 0.14279479382E-01 0.13507873256E-01 0.11767577470E-01
0.11471884947E-01 0.67157774395E-02 0.63594589437E-02 0.34898681298E-02
0.32646339842E-02
Eigenvalue
0.12667017028E+01 0.22626770232E+01 0.22706516919E+01 0.30838755645E+01
0.36526517282E+01 0.39479784030E+01 0.43677127157E+01 0.48168008131E+01
0.53975231513E+01 0.55421694676E+01 0.64822417408E+01 0.68957745136E+01
0.74444376438E+01 0.83684266362E+01 0.86041210444E+01 0.92184194873E+01
0.93364679051E+01 0.12202585306E+02 0.12539779966E+02 0.16927604036E+02
0.17501801399E+02
0.99684794599E+00 0.10000000000E+01 0.99823344715E+00 0.99157303817E+00
0.97999348128E+00 0.96338410170E+00 0.94151350121E+00 0.91399421771E+00
0.88024738476E+00 0.83946739114E+00 0.79058654041E+00 -0.80998473338E-01
0.24661769048E-01 0.13282644682E+00 0.24285655239E+00
0.35406102873E+00 0.46569402235E+00 0.57695213630E+00 0.68697168306E+00

33
0.79482593762E+00 0.89952239034E+00 0.10000000000E+01 -0.15949195899E+00-
0.42895395428E-01 0.75424745859E-01 0.19485271187E+00
0.31473067766E+00 0.43435355107E+00 0.55296377751E+00 0.66974614461E+00
0.78382258704E+00 0.89424699121E+00 0.10000000000E+01
0.10000000000E+01 0.68023971736E+00 0.40637213303E+00 0.17964833843E+00
0.94047458905E-03-0.12926890261E+00-0.21089745717E+00-0.24427370772E+00 -
0.23014766227E+00-0.16970145296E+00-0.64559970779E-01
0.97430805300E+00 0.98792723621E+00 0.99655743709E+00 0.10000000000E+01
0.99808493329E+00 0.99067295367E+00 0.97765753053E+00 0.95896693031E+00
0.93456626084E+00 0.90445951571E+00 0.86869161858E+00

III. Описание программы численного конформного


отображения.
Программа численного конформного отображения написана
Э. П. Казанджаном. Ниже приводится пример обращения к
программе.
PROGRAM KAZAN
PARAMETER (N=201,N1=202,M=210)
C 2.06.94
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION AL(N,N),PR(N),PSI(N),SL(N),FK(N)
DIMENSION TJ(N1),TJ1(N1),TJ2(N1),MD(N1)
COMPLEX*16 T(N),T1(N),T2(N),ZJ(N),SUM(N)
COMPLEX*16 CW(M),CZ(M),CZ1(M),CZ2(M),CC
DIMENSION Z(M),ZR(M),ZG(M)
COMMON /D/ LL(301),MM(301)
C Этот common блок нужно также вставить в подпрограмму conf
COMMON /S/ S
COMMON // EPS,NP
WRITE(*,*) ' NP = ? , EPS = ? '
READ(*,*) NP,EPS
S=2.D0*3.141592653589D0
CC=(0.,0.)
WRITE (*,*) 'M = ?'
READ (*,*) MG
WRITE (*,*) 'N =?'
READ (*,*) NG
IJ=0
DO 1 I=1,NG
IJ=IJ+1
TT=S*(I-1)/NG
1 CW(IJ)=(COS(TT))+(0.,1.)*(SIN(TT))
34
DO 2 NU=1,MG
R=COS((2.*NU-1.)*S/8./MG)
DO 2 L=1,NG
TT=S*(L-1)/NG
IJ=IJ+1
2 CW(IJ)=(R*COS(TT))+(0.,1.)*(R*SIN(TT))
CALL CONFOR
*(CC,AL,PR,PSI,T,T1,T2,SL,FK,ZJ,SUM,N,TJ,TJ1,TJ2,
*MD,N1,CW,CZ,CZ1,CZ2,M)
DO 3 I=1,M
3 Z(I)=CZ1(I)*CONJG(CZ1(I))
CALL MOD2G (ZG,NG)
ENORM=0.D0
DO 4 I=1,NG
IF (ABS(SQRT(Z(I))-ZG(I)).GT.0.D0) THEN
ENORM=ABS(SQRT(Z(I))-ZG(I))
ENDIF
4 CONTINUE
WRITE (*,*) 'ENORM G',ENORM
CALL MOD2 (ZR,MG,NG)
ENORM=0.D0
DO 5 I=NG+1,M
IF (ABS(Z(I)-ZR(I-NG)).GT.0.D0) THEN
ENORM=ABS(Z(I)-ZR(I-NG))
ENDIF
5 CONTINUE
WRITE (*,*) 'ENORM R',ENORM
PAUSE
WRITE (*,*) 'Запись на диск'
OPEN (4,FILE='FILEZ')
WRITE (4,*) (Z(I),I=1,M)
STOP
END

SUBROUTINE KONT(C)
IMPLICIT REAL*8 (A-H,O-Z)
C Эпитрохоида
COMPLEX*16 CT,CT1,CT2
COMMON /TRI/ CT,CT1,CT2
COMMON // EPS,NP
A=EPS
CC=COS(C)
35
SS=SIN(C)
C4=COS((NP+1)*C)
S4=SIN((NP+1)*C)
CT=(CC+A*C4)+(0.,1.)*(SS+A*S4)
RETURN
ENTRY UR(C)
CT1=(-SS-(NP+1)*A*S4)+(0.,1.)*(CC+(NP+1)*A*C4)
CT2=(-CC-(NP+1)**2*A*C4)+(0.,1.)*(-SS-(NP+1)**2*A*S4)
RETURN
END
Пользователь должен составить программу KONT(C), которая
вычисляет τ(θ),τ’ (θ) и τ’’ (θ), θ∈[0,2π] для заданного контура [5].
Результаты присваиваются переменным CT, CT1 и CT2.
IV. Заключение. По поводу получения полных версий
описанных программ обращайтесь по электронному адресу:
algazinsd@mail.ru или на адрес Института проблем механики РАН,
117525, Москва, проспект Вернадского д.101, к.1.

Алгазин Сергей Дмитриевич

Численные алгоритмы классической матфизики.


I. Спектральные задачи для уравнения Лапласа.

Подписано к печати 29.11.2000. Заказ № 31-2000. Тираж 100 экз.


________________________________________________________

Отпечатано на ризографе Института проблем механики РАН


117526, Москва, пр-т Вернадского, 101

36

Вам также может понравиться