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

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

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

С. Д. Алгазин

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


МАТФИЗИКИ.

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


БИГАРМОНИЧЕСКОГО УРАВНЕНИЯ.

Препринт № 678

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

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


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

The summary.

The spectral problems for бигармонического of an equation 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
Введение.
Это второй препринт серии препринтов, объявленной в [1]. Он
посвящён задачам на собственные значения для бигармонического
оператора. Для построения бигармонического оператора
применяются таблицы начальных данных, опубликованные в [1].
Алгоритм подробно описан в [2,3]. Численно конформное
отображение строится по алгоритму описанному в [4].
I. Рассматриваются алгоритмы численного решения краевых
задач (1) - (3) и (1),(2),(4)
(1) ∆2 u ( z) = F ( z), z ∈ G,
(2) u ∂G = 0,
∂u
(3) = 0,
∂n ∂G

∂ 2u  ∂ 2 u 1 ∂u 
(4) + ν  2 +  = 0.
∂n 2  ∂s ρ ∂n  ∂G

Здесь G - область в комплексной z - плоскости с достаточно гладкой


границей дG; n - единичный вектор внешней нормали к дG; д/дs -
означает дифференцирование по длине дуги (длина отсчитывается
против часовой стрелки); 1/ρ - кривизна дG; ν - постоянная
(коэффициент Пуассона). Функция F(z) либо задана, либо
F(z)=(Q(z)+λP(z))u(z), где Q и Р - некоторые функции, и в этом
случае имеем задачу на собственные значения для бигармонического
уравнения. В частности, при Q=0 и P=1 получаем задачу о
свободных колебаниях пластинки, где собственная частота колебания
ω связана со спектральным параметром λ соотношением
λ = ω ρ / D , ρ -плотность, а D- цилиндрическая жёсткость. Краевые

условия (2) и (3) означают, что пластинка защемлена по краю, а


краевые условия (2) и (4) означают опирание по краю. Пусть z=φ(ζ),
3
|ζ| ≤ 1 - функция, задающая конформное отображение круга
единичного радиуса на область G. Тогда в плоскости ζ получаем
вместо (1) - (4) следующие соотношения:
( −2
)
(5) ∆ ϕ ′(ς ) ∆u = ϕ ′(ς ) f (ς ), ς = re iϕ , r < 1,
2

(6) u r =1 = 0,
∂u
(7 ) = 0,
∂r r =1

∂ 2u   ϕ ′′(ς )  ∂u
(8) + ν + (ν − 1) Re ς  = 0.
∂r 2   ϕ ′(ς )  ∂r r =1

Здесь f(ς)=F(z(ς)), а в граничном условии (8) учтено условие (6), т.е.


положено д2u/дs2.
Для решения этих краевых задач применяется программа
BIG12AG:

PROGRAM BIG12AG
C 15.12.2000
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),BA(25215)
DIMENSION BC(30,24),E(29,15),H(49),
*U(615),Z(656),Y2(11)
DIMENSION E2(49,49),ZG(41),ZY(615)
DIMENSION C0(225),C1(225)
CHARACTER*1 IC
C
PUAS=0.25D0
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
4
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)
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
CALL HMATR1 (A,M,N,C0,C1,C)
CALL RASPAK(A,M,NM)
CALL TRANSP (A,NT)
C
IF (IC.EQ.'N') THEN
OPEN (2,FILE='FILEZ')
READ (2,*) (Z(I),I=1,NT+N)
READ (2,*) (Y(I),I=1,N)

5
DO 16 I=1,N
16 ZG(I)=SQRT(Z(I))
DO 17 I=1,NT
17 ZY(I)=Z(N+I)
ENDIF
NZAP = 9
NT2=NT*NT
WRITE(NZAP) (A(I),I=1,NT2)
END FILE (NZAP)
C
WRITE(*,*) 'Введи номер краевой задачи ? '
READ(*,*) IP
C
M11=2*M
M3=2*M+1
M22=M11-1
C
IF(IP.EQ.2.AND.IC.EQ.'Y') CALL PSI (Y,N,PUAS,EPS1,NP,C)
IF(IP.EQ.1) CALL HNLI (HN,M,M11,M22,N,NL,NM,B,X,C,BC,E)
IF(IP.EQ.2) CALL HNLI2M
*(HN,M,M11,M22,N,NL,NM,B,X,C,BC,E,NT,Y)
IF(IC.EQ.'Y') CALL MOD2 (ZY,M,NL,EPS1,NP)
DO 30 I=1,NT
I2=(I-1)*N
DO 30 J1=1,N
I3=I2+J1
30 HN(I3)=HN(I3)*ZY(I)
CALL CN (B,N,HN,NL,X,M,H,NT)
CALL EBIGM (AB,BA,NT,N,NL,B,HN,H,C,X,M,NZAP,ZY)
CALL BIGM (A,AB,NT,NZAP,ZY)
100 CONTINUE
C
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)
WRITE(NOUT,12) (X(I),I=1,NT)
6
WRITE(NOUT,12) (Y(I),I=1,NT)
RMAX=0.D0
IJ=1
110 DO 60 I=1,NT
IF (X(I).GT.RMAX) THEN
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)
C
DO 31 I=1,NT
IF (Y(I).NE. 0.D0) THEN
Y(I)=1.D0/Y(I)
ENDIF
31 CONTINUE
WRITE (NOUT,*) 'Eigenvalue'
WRITE(NOUT,12) (Y(I),I=1,NT)
WRITE (*,*) 'Собственные значения'
PRINT 12,(Y(I),I=1,NT)
C
M11=2*M
DO 21 K=1,20
WRITE (*,*) 'Введи номер собственного значения ?'
READ (*,*) IJ
WRITE (*,*) IJ, Y(IJ)
WRITE (NOUT,*) 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.141592653589D0,M,NL,U,Z)
DO 4 I=1,M
I1=M11-I+1
7
4 X(I1)=Z(I)
DO 20 LL=1,11
X2=0.1*(LL-1)
20 Y2(LL)=EIGEN(X2,X,Z,M11,-1.D0,+1.D0)
CALL NORM (Y2,11)
PRINT 12,Y2
WRITE (NOUT,12) Y2
21 PAUSE
STOP
END

Эта программа вычисляет собственные значения выписанных


краевых задач по формуле:


(9) u = ( B 2 − BEB) f + δ .

Соотношение (9) - итог наших изысканий. Здесь u = (u (ς 1 ),..., u (ς M )) ' -


вектор значений функции u(ζ) в узлах сетки; f соответствующий
вектор значений правой части бигармонического уравнения; B=НZ -
матрица дискретной задачи Дирихле для уравнения Лапласа в
рассматриваемой области G; для матрицы E имеем следующее
выражение

∑ ∑ ∑
2n 2n

(10) Elj = H p0 (ς l ) C qp H i1,q zi , l , j = 1,2,...., M ,


p =0 q =0 i


а δ - погрешность дискретизации. Отбрасывая в (9) погрешность

δ , получим приближённую конечномерную задачу. Таким образом,
решение задачи об изгибе пластинки сводится к умножению
матрицы D=B2–BEB на вектор, а задаче на собственные значения
соответствует приближённая конечномерная задача

u=(B2–BEB)Z(Q+λP)u,

8
где – Q=diag(q(ζ1)… q(ζM)), P=diag(p(ζ1)… p(ζM)), Z=diag(z(ζ1)…
z(ζM)) - диагональные матрицы, у которых на диагонали стоят
значения соответствующих функций в узлах интерполяции. Для
задачи о свободных колебаниях Q=0, P=1, т.е. эта задача сводится
к вычислению собственных значений матрицы D. Отметим, что вид
второго краевого условия учитывается строением массива E.
Величины H 0j вычисляются подпрограммой HJ0M:

SUBROUTINE HJ0M (H,C,N2,R,K,N,N4)


IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION H(1),C(1)
N1=(N-1)/2
DO 1 J=1,N
H(J)=1.D0/N
IF (N2.NE.N) I2=IABS((K-1)*N-N2*(J-1))
IF (N2.EQ.N) I2=IABS(J-K)
DO 1 L=1,N1
LK=MOD (L*I2,N4)+1
1 H(J)=H(J)+2.D0*R**L*C(LK)/N
RETURN
END

Подпрограмма вычисляет
2π (k − 1)
H 0j (ς ), ς = ρe iϕ k , ϕ k =

( Nν ≡ 2nν + 1 − числот о т очек на ν − ой окруж ност и), k = 1,..., Nν ;
Описание параметров:
H – массив длины N, который содержит на выходе вычисленные
интегралы H 0j ( ρe iϕ ) при j=1,…,N;
k

C – массив длины N4, который содержит на входе таблицу


косинусов
2π ( j − 1)
с j = cos , j = 1,2,..., N 4;
N4
N2 – число точек на рассматриваемой окружности;
R – ρ;
9
K – номер точки φk на окружности;
N - число точек на границе круга;
N4 – длина массива C, N4=N*N2 при N не равном N2 и
N4=N при N=N2;
Матрица С вычисляется подпрограммой CN:

SUBROUTINE CN(B,N,HN,NL,X,M,H,NT)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION B(N,N),HN(18),NL(M),X(M),H(7)
DIMENSION LL(49),MM(49)
PI=3.14159265359D0
DO 1 J1=1,N
DO 1 J2=1,N
1 B(J2,J1)=0.D0
I=0
DO 20 MU=1,M
N1=NL(MU)
DO 2 K=1,N1
I=I+1
CALL HJ0(X(MU),2.*PI*(K-1)/N1,H,N)
I2=(I-1)*N
DO 2 J2=1,N
I3=I2+J2
DO 2 J1=1,N
2 B(J2,J1)=B(J2,J1)+HN(I3)*H(J1)
20 CONTINUE
CALL DMINV (B,N,D,LL,MM)
IF (ABS(D).LT.1.E-4) PRINT 10, D
10 FORMAT (E18.11,'Обращаемая матрица близка к
* вырожденной ')
RETURN
END
Производит вычисление матрицы обратной к матрице:

B j1, j 2 =

i
H i , j 2 Zi H 0j1 (ξ i ).

Описание параметров:
В - результат вычислений, матрица размера N X N;
10
N- число точек интерполяции на границе круга;
HN - одномерный массив длины NT*N, который содержит на входе
массив H i , j Zi по строкам;
2

NL - массив длины М, ν-ый элемент которого содержит число точек


на ν -ой окружности сетки;
Х- рабочий массив длины М;
М - число окружностей в круге;
Н - рабочий массив длины N;
NT- число точек интерполяции в круге;
Вызываемые подпрограммы:
HJO, DMINV
Примечание. DMINV- подпрограмма обращения матрицы, ссылка на
её источник приведена в [1]. Подпрограмма HJ0 описана в [1].

1. Первая краевая задача. Разные краевые задачи отличаются


только вычислением массива H i , j . Для краевого условия (3)
2

этот массив вычисляется подпрограммой HNLI, описанной в


[1]. Сама матрица D вычисляется подпрограммами ЕВIGМ и
BIGM.

SUBROUTINE EBIGM
(B,E,NT,N,NL,C,HN,H,C1,X,M,NZAP,Y)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION B(NT,NT),E(N,NT),
*NL(1),C(N,N),HN(1),H(N),C1(1),X(1),Y(1)
C
REWIND (NZAP)
READ (NZAP )
((B(I,J),I=1,NT),J=1,NT)
DO 20 I=1,NT
DO 20 J=1,NT
20 B(I,J)=B(I,J)*Y(J)

11
DO 5 I=1,NT
I2=(I-1)*N
DO 4 J1=1,N
P=0.
DO 3 J2=1,N
I3=I2+J2
3 P=P+HN(I3)*C(J1,J2)
4 H(J1)=P
DO 5 J1=1,N
I3=I2+J1
5 HN(I3)=H(J1)
DO 7 J1=1,N
DO 7 J=1,NT
P=0.D0
DO 6 I=1,NT
I3=J1+(I-1)*N
6 P=P+HN(I3)*B(I,J)
7 E(J1,J)=P
DO 8 J=1,NT
I2=(J-1)*N
DO 8 J1=1,N
I3=I2+J1
8 HN(I3)=E(J1,J)
C1(1)=1.D0
L=0
N1=0
DO 2 MU=1,M
N2=NL(MU)
IF (N2.EQ.N1) GO TO 30
IF (N2.EQ.N) N4=N
IF (N2.NE.N) N4=N2*N
N1=N2
DO 1 J=2,N4
1 C1(J)=COS(2.*3.14159265359D0*(J-1)/N4)
30 CONTINUE
DO 2 K=1,N2
L=L+1
CALL HJ0M (H,C1,N2,X(MU),K,N,N4)
DO 2 J=1,NT
I2=(J-1)*N
P=0.
DO 40 J1=1,N
12
I3=I2+J1
40 P=P+H(J1)*HN(I3)
2 B(L,J)=P
RETURN
END

Описание параметров:
В - результат вычислений матрицы Е. Массив размера NT x NT.

E(N,NT) рабочий массив;

NT- число точек интерполяции в круге;


N- число узлов интерполяции на границе;

NL - массив длины М, v-ый элемент которого содержит число точек

на v-ой окружности сетки;

С - массив размера N x N, который содержит на выходе матрицу

вычисляемую подпрограммой CN;


HN(NT*N}, H(N), C1(NT*N) - рабочие массивы;

Х(М) - рабочий массив, который содержит на входе величины


( 2ν − 1)π
xν = cos , ν = 1,2,..., M .
2M
М- число окружностей в круге;

NZAP - номер записи на магнитном носителе с математическим но-

мером 5, в которой записана матрица для задачи Дирихле уравнения

Лапласа (по столбцам);

Y- одномерный массив длины NT, который содержит на входе

zi = ϕ ′(ς i ) .
2

массив

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

SUBROUTINE BIGM (B,E,NT,NZAP,HN)


IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION B(NT,NT),E(NT,NT),HN(NT)
C
REWIND (NZAP)
READ (NZAP ) ((B(I,J),I=1,NT),J=1,NT)
DO 20 I=1,NT
DO 20 J=1,NT
20 B(I,J)=B(I,J)*HN(J)
DO 10 K=1,NT
DO 10 J=1,NT
10 E(K,J)=B(K,J)-E(K,J)
CALL DIVAB(NT,B,E,HN)
RETURN
END

Производит вычисление матрицы D==B2-BE для

бигармонического уравнения.

Описание параметров:
В - массив размера NT x NT, который содержит на выходе матрицу

D;

Е - массив размера NT x NT, который содержит на входе матрицу Е,

вычисляемую подпрограммой EBIGM;

NT - число узлов сетки в круге;

NZAP - номер записи на магнитном носителе с математическим но-

мером 5, в которой записана матрица для задачи Дирихле уравнения

Лапласа (по столбцам);

HN - одномерный массив длины NT, который содержит на входе


14
массив

zi = ϕ ′(ς i )
2

Требуемые подпрограммы:
DIVAB производит умножение матрицы А - размера N × N на мат-
рицу В того же размера и засылает результат в А ( Y - рабочий

массив размерности N).

SUBROUTINE DIVAB(N,A,B,Y)
DOUBLE PRECISION A,B,Y
C
CL A*B = > A
C
DIMENSION A(N,N),B(N,N),Y(N)
DO 8 K=1,N
DO 9 L=1,N
Y(L)=0.D0
DO 9 I=1,N
9 Y(L)=Y(L)+A(K,I)*B(I,L)
DO 8 L=1,N
8 A(K,L)=Y(L)
RETURN
END

Подпрограмма DIVAB1 производит аналогичные вычисления.


Только результат засылается в В.

SUBROUTINE DIVAB1 (N,A,B,Y)


IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION A(N,N),B(N,N),Y(N)
DO 3 J=1,N
DO 1 I=1,N
P=0.
DO 2 L=1,N
2 P=P+A(I,L)*B(L,J)
1 1 Y(I)=P
DO 3 I=1,N
3 B(I,J)=Y(I)
15
RETURN
END

2. Вторая краевая задача. Под второй краевой задачей понимается


задача (1), (2), (4). Практически массив H i , j для краевого условия
2

(4) определяется программой HNLI2M:

SUBROUTINE HNLI2M
*(A,M,M1,M2,N,NL,NM,B,X,C,BC,E,NT,Y)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION A(18),NL(M),B(M),X(M),C(9),
*BC(M1,NM),E(M2,M),Y(1)
CALL HNLI (A ,M,M1,M2,N,NL,NM,B,X,C,BC,E)
PI=3.141592653589D0
DO 5 I=1,NT
I2=(I-1)*N
DO 5 J=1,N
I3=I2+J
5 A(I3)=A(I3)*Y(J)
C(1)=1.D0
I1=0
DO 7 NU=1,M
PP=0.D0
DO 15 KS=1,M2,2
15 PP=PP-E(KS,NU)
C
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)=A(I1) -B(NU)/N2/M1
A(I1)=A(I1)+4.*X(NU)*PP/N2/M1
IF (N2.NE.N) I2=IABS((I-1)*N2-(L-1)*N)
IF (N2.EQ.N) I2=IABS(I-L)

16
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)-1.)-4.*K*X(NU)/(1.+K))/N2/M1
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)-
*1.)*C(LK)/N2/M1
10 CONTINUE
7 CONTINUE
RETURN
END

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

A - выходной массив NT*N, который содержит на выходе массив


H i , j 2 по строкам;

М- число окружностей;
М1=2*М.
М2-М1-1;
N- число точек на границе круга;
NL - массив длины М, ν-ый элемент которого содержит число точек
на ν-ой окружности сетки.
NM =тах nν ;
В(М), Х(М), BC(M1,NM), E(M2,M), C((2*NM+1)*N) - рабочие масси-
вы.
NT- число точек в круге;

17
Y- выходной массив подпрограммы PSI, который содержит величи-
ны
 iθ ϕ ′′(eiθ j ) 
y j = ν + (ν − 1) Re e j iθ j 
, j = 1,..., N ;θ j = 2π ( j − 1) ,
 ϕ ′(e )  N
для нашей области; ν- коэффициент Пуассона. Например, для
области получаемой из круга конформным отображением
ϕ(ζ)=ζ(1+εζn), ε≤1/(n+1), вычисление массива Y производит
подпрограмма PSI:

SUBROUTINE PSI (Y,N,PUAS,EPS,NP,C)


IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION Y(N),C(N)
EPS1=EPS*(NP+1.)
C(1)=1.
DO 1 J=2,N
1 C(J)=COS(2.*3.14159265359D0*(J-1.)/N)
DO 2 J=1,N
LK=MOD(NP*(J-1),N)+1
Y(J)=EPS1*NP*(C(LK)+EPS1)/
*(1.+2.*EPS1*C(LK)+EPS1*EPS1)
2 Y(J)=PUAS+(PUAS-1.)*Y(J)
RETURN
END

Описание параметров:
Y- массив длины N, который содержит результаты
вычислений;
N- число точек на границе круга;
PUASS - ν (коэффициент Пуассона);
EPS-e;
NP-n;
С - рабочий массив длины N.
2. Описание программы BIG12AG аналогично LAP123G.

18
1. Параметры области NP, EPS1 считываются в режиме диалога.
Для аналитически заданного конформного отображения
вычисления ведутся для эпитрохоиды, т.е. области,
получающейся из круга конформным отображением
z=ς(1+εςn), |ς|≤1, ε <(n+1). Для других областей пользователь
должен заменить подпрограммы MOD2 и PSI, которые
вычисляют |z’|2 в узлах сетки внутри области и
 iθ ϕ ′′(eiθ j ) 
y j = ν + (ν − 1) Re e j , j = 1,..., N ;θ j = 2π ( j − 1) , на границе
 ϕ ′(e j ) 
i θ
N

круга в узлах сетки.


2. Параметры сетки M, N считываются в режиме диалога. Здесь M
-число окружностей сетки в круге, а N число точек на каждой
окружности.
3. Данные для программы должны быть размещены в файле
DATA [1].
4. Номер краевой задачи запрашивается в режиме диалога.
5. Результаты выводятся на экран и записываются в файл NOUT.
6. Результаты счёта собственной функции выводятся на
действительной оси в 11 точках (см. программу).
7. Программа осуществляет счёт конформного отображения
аналитически или считывает результаты вычисления с диска из
файла FILEZ. Описание программы, проводящей эти
вычисления, приведено ниже.
8. Программа использует для решения алгебраической проблемы
собственных значений подпрограммы пакета EISPACK:
ELMHES, ELTRAN, HQR2. Тексты этих подпрограмм доступны
в Интернет по адресу: htpp://www.netlib.org/eispack/.

19
9. Ниже в файлах NOUT1, NOUT2 приведены результаты
тестовых расчётов первой, второй краевых задач (защемление
и свободное опирание) для эпитрохоиды EPS1=1/6, NP=4 на
сетке M=3, N=7 (для первых пяти собственных значений). Эти
результаты программа записывает в файл NOUT.

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
0.93573264080E-02 0.26709839602E-02 0.11177030926E-02 0.25866794919E-02
0.84584130021E-03 0.37176551902E-03 0.58802942301E-03 0.17008326250E-03
0.41904692936E-03 0.10623594597E-03 0.38636000867E-04 0.18624281117E-03
0.95948883093E-04 0.40505508467E-04-0.16818624476E-16 0.16329630222E-16
0.16831033802E-17-0.13153574808E-17-0.62708253358E-18-0.22680275524E-18
0.40120039616E-18
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.16818624476E-16 0.00000000000E+00
0.00000000000E+00 0.00000000000E+00-0.62708253358E-18 0.00000000000E+00
0.00000000000E+00
0.93573264080E-02 0.26709839602E-02 0.25866794919E-02 0.11177030926E-02
0.84584130021E-03 0.58802942301E-03 0.41904692936E-03 0.37176551902E-03
0.18624281117E-03 0.17008326250E-03 0.10623594597E-03 0.95948883093E-04
0.40505508467E-04 0.38636000867E-04 0.16329630222E-16 0.16831033802E-17
0.40120039616E-18 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00
Eigenvalue
0.10686813267E+03 0.37439386193E+03 0.38659602132E+03 0.89469198633E+03
0.11822548742E+04 0.17005951758E+04 0.23863675639E+04 0.26898675344E+04
0.53693347609E+04 0.58794732961E+04 0.94130097949E+04 0.10422216161E+05
0.24688000172E+05 0.25882595961E+05 0.61238373827E+17 0.59414056900E+18
0.24925199715E+19 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00
1 106.868132669786
-0.10000000000E+01 -0.95608736458E+00-0.87511224844E+00-0.76428678261E+00
-0.63254294550E+00 -0.49004631562E+00-0.34770982420E+00-0.21670750791E+00

20
-0.10798826150E+00-0.31789590494E-01 0.28486361375E-02
2 374.393861926966
-0.88547006741E-01-0.37624909489E+00-0.64052537608E+00-0.84924491726E+00
-0.97531623225E+00-0.10000000000E+01-0.91622178277E+00-0.73188474443E+00
-0.47318236862E+00-0.18791117705E+00 0.51216552298E-01
3 386.596021316196
-0.42243259880E-01 0.31202101912E+00 0.62642776710E+00 0.86333657867E+00
0.99344231188E+00 0.10000000000E+01 0.88304976336E+00 0.66364172115E+00
0.38806090325E+00 0.13205216203E+00 0.50450841458E-02
4 894.691986325470
-0.30047119169E+00-0.38363194579E-01 0.10528499688E+00 0.10328893903E+00
-0.47725221776E-01-0.32060522569E+00-0.65095717577E+00-0.93043001446E+00
-0.10000000000E+01-0.64325518294E+00 0.42032011747E+00
5 1182.25487422939
0.76524536167E+00 0.79617118094E+00 0.71835210112E+00 0.51871362161E+00
0.20458104287E+00-0.19031354751E+00-0.59982428885E+00-0.91938456134E+00
-0.10000000000E+01-0.64224150867E+00 0.40976172600E+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
0.49380215914E-01 0.72414087718E-02 0.69292035955E-02 0.23613192542E-02
0.16516499278E-02 0.62869400706E-03 0.13187832064E-02 0.31439140927E-03
0.72759641902E-03 0.17965668548E-03 0.32943485925E-03 0.39946519248E-04
0.17439127059E-03 0.41047276118E-04-0.83633633832E-17 0.83059703116E-17
-0.61234009743E-18 0.62071494127E-18-0.35924722091E-19-0.14029724249E-18
0.15944479133E-18
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.83633633832E-17 0.00000000000E+00
-0.61234009743E-18 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00
0.49380215914E-01 0.72414087718E-02 0.69292035955E-02 0.23613192542E-02
0.16516499278E-02 0.13187832064E-02 0.72759641902E-03 0.62869400706E-03
0.32943485925E-03 0.31439140927E-03 0.17965668548E-03 0.17439127059E-03
0.41047276118E-04 0.39946519248E-04 0.83059703116E-17 0.62071494127E-18
0.15944479133E-18 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00
Eigenvalue
0.20251025264E+02 0.13809467626E+03 0.14431672936E+03 0.42349207894E+03
0.60545517737E+03 0.75827474533E+03 0.13743882925E+04 0.15905989063E+04
0.30355014715E+04 0.31807484891E+04 0.55661719313E+04 0.57342319750E+04
0.24362152488E+05 0.25033470220E+05 0.12039532559E+18 0.16110454792E+19
21
0.62717633586E+19 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00
0.00000000000E+00
1 20.2510252638129
-0.10000000000E+01-0.96883201765E+00-0.91653074678E+00-0.84593679904E+00
-0.75983078263E+00-0.66067127400E+00-0.55033278953E+00-0.42984375722E+00
-0.29912448836E+00-0.15672514924E+00 0.43626717499E-03
2 138.094676259617
0.42946174576E-01-0.22351003278E+00-0.48115724352E+00-0.70801327115E+00
-0.88273855880E+00-0.98569420675E+00-0.10000000000E+01-0.91259243581E+00
-0.71528275124E+00-0.40581495072E+00 0.11076166411E-01
3 144.316729362986
0.20460545815E+00-0.13453390395E+00-0.44902271501E+00-0.71262626091E+00 -
0.90234849494E+00-0.10000000000E+01-0.99376595095E+00-0.87977407687E+00 -
0.66366262335E+00-0.36214831476E+00-0.45943165872E-02
4 423.492078936748
-0.26012743278E+00-0.17300269222E+00-0.17811812000E+00-0.27438405765E+00
-0.44618635851E+00-0.66144340431E+00-0.86966312192E+00-0.10000000000E+01
-0.95931210568E+00-0.63021810127E+00 0.13084573910E+00
5 605.455177370357
0.98951085172E+00 0.10000000000E+01 0.90167634486E+00 0.69676805419E+00
0.40212257126E+00 0.51620817087E-01-0.30140860732E+00-0.58177521858E+00
-0.69001244867E+00-0.49996344262E+00 0.14363314386E+00

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


отображения.
Программа численного конформного отображения написана
Э. П. Казанджаном. Ниже приводится пример обращения к
программе.
PROGRAM KAZAN
C PARAMETER (N=201,N1=202,M=210)
PARAMETER (N=201,N1=202,M=656)
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),YP(M),Y(M),C(M)
COMMON /D/ LL(301),MM(301)
C Этот common блок нужно также вставить в подпрограмму conf
COMMON /S/ S
COMMON // EPS,NP
PUAS=0.25D0
WRITE(*,*) ' NP = ? , EPS = ? '
READ(*,*) NP,EPS
22
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))
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,
1MD,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
DO 6 J=1,NG
6 YP(J)=PUAS+(PUAS-
1.)*REAL(CW(J)*CZ2(J)/CZ1(J))
CALL PSIM(Y,NG,PUAS,EPS,NP,C)
23
ENORM=0.D0
DO 7 I=1,NG
IF (ABS(YP(I)-Y(I)).GT.0.D0) THEN
ENORM=ABS(YP(I)-Y(I))
ENDIF
7 CONTINUE
WRITE (*,*) 'ENORM P',ENORM
PAUSE
WRITE (*,*) 'Запись на диск'
OPEN (4,FILE='FILEZ')
WRITE (4,*) (Z(I),I=1,M)
WRITE (4,*) (YP(I),I=1,NG)
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)
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π] для заданного контура [4].
Результаты присваиваются переменным CT, CT1 и CT2.
III. Заключение. По поводу получения полных версий описанных
программ обращайтесь по электронному адресу: algazinsd@mail.ru или на адрес
Института проблем механики РАН, 117525, Москва, проспект Вернадского
д.101, к.1.

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

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


II. Спектральные задачи для бигармонического
уравнения.

Подписано к печати 27.02.2001. Заказ № 10-2001. Тираж 100 экз.


________________________________________________________

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


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

25

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