|
Главная -> Справочник по алгоритмам 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р* + Ър + +р + Ьр+\ неустойчив, а многочлен А (р) - = 12р +1 гр" +16р +1 Ор + 5р +1 устойчив. Вычисление значений дробно-рациональной функции комплексного переменного B{Z) a„Z"+a„-iZ"- + --+giZ + go производится вычислением комплексных значений многочленов Л (Z) и В (Z) с последующим делением их по формуле (3.1). Программа 3.33. дробно-рациоиальной функции при заданном Z. Так, для приведенного примера МОДУЛЬ = 0,04454466144, ФАЗА = = -65,45048284°. Возможно также вычисление операторной функции F (р), где p=J4> (вводится ReZ = 0 и ImZ = co) а также вычисление функции f (Z) = 1 /В (Z) (вводится. т=1, ai=0 и ао=1). Для вычисления дробно-рациональной функции вводится ReZ = x и Im Z = 0. Деление степенного многочлена А{х) па двухчлен B(jc) = ( + 6ix + fco) выполняется для понижения степени исходного многочлена А (х). Если А (х) - многочлен четной степени, то из него можно выделить квад- 18 PRINTВЫЧИСЛЕНИЕ ДРОБНОРЙЦИОНйЛЬНОй ФУНКЦИИ 28 PRINTF<:Z>=A<:Z>B<Z> КОМПЛЕКСНОГО ПЕРЕМЕННОГО 30 IhPUTВВЕДИТЕ СТЕПЕНИ МНОГОЧЛЕНОВ A<Z> И B<Z> MrN 40 DIM A<:M>,B<N>!F0R I=M to 8 STEP -1 50 PRINT!2.8[ВВЕДИТЕ ftI!INPUT ft<I>!NEXT I 60 FOR I=N TO 0 STEP -l:PRINTВВЕДИТЕ ВI 78 I№UT B<I>!NEXT I 80 1НРиТВВЕДИТЕ RE Zf IM ZXA:LETR=ft<M>:LETJ=0 90 FOR 1=1 TO M:LETE=X*R-V*J+ft<M-I> 180 LETF=V*R+X*J: LETR=E s LETJ=F! NEXT I 110 LETQ=RsLETU=J:LETR=B<:N>sLETJ=0 120. FOR 1=1 TO N!LETE=X*R-Vi«J+B<N-I> 138 LETF=V*R+Xi«j!LETR=E! LETJ=F:NEXT I 148 LETC=R*R+F!«F:lETD=Q«R+U*F 150 LETE=U*R-G!*F: LETP=D/C s LET I =EC 168 PRINT!F1.9!RE F<:Z>=PspRINT IM F<:Z>=I " 170 LETM1f=SQR<:P«P+I*I>s LETG!=fttN<IPJ 175 PRINTМОДУЛЬ M=M 180 PRINT?A3ft В РАДИАНАХ G!=G 190 PRINTФАЗА В ГРАДУСАХ 0=G!*ie0#PI 280 GOTO 80!END Контрольный пример. Для функ- F17 =r- 3Z + 2Z + Z-f 0.5 5Z + 4Z* + 3Z + 2Z + Z + 0,2 где m = 3 и n = 5, при Z = 3+/-2 получим f (3+/ 2) = 0,01850739412 - / • 0,040551793708. Программа 3.33 обеспечивает также вычисление модуля МОДУЛЬ f(Z) = и фазы ФАЗА F (Z) ратичный множитель В(х). и использовать операцию деления для исключения двух корней, полученных из рещения уравнения В(х)=0. В общем случае деление А(х) на В(х) дает многочлен D{x) и остаток R{x)=r,x-ro. Программа 3.34. Пример. Для выражения А(х) U + 7x+15x+15x + 4x=-3x+125 В{х) получ нм D (х) = Ix" + 9х + 31 + 59х + 60 при остатке R(x) = - 1х + 5. =VlRef(2)] = +IImf(Z)] = arctg [Im F (Z)/Ref (Z)] Программа 3.34. 05 PRINTДЕЛЕНИЕ МНОГОЧЛЕНА Й<Х) СТЕПЕНИ n 10 PRINTHA ДВУХЧЛЕН A<X)=X2+B1*X + ВО 20 INPUTВВЕДИТЕ NBbBO N,C>B!DIM А<:Н> 30 FOR I=N TO 8 STEP -1 40 PRINT!2.0!ВВЕДИТЕ КОЭФФИЦИЕНТ AI = 45 INPUT A<I>!NEXT I 50 LETV=A<:n> : LETN=N-1 s LETX=A<;N) : LETN=N-1 60 FOR I=N TO 0 STEP -1 80 GOSUB 100:NEXT I 90 GOTO 120 100 LETD=X-V*C!LETE=A<I>:LETA<I>=V 118 LETX=E-V*B!LETV=D: RETURN 120 PRINT!F1.9!ОСТАТОК R<X>=V*X + <X> 130 PRINTКОЭФФИЦИЕНТЫ МНОГОЧЛЕНА-ЧАСТНОГО 140 FOR I=N TO 0 STEP -1 158 PRINT!2.0!AI=!F1.9!A<I) 160 NEXT I:END x-2x + 2 Программа 3.36. 10 PRINTVMHOWEHHE МНОГОЧЛЕНА A<X) СТЕПЕНИ M 20 PRINT HA МНОГОЧЛЕН B<X> СТЕПЕНИ N 30 ШРиТВВЕДИТЕ MjN MrNsDIM A<M+M+1) 40 FOR I=M TO 0 STEP -1 50 PRINT!2.e!AI=:lNPLlT A«:i):NEXT I 60 FOR I=N+M TO M STEP -1 70 PRINT!2.0!BI-M=!INPUT Ы 80 FOR J=M TO 1 STEP -1 90 LETA<J+M+l)=ft<J>*bl+A<J+M)!NEXT J 108 LETA<M+l)=A<:@>*bl lie PRINT!2.0!CI=!F1.9!A<M+M+1>!NEXT I 120 FOR I=M-1 TO @ STEP -1 130 PRINT!2.@!CI=!F1.9!A<I+M+1) 140 NEXT I:PRINTКОНЕЦ ВЫЧИСЛЕНИЙ:END Вычисление значения полинома Р(х) = = a„x"+a„ ix"~ + ...4-aix4-ao в точке х = с и деление Р(х) на (х -с) выполняется по следующему алгоритму. 1. Вводим коэффициенты а„, a„ -i, .. ..., Oi, Оо полинома Р (х). 2. Задаем aiUn {i = n). 3. Преобразуем а, по рекуррентной формуле а, = а, + а, С с помощью цикла с управляющей переменной i, меняющейся от значения п - 1 до О с шагом - 1. 4. На каждом цикле п. 3, кроме i = 0, выводим значения B, = a, i полинома В (х) = =Л (x)/(x-c) = fc„ ,.v"-+b«-2x"-4 ... ...+b,x + bo, имеющего порядок (и -1). 5. По окончании цикла по п. 3, 4 выводим Я(х)==ао. Если с-корень Р{х), то деление Р(х) на (х - с) может применяться для понижения степени многочлена и поиска его очередного корня. Программа 3.35. Пример. Для многочлена Р(х) =3x4---2x -5x + 7 при п = 3 и с = 3 получим В (х)=Зл:+11+28 и Р (с)=91. Умножение многочлена Л(х)=а„х" + + а„ ,х"- + + а\Х+ао степени т на многочлен В (х) =fc„x" + fc„ ix" + ...-f -ffco дает многочлен С(л) =с,„+„х"+" + + c„+„ ,x"+"- + --+Cix-f Со степени (m-fn). Эта операция выполняется по следующему алгоритму. 1. Вводим коэффициенты а„„ a„, i, ... 01, Оо. 2. Организуем внешний «цикл вычислений Ci, задав начальное значение управляющей переменной цикла i=(n + m) и конечное значение m с шагом - 1. В начале каждого цикла вводим и переходим к п. 3. 3. Организуем внутренний цикл с управляющей переменной /, меняющейся от / = т до 1 с шагом 1. В этом цикле преобразуем коэффициенты многочлена Л(х) по формуле aj + m+i-ajbi-m-\-aj+m- 4. При выходе из внутреннего цикла вычисляем а„+1=аоЬ.--ш, выводим на печать с,=а2„+ и переходим к п. 2 (т. е. завершаем внешний цикл). 5. С помощью цикла с управляющей переменной i, меняющейся от i = m -1 до О с шагом -1, выводим на печать последние т значений c, = a,+m+i. Программа 3.S6. Пример. Для А{х)=Ах + Ъх + 2х+ + 1х + 0,5 и В(х)=2л:+1л:+0.4 получим многочлен С (х) =8x+1 Ох + 8,6л: -f 5,2л: + -f 2.8x-f 0,9x+0,2. § 3.4. Вычисление ортогональных многочленов Ортогональные многочлены Чебышева Тп (х) = (О (х) являются решениями дифференциального уравнения второго порядка -4-«2(O = 0. (3.2) Они могут вычисляться с помощью явного выражения ТАх) = cos [п а rccos х) (3.3) или по рекуррентным формулам Ti+\(x) = = 2л:Г;(х) -r, ,(x) при ro(Jc)=l и Т,{х)=х. Дифференциальному уравнению (3.2) соответствуют и решения в виде функций 05 PRINTВЫЧИСЛЕНИЕ P<C> И ДЕЛЕНИЕ PCX) НА <X-C) 10 ШРиТВВЕДИТЕ ЗНАЧЕНИЯ Nj.C N,C!D1M АШ> £8 FOR I=N TO 0 STEP -1 Зв PRINT!2.e•ftI=!lHPLlT ft<I):NEXT I 48 PR1NT!2.8!BN-1=!F1.9!A<N) 50 FOR I=N-1 TO e STEP -1 60 LETft<l>=A<I>+A<I+l>i«C 78 IF IO0 THEN PR1NT!2.0!BI-1=!F1.9!A<I) 80 NEXT l:pRINT!F1.9!P<X)=f.<0>:ENri Программа 3.38. 10 PRINTВЫЧИСЛЕНИЕ МНОГОЧЛЕНА ЛЕАНДРА 20 INPUTВВЕДИТЕ N>=2 N=N 25 INPUTВВЕДИТЕ X=X:LETA=l!LETB=X 30 FOR 1=1 TO N-1 48 LETP= < < 2ЖI+1 > ЖХЖВ- Г*A > < I +1 > 50 LETA=B: LETB=P: NEXT I 60 PRINTPN«lX>=P: GOTO 25:ENB Программа 3.39. 10 PRINT ВЫЧИСЛЕНИЕ МНОГОЧЛЕНА ЛАГЕРРА 20 INPUT ВВЕДИТЕ N>=2 N=N 30 INPUT ВВЕДИТЕ X=X : LET A=l LET B=l-X 48 FOR 1=1 TO N-1 50 LET L=<:<2*I+l-X>*B-r*A><I+l> 60 LET A=B ! LET B=L : NEXT I 78 PRINT LN«lX)=L s GOTO 30 : ENB Бесселя второго рода UJx): l/o(x) = arcsin X, t/„(x) = sin(n arccosx)=-5- (3.4) T„(x). Они также могут вычисляться с помощью рекуррентных формул (У,+,=2х1/,{х)-1/, ,(х), i=L 2, при Udx)=\ и Uy(x) = 2x. Поскольку в большинстве версий языка бейсик предусмотрено вычисление обратных тригонометрических функций, вычисление 7"„(х) и Un(x) целесообразно выполнять по явным формулам (3.3) и (3.4). Программа 3.37. Контрольные примеры. 7")(0,1) = = -0,26; t/3(0,I)=-0,392. Ортогональные многочлены Лежандра Рп(х) являются решениями дифференциального уравнения (\-х)-2х-+п («-f 1) « = 0 вычисляться по рекуррентным и могут формулам Р,+, (х)=((И + 1) xPix) - iP. -, (х)) l{i + I), i=L 2, .... n-1, при Ptix)=\ и P\(x)=x. Программа 3.38. Приме p. Дляп = 4 и х = 3 Р4(х) = 55,375. Ортогональные многочлены Лагерра L„{x) являются решениями дифференциального уравнения + (1-х)-+п(о = 0 и вычисляются с помощью рекуррентных формул L + 1 И = = ({2i+l-x) L,(x)-iU~, (x))/(i+\), j=l, 2, n-I, при Lx)-\ и L\(x)=\-x. Программа 3.39. Пример. Z.io(3)= -0,7000223214; Z.,o(10) = 27.98412698. Ортогональные многочлены Эрмита Я„(х) соответствуют решениям дифференциального уравнения d(j> п dw , п „ -г-5-2х-;-\-2пь> = 0 dx dx и вычисляются по рекуррентным формулам Я,+ (х)=2хН, {x)-2iH,-i (х), /=1, 2, ....n-l, при Яо(х)=1, Н,(х)=2х. Программа 3.40. 10 PRINTВЫЧИСЛЕНИЕ МНОГОЧЛЕНА ЭРМИТА 20 INPUTВВЕДИТЕ N>=2 N=N 38 INPUTВВЕДИТЕ Х=Х: LETft=l: LETB=2*K 40 FOR 1=1 TO N-1 50 LETH=2*X*B-2*I*A 60 LETA=B:LETB=H:NEXT I fe PRINTHN<K>=H:GOTO 30:ENB Пример. Я,о(3) = -3093984, Яо(10) = = 8,09327821-lOl le PRINT ВЫЧИСЛЕНИЕ МНОГОЧЛЕНА ЧЕЕЫШЕВЙ 15 INPUT ВВЕДИТЕ Н=Н 20 INPUT МНОГОЧЛЕН 1-ГО ИЛИ 2-ГО РОДА R 30 INPUT ВВЕДИТЕ К=Х 40 IF R=2 THEN 60 50 PRINT TN<>0 = COS«lH*ACS<X>) : GOTO 30 60 PRINT UN<X> > = SIN< tN+nftCSOO >SIN«lAC:SCX> ) 78 GOTO 30 i ENB 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.014 |
|