Главная страница  Программы проектирования 

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [ 82 ] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100]

Аналогично для комплексного корня деление на {р-z) (р-z) и вычисление f(z), где z=x+]y, можно совместить в одной схеме. При этом

г = 2х, q----х~у\

Ьп-2 = ап, bn-scin-i + ran,

bk = ak+2-\-rbk+i + qbk+2, k = n-4, п-5.....-2;

f(z) = (b-2-b-ix)+]b-iy. Здесь bo, ..., bn-2 - коэффициенты полинома, полученного в результате деления полинома (10.9) на {p-z){p-z)=p-гр-q.

Рассмотрим особые случаи, которые могут иметь место. Если fi¥=0, fi=0, то вместо формулы (10.10) будем использовать формулу

Если иФО, fi=.f"i=0, то сделаем случайный шаг, т. е. присвоим Л2г+1 случайное значение.

Схема алгоритма определения корней полинома представлена на рис. 10.3.

Подарограмма ROOTP

Назначение: расчет корней полинома. Обращение: CALL ROOTP (А, N, NR, и, V).

Параметры:

А - массив коэффициентов полинома в порядке возрастания степеней р, N -степень полинома, NR - число найденных корней, и -массив действительных частей корней,

V - массив мнимых частей корней.

Используемые подпрограммы HORNER.

Примечания.

1. Число найденных корней может оказаться меньше N, если A(N-f-l)=0, либо если подпрограмма не в состоянии найти все корни.

2. Пол)П1енные корни располагаются в порядке убывания действительных частей.

Начала J


z = 0

Вычислить f(z),f(z),f"(z}

Вычислить Az

с Конец




с IIFVfCP ИСПСМЬЭОВММЯ 1Т0ДПР0ГРММ1 ROOTP

мжмзюм a(2*>,U(2*),v(2e) патам/4/, а/5в*.,4в«.,1»5.,17.Л./ CALL ROOTP(a,m,nr,U,v) PRIWr 19 IF(nr.EO.e) STOP DO 5 1=1,nr 5 PRIWr 15,I,U(I),V(I) STOP

le Fora«kT(ax,KOpt«/,ex,jUESCTB.4ACTb twmt часть)

15 F0Rt«kT(I4,2E16.5)

с 1ЮДт>сгрм«1А ROOT?

SUBROJTINE ROOrn><a,n,nr,U.v)

DIMENSION а(1>,и(1>,у(1),В<51),В1(5в),В2(5в),ВЗ(5в) с В - рабочий нассив ДМФЙ № менее №-1 с В1 ,Вг,вз - рануме массивы ЖМ«М не МЕНЕЕ N

DIMENSION Z(2>,DZ<2),F(2),F1(2),F2(2)

COMPLEX CZ,CDZ,CF,CF1,CF2,C1,C2

EQUIVWJMCE (Z,CZ>, (DZ,CDZ), <F,CF), <F1 ,CF1), (F2,CF2)

DATA IMAX/3»/,EPS/l.E-5/ с иш - 1М<СИНА»НаС число ИТЕРАЦт с EPS - относительная точность

DO 5 K=1,N 5 В(К)=А(К) B(№-1)=A(W»-1)

le cz=(e.,e.)

IF(M.EQ.«) GO TO 75

IF(B(w4-1).E0.».) 60 TO 7»

IF(M.EQ.l) GO TO 6»

IF(B(1).EQ.«.) 60 TO 5»

DO 15 K=l,M 15 Bl(K)=Fl.OAT(K)«B(K+l)

DO 2» K=2.M 2» B2(K-l)»ftOAT(K-l)»Bl(K)

EP-CPS

DO 45 11-1,4

DO 40 I=1,IMAX В(ПИСЛЕ»Е 3t«V4EHm ПОМПНА И ЕГО ЛРОИЗВОЯШХ

СШ. H0R»CR(B.M,Z(1),Z(2),B3,F(1),F(2))

сш. H0R»CR(B1,M-1,Z(1),Z(2),B3;F1(1),F1(2))

CALL H0RMER(B2,M-2,Z(1),Z(2>,B3,F2(1),F2(2))

IF(CABS(CF).EO.e.) GO TO 5в

1Г(САВ5(С1г1).Е0.».) 60 TO 25 РАСЧЕТ ПРИРА*ИИЯ

C1=2.«CF/CF1

C2=1.-C1»(CF2/CF1)

CDZ=-Cl/(l.+CSaRT(C2))

GO TO 35 25 IF(CABS(CF2)-EO.e.) 60 TO 3»

CDZ=CSQRT(-2.)tCF/Cf2)

GO TO 35 3» CII(Z=CZ»SIN(FLOAT(I)) 35 CZ=CZ+CDZ

IF(ABS(Z(2)).LE.ABS(Z(1))«EP) Z(2)=«. усжж ОКОНЧАМП ИТЕРАЦИЙ

IF(CABS(CDZ).LE.CABS<CZ)«EP) 60 TO 5в 4« CONTINUE



45 ЕР=1».»ЕР

СО TD 75 С 1ЕЖНЕ nOJMCHA

5* CALL H0I»CR<B,H,Z<1),Z<2),B3,F(1),F<2))

DO 55 К=1,И 55 В(К)=ВЗ(К)

GO TO 65 6» Z(l)=-B(l)/B(2) 65 NR=NR+1

U(NR)=Z<1)

V(NR)=ABS(Z(2))

M=tt-1

IF(Z(2).E(}.».> QO TO 1»

U(NR)=Z(1) V(NR)=-ABS(Z<2)) 7» M=tt-1

QO TO 1» 75 IF(NR,LE.l) RETURN С УПОРЯДОЧЕНИЕ КОР»СЙ NR1=NR-1 DO 85 1=1 ,№1 11=1+1

DO 8» >I1,NR

IF(U(I).GE.U(J)) QO TO 8*

6=U(I)

U<I)=U(J)

U(J)=G

6=V(I)

W(I)=V<J)

W(J)=G 8» CONTINUE 85 CONTINUE

RETURN

С ПОДПРОГРАЖА ДЕЛЕ>Ш НА НЕПРИВОДИМкМ ПОЛИНОМ С

SUBROUTINE HOR№R(A,N,X,Y,B,FR,FI)

DIMENSION А<1),В(1)

IF(Y.NE.».) QO ТО 15

В<№+1)=«.

5 IF(K.LE.e) GO TO 1»

B(K)=A(K+1)+B(K+1>»X

K=K-1

QO TO 5 1» FR=A(1)+B(1)»X

FI=».

RETURN 15 R=2.»X

(*=-X»X-Y»Y

B(N+1)=».

IF<N.B}.») GO TO 25

B(N)=«.

K=M-1

20 IF(K.LE.») QO TO 25

B(K)=A(K+2)+R»B(K+l)+0»B(K+2>

K=K-1

60 TO 20 25 »e=A(2)+R»B(l)+e»B(2)

IF(N.Ea.e) D»=0.

FR=A(1)+X»B»B(1)

FI=i»»Y

RETURN




[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [ 82 ] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100]

0.018