|
Главная -> Справочник по алгоритмам 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 Программа 4.39. • 10 PRINTЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ МЕТОДОМ УЭДДЛЯ 20 ХНРиТВВЕДИТЕ НИЖНИЙ ПРЕДЕЛ ИНТЕГРИРОВАНИЯ A=Q 30 INPUTBBEAHTE ВЕРХНИЙ ПРЕДЕЛ ИНТЕГРИРОВАНИЯ В=В 40 INPUTBBEAHTE ЧИСЛО ИНТЕРВАЛОВ ИНТЕГРИРОВАНИЯ М=М 58 LETA=0.;LETH=<B-A)>-M!L.ETX=A!&0SUB 170 55 LETI=F!LETL=H.6 60 FOR Е=1 ТО М 78 LETX=X+L!&OSUB 170:LEtl=I+5!*F 80 LETX=X+L:&0SUB 170!LETI=I+F 40 LETX=X+L:&0SUB 170:ЬЕТ1=1+6жР 100 LETX=X+L:60SUB 170!LETI=I+F 110 LETX=X+L:GOSUB 170:LETI=I+5*F 120 LETX=X+L:GOSUB 170:LETI=I+2*F 138 LETA=X: NEXT E 140 LETI=a-F)«3*L/10 158 PRINTДЛЯ A=QB=BM M=M • 168 PRINTЗНАЧЕНИЕ ИНТЕГРАЛА I=l!GOTO 40 178 LETF=SQRa+2i«X)!RETURN!ENri Программа 4.40. 18 PRINTЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ МЕТОДОМ HbHlTOHA-KOTECA 28 INPUTВВЕДИТЕ НИИНИй ПРЕДЕЛ ИНТЕГРИРОВАНИЯ А=А 25 INPUTBBEAHTE ВЕРХНИЙ ПРЕДЕЛ ИНТЕГРИРОВАНИЯ Б=В 38 INPUTBBEAHTE ЧИСЛО ИНТЕРВАЛОВ ИНТЕГРИРОВАНИЯ М=М . 35 LETH=<B-A>/M:LETE=H/6 40 LETX=A!GOSUB 130:LETI=41*F 50 FOR N=1 TO M:LETX=X+E 60 GOSUB 130:LETl=I+216!t;F:LETX=X+E 78 GOSUB 138!LETI=I+27!t;F:LETX=X+E 80 GOSLE 138!LETI=I+272*F:LETX=X+E 90 GOSLB 130:LETI=I+27*F:LETX=X+E 100 GOSUB 130sLETI-I+216*F:LETX=X+E 118 GOSUB 130:LETI=I+82»F:NEXT N 128 LETI=<I-4l!t;F>*E>-140 125 PR INTЗНАЧЕНИЕ ИНТЕГРАЛА 1=I:GOTO 38 130 LETF=SQR<2*X+l>!RETURN:ENri Программа 4.41. 18 PRINT ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ МЕТОДОМ ЧЕБЫШЕВА 20 I FUTВВЕДИТЕ НИЖНИЙ ПРЕДЕЛ ИНТЕГРИРОВАНИЯ А=е 38 INPUTBBEAHTE ВЕРХНИЙ ПРЕДЕЛ ИНТЕГРИРОВАНИЯ В=В 40 INPUTBBEAHTE ЧИСЛО ИНТЕРВАЛОВ ИНТЕГРИРОВАНИЯ М=М 50 LETA=Q!LETT«SQR<2)/2:LETI=0!LETH=<B-A)/M 60 FOR Е=1 ТО M:LETW=A+H:LETC=<W+A)/2 70 LETD=<Ы-AV2:LETX=C-DЖT!GOSUB 120 80 LETI=I+F!LETX=C:C<ISUB 120 90 LETI=I+F!LETX=X+Ii*T!&OSUB 120 100 LETI=I+F!LETA=Ы:NEXT E 110 LETI=I*H/3:PRINTЗНАЧЕНИЕ ИНТЕГРАЛА I=I:&OTO 40 120 LETF=SeR<2*X+l):RETURN:END Программа 4.42. 05 PRINTЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ МЕТОДОМ ГАУССА 18 INPUTBBEAHTE НИМНИй ПРЕДЕЛ ИНТЕГРИРОВАНИЯ А=е 12 INPUTBBEAHTE ВЕРХНИЙ ПРЕДЕЛ ИНТЕГРИРОВАНИЯ В=В 15 INPUTBBEAHTE ЧИСЛО ИНТЕРВАЛОВ ИНТЕГРИРОВАНИЯ M=M!LETA=0 20 LETT=SQR< 8.6 >:LETI=0!LETH=< В-А)/М 38 FOR Е=1 ТО М! LETB1=A+H 40 LETC=<Bl+A)/2: LETIi=>;B1-A)/2 58 LETX=C-I)*T! GOSUB 130 60 LETV=Ii*5*F/9: LETI=I+V 70 LETX=C: GOSUB 130 80 LETV=D*8»F/9: LETI=I+V 90 LETX=C+D«T! GOSUB 130 180 LETV=D*5*F/9! LETI=I+V lie LETA=B1! NEXT E 115 PRINTДЛЯ A=QB=BH M=M:PRINT" 120 PRINT ЗНАЧЕНИЕ ИНТЕГРАЛА I=I: GOTO 15 130 LET F=SQR<2*X+l>!RETURN:ENIi 10 PRINTЧИСЛЕННОЕ ЙНТЕГРИРОВЙНИЕ С ЗйДйННОй ТОЧНОСТЬЮ 15 PRINT МЕТОДОМ ГЙУССА 20 INPUTВВЕДИТЕ НИЖНИЙ ПРЕДЕЛ ИНТЕГРИРОВАНИЯ ftО 22 INPUTВВЕДИТЕ ВЕРХНИЙ ПРЕДЕЛ ИНТЕГРИРОВАНИЯ ВВ 25 INPUTВВЕДИТЕ ПОГРЕШНОСТЬ РЕЗУЛЬТАТА E=N 30 LETN=N)ii60:LETM=l:LETK=0 40 ЬЕТМ=2»М:кЕТА=0 45 LETT=SQR <. 6 ) ! LET 1=0: LETH=< B-A ) /"M 50 FOR J=l TO M!LETU=A+H:LETC=*;U+A)/2 55 LETD=<W-A)/2:LETE=Ii*5/9 60 LETL=D«8/9:LETIi=D*T 70 LETX=C-Ii:60SUB 150:ЬЕТ1=1+ЕжР 80 LETX=C:60SUB 150!LETI=I+L*F 90 LETX=C+ri!60SUB 150: LETI=I+E*F 100 LETA=U:NEXT J 110 LETL=K:LETK=I 120 IF ABS<I-L)>N THEN 40 130 PRINTЗНАЧЕНИЕ ИНТЕГРАЛА 1=I:STOP 150 LETF=S6R<2i«X+l): RETURN: END 10-" Для погрешнос 1» f = l-10-" вычисление интеграла (4.26) дает /=1,398717485 при /c«s8 с. Подпрограмма вычисления /(х) записывается со строки 150. §4.9. Вычисление определенных интегралов специального вида Несобственными интегралами называются интегралы, у которых / (х) оо на отрезке [о, Ь] либо / (о) оо или / (fc) оо. Вычисление несобственных интегралов с f (х) оо на. концах отрезка [а, Ь] в принципе осуществляется методами Гаусса и Чебышева, так как у них в ходе вычислений узлы интерполяции / (х) не совпадают с пределами интегрирования. Наличие особенности может повлиять на точность интегрирования. Методы Ньютона - Котеса (в частности, метод Симпсона) удобно применять, если f (хс) ->- оо при хг), принадлежащем интервалу (а,Ь). Равномерное расположение узлов интерполяции у этих методов облегчает контроль за их положением и исключение в ходе вычислений значений х; = хс. Если f (х) имеет на концах предела интегрируемости устранимую особенность, например неопределенность О/О или оо/оо, можно использовать эти методы с отдельным вводом значений /(о) и /(Ь). Программа 4.44. Пример. При е=ЫО- получим для интеграла (4.26) значение /=1,3987 при ия;4 с. Сходящиеся несобственные интегралы с бесконечными пределами интегрирования вычисляются различными приемами [4]. Так, интеграл вида /= \ f (X) rfx=S / (X) dx+ \ I (х) dx (4.30) а а Ь , может вычисляться как обыкновенный при выборе вспомогательного промежуточного предела интегрирования из условия 1=\ f (х) rfx<e, 6 где е - заданная погрешность интегрирования. Другой прием заключается в автоматическом изменении Ь, например как bo, 26с, 4fcc, 8/bc и т. д., где 6с - начальное значение b с контролем на каждой /-Й стадии условия !/,-/, , <е = £. При выполнении этого условия счет прекращается. Последний способ реализован в программе 4.45, где вычисляются несобственные интегралы вида (4.30) методом Гаусса. Программа 4.45. Пример. Для функции / (х) =хе~, а = = 0 при £=1-10 и 6с=10 получим /=1,000457964 при fx2Q с. Отметим, что при малых £ время счета может резко возрастать, а из-за погрешностей вычисления /; и /,-1 программа может зациклиться. В строке 150 записана подпрограмма, вычисляющая f (х). Двойные (кратные) интегралы вида 6 d l=\\f(x, y)dxdy могут вычисляться по кубатурной формуле Симпсона. При этом область интегрирования в плоскости X, у разбивается на четыре квадрата (рис. 4.11, о), а значение / вычисляется по формуле- [7] ~-Q-iU (0. №) +/ (Х2, I/O) +f (Хс, У2) + + М2,1/2)]+4 и (Х,,1/с)+/(Х0,1/,) + + / (Х2,1/,)+/ (X,, 1/2)] +16/ (Х,, У,)}, Программа 4.46. Пример. Для интеграла (подпрограмма записана со строки 140) 4 4 2 6 / = \ \ iL = In 3• In 1,1 = 0,02500598522, 3 i xy " 2 (4.31) введя о = 4, 6 = 4,4, с = 2 и rf = 2,6, получим / = 0,02500698577. Для повышения точности область интегрирования можно разбить на Программа 4.45. 05 PRINTBfclHHCfl. HECOECTB. ИНТЕГРАЛА МЕТОДОМ ГАУССА 10 INPUTBBEAHTE НИМНИй ПРЕДЕЛ ИНТЕГРИРОВАНИЯ A=Gi 15 INPUTBBEAHTE НАЧАЛЬНЫЙ ВЕРХНИЙ ПРЕДЕЛ ИНТЕГР. B8=Z 20 INPUTЗАДАЙТЕ ПОГРЕШНОСТЬ РЕЗУЛЬТАТА E=N 25 LETM=l!LETK=0!LETB=Z/2!LETT=seR(.6)!LETU=0 30 LETB=B*2 35 LETM=M*2!LETA=G!LETI=0!LETH=*;B-A)/M 48 FOR j=l TO M!LETC=A+H/2!LETIi=H/2 50 LETE=Ii*5/9!LETL=Ii*8/9!LETD=Ii!t;T 68 LETX=C-I)!60SUB 150!LETI=I+E*F 78 LETX=C!60SUB 150!LETI=I+L*F 80 LETX=C+Ii!60SUB 158!LETI=I+E*F 90 LETA=A+H!HEXT j 100 LETL=K!LETK=I 110 IF ABS<I-L)>N*38 THEN 35 120 LET1J=U:LETU=I 138 IF ABS<I-U)>N/2 THEN 38 140 PRINTЗНАЧЕНИЕ ИНТЕГРАЛА 1=I:STOP 150 LETF=X*EXP<-X)!RETURN!END Программа 4.46: 10 PRINTВЫЧИСЛЕНИЕ ДВОЙНОГО ИНТЕГРАЛА ПО ПРОСТОЙ 15 PRINT ФОРМУЛЕ СИМПСОНАsLETS=e 20 INPUTВВЕДИТЕ ПРЕДЕЛЫ А/В/С/И А/В/С/П 30 LETH=<B-A)/2! LETK=<Ii-C)/2 40 LETX=A! LETV=C! 60SUB 140: LETS=S+F 50 LETX=B: GOSUB 140: LETS=S+F 68 LETX=ft!LETV=D! GOSUB 140: LETS=S+F 70 LETX=Ei! GOSUB 140: LETS=S+F 80 LETX=A+H! LETV=C! GOSUEi 140: LETS=S+4!t;F 90 LETV=Ii: GOSUB 148: LETS=S+4!tf 188 LETX=A: LETV=C+K! GOSUB 140: LETS=S+4!t;F 110 LETX=B! GOSUB 148! LETS=S+4!t;F 120 LETX=A+H! GOSUB 148: LEtS=S+16!t;F 138 PR INTЗНАЧЕНИЕ ИНТЕГРАЛА 1=ЗжНжК>9!80Т0 28 140 LETF=1/X>-V: RETURN: END 10 PRINTЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ МЕТОДОМ СИМПСОНА С ЗАДАЖОЙ 15 PRINTTOHHOCTbW Е И Р(>0 С ОСОБЕННОСТЯМИ ПРИ Х=А И Х=В 20 PRINT"!INPUTBBEAHTE НИМНИй ПРЕДЕЛ ИНТЕГРИРОВАНИЯ А=А 25 INPUTBBEAHTE ВЕРХНИЙ ПРЕДЕЛ ИНТЕГРИРОВАНИЯ В=В 30 INPUTBBEAHTE ПОГРЕШНОСТЬ РЕЗУЛЬТАТА E=E!LETM=1 40 PRINTBBEAHTE 0 ЕСЛИ НЕТ ОСОБЕННОСТИ ПРИ Х=А 45 INPUTИ 1 ЕСЛИ ЕСТЬ ОСОБЕННОСТЬ ПРИ Х=А S 50 IF S=0 THEN 65 60 INPUTBBEAHTE ЗНАЧЕНИЕ F<A)=C!60TO 70 65 LETX=A!60SUB 218!LETC=F 70 PRINTBBEAHTE 0 ЕСЛИ НЕТ ОСОБЕННОСТИ ПРИ Х=В 75 INPUTИ 1 ЕСЛИ ЕСТЬ ОСОБЕННОСТЬ ПРИ Х=В S 80 IF S=0 THEN 188 90 INPUTВВЕДИТЕ ЗНАЧЕНИЕ F<B)=D!60T0 118 188 LETX=B!60SUB 210!LETIi=F!LETJ=8 110 LETM=M*2!LETH=<B-A)/M/-2 128 LETN=8:LETI=0!LETX=A 130 LETX=X+H!60SUB 210 140 LETI=I+4*F!LETN=N+2 150 IF Н=2жм THEN ISO 160 LETX=X+H!60SUB 210 170 LETI=I+2*F!G0T0 138 188 LET I=a +C+ii) ЖН/З! LETK=j: LET J= I 190 IF ABS<I-k)>E*15 THEN 118 200 PRINT" !PRINT3HA4EHHE ИЦТЕГРАЛА I=l!STOP 205 REMПОДПРОГРАММА ВЬНИСЛЕНИЯ F<X) 210 LETF=SIN<X>/X!RETURN!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.0086 |
|