Android-приложение для поиска дешевых авиабилетов: play.google.com
Главная -> Справочник по алгоритмам

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

являются сферические функции Бесселя Пример (в скобках указаны точные

первого рода значения). у„ (2) =0,4546487134 (0,45464871),

, У8 (10) =0,1255780237 (0,12558), yio(l) =

/» (х)=л/я/(2х)/„+,/2 (х), • =7,11655264-10-" (верны все цифры),

ВТОРОГО роаа №(!) = - 0,5403023059, у2{2) =

второго ро.аа =-0,7339914247, г/,„(5) =-26,6561144. Вре-

Уп {х) =л/2л/(2х) У„+,/2 (х) . м„ сцета от 3 до 12 с.

и третьего рода

Функции Бесселя могут вычисляться также по их аппроксимациям степенными полнио-/г„ (jc) =-\/2л/(2х) Н„+\/2 [х). мами (см. [36]). Однако программы вычнс-

„ лення при этом получаются громоздкими

Эти функции можно найти по программам, „3.3 необходимости применения одновре-вычисляющим функции h(x) и П (х) при gj, нескольких полиномов при изменении v = n+l/2. Вычисления облегчаются тем, что аргумента л; от О до оо. при этом достаточно дасполагать известным значением Г (1 /2) =т/я.

Программа 6.14.

10 PRINTВЫЧИСЛЕНИЕ СФЕРИЧЕСКИХ ФУНКЦИЙ 20 PRINT БЕССЕЛЯ J<HrX) И V<N..X> 30 ШРитВВЕДИТЕ X=XsLETA=1 46 INPUTВВЕДИТЕ Н=Ы

50 FOR Ы=0 ТО W:LETA=A-«:2*N+1)!NEXT Ы

60 LETS=12 LETC=0: LETri=-X*X.£: LETF=1

70 LETC=C+1: LETB=B*C: LETE=2:«C+1

80 LETF=F*Ii-C-<2*W+E):LETU=S

90 LETS=S+F!IF ABS«;S-UK>0 THEN 78

100 LETJ=A*S*X"W!PRINT!F1,9! J<HtX> = .J

lie LETA=l!FOR N=0 TO Ы

120 LETA=A*<2*H-0:NEXT Ы

130 LETS=1:LETC=0:LETF=1

140 LETC=C+1: LETE=2*C-1:LETF=F*Ii.C-<E-2*W> 150 LETU=S:LETS=S+F!IF ABS<U-SK>0 THEN 148 160 LETV=A*S. «;X4 W+1) ): PR I NT V С X >= V 170 GOTO 20!END

10 PRIHTВЫЧИСЛЕНИЕ ФУНКЦИЙ БЕССЕЛЯ

15 PRIHT JU<X>*VU<X>>IU<X>*KU<N>

20 INPLiT0 ДЛЯ JU<X>,VU<X> И 1 ДЛЯ IU<X>fKU<X) ?К

30 INPUTВВЕДИТЕ ПОРЯДОК ФУНКДИИ U=U.

40 INPUTВВЕДИТЕ АРГУМЕНТ ФУНКЦИИ Х=Х

50 LETW=X*X/-4: IF К=0 THEH ЕЕТЫ=-Ы

60 C-iOSUB 200!LETJ=F

70 PRINTЗНАЧЕНИЕ ГАММА-ФУНКЦИИ C-i<U)=G

80 IF К=1 THEN 100

90 PRINTJU<X>=J!C-.OTO 110

100 PRINTIU<X)=J

110 LETU=-U:GOSUB 200

120 PRINTЗНАЧЕНИЕ ГАММА-ФУНКЦИИ Г<-Х)=0

130 LETA=-U*#Pl!lF К=1 THEN 170

140 PRINTJ-U<X>=F

150 LETV=J*C;OS< A ) / S IN < A ) -F-S IN < A >

160 PRINTVU<X>=V!GOTO 40

170 PRINTI-U<X)=F

180 LETK=#Pl!ti«:F-J)>2-SIN<A)

190 PRINTKU<X>=K!GOT0 40

200 LETB=ABS<U)!LETIi=l

210 IF B<1 THEN 230

220 LETIi=D«B!LETB=B-l:GOTO 210

230 LETF=<<.035868343*B-.193527818)жВ+.4821Э93Э4)жВ

240 LETF= < < < F-. 756704078) ЖВ+. 918206857> *B-. 897Г56937 ) *B

250 LETF=<<.f+.988205891 )*B-.577191652)*B+.l

260 LETG=F*Ii-U: IF U>=0 THEN 280

270 LETG=#PI-SIN<#Pl5<iU)/D-F

280 LETF=1/1:-iU!LETR=F:LETI=0

290 LETI=I+1! LETR=R5<iW>I><U+I) s LETU=F

Згй LETF=F+R:IF ABS<F-U)<>0 THEN 290

310 LETF=F*<X/2>"U!RETURN:ENIi



§ 6.6. функции Эйри

Решению дифференциального уравнения

- хш = 0

удовлетворяет пара независимых решений Al [х) и В, (х), являющихся функциями Эйри.

Функции Эйри могут вычисляться разложением в степенные ряды

A, W=C,f {X)-C2g {х),

B, {х)=ф [с/ (x)+C2g (л-)1.

Для вычисления С {х) можно применить программу 4.42, вписав в нее подпрограмму вычисления подынтегральной функции cos {nt/2) при t = X: Задав Л=0, В=х= = 2 и M = 8, получим С (2) =0,4882522862 при точном, значении 0,4882534.

Для вычисления S (х) также можно использовать программу 4.42. Задав Л=0, B=x=2 и М=8, получим S (2) =0,3434145829 при точном значении 0,3434157.

При х<сЗ для вычисления С {х) и S {х) могут использоваться следующие разложения в ряд:

С

(-1)"(я/2)" (2п)!(4и+1)

М=х+-хЧ

2-5 7!

2-5-8 :0!

х»+ ...

S (X)

= V (-1)"(я/2)"+ (2n-f l)!(4n-f3)

где с, =0,355028054. С2 = 0,258819404. Поскольку для а:<:0 члены ря.аов оказываются знакочередующимися, при х<-7 схо.аи-мость их резко ухудшается. Программа 6.15.

« = 0

При х> 3 эти ряды плохо- схо.аятся и для вычисления С (х) ,и S (х) целесообразно

18 РР1ЫТВЫЧИСЛЕНИЕ ФУНКЦИЙ ЭЙРИ НИ>0 И ВИЮ

ЗЭ INPUT ВВЕДИТЕ ПОГРЕШНОСТЬ Е=Е

38 INPUTВВЕДИТЕ X=XsLETl=e

48 LETf-=ULETK=l ;LETL=X"3! LETJ=1: LETR=1

58 LET I = U3s LETK=K*L* J: LETtfcF s LETR=R»i I ж < I -1 > ж < I -2 >

68 LETF=F-K/R!LETJ=j-3: IF hBS<:f-M>>E THEN 58

78 LET I = 1!LET&=1:LETK=1s LETR=1

88 LETI=I+3;LETK=K«a-2:>«L:LETH=6sLETP=R*I»s( I-l

98 LETb=&-K..R: IF ftRS;G-H>>E THEH 88

108 LETb=G*K: LETC=. 355028854: LETXi=. 258815484

11Й LETA=C*F-D*&! LETR= ( C*F-Hi3«6>3«SQR(3>

120 PR1HT«I<X)=A«PR1NTBI<X)=B:&0T0 30!END

Пример. При погрешности E = l-10 получим Л, (1) =0,1352924154. В,(1) = = 1,207423594 (cf»3 с). Л, ( - 5) = = 0,350761039! и В, (- 5) = - 0,1383692054 (/,я.18 с).

§6.7. Интегралы Френеля

Интегралами Френеля называются интегральные функции

с (X) =J cos (- Г) di. S (X) =J sin (I tyt.

использовать асимптотические приближения sin (nxV2) /. 3

С (x) =y+-

S(x) = -

cos (лхУ2) nx

cos (лх72)

cos (лхУ2) / 5 \

Они могут вычисляться численным интегрированием.

непосреаственно

(лх) =

Погрешность вычислений не превышает 5/(nV), что при х4 дает не менее 5 верных знаков после запятой. Программа 6.16.

65 PKI ИТВЫЧИСЛЕНИЕ ИНТЕГРАЛОВ ФРЕНЕЛЯ С<Х> И SCXV 10 INPUT ВВЕДИТЕ X=XsLETA=#PI*X-2 20 IF X>3 THEN 150

30 LETS=e LETC=0 ! LETH=e! LETZ=- 1 s LETR= 1

40 GOTO 80

50 IF N>1 THEN 70

60 LETR=2: GOTO 80

70 LETR=R»s23«H»s<:23«N-l>



Se LET2=-Z! LETS-=4:*.N

90. LETB=Z* < < #P I ) - < гт ) ):« < V ) .R

100 LETD=B><4*N+0! LETC=C+b

lie LETE=B><4ii«N+3V<2*N+l)! LFTS=S+E

120 LETH=H+l:IF ftBS(:iO>lE-10 THEH 50

130 LETC=C!tiXs LETS=S*»PI*<X-3>,2

140 PRINTСлХ>=С!PRIHT•S<X)=S! GOTO 10

150 LETE= <SIЫСЙ-г))УШРUKi LETF = <COS<ftS>>-*PI-K

160 L£TK=l-3-<A-2)! LETL=l~5-<:ft-2>

170 LETC=.5+E*K-F:*.L-A

180 LETS=,5-F*K-E*L-A:60T0 1405ENIi

П p и M e p. С (0,2) =0,1999210576, S (0,2) = = 0,004187609162 (<c«6c), С (2) =

= 0,4882534059. S (2) =0,3434156788 (время счета ft!20 с), С (4) =0,4984199894, S (4) = = 0,4205170154 (время счета менее 2 с).

§6.8. Эллиптические интегралы

Полные эллиптические интегралы первого К (т) и второго £ (т) рода- определяются как

К(т)= ( (1-0

=Т(.-

Е{т)

т sln= 0)dO

и могут вычисляться непосредственно с помощью численного интегрирования.

Для вычисления К {т) можно использовать программу 4.42. Задав т=1/2, Л = 0, В = я/2 и M=4, получим /С (1/2) = 1,854074665 прн точном значении 1,8540746733 и c»15 с.

Вычисление £ (т) также выполняется численным интегрированием. Задав т=!/2, Л=0, В = л/2 и М=4, получим £(1/2) = = 1,350643882 при точном значении 1,350643881.

Эллиптические интегралы К {т) и £ (т) могут вычисляться также по их разложениям в ряд:

2 / I .5 ч2

£(т)=-

\2.4.б)

П р и м ер. К (О,!) =1,612441349 (ie»6 с), К (0,5) = 1,854074676 («о«20 с), £ (0.2) = = 1,489035058 (,»9 с).

С погрешностью менее 2-10~ полные эллиптические интегралы К (т) вычисляются с помощью полиномиальной аппроксимации [36]:

К (m) = ({{{atm,+a3) т+аи) m,-f oi) mi-f + ао) + ({({btmt+Ьз) m,-f 62) m,+bi) т,+

+ bo) In (1/m,).

где a, = 0,44325141463, 02 = 0,0626060122, оз = = 0,09666344259; 02 = 0,03590092383; аз = = 0,03742563713; 04=0,01451196212; 6o= =0,5; 6, =0,12498593597; 62 = 0.06880248576; 63=0,03328355346; 6<= 0,00441787012. Аналогично

£ (m) = ((((o4mi-f Оз) m,-f 02) m,+ f o.) mi-f l)-f (((6,m,-f 63) m,-f 62) mi + f 61) mi In (1/mi),

где о, =0,44325141463, 02 = 0,0626060122, аз = = 0,04757383546, о, = 0,01736506451, 6, = = 0,24998368310, 62=0,09200180037, 63 = =0,04060697526 и 64 = 0,00526449639. Программа 6.1 S.

Пример (в скобках даны точные значения). К (0,1) = 1,6124441352 (1,612441349), £ (0,1) = 1,530757641 (1,530757637), Я (0,9) = = 2,578092105 (2,578092ИЗ), £ (0.9) = = 1.104774722 (1.104774733).

Неполные эллиптические интегралы

Программа 6.17.

• /(Ф1т)= (l-msine)-/=de. о р

£(фт)=5 (l-msine)dO О

также могут вычисляться по программам численного интегрирования. В этом случае полагают В = ф.

01 PRINTВЫЧИСЛЕНИЕ ПОЛНЫХ ЭЛЛИПТИЧЕСКИХ ИНТЕГРАЛОВ К<М> Н ЕСГ-П

135 INPUTИНТЕГРАЛ ЭЛЛИПТ. КАКОГО РОДА 1 ИЛИ 2 ?С

10 ШРиТВВЕДИТЕ М=11! LETI=0

20 LETA=l: LETB=l! LETS=l! LETR=1

30 LETI=I+l: LETA=A*<2*I-1>:LETB=B:*-I*2

35 IF C=l THEN 45

40 LFTC=-1(:2*I-1>

45 LFTR=M*R! LETD=C*R*<A-B) -2

50 LETS=S+ri: IF ABSCB) >1Е-Э THEN 30

60 LETK=#PI*S2!IF C=l THEN 80

70 PRINTE<I1)=K: GOTO 10

80 PRINTK<M)=K: GOTO 10: END



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



0.0092
Яндекс.Метрика