|
|
Главная -> Справочник по алгоритмам 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.0082 |