|
Главная -> Справочник по алгоритмам 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 чисел- xi и yi с наименьшей среднеквадратичной погрешностью. Сведение нелинейной регрессии к линейной выполняется с помощью линеаризирующих преобразований в ходе ввода Xi, yi и при выводе 6о и Ь\ (см. табл. 5.1). Такое сведение целесообразно, если ПЭВМ имеет микропрограммное вычисление параметров 6о и 6 линейной регрессии или в распоряжении пользователя имеется только такая программа. Пример. Зависимость у, (xi), заданная числами 21,4(6,9); 15,7(12,9); 12,1(19,8); 8,5(26,7) и 5,2(35,1) близка к экспоненциальной у=Ае". Для нахождения Л и В ввод Xi и yi проводим по схеме (для ПЭВМ FX-702P) Xi LN у, STAT т. е. вместо у,- вводим In у,. Тогда константу /4 =0,2388010829 получим, введя команды EXPLRAEXE, а константу 5=2,771866148 получим, введя команды LRB ЕХЕ. В общем случае для нелинейной регрессии более удобно использовать специальные программы, ие требующие специальных преобразований при вводе л:,, у,-, а также при выводе результатов вычислений. Гиперболическая регрессия заключается в нахождении параметров функции у {x)=bo-\-bi/x из решения системы уравнений boN + b, Y. 1А-.= Z № i=l 1=1 N N N bo X lA-i-f 6i Z iAf= Z y,/xi. i=! (=! i=! 6o=exp Та.блица 5.1 Преобразования, сводящие нелинейную регрессию к линейной (ее параметры помечены штрихами)
S5 PRINTГИПЕРБОЛИЧЕСКАЯ РЕГРЕССИЯ 10 INPUTВВЕДИТЕ N=N 20 LETft=0". LETB=0! LETC=0: LETIi=0 30 PRINTВВЕДИТЕ ПОПАРНО X<I>/V<:i> 40 FOR 1=1 TO N: PRINTIS.O!I=I 50 INPUTX<I)=X:INPUTV<I>=V 60 LETA=A+1/X! LETB=B+1/<X~2> 70 LETC=C+V! LETII=I1+V/XSNEXT I 80 LETE=Ni«B-A-2! LETF=Ci«B-Di«A 90 LETK=N!«Ii-A*C: LETF=F/E: LETK=K/E 100 PRINT!F1.9!V«)=F+K/X 110 INPUTВВЕДИТЕ X=X 128 PRINTV<X)=F+K/X!GOTO liesEND Пример. Для N=8 и t/, (x,), заданных значениями 12,2(1); 6,8(2); 5,2(3); 4,6(4); 3,9(5); 3,7(6); 3,5(7) и 3,2(8), получим 6о= 1,935761896 и 6, = 10,16017523. При х=2 получим {/=7,015849511. Степенная регрессия обеспечивает нахождение параметров функции i/=6o/ по формулам N N N \nxi £ \nyi - N Y. inxilny, . i=l i=i i=) 0=--, . . N 2 N 1=1 1=1 g° I x, + lg6 X = I (*lgy.)- 6.о=ехр -{ У \ny,-bi У xi ) . 1 = 1 1 = 1 i=, «- /J Программа 5.2i. 05 PRINTПОКАЗАТЕЛЬНАЯ РЕГРЕССИЯ 18 INPUTBBEAHTE N=N 20 LETA=0:LETB=0:LETC=0!LETD=0 38 PRINTBBEAHTE ПОПАРНО xa>,va> 40 FOR 1=1 TO N:PRINT!3.0!I=I 50 IhPUT X<I>=X: INPUTV<I>=V 60 LETA=A+X: LETB=B+X2: LETCsC:+LGT<V> , • • 78 LETD=D+X»;LGT<V>: NEXT I 80 LETE=N*B-A"2: LETF=C*B-D*A 98 LETK=H*D-A*G: LETF=EXTСF.E>: LETK=EXTi K--E.i 100 PRINT!F1.9!V<:X>=F*K"X 110 INPUTBBEAHTE X=X 128 PRINTV<X>=F*K"X:GOTO 118:END Пример. Для N = b и (/,-(x,), равных К программе 5.22. 6(1), 7(2), 8,7(3), 10,4(4) и 12,4(5), полу- Пример. Для N=9 и (/, (х,), заданных чим 0 = 4,941990005 и 6 = 1,202950112. Для значениями 3,5(2), 5(3), 6,2(4) 9(5) 13(6) х=2, (/=7,151499236. 16(7), 23(8), 30(9) и 40(10), получим 6о= Программа 5.22. 05 PRINTЭКСПОНЕНЦИАЛЬНАЯ РЕГРЕССИЯ 10 INPUTBBEAHTE N=N 20 LETA=0:LETB=0:LETC=0!LETD=0 30 PRINTBBEAHTE ПОПАРНО X<I>fV<:i) 40 FOR 1=1 TO N!PRINT!3.0!I=I 50 INPUT X<I>=X: INPUTV<I>=V 60 LETA=A+X:LETB=B+LOG<:V)sLETC=C+X"2 70 LETD=D+X*LCe<V>: NEXT I 80 LETB1=<A*B-N*D>/(A2-N*C) 90 иЕТВ8=ЕХР<<В-В1ЖА>/Н> 100 РК1НТ!Г1.9!У<:Х)=В0жЕХР<В1жХ)- 110 INPUTBBEAHTE X=X 120 PRINTV<X)=B0ii:EXP<Bl*X>!GOTO llBsEHD 05 PRINTСТЕПЕННАЯ РЕГРЕССИЯ 10 ШРиТВВЕДИТЕ N=N 20 LETA=0:LETB=0!LETC=0!LETD=0 30 PRINTBBEAHTE ПОПАРНО X<I>,V<I> 40 FOR 1=1 to N! PRINT!3.0!I=I 50 IHPUTX<:i>=X!lNPUTvci>=v 60 LETA=A+L06<X)!LETB=B+LCe<V> 70 LETC=C+L0G<X>J*L06<V>!LETD=D+L0G<X>"2:NEXT I 80 ьете=<ажв-нжс>/<а2-н*11> 90 letf=exp<<:b-e*a)/N) 100 PRINTi.F1.9!v<X>=f*X"E 110 INPUTBBEAHTE X=X 120 printv<:X)=f*XE:GOTO 110:END Пример. Для yV = 6 и (/, (x,), заданных Экспоненциальная регрессия обеспечивает числами 3(1), 12(2), 27(3), 48(4), 75(5) и получение параметров функции 108(6), получим 6о = 2,999999987 и 6,= =2,000000004. Для х = 2 получим (/= (/ = 6о ехр (6,х) = 11,99999998. по формулам Показательная регрессия обеспечивает f j получение параметров а и Ь показательной функции n n n у(х)=аЬ xi X inyi-N xiiuy, из решения системы уравнений Ь[=---- = 1,939481364 и 6i =0,305283305. При jc=5 из решения системы из трех уравнений получим {/=8,924828629. Логарифмическая регрессия дает параметры а к Ь функции уа + Ь\х из решения системы уравнений n n aN+b X lg.= Z У<, boN+b, I Х; + б2 I х,?= I у,. 1=1 ;v IV IV x>+b, X xf+b2 X i= Z 1=1 /=1 1=1 1=1 I 1=1 n n n 1=1 1=1 i=l 6o Z Z Z = Z Программа 5.23. 65 PRINTПСГйРИФМИЧЕСКАЯ РЕГРЕССИЯ Ш INPUTВВЕДИТЕ N=N £6 LETA=esLETB=e:LETC-0!LETD=e зе PRINTВВЕДИТЕ ПОПАРНО x<i>,va) 46 FOR 1=1 TO N:PRINT!3.e!I=I 56 INPUT X<I>=X! INPUTVa)=V 66 LETA=A+LGTCX>5LETB=B+LGT«:X>2:LETC=C+V 76 LETD=1)+V*LGT<X)! NEXT I 86 ЬЕТЕ=НжВ-А2: LETF=C*B~D»;A 96 иЕТК=НжВ-АжС: LETF=F.E: LETK=KrE 186 PRINT!Fl.9! V«:X)=F*(.k )жибТ(ХJ 116 INPUTВВЕДИТЕ X=X 126 PRINTV<X>=F+K*LGT<X>!GOTO liesEHB Пример. Для Л/=6 и yi{xi), равных 1(1); 1,451(2); 1,716(3); 1,903(4); 2,048(5) и 2,167(6) получим 0 = 0,999931767; 6 = = 1,499793742 и для х=4 получим у= = 1,902897575. Параболическая регрессия обеспечивает получение трех параметров Ьо, Ь\ и Ьг приближения параболической функцией </(0=6o+6.Jc+62X Пример (к программе 5.24). Для N = 7 и (/i(xj), заданных значениями 3,76(2); 4,44(4); 5,04(6); 5,56(8); 6(10); 6,36(12) и 6,64(14), получим 6о=3, 6i=0,4 и Ьг = = -0,01. jЗ,ля х=7 получим (/ = 5,31. Полиномиальная регрессия (аппроксимация) обеспечивает нахождение коэффициентов полинома у (х) = Со+ aix+ 02X4- ... +а„х" (5.25) Программа 5.24. 65 PRINTПAPAEOЛИЧECKAЯ РЕГРЕССИЯ 10 INPUT ВВЕДИТЕ N=N: LETA=N 20 DATA 0,0,0,07 0/0j0 30 READ B,C,F,M/P7R/S 40 PRINT ВВЕДИТЕ ПОПАРНО X<:i>/V<I> 50 FOR 1=1 TO Hi PRINT !3.0! I=I 60 IHPUT x<i)=X! INPUT va)=v 70 LETB=B-X: LETC=C+X2! LErf=+ir2 80 LETM=I1+X"4! LETP=P+V! LETR=R+X*V 90 LETS=S+V*X2! NEXT I 100 LETD=BSLETE=CSLETK=C!LETL=F 110 LETQ=D-A!LET E=E-Q*:B!LETF=F-QiisC 120 LETR=R-Qsi!P:LETQ=K/AsLETL=L-Q*B 130 LETM=M-Q«DSLETS=S-Q*P! LETe=L/E 140 LETB2=<S-R*G>-«:M-F«Q>! LETB1=<R-F»B2)E 150 иЕТВе=<Р-ВжВ1-СжБ2>/А! PRINT!F1.9!B0=B0 160 PRINT Bl=Bl:PRINT B£=B2 170 INPUT ВВЕДИТЕ X=X 180 PRINTV<X>=B0-»-Bl*X+B2*X"2!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.0215 |
|