|
Главная -> Справочник по алгоритмам 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 10 РР1НТ*ВЫЧИСЛЕНИЕ КОЭФФИЦИЕНТОВ ПОЛИНОМА ПО 15 PRINT ЕГО ДЕЙСТВИТЕЛЬНЫМ КОРНЯМ 20 ШРиТЗАДАйТЕ СТЕПЕНЬ ПОЛИНОМА N=N!liIM A<N+H> 25 FOR 1=1 ТО NSPRINT12.0!ВВЕДИТЕ КОРЕНЬ XI 30 INPUT Aa>ENEXT I 40 LETR=1SF0R 1=1 TO N5LETR=R»Aa>sNEXT I 45 LETE=lslF N/2-INT<N>2><>0 THEN LETE=-1 50 LETA<N*-H>=E»R!FOR L=l TO N-l 60 LETS=0EFOR K=l TO LsLETP=0sFOR 1=1 TO N 65 LETE=-l>fta>slF K2-INT<K2)=0 THEN UETE=ABS<E) 70 LETP=P+ESNEXT I 75 LETE=-lsIF <К+1>>2-1НТак+1>>2>=0 THEH LETE=1 80 LETS=S+:E«A<N+N+K-L)!(iP)sNEXT К 90 LETA<N+N-U>=S.sHEXT L 100 FOR 1=1 TO NsPRINT!2.0!AN-I!F1.9.=A<l+N> 110 NEXT I SPRINTВЫЧИСЛЕНИЯ ОКОНЧЕНЫsENIi Пример. Пусть N = 4. л:, = I. jc2 = 1, Хз = - ! и x,= - l Получаем a:j = 0, 02=-2, ai=0 и а,>=1, т. е. P (jf)=x--2jc+!. § П5.2. Обращение матрицы, вычисление определителя и решение систем линейных уравнений с разными векторами свободных членов Модифицированным методом Гаусса - Жор-дана матрица А обращается, что дает матрицу А~. Одновременно вычисляется определитель D матрицы А. Если задана система уравнений A-Xi = Bi, то ее неизвестные находятся по формуле Xi = A~ -Bi. При этом матрица А~ вычисляется один раз и можно решать ряд систем уравнений с одинаковой матрицей А. Программа П5.2. Пример. Пусть надо решить две системы линейных уравнений: 4 8 0" .8 8 8 2 О !
= 32 Введя W = 3 и элементы матрицы А, получим обращенную матрицу А~ = 0,08333 -0,08333 0,666666 0,08333 0,041666 -0,33333 -0,166666 0,16666 0,33333 и определитель £) = 96 матрицы А. Введя столбец свободных членов первого уравнения, получим xi = 4, x2= -1,5 и Хз--2. Далее, введя столбец свободных членов второго уравнения, получим = !, л:2= ! и л:з = 2. 05 PRINTОБРАЩЕНИЕ МАТРИЦЫ» ВЫЧИСЛЕНИЕ ОПРЕДЕЛИТЕЛЯ И РЕШЕНИЕ 10 PRINTСИСТЕМЫ ЛИНЕЙНЫХ УРАВНЕНИЙ С РАЗНЫМИ ВЕКТОРАМИ В<П 15 PRINT МОДИФИЦИРОВАННЫМ МЕТОДОМ ГАУССА-WOPДАНА 20 ШРиТВВЕДИТЕ ПОРЯДОК МАТРИЦЫ N=NsriM A:N/N>.-B<N>,S<N) 30 FOR 1=1 ТО NsFOR J=l TO HSPRIHT12.8!ВВЕДИТЕ AI,J 40 INPUT A<I»J)!NEXT JsNEXT I 58 LETII=l!LETR=l!FOR 1=1 TO NsFOR J=I TO N 80 IF AU/DOO THEN 118 98 NEXT J 100 PRINTМАТРИЦА ВЫРОЖДЕННАЯ!GOTO 388 lie GOSUB 19esLETA<I/I)=l>A«;bnEG0SUB 210 120 FOR J=l TO NsiF J=I THEN 140 130 LETB=-A:J/I)sLETA<J/I)=0!GOSUB 230 140 NEXT J!LETI!=Ii-A<I/I)!HEXT Is FOR I=H TO 1 STEP -1 150 IF A<b0)=I THEN 180 160 LETR=-RsFOR K=l TO N!LETB=A<K»1) 170 LETA<K»I>=A<K/Aa»0>)!LETA:K,A<be>>=B!NEXT К 188 NEXT Is GOTO 248 190 FOR K=l TO NsLETB=A<bK>ELETA<bK)=A<J/K) 288 LETA<J/K>=B!NEXT К!LETA<b0)=J! RETURN 210 FOR K=l TO NsiF K=I THEN 225 220 LETA(;i,K>=A<I»I>siiA:i»K>sNEXT KsRETURN 225 NEXT K!RETURN 230 FDR K=l TO N!LETA<J/K>=A<J»K)+BsiiA<bK>sNEXT KsRETURN 240 PRINTЭЛЕМЕНТЫ ОБРАЩЕННОЙ МАТРИЦЫ A-KbJJ 250 FOR 1=1 TO NSFOR J=l TO N 260 PRINT!2.e!A"-l<I/J>=!F1.9!A<bJ>!NEXT Л1ЖХТ I 265 LETr=r»RsPRINTОПРЕДЕЛИТЕЛЬ ИСХОДНОЙ МАТРИЦЫ Ii=Ii 270 FOR 1=1 TO N!PRINT!2.0!ВВЕДИТЕ В1=!INPUT Ba)sHEXT I 275 FOR 1=1 TO N!LETS<O=0SFOR J=l TO N 280 LETS<I)=S<I)+B<J)»Aa/J)ENEXT J 290 PRINTKOPEHb X!2.0!I=•F1.9!S<I)!NEXT IsGOTO 278 360 ENB § П5.3. Решение системы П р и м е р. Для системы (W=3) линейных уравнений гх,+2х2+хг=4, методом отражения • x-sT+T-s Метод отражения реализован следующим алгоритмом прямого хода: получим xi =0,1, лсг= -0,6 и хз = 1.7. dt, BA+AkkS. s~(sign Atk) § П5.4. Решение системы " линейных уравнений с= I A„Ait, F=(c+/i*,s)/B, t=fe.....п, методом простых итераций п При начальных приближениях х.о (i=l. 2, ... D= BjAik, Е= (D + SBk)/В, .... N) вычисляем последовательные приближе- /=* ния по формуле простых итераций [18] F==Aik, F=F+S, если i = k. х/и-Ю= хщ)-а«Л(п - A,j=A„-P,F; j=k.....п, Bi=Bi~FE. i = k,...,n, и k = n, n-1, !, n = N. Неизвестные получаются при обратном ходе: *° е. где (/)- номер итерации, е - заданная погрешность вы-Г~ У А В -В - IB Г\/А числений. Итерационный процесс сходится, если к Xk - bk-(Bk -L)lAtk, величина модуля каждого диагонального эле- мента матрицы А больше суммы модулей остальных .элементов. Необходимо задать начальные k=n,n-l, 1. Программа П5.3. приближения в виде вектора [х, о]. le PRINTРЕШЕНИЕ СИСТЕМЫ ИЗ И ЛИНЕЙНЫХ УРАВНЕНИЙ 15 PRINT МЕТОДОМ 0ТРй5НЕНИЯ 20 INPUTВВЕДИТЕ ЧИСЛО УРАВНЕНИЙ H=H:IlIM н:Н,Н> 30 FOR 1=1 ТО HjFOR J=1 ТО N 4в PRINT!2.e<ВВЕДИТЕ ЙI,J: INPUT A<b.J> 50 IF J=H THEH PRINTBBEAHTE BIsIHPUT ЙИ>В) 60 NEXT JSNEXT I 78 FOR K=i TO H5LETA=8!FOR I=K TO H 88 LETA=A+H< ЬЮ-ггNEXT I:LETS=SbH-;ft:K..K)>i«SGR;ft> Э8 LETB=A+Ai;Kf K>«S:FOR I=K TO N 100 LETC=6sF0R J=K TO H 110 LETC=C-ft<.JIЯ!ft<.J*KsNEXT J 120 иЕТнаЭ, I >=<C+S*Hf.Kj I) VB: NEXT I: LETri=0 138 FOR J=K TO H:LETri=ri+A<J,8>i«Af.J,K>!NEXT J 148 LETE=<:ri+S*H<K,8>:)/BsF0R I~K TO H 150 LETF=A<I,K)EIF I=K THEN LETF=F+S 160 FOR J=K TO HsLETft<bJ)=Aa/J>-A<0/J>*F!NEXT J 170 LETAa,8>=A<be)-Fi«EsHEXT IsHEXT K 180 FOR K=N TO 1 STEP -1!LETL=8!FOR l=K-H TO H 190 LETL=L+A<K,I)«Aa.-0>!NEXT I 200 LETA<K,0)=<A<K..8)-L>/A<K/K)sNEXT К 210 PRINTРЕЗУЛЬТАТЫ РЕШЕНИЯsFOR 1=1 TO H 220 PRIHT!2.6iXI!Fi.9!:=:Aaf0)!HEXT isEND Программа П5.4. 10 PRINTРЕШЕНИЕ СИСТЕИЬ! ИЗ N ЛИНЕЙНЫХ УРАВНЕНИЙ 20 PRINT МЕТОДОМ ПРОСТЫХ ИТЕРАЦИЙ 30 ТНРиТЗАДАйТЕ ЧИСЛО УРАВНЕНИЙ H=H:riIM А<Н/Н),В<Н).-Х<Н),г<Н> 40 1НРиТЗАДАйТЕ ПОГРЕШНОСТЬ ВЫЧИСЛЕНИЯ Е=Е 50 FOR 1=1 ТО Ns FOR J=l ТО И 60 PRIHT!2.e!ВВЕДИТЕ АI,JsINPUT A<I,J) 70 IF J=H THEN PRINTBBEAHTE BIsIHPUT B<I> 80 NEXT JSNEXT I 90 LETS=0SFOR 1=1 TO NsPRINTЗАДАЙТЕ кI<0>sIHPUT SCDsNEXT I 100 LETK>0sFOR 1=1 TO H5LETX(I)=-B<I) 110 FOR J=l TO H:LETX<I)=xa>+fta,J)SKZ<J) 128 NEXT JSIF ABSi;X<I>vft<bn)>=E THEH LETK=1 138 LETX<n=2a>-X<I>/A<I,I>!HEXT I 140 FOR 1=1 TO H5LETZa>=X<I):HEXT I 158 LETS=S+l!lF K=l THEN 188 160 PRINTРЕЗУЛЬТАТЫ РЕШЕНИЯ 170 FOR 1=1 TO N;PRIHT!2.e!XI=!F1.9.X<I>5next I 180 PRIHT!4.0!ЧИСЛО ИТЕРАЦИЙ S=S!EHri П р и м е p. Для системы (Л/ = 3) 4jc+0.24j:s-0.08a--, = 8, 0,09л:,-)- Зл:г-0,15х:, = 9, 0.04х ~ 0,08.\Г2 + 4.V3 = 20, задав Е = £=1-10- и начальные приближения Х1о = Х2о = хз1>=К получим: .1:1 = !,9091, Х2 = = 3,1949;.л = 5,0448 (пятыйи последующие знаки после запятой отброшены, так. как при s = I 10"" они недостоверны) и /V„tcp = 5 (число итераций). § П5.5. Решение системы линейных уравнений методом Зейделя При методе Зейделя итерационный процесс подобен описанному для метода простых итераций, однако уточненные значения x,f, + i) сразу подставляются в последующие уравнения. Формула итерационного процесса имеет вид [18] Xlii+l - i-i N = Xiii)-"(У" "**(;-ni+ a!tXtii, - b, . Условия сходимости те же, что и для метода простых итераций. Обычно метод Зейделя сходится быстрее, чем метод простых итераций, ио не исключена и обратная ситуация: Программа П5.5. и m>n (т. е. в общем случае число уравнений в системе больше, чем число неизвестных). Система может быть иесовместиой. Ее решением считается вектор неизвестных, при котором скаляр {АХ- В) {АХ -В) принимает наименьшее значение. Решение сводится к решению системы [X] = [/IB], где А - транспонированная матрица А. Для этого используется метод квадратных корней. Решение системы АХ = В (в нашем случае А -~АА и В-АВ) методом квадратных корней реализуется по следующим формулам прямого хода: flV=V7, ai> = a„/aV, fV==bMV. /=1. 2. 3, п. а)р-Л a,-l 41". <=1. 2, 3.....п, f;"=(/-l- 10 РКХКТРЕШЕНИЕ СИСТЕМЫ ИЗ Н ЛИНЕЙНЫХ УРАВНЕНИЙ 20 PRINT ИТЕРАЦИОННЫМ МЕТОДОМ ЗЕЙДЕЛЯ 30 1НРиТЗАДАйТЕ ЧИСЛО УРАВНЕНИЙ N=N!lilM A<N,N)/B(N)/XaO/Z<N> 40 INPUTЗАДАЙТЕ ПОГРЕШНОСТЬ ВЫЧИСЛЕНИЯ Е=»Е 50 FOR 1=1 ТО N! FOR J=l ТО N 60 PRIHT !2.0IВВЕДИТЕ АI, J: INPUT AO/J) 70 IF J=N THEN РР1НТВБЕДИТЕ ВUINPUT B<I> 80 NEXT JSNEXT I 98 LETS=0:FOR 1»=1 TO NsPRINTЗАДАЙТЕ XI(8)s INPUT Z<1)eHEXT I 100 LETt<=0sFOR 1=1 TO NsLETX<I)=-B<I> 118 FOR J=l TO NSLETX<I)=X<I)+A<I»J)»Z<J) 120 NEXT JSIF ABS:X<I)-A<bI>)>=E THEN LETK=1 138 LETX<I)=Z<I>-X<I)/A<bnsLETZ<I)=X<ntNEXT I 150 LETS=S+lslF K=l THEN 180 160 PRINTРЕЗУЛЬТАТЫ РЕШЕНИЯ 170 FOR 1=1 TO NSPRINT!2,0!XI«!F1.9(X<I)8NEXT I 180 PRINT!4.0!ЧИСЛО ИТЕРАЦИЙ S=S!END- Пример. Для системы уравнений (Л/ = 3) 10x1+ х,+ й=12. 2х1 + \0хг+ JC.= 13, 2лГ-- 2х-2+\0х,= \4 при Е=1-10- и xi(i=JC2(i = Xin = 0 получим Xi = = 0.9999. Х2 = 0,9999 и х,= \ при Л/„„р = 5. § П5.6. Решение системы линейных уравнений с переопределенной матрицей Решается система АХ=В, где Затем проводится обратный ход; x,.(j)"-j: dih,la)\ i = n,n-\..... 1. решение
При т - п этим методом возможно .обычных систем линейных уравнений. Программа П5.6. Пример. Для системы уравнений (n - N = 3, т = УИ = 6) 0,41X1- 0,352 + О,! бхз = 0,22. 0,23X1 -(- 0,2x2 -(- 0,4! хз = 0,84, 0.46х, - О,! 3x2-)-0.48X3 = 0,8!, О,! 7х I -Ь 0,45X2 - 0,25хз = 0,37, 0,83х, -(- 0,27x2 - 0,51 хз = 0,59, 0.27x1 + 0.82x2 - 0.! 4X3 = 0,95 получим Х = !, Х2= ! и Хз= 1 при <с»; 15 с. 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.0084 |
|