From f5761754bf3aca658ee0fdd5a5cccbab33682529 Mon Sep 17 00:00:00 2001 From: Artem Date: Mon, 24 Nov 2025 12:37:15 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BE=D1=82=D1=87=D0=B5=D1=82=20=D0=BF=D0=BE=20=D1=82?= =?UTF-8?q?=D0=B5=D0=BC=D0=B5=207?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TEMA7/Figure_1.png | Bin 0 -> 23733 bytes TEMA7/report.md | 457 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 457 insertions(+) create mode 100644 TEMA7/Figure_1.png create mode 100644 TEMA7/report.md diff --git a/TEMA7/Figure_1.png b/TEMA7/Figure_1.png new file mode 100644 index 0000000000000000000000000000000000000000..55273fd36497bf39934354837d190cc28ee5992f GIT binary patch literal 23733 zcmdpe^;eW{^zBOsq9O_k(kKEVrF4U$(jh2a(nEL0*b>s6A|>51G@=qir{oMR-8l^0 zXZYOjy=&b+;r`%af$z*b@AIDLoPGA*X9Cq!WJ#~kT!A2nR9^0xIt1avAqWqBnF#zv zpnq~6{1A10uI;MfVBzZV#@QTFe&gzB>)>h&GhuQ!cXoj}*z<8ee#HHllgY}})zL+i zhsW;!T*2+&Y{}!|aJB&6g~U-##|47O-r)Y>{gBFmL6H7k`DagFc_yz<5xc$`9{;l) zxA!5O@bY~^{Pe@nSC`m>v~RrRVY+OB*~|O(w*(Tj)w*>x=$i>u!H+MO?>+b4Y>yDu&75E9U1Vfi02>s?V z9Q?xY>Hnu+(C?;wHYG&7b~5KY*Z!79Mn;;z5}=yv_)O>*lGr^B_SbpQW0aiQj(@O% zNy^_dGP<#&Mga{h=D)JGSBslEU3w+hFo&CQ#f>KlFGB9zef##UCe>AVFcXAt|A2`} zy7BB}m9M8aNl5iNoiNkc*;#D#)wrHPRVl70R^`aN*ZG~zZwVHDQyJaj;W?8hR^val z!K+EPDQ?hg#B7Llbar-n7|Ogs#&WUn@(z@h%?$h-%8go^s?(z6(lxVZ^gnu&A57T% z@dkt^G*oOPCE~so-<2qUbmC@amT5dc^FgdvOz7rgC>^;mQmCgj?Kwv} zXsh2hiEyD;?!Hw0&cxJop+{^p`pcKgyS1dWg3+py$C-V+lTK~)9~-j;-4^|n938j3 zj3^4Z21j)py!WXO8%}qSv+L`2oz~T^%jy)FV2vDEigB^5%8Bh04o!YN&WlqAYh$Ji zv=kJki4&GR$?V;U0(_O_q%{2Di~*#m5TNa`n@zh7s9vda+fI{!rbGdo#PN=`wYA-|1iS~5lE06}AD_vHGPxM zto;UJtqj?9wv-l-%Hx<o6?{plr*>waOse*JoCQ~0yB6)a^P+>(4z z2UqpvJu>kv_%hFEz1Obq;j#!RUkrzqVB3iZf5q#(SMr~((_33B2{}x24rVL!wVfXZ zoU={Ux*@gxB-z)>dmnDB3+JQ_+hY#a2Xa&y5u1$|v%YUnSVOG)k{+9W(svtv9cnY& z=;tG^tSm5E>3h7hGiI5VkQPkj;fF0xkP2v2N|VHf>=KhPM1vSeYPokf?NdCIuhn}h zzQ4ccC+fcTz{q#|S=)^}dh+!6RjMl0Ag zdA2`l#OpjSx4V0WIzQ9;l|~6Su_QnXg2$gZ>{hjajGMrnEWHF?bKBh9+{H#chlb%1 zgo|alQK7EDgxjdWlIQeLu15E+q4#o@Z?OlGtNO1(%tP~uQd8N+T|Ubm{;=~i%qIO3 zgC`o#g}b+9RN>xVh0{P^jUXs5+!Q$T>;{>t!f%HSxSfOYhoC)ky$ zfh@%d?q^N@SlgE`UskQH*|s5G=W8Y$_Sxi=m6a(`@6n_PJKaO=x;Q&u@tb;Q-lb?H zyLmqInUQXZoSeMN4K`hmn44@Rld@$vJVXVE^{}w8B$R>2D%>e<*+aK0+)!yVnEka- zHjKeC+7#XVR*;8>XBVTU_9iV$BS*!8BgD`H%ju;Y|EQ&YsmvTnw{+!9Y4{wAIv;!Y z?wu_R2K(432#=Jdc!bVA+f6%f&(+9LDtxW39*L09+btepfKmJy5nsqs{+Z}dF~VJ3 zQNiz$-<@EY(Tf3#oc}~?{|K|ay&YQUbGVT$=scYF`ZzVCJMuaGH7ou6_rq>6wzV*bIn5Cl)GGa5Ct(?S{nsjKXR-$ymH{9Qh#T*Lx-MVTRVCUWtohFmyy=&;v z5KFVOd)6grKlz|n5>o&>89wY)l#zm#q#?q|_>rS2kodD>sDHypPcFL{@6v2*(A8C1&;iMG4&_*miOzbG_X>zsYHXgGNRCCZe zdhhPIWvOBuw{zo~#_&I%GulG8q4kU~NnZ28m;I7pEnJh|pI_yB9mHK2>ycYozv#?4H-#=sd3eGem?Vc9j8p;UbJ=fm+?y$M6MW$}S*Un4k?>JSGt{P9YH zyIrBC|6t09{w^hz!l)Low8!_4k?bU1@unc2z6oWBIFTCuU~{r!3(R;;BUF5+o!KJs zmXVQ>-uif@-8lwzzN1X_UE}S))$@repF{gLm)Y6bu3L}$`}-H&n3qkG`{>G zAif@taizJH!jSdtXZG6;jA2VlOBH}Re;bcxgYOyT$b7y&R^QNI=e9B=vT6!&nQ`4p zUVhgrQPFiJ0H|z1QQWwsOpq~p0xI^S;+f4&hkUK#)b+Z}MzOh4@M!ooHa~p)IEIgp zZ(FEWU8S5P$b~Xp8*Ki^&&$rvey$tZ;B%O`Z2a)m598@NkU$ofB2rWRrw5yFE!6Vp z*Yu54+3D#S8-F`C@SY81>$2n#b|ZysVg}CjSJX(FC6=vkbT*1Uds8tYYg5=GApOf) zG)Tv0-}T+>P39N3R(+P;`XXvXNy#ALt0xftmN1QRCH1j-Aum2u^hpv91#xbcf#`P` zFlg6pV0p5XJxCH$xtV-G<+`Y=06kFQ$0OLfQ#-x+{dsUE*b0kB@BP+Mv(G3VL6*-T zLV(yG?crVgAe073olNGxzlGp8Ual=caBpX>rYsuFQ9zI|Pg1vq=FOm>AW_p8detXT z{bian0B#GpK?73*;Q;N!*Lh#q?m>oxg~#RR_#Z!f&^DlhAT`3kz`$($wlj&1z{_x| zmg%+pnJ~}~z-`zUTBfSS%V%gIsQLX(2oHk9ui@PQzqA5u`v3kCGC|mUyt{-X6`C}* z*dKW_1xhA%bg3&vOiQ=I>MnrEAZ>FU?+vOdW)^@u(R5CN;v*yPfyWi&H23HB@^+oa zX6$NForS!^~RZ7nA>S=GqT8~Y`5SB|2R1!Ne1f>@L4yID9wx8Nb8ARtSfmKf?T>QE9GnwME zXU`g4ybD$dQbpYq@CgWdJypEDYsc31O2PVy{+QZ8Jij=K>+hwfr-v$2MS^{F6kyOJ zxI<0N?&Rcj+_UT?CnuL)8L*O@lN$M^_0vK=9%$GgCX@29`+O6uFrBf;*aWWS1d&Ml zgMC5Sf&JuZiLSNH6yGE=9eVsbHv7G;O^CAwP7k@xw@5kxedWzzs3MSJvkYG@;mJC z*=%4_72p0a>9v%y1Dc@@9At089wdEC!-wGd31cFW(XlKYFrCQgRCe~|vB>09SkJP* zLT&0OmXl&WQZYk`-w{1Mcbi8Q@qHV9quLZt{p!2H|Ck!_Z0}0? z+4lGZqL$khrq5g^>#el|V<$9flp+06laC35y*<;f#H{+5_*!<;Wj>ps8vQ~sZddM* z`huh!HR18G+&9F2thA9sxkHm%GGCh{xuq{cxVs$|**Y8XHl5o*G_wU|q*`p_fY8dUt#Umow+0^;wpDBDwmg}C9f>kMr zcs(2}EqShPxu@=LeJN^mc(mOSU@I} z%`(2xnM$EmQw|>Xf#@WW>sRBYe}!QPE(&y1-SNcXxk%34-nJwXF~?=xQRP;}RKw!M zBICJbqXrh_)DsZ`dd?e#L=p|kD!sMen6w1jwSK-k&D0N1`*7)4VQjEE-CMG+chccq zDps&>lu$VF=}ZWY9LUMW&Rl29?3nq*FA^Qj>XdUhNAB|8P~Rkx#AAuCy=Am6`U5dW z@z_|3-Duo@m2JTlHF+XGHh@^#)3n*X?Ci(}5*IuRyUIWLJ5`*8ST(!jiHncIb=J&| z^r)OJKhc582NgDY$HoD<+N>V=#;A8#7V+LfA}M@&ae9z#)Cx2b=tL7(F{+uJXLGrW z2hD*R7Qqru3bT;|nGa-c3Y5IQLK^+04+^}t9oHTXl{3C%mA>aH^~`4blo}1)x(VLH z@ulnaT8Zu4vP12lHHo6?+_Fv2AjB~1M1W1=Fiig8=SvC;WpBxE(>#dziGTkgr-u|T zzx2b8MDY;?5I6l<7(R3>H&@eU%bi|1VrrWmQQf9)rs^9+C$Dfm3fIcA{q`*GYUIDN zCl*Z#V@woBu11)#e!8pCocK%-6AB(oFB@r&i7*@U;@5FcoVYdSA-zhOn|$CuyNf&7$fomKP4lI6;jx$dMjww4^+ZtygP%prG#6PGa#S%$BM=R25fB()A%cWmUTov_QZ`odiaXw#Yef;&btHO z)PD>Ws3q>3;mzYJ9GlBSX1x&xVfOrklP$}FtnULAfE|Kg)#p3hT;JxkMBb!0 z4ZWYWRM+IJ{Z0R+m_BzgJ@>lJCq=}-&=#H}1MdF5OKh|A`XFx}+bAY;PPvJr?R8|A@@E$A?X+wI#$xq>>=z=->O4T3y1rk=bu?;&o!1kX>@jbFNZ6Y6~(U&PyMXMFQE-Vf)cl`jU_D&+!>2 zZj7i~P{brOd)Un>SoljaI`AkWuRy;8q07zd>r$x?n+hbX-l0Op2}GXa`)0~!C^*Xu zK7i@H?;~z@0f(+;-I}hcSc(%>ILV{vPVbR?c(@&zPxDN!*div&H08?dlFUB>v={i? z$-F?1;YNy`^&Ntpi4z%65zTv6U43iuWs4VMvSc&l*jpdcLE?0HH{eJ`x$bC2Eyi$% z*!3tor*r;oO%BHU)fGSPHRx$R<^WuJMTb~@@qt?mpMs#AQjYuyIJ!W zJN{KxVZL=HP4~0SMTlJYY-w1q6Pi)kub<|w6Tt7?1MjtBF}>iU($03(J;{8`*%q;s z4>A#+U4CaFS4NgCOe#N^1mgY--i>{9ZrID=5kis3@1@cPB=)hf%j<&1rVkbwHKWJFP3=QJY#1JJ|Zq57vZ}|d}#m9UyncjJJ z?}wp5uIb-lw=C0j$9Ig7b_jGC9of-Q+M$|nYTngV==|tzcXGZ?dWHCOL#nI8ohMra z5Ze=o&{3Xq+Dqw$Dr#OEk)dt{7au4L-LrqG<6GZQz|8NAJgUfcU%IbOjf=>}5 zJ#=vZW)Rm7MT(8LJqlxlgxSFrR{>IE-|U*^j-uR%D4+ zpdLC%LtWi$y56hI0VUbd-rnwk3coAE$w37#KitJQxfRr(U?}+-f>+dwzl;0XN#wqc zsPx8bzO79IX%!oCjT-tCW@cw6GHC-e85kB8_w5@~u6F4?yc>?Zt7P}v+l>Uqg4_~q-6?&^vf;2`X0@Eo?TdAnVz1GOikq$ zupSBrsMUaol;%EY_NvM};cew(w!D7WH(qC>U!Cu>S0kz|2OoGX)}D~xBsa$GLeU+l zvP!izZGhEiomjic-%o?KCg9wkBbdmuo`6k#VJw%{Y-1#2Q8?Q-y#8-~g#OFAcf-#K zpc-e$77&S?MveN`qeWbRgo=z{mQ9p|!J3}?|2Ln?J}cles+H-%YBp5s^caD z%$3U@7hZ*Gh!qLYNS-E6d3kw@fW3eHypCvT1mHxKnNH`UR0}w1&=Kx*^06~g1yQ$s zRO9E6CY_!6LP8OVx8D_V(?DqQhvtJSk~K`YmJK0#_wExw^%ZbmcWePEllRRTx0lU` zU`Kn;-MxDM+^}CS9+|pOquU6DrL2wh3wkWg_p0OCsdlYvE@FM8FbRf#1}ID1 za&P)!B@Jryiu{%wD9&6-s?Vnep0Q3jQO}S;lgU|ljz?QFtXs=weG)zg(G&J{-Fqay ziwTzV$4hBao1?Ts_Q`;Mm6Mi+SHK4U46&vn|CX9&*-zDy-?{SuFbNihKPxIKf{&iT zZG=5{qOTo!=87M#vdSa7B9Jy8k&I!k(RzB%6?4`3kMZGkB0pAcmE=B6g z)36sQKVK`jb=oTf^-FT z02G{my@bMZG>tN>#jya#e&?z`Zz#(apDYYL@-7ddg*@*m5*P#SP?@4oA{=%Z>0|VA zdA@&aY>fQo&4|r<28Xe-tiC0y?lj5G9VCws(!ku@yu(>bxtTh_6@M~9%_qfG0H@*Cff|2r?(msggwcM1t!yH==8lR65bI49VI0!ri#=v9I4L9l?q zj3d$4hZCkRL1;SVW||7_;kbd4H?26CXCUu22j35woVOquIE7ppVK;fGRb*>@G=!s2 zUR(#N(PTeiLFGH|X$C?(EgY4Q;XnOALvwya$!M7A>2%FURwD>b5sJ^iYxc$TB<`K- zmALOKgE?Vz65g*~gwnBpCS#1X=uYeiq2{9_kO6TWSNvxa+?K$MhJ&f8Y1Y$^S6ENK zGDw_|`#$_;hU?A_0}$#X^l~>+dNxZp+!oGM1akKYAYs(AKALu%q>(HDsU-5tCsR|% z|D@&|zsW=9U#=UPVjJQaWzwx1*7|_>N3cz*6wt)nBt5%&D9&q@3R>DH0 zdW|lLKacJn)rDlww1gOH zer^M~{SGCeU`=-NKRw#EfC)86Ee~<`Dovp;2Y4758cc7ZBDaVk$90T=MwbLV@@?`;`r_6pz6fqmb0kXJpLS}^$wKxnx65u~=xN~O5bvXcn z4t1{d43|b<+xzvS*3dbg)T+?-M(6r=G~X zwHyx+e{Fy6nVYc4BK}uZl73Q`=JoZ;T5SjtGJ`>!dR4aROO@*CS_17oJ>1*8c$$Cd z)9zu}xFg<^z{m}_)f#KczyA6VS9S4<*RyyffFIoXYZ}&3SUvr4IA1G{SvItNYo=8> zK)RX2P9pg}R!a9FX!_L4pTdq;Hmb;}X^b!KyWkfFT7kkqCQn?L2K@5Elm{xNKSLHs z3kLIG3xv}9UiW>5sBC0x-@y(fA`;p6IX<>ic~r)383$b48dt>TW+dY!eSi)4j)ACH zc64&mi95SMu2n}ko5Kb&1I17NWjOE5cSLeis?BO{NZiG;azCCahPlQoHRf=EB8X1K z+XDJkG=qe(wLgYc(!Mw0j-A@(Revkzr&<99Tpj zlM!waTQ^vy3G3gq62XRkM2tBA;6c3>5l3kWl5}KZ;>zB8=^s!3{Ql51zsCsxYrU`d zKVHp42u>c|e(2FbhF|(w3Vcp+q`yzIdj0{H;%t1F=@bttXnEF0^|p!0QBreL>@IxiQx|5C=?Cy>%f z6hkv-CoA0p%MiD_4t5mG&UoKwaw-vb z?HUoVOZdd02u)UYvof#{Gx<(v9_XUte*y zjyFQk(i<4$yV-E4Bw(wg6f#txGiX~&S&}*^@D5KaDm8}d&<~+5$eg6#OC~#%g)XXHd038Dq|m0`a5TXR+Tidb&zQ(<0$qiuhX@T?JP2*eX@{>_ zZrK|P3@+24s$g`PFV{qF@49zne)Q=&qpcQ<33ZEaC5O=UoTTv0rt?O9mu>;|Y$a;G zJI{pZL;cn(M>}hr=0LJgGt$Kr>u6rczW8k+uTwgZ)93N`-TEZ((&kDN6D5=lj zyVc^mByfuJlUO_};WK5p%Q@jUskE0Ik;3d@WN47u(D)YjqSN4KjZKAxcte4yl|&^> zDTKNK58!+gASE37m;U_FWJB|!b8vK|x>gPd903q0!8xZuL9k3d2LMvpNV-`kMXn>f zB`UU~V^FcaVK^tj(<`P7mpg>dAD}@y(EhJK!+c{BF;HY6=3?Iw$x`Mx^VAFYW)@OB zrk%uNE8os2xnN=4s8rKjbrDWA*6Y?RZ~do%-v@$5{}KF%lB9CWiw6)YusogY?Na}_ z!6&~uO@Cc_4)asL`OoK7aiTZPaYYO*ejgkcJ5uzJv7pP@@)r~tQN=AOMx>S+A=F$+ z@J;1-c4^7uk5}QFyU$MZlm2q!PDiTm_VECzgmZ32YWVb|lu>fTwM{4fps{JwgGd1$mw;}fd zF;qjP*feI}cx>SXqOnK#{A9Hl3Ce=Cd;)q*(x_g`-_WJ6U@v{9*hCI~5t0q~=+oof zg>jo=i8L` zNR!U@M#ZsRwn_R^Oiwpz>uWFGQi8x3DEH=_(d?GVY2sdG{8oLFG|D&}%$iq&)_$2RKUN?Lx={q{Hg< zz%VU#ufwXv3uuemD-`63Ym|YRW&xNtV!?ql1Oio-d=%>r&I7=10-voqR{Jh~zWSp4 z-1D#&M^yfIBgKTyQ*NUPq$MVeO~g%xEP!iuHlMoU+%R=BY@h)Mq_*DI|^iTKG5b|Y&dVY{u+@$q-~h`${WcXf4Dlvz2N%90P79g(eeoi%6; zg&zpC7UCAb(zzp01jJaT)=#8Sl{TZDz}JJrBhHxhYQ%b&Nzl#=w7W~bryWsj3vY=T!hs(tu&JpD?5u3IYMOtbc6IL$0ua7({} zM8}4_EsW9OCkofZ0uxV}+o~oYMrNtQdfVH>^NVUbCv%j0fI%!4kQAUyYM1&MYTK;N z-1k~I3v`Rn7Hgt4g_x;~c=qa$LN$y9Yr?Zrk5nX0P` zEpTUXtBcjxZd}51>l>_=i}RG7GysUNl1r;rcGI0P9Nk|`#DMk5rQUOU_Gwy%Kp0T` z`IMV)-n=>R<0Ug6xrmq;reHHFHPwFPK~G(aK)sOV=Y&0kE$9J2CW!S0-73E#!ME!N zeP`ZO9FmgLghIfHvb;Uh`uVC~4?wRPHtLdMR2mo!D3pRH-!<;SeuC0s~J6K<S}j$JR%C+L+_p*&r~>Oxv#S3fI|9R3#W|YahK|)hR#E z3`wg7xpFAKG@7Hk_cjDolfV^n;0eM`-+d3pEX%xhEy`=<6cmC?Uu^*csWL@T%5-rC z{4=l+zDoOanylqHv4T7_k)sq|r^E5ufZn$O^ zhyE?pEKE#jEyj5&=e`P29=lbLp#bx7=d z;isW9Jm@R}*Cr}A1B*uytZKNw+KbqMbD&$yWL@ur*s=gOB$*086T6@@S)vD9cqx$pd=D z7$FOLw}O4-hh6{+W|(f!Bl0us2L}e8)!ke1Zbtd;e${cB0}i7ykg^`1V0QOZS6R6D zWXFde@SMYbKjZ?hGKcB`Tg39{ky@(XfevtE#sDr$`TO_p^S}uj3tXnUI{Y>9jGDhY z-_dW+ZqBjr9NKs3Hi1{JK0w#=L#%9UNeg58momO2w{AyYTjsSWN>=KQW-HERJ2cW6 z#HG???RzNHNH2jE)va4*f-!*A)W}wPjM0_xTrI5D)fW{m2mK>xEey@55tyKr|KiUQ zfX$^8k1G;s(a~m$#B=~R%l{*kPVVk(U^Cm&-9K`yFr@O<`_n>jQKgfmcS z+zZ)?<#-C4ucME{mMIqGb^S z{ujkP?hTCeTa{$koyR|4wOZdUP`Ne*ETP-``;}$dj(9xSDtUF@vMjIRN6W3rp!2Lz zfrd(|LH6WZIRv@14Dhn$sB{@(j^Imd)y6*cN_rl0^$H8uPqzl>fr*_4&k;bp<50K0 zwn!F5rNVC~z%Z0rGT3#xvO;E z700-ipKBl10*nXg3qYyjUh0x(N2X)-UgaY8fPtI@zF5`-0cd%@lavM%Bcm7aI%NX?Ea+xb=BxKVn~iPEk)u~xRE>~9jNn>VijvU!v1*=b9Uh(( zvJzlHjEyGg0S80RFro4H8VZ#g`|RT--3wTlnuS*avam&STQs|d(!W7F&=F^o)EG7S zh)Ofc5;_Gx)Cui&_N5{Y$90%NS!=2w- zNa$2M!kq%vA7R2giaGEa0VD??u^N4g;z>?+c4tqDSa)M6bp6T|a;@fPk-t|FMuLen z&7WT0-C2DfS3XY*p(EvRogOP1Sf3O1NPWN33JE4joE922O@p^LshiW72a-+q8QT`LUswO+BhhC5=TGbR7=P9MAC?zsQw(&JDVq-4v%hzM zOH>h9+qxDvH+jHkMFBH-2Uyg-aTd2d2LuxT08x-P6lyHW1nf!=p*&zamCtzb)vPyF zB3mO{g_MGt8s=7N9I?DghD^k=v9$NAH`VC2mm^gNWKBB$4-;D zAMf54C#qPSscu#yQy(UU$YG9>1o$?V;z@6^h=!=!O7vzjC>jFq!A4gV=$BY@R99O% z2w`y4G9gCqB%cI=>y=j!l^7qD@9ykG0v0>k)61AXWp`8UY2vewMD6gZVW43EuBv;$ zI+n`NbEe>MncV4vbZjX%E$L19v{U2SAX5@bfil6SoMp zu37TI`CwcC%}uQa#uZ_SASfthu&c7vdiY_2pj{#$_2HT;^c?T@C(2J@k>rgX>kBhj7{iFBTmj7#hrKAqC8U~Kxsl`Kk$YY4eJ0|ks#qy zwTy{NNPwA_s^NpSt99tifKo$qe3a7x7hYQrVu_j!8@w09&YI3KQf-m~Pd5xOhuvkM z21MB7iY@vjo|+97?KM3*-n2#sqt{Rwe~BT6;7bR1A1sBV9Tiy9im*OMdE*xs!|=9# z1ybw`X{dI9$rXze?D7x~$QCi6y+ti5HO^fxafz z92qMQ?37?;MNuVHoEpm47dg}_nP0!W-2a34`W zemu}AF@9U&fHEwqnZ2?+i71bGF7r74Q9xWS)+VDeU=Is|fREstARdTLgNK?04{-A- z?d_9U&G+uzQ?g^4Z0pZ-Jzm_a50I%HsluIDPky8p{#XSpicZp38z2`QGGP%Bo!Pm$ zLT*a#QdP>0*u4Te7!CcO`T%gTHv}eF@<{?#KyxXC{ka!^_GW__Sj>D&g+01a#A2hf zmRAAXB5nr0d%fd>2Y1tW#+f^ob<~BvhqxAM^{>o=EWHgl6wxDs4K4v@B>#EdxqA`2 zp&@QtjRjcWy(m5LUX~OAgyV20afjPi4jr5eQyO~aq|nUM3x2U=E1Jo{Cx^b5;Q}4Xxe2}G#HoJ%(<+<}u*Nz#VfPArGLr_CV>TKB8&*qz@uSl-$#55KHk0>~OjF8)d|(zt_)Z+h^O^@;qZL#F&RG^vnIeJJUg2dCOzhDBu;S#1F2B9I z9r?I zOY-22+_qpU9?8{RkZCTJU*86!NN)XUm(JrKNmXy6y1DY?JWHA`_V|+axL}SABxFDN zca4~sI7wF;6Y0qOBILo&>c8<8-6X32WUwCK0Rt5x@drhhrK2mZDir`ay z)zUe+$Wz4emw(m{9!4*xa1jDo=3kIybfT{9Yoi4^8Wugtu!A@rBkr@a-&!uw(b4yT z1G6sI?;05y&(5x)*TQWQQc^eD{{CzB5B_B|xoBbkX-Yk{*1UWX;>}~$kONS-a7lu? z6w@a|)&a*OP%4}R$P|#44D36rR$q1x4q|I+YJ8XWwTa_yRk$pv@Ey&8p%cesWJky2 z>hW6*0B}*rUG)Y%l#f-F91Bl@14kZi$jU zpn>n9>N)$GmX=mwJ2vn^9`lNu=HK2?3o)bk+%}lui2~CjOJav><-LiCE#Rgw1?eg_ zEWza#1H*p6pkijWBp00bX5iuC=?fgwuUKa2%{WS*;!D1-eO_QIzH(?OfZZ{ECFtU`O;QdaPe#py?;vzFi#;+V`Pz(9&@ zZjO~(Mi?pD+yESq^@|&;=*a&oi&g08$P#6E`Zn#r?;ae z)bZhp6bfHfpz{j;-X>Z$ngC;zroZ+*BTnY&(_b13^M5l}lXlHKe1qy8O=YP6h9b^^ z!GZ%Pipb*GNJ(I_qXakqmbN;rt<8{~$JecYAqg&l(gg2%BMWnaFuv z5q;p1XP*T@-);~}>qi5#-_GHI=k`Mu-Y@1Ta5_n1HAm+Sz-X6-!>o6yM7Mfcse!?6a&>=4l!9tsi{-38kvv`R?uJx zOA)zjx1jWso6PXPtG0}KWVV0KEx z1Mu&BY)r|j>blvd6`~_+8n~)uQ|5YWYr4T_A2MuEOC^fwcANfj<&&7Yd8l{GZ?+n{S!*R zDm=paoc{E&_0R*v!MIH!C(RY%$Y@qRK{`PU!MJAS#kRaog13cGGlQBF2abfCu5RL_ z`-B~iB_kmtivzj!Pv`e^I6Lw{Q8QFo_Z4Z>rIEw6S>sIVL6^?*q=esHbfQ|LCY4qz};G^vo1<$<70m7R|BFCPDMM z>|!x71ZbY7Q|BIx&%v6GiFwPIpG)n*=1A;o?L!bELdF0|4(G?2a*L#xa`Q+S{k{Aq zy5K#VY6oyOcKfFxzyDWl_Fp!SkE-VQcy0ftS^#XEh3*~9izAoos6t^T5y1$-VWj-m zD=q)sgg10L8_d%c#0W+RqXFV<2Tg*xxs#f-d#G}wK`CnO(58Ec2ZZ)jKs#9jlLBt) zVA>yJ=QZ<@s%yY;cd56!R=Y1ow~8_5Z&c2G{ywcD*e%$_lMo|p{`Kow+enrol}?Rg z`lRRFS7(6alg{3jjLe%ODg%TBio4Kc05g8cdN2L+=TEx#(mMlqcbm>m@>$HE76EN^ zXK7Km991pwUJ9I3Hh{xKTo$#D4}?E6YSKUA2*4@C-Vt~IyA?%f4NUvSIE0n=(fnmc zuD_T1frB(tfOK^`u66;MqI_V?rE~4F)ta?X)rbNAX=lHv2Nz*A$qotHjCAec4bkMh zqj<`9v%)Q#v)AA_!?OGV`?|xi^;>Y@$jkR8{6KjQ?HdJLU4o=v?W=sv?#_E&^&d16 zc>P-6l%o!L7tg>)(gUQt`$?j3J6}EP3SOVd;0S$mNC90g?aLR5uSoujJ9@TvpInap z7w}ws6p;@`LP zAPN0OuBIt@pB_0~Ra{B{m4svURd|p&{(rT*4H9-=(*~Kw%WUcIeB0}D{&Rew1en7h zI)1Bguu0;SYhU7Oe!1ds3im#TE)FT7d;B1ejY)Rg4By`BsA?#kh)E9?w2o!K_>&*J z_|hL7wz)sqFE0QQ?y%JnHGAzY%Hw$Z<$s|S$qNo0NARMP%Q?36vByS} zo^IJ5EuhGI1|VVIBS)|0tT?lg0v(`?ED57<0Rm?6VxI3lXet!DznrslX7ftq*F`z^ zxDE$1C~=^VTMpR;`bhNAk*8wkd|;yy0yW8d$Os7CmI3GvB_%7M^F-%Pfg>r)d7(2l zx?^xnJdra$9s>d_%mkbq;7Je%Y_9Xs)*Fr8=%^^>t5n?4Z45q2M4(GH?-&2%w-Tq) zg#{U~4LIr=L3vXzHk1eq4HYDirs20@0#2G};Pgm}Xn9}=tl-C9-A~E`G+eCp@u00+ zv7k>QkiroM0K|lY(LZ5Lf?R{Ts+iw9cQ_7H!U@<^| zYO!3M2u$*=4}dfcH4g%^LBGmYXK+;Yy%8uB3AaRrh5v#>L5P_QXh?jWUCaVR<#upO zARJxt-%HX6+FA+TDz5p(uT#V4k+MLW)PIVD{bl^nbsGNm&gw(CrXq<40d$OGRU;!JA~t%Kh>t}Zf_Wm*G|Sri4I+f zbI!tE9Ko$$P>tud2`*3G7Z=yBudnZNKVFDK;>Mn2K3x+j9!&)BUq{y-Jd-le*}}l^ zuG40j|vhwzSkyo8{V;!%3I0YYgJrxX7Jr3lpjgO7q>3PY*j^$uFL7I>#3C z+l(mT?0bxUdlB>V^X)(Z{!MQetQcwM)G@nipinFHrQ)I}X%HCWC=zg}EsT+ zvU%=p@w5fB>sC8ZHI(^^Qbt%;N=G(sKex8dGqbQzKsYb_qF2^SqAd~|&Sgq}(s+@h zJy)2*Ez|ri;AZ2eMx0{4hvYD7tcMM7<$;5(k#y((+TrAi)1%a6pFdx?8gXgaY`Aue zg_SjkqpwBa;4EO2575?77$9kfB)#1$t%rHvtOHaMdi$wDC#e1pfjdGFi|+S}rM?JmovVLUl8k$WPGRRy92^`1|3|RsokFdD6`Fp8 z=LqusdDg`514q#Ma+GR;52i}jsN@CXdaLngqz&SQMAU*VoCYb-^7w~j1 zZa7E`0rYPO`3Qo5j8W3I3P{{eY^&Grx1Y`B-0vIJ!%YiZWSyK*oXM=C6j%dMNi>LE zYHX5Lnxx-6kn(XY9mTw>cN{gJg)q^lf9ftYkJfP%7oYc0te$=hak#ZZw>d6I@G!NoqZ-|L4*-{&9&tchMBTvx(39+U<1%;3Fh;e#72%VA)vTsQzplG+v_g<97oXc$V{g_;Hg1dv?6?oLNcM5F+cAh^&AB*7$BW85T3q5lT2 zCrJLW#LeIcC;11s8~Gn+;oQhhU_@OLR+ zA>6qAhgP{TEhY4_J*pA6jEqH80KNcVTnuAFZo~^a&4SYaCJOH}F@5{hImdm#s2a0h zN;3OeVSeQkZqwmEMHX)K^O}Pp2Ew?#wm*~OO~92c|34goN>GgSWXU;WMgZs(5I3Ny zUtoAar*iYd*ro~u26vaFAygg!0n5-Yhr?G-yToQvPf{qen(zXn7aHz4fMz^%;3*Dp^GRv+*jFL zlpd8(=-(`0cIS(^atMqG5^;-Z0+-dq_^7r6j+BISF9xjoKLCXfK6>DEBFpgk_V!{M zpw-Xl16w|V%9>D_uxJFHj{jviw=HgB&4=^#X?;T`7<~B;yX@SpxL#u4}rt*kaMp(Mj zcvz<>ANG>fnP-eo{^7aR%I1UNFOz-qV0u-h#Of~26$>AtQBAffbNpRZ=ESFB6}FL5 z;5fFO9YSsaH-DjV?#1f>-iNap=H%_m;Js`lMmDaMM)JPUh@7k6eI5Xp;`^HV732ig z%N;y|>G<@sn@UvXyuzo)xN!x=t`v{4*-!0&PjiQ*ukz>neusN>6ixbhx8`|0{G`eu z4e{r{a@t;&B=qmca7EMWxZ zjI=}QM_`=%yrRDSBGi)JZj*{-M~TIkn~}v-OAd;})%XZ+QnA8o%LWT_tiky9`O8=2 zN`|5(kHjo3@x>Q6kgZUTP?Z|^exA%);>>rE@5noSoJ=sfwqqU)ysA=u>!)s8=bg5g zCloju^d_}60D#huu^|a?-%7?~$U~)OKAMI}n;|HsE2D7m4+tR50ee<+prSl2KH1|i zGY@RXoEc@YlaVjR94Ul^u&a2gU6ZS)r?(QV3{fOP#Wr`1I|aZJpwo$#9M^DfkonOB zHo^%WHhu?{XQiy{RtX6SAevqkyUg8o$Lu&490NS7{O(`+dm-ddZKi=I>024rH`^MW zXZoe%?%kKtA=ihDw@0_PyZdDLXSM!#U^`ctscz8Pc?iAfbV^0xH!;egwVkift~rUEGChv{b)@Z4NE9gE zBkkA%eyX`&gl_6aPoVLt?2{;>Y;+e)A<=|*##~F?#`+rnnh}xrui;_Ok$(U}T@8(_ zy59HGWBx^>Q&T#&ryt23_#11KQub8EjUt?zO9sZTac+{%)stJ4#6{DkJgyh8YpC-T z1UWS`q+p+Y3uy%84QnvSkv{cU?yoA4y=vVLL|74hP(jx-(K>_LJl<&qxkNOWfr?w| z$GZvy8Icg`R9*c>`NXpe64D`%!i2u-)&{QSs~0f-@Y*`P`ej{peN^Y_TW?pte+>VU zrbbf+@SjmgdaJT)cPWD&%Hd_$*`~tqaa~p`YuE}`BW08ux1>(8S`kt&0r6`XBB}w4 z^F54w|8x9VoAYaNuoKvs`+j7AZu8E0B z*{a9V!=~jG6*r;RA(=SI)@cW0=UA)0j6o*DRFkiy`2v3a3C{#`@lQYO=Ji|Y+N(qm z7d)@3(meOqfrWl6#$!{VTPmB8pE0jBQY(uPP&M*uHl6?UBO@rm#4x9)wnp-gNM>lW8Bo9{TG7t&ZdM_4QpuVg+5gxu<7l8(5!} zGBPel<6b{SyX$6C?ho6RTyI`Y>~1IzmaSGRrE*J4ja}RF9;YM9=5$H;z*;@8WOBN< zbuevpnx6y}rkp&Z1ul;$>C)_r3-T`!vRuX?P`#t&F|~K8W{4;-|Lvu<)mzuicsvJ; zH1^sdN>WYih~;hF4RZQE%Mq3`jUM(SvcEK(t5<&qT%=Q-RU#@VLQhF}j-&8X zMXB1g%P`v(RS^kvj{$$W-fy&G zvpYhJrjHKQ!p&&9dv}Xys$^cTrjI=}HI*9#if@zkUOvD@e)AyiFt8W-X6^#KhUQ*< z2ickVd2G!tUDZn8*C6Bk+p$XIBFOV`PuUxtRrdGaF~gfZ?RXUZo7b)_JDTs6k~UaV z*q$lB-M*-)J}W;GQ;oMR9EaYI_*B~BG5aZqo6PVA^9N;&X|^OwERb(?I$`^DT%su` z^G%RcJnE~jEAsay8mmqbj)y8p(8las?8dAMBRvzsNZ}x5teNA^(6cW*!`yZx(>MV6 zBH{TpW%sx64|%Yg56>HAHgE+~DUGX>P6b~5s2dfEGTbnv1irDu->^OFWZ21Wugy3+ zQh$!uz6YwR{B}bKeQs{9+GxvSR$=?)BnEV%eFcdYrHjesK};N%YBsQS6!QdwW{BiD zZ}%l%%68?&Tomqn=BrwOYczLqN}5(IYi(_vYc&WMKh-e)Fz-KCG!b#P2ytoE3KP`X zBt^=zPPYfz^d?8qAKVl+WadUQN-j+%ge>Q`~~zVroG1yqBpUUn0lH>Ks6wlpIR#r|OIjMUY)gNZb6}^^`v^<_HAX>NG z`mYh5!pY23YsGtGs>W9pKnv@R$QTa15G_Fax|$AJS;<9^a6dXI2R6WE2M#d8ChRg7 zZR+i!`=Q_Pr{Ccwt9v>-kFPZh$Z?0mgoF6WN@-}pW?{9Hi}1%Qdr`91Xnro+9W*9q ztw+&Io8kc9R!FM1sT3-cbCwB6k%Kv{`OHwe`z$7Wci7@MoA3BN8(Ez(cCl6}Gho6k z+jW^gw(1KJ$dj-@JCa6b3!K&+z8JR3k<8L+gF3homl{P2Hc<5Mq1N#O&1R;j<6M7% zT^Gs+YP@KnRg<=By%P8MxI)Z4Y5)g)Tm1G0qGGx5BejK6?)zj%uyEqAEfAS%g)oqS z*$B_^1{`<-bMLL9}J?hv7Y~0DKtkHrb0PtglkLIP9ELzm$#(Vh7IaoyLeSLl5 zT+f8<(A|1V3U!W}oISu2JU-6d_h#u=UvZFL)Fh5h;A(MCz>_=MwgGj>i%zs)w2b`S$WwG7F2gd|xBb+<3s#VAgr@; z>K4kWHTZ~{ncGEZcHAnX`3UscMs^}U5oG=7+*qx-jZNcGmOJwOiiV#pCA-%2AD&`@rL+b9MAKm|OE>tRyToJxQmj%eSXwV|ooR}Szh za(=GYXxjchzER_sXN$NaBunx8hKz@-L-iujtj8MkhRfvituYaN%9fLeg0g6rz?%>{ zz^?UGVaC*HsntEd1z$!`1s_|TR9f}ytLyrt{-3C$VT{78l<-p=g+qL zKPW=LS$OX^6PQjKCtU~LCw_mv`f(%0Eq`JxLRRZfIBAE^;ZRLMCG7dg=G#YtH!6qT z@nl=x>C{H8?ac0~bCwHJ#Ys{lV>arNcOkkZJ>;Yvt)fQJ*2v2C`>7nt+(&7XK~~)o z0mL${8axYHS5C}c#xkws?i6QEX0tZn3%om^x{<3L8ynNK zxIwU0rEkBj#Ckg6_G)x%Kdl%gY+622r%P&C?&JVTt?g6?zo9eby8KUvk|#wo{f{o% zZ&r!b?(GRGJ~x=p<;A3=rrsIx6O!&eiWI$_EbgRW(qr5uNvuX*Bw3&O5rI|-2f_lL z@JBnESnNj0T-S!(s1p2*MlzveN#e_g9a~u2JeYr6()`kdL@7cRo(6Q)BDzH>U5mQd z^}3TiNjG(k;fYQWv>E4=Lmh2msKeoof6p532y$K(LG&3Zwz;{dBupA@TP+2;lNNs% zjnGLrf4=4QP1N16&7>Y%+61&svoa-ULD>0Xn?bt#xew~o5UE%&k)h?BZ8u!oP5r>v zhmRA!DtyIWjLJ2VgGy z)THAP-x8hM8=;l_{?wrXR_co|;`0X>-^5G*CRyvC{({4__mcV@{DLFLXfZJ{&ND_N zAJ#eavNltC2XNSF)E5g%OWx`G`8N6*Gw>A~3TT4THNtcvTz-3CcDY*~?_Wx$_xQ%N zDW4tL;y*Ec8;o<|DbN(>pE7O;jxIZ`GVwUzItgceBZFpnRg74kHYuq-YL~T_^rs37 zcWenn1MISI=w48#4-MP{8nn_Kj24E+fR>%CRL;>{D4m?IE>G}EdE>Y;MavNl&CcWT z(M$cAVJY{$+0)jv4?g{?j;;SHiYb?4XS_c1U*!Y~euL|47nsqbAWXVm^LOHLOpzv)f zZ8AH*pmfFAW}qQWO&g(m_rS>YwN@xjo&O8gK83h4B>9n`FEW~~C!^Pf|KXP_F4G~0 Y4K|->(l+bHzonR&TK<^vgX3@i1~)m|!~g&Q literal 0 HcmV?d00001 diff --git a/TEMA7/report.md b/TEMA7/report.md new file mode 100644 index 0000000..edebec7 --- /dev/null +++ b/TEMA7/report.md @@ -0,0 +1,457 @@ +# Отчет по Теме 7 + +Турханов Артем, А-03-23 + +## 1 Создание пользовательской функции +```py +>>> def uspeh(): + """Подтверждение успеха операции""" + print('Выполнено успешно!') + +>>> uspeh() +Выполнено успешно! +>>> type(uspeh) + +>>> dir() +['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'uspeh'] +>>> help(uspeh) +Help on function uspeh in module __main__: + +uspeh() + Подтверждение успеха операции +``` +При вызове функции help() мы видим, что в качестве помощи по созданной нами функции uspeh отобразилось то, что мы заключили в многомерные кавычки, когда создавали нашу функцию. Отображается именно та информация, которая была записана как аннотация в многомрных кавычках. То есть можно сделать вывод: если мы хотим сообщить пользователю, который будет использовать нашу функцию, как этой функцией пользоваться, то нам необходимо всю аннотацию к функции рописать в ее "теле" во множественных кавычках. + +```py +'__spec__', 'uspeh'] +>>> def sravnenie(a,b): + """Сравнение a и b""" + if a>b: + print(a,' больше ',b) + elif a>> n,m=16,5;sravnenie(n,m) +16 больше 5 +'__spec__', 'uspeh'] +>>> n,m='16','5';sravnenie(n,m) +16 меньше 5 +'__spec__', 'uspeh'] +>>> n,m=16,5;sravnenie(n,m) +16 больше 5 +'__spec__', 'uspeh'] +>>> n,m='16','5';sravnenie(n,m) +16 меньше 5 +'__spec__', 'uspeh'] +>>> sravnenie('12','234') +12 меньше 234 +'__spec__', 'uspeh'] +>>> sravnenie('12097','234') +12097 меньше 234 +'__spec__', 'uspeh'] +>>> n,m='66','5';sravnenie(n,m) +66 больше 5 +'__spec__', 'uspeh'] +>>> n,m='66','5000';sravnenie(n,m) +66 больше 5000 + +>>> def logistfun(b,a): + """Вычисление логистической функции""" + import math + return a/(1+math.exp(-b)) + +>>> v,w=1,0.7;z=logistfun(w,v) +>>> z +0.6681877721681662 + +>>> def slozh(a1,a2,a3,a4): + """ Сложение значений четырех аргументов""" + return a1+a2+a3+a4 + +>>> slozh(1,2,3,4) # Сложение чисел +10 +>>> slozh('1','2','3','4') # Сложение строк +'1234' +>>> b1=[1,2];b2=[-1,-2];b3=[0,2];b4=[-1,-1] +>>> q=slozh(b1,b2,b3,b4) #Сложение списков +>>> q +[1, 2, -1, -2, 0, 2, -1, -1] +>>> slozh((1,2),(3,4),(5,6),(7,8)) +(1, 2, 3, 4, 5, 6, 7, 8) +>>> slozh({'a':1, 'b':2},{'c':3, 'd':4},{'e':5, 'f':6},{'g':7, 'h':8}) + +Traceback (most recent call last): + File "", line 1, in + slozh({'a':1, 'b':2},{'c':3, 'd':4},{'e':5, 'f':6},{'g':7, 'h':8}) + File "", line 3, in slozh + return a1+a2+a3+a4 +TypeError: unsupported operand type(s) for +: 'dict' and 'dict' + +>>> slozh({1,2,3,4}, {1,2,3,4}, {5,6,7,8}, {9,10,11,12}) +Traceback (most recent call last): + File "", line 1, in + slozh({1,2,3,4}, {1,2,3,4}, {5,6,7,8}, {9,10,11,12}) + File "", line 3, in slozh + return a1+a2+a3+a4 +TypeError: unsupported operand type(s) for +: 'set' and 'set' + +>>> def inerz(x,T,ypred): + """ Модель устройства с памятью: + x- текущее значение вх.сигнала, + T -постоянная времени, + ypred - предыдущее значение выхода устройства""" + y=(x+T*ypred)/(T+1) + return y + +>>> sps=[0]+[1]*100 +>>> spsy=[] #Заготовили список для значений выхода +>>> TT=20 #Постоянная времени +>>> yy=0 #Нулевое начальное условие +>>> for xx in sps: + yy=inerz(xx,TT,yy) + spsy.append(yy) + +>>> import matplotlib.pyplot as plt +>>> plt.title('Модель устройства') +Text(0.5, 1.0, 'Модель устройства') +>>> plt.xlabel('Временные отсчеты') +Text(0.5, 0, 'Временные отсчеты') +>>> plt.ylabel('Значение на выходе устройства') +Text(0, 0.5, 'Значение на выходе устройства') +>>> t = [i for i in range(len(spsy))] + +>>> plt.plot(t, spsy) + +[] +>>> plt.show() +``` +![Figure1.PNG](Figure1.PNG) + +## 2 Функции как объекты +```py +>>> dir(inerz) +['__annotations__', '__builtins__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__getstate__', '__globals__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__type_params__'] +>>> inerz.__doc__ +'Модель устройства с памятью:\nx- текущее значение вх.сигнала,\nT -постоянная времени,\nypred - предыдущее значение выхода устройства' +>>> help(inerz) +Help on function inerz in module __main__: + +inerz(x, T, ypred) + Модель устройства с памятью: + x- текущее значение вх.сигнала, + T -постоянная времени, + ypred - предыдущее значение выхода устройства + +>>> fnkt=sravnenie +>>> v=16 +>>> fnkt(v,23) +16 меньше 23 +``` +Заметим, что функция fnkt выполняет ту же операцию, что и функция sravnenie: сравнение объектов-переменных. +```py +>>> typ_fun=8 +>>> if typ_fun==1: + def func(): + print('Функция 1') + else: + def func(): + print('Функция 2') + +>>> func() +Функция 2 +``` +Вызов функции func() выдал там результат: "Функция 2". Это произошло потому, что typ_fun=8, так что typ_fun не равно 1. В связи с этим функция func() определяется конструкцией else нашего условного блока. + +## 3 Аргументы функции +```py +>>> def fun_arg(fff,a,b,c): + """fff-имя функции, используемой + в качестве аргумента функции fun_arg""" + return a+fff(c,b) + +>>> zz=fun_arg(logistfun,-3,1,0.7) +>>> zz +-2.3318122278318336 + +>>> def logistfun(a,b=1): #Аргумент b – необязательный; значение по умолчанию=1 + """Вычисление логистической функции""" + import math + return b/(1+math.exp(-a)) + +>>> logistfun(0.7) #Вычисление со значением b по умолчанию +0.6681877721681662 +>>> logistfun(0.7,2) #Вычисление с заданным значением b +1.3363755443363323 + +>>> logistfun(b=0.5,a=0.8) # Ссылки на аргументы поменялись местами +0.34498724056380625 + +>>> b1234=[b1,b2,b3,b4] # Список списков из п.2.4 +>>> qq=slozh(*b1234) #Перед ссылкой на список или кортеж надо ставить звездочку +>>> qq +[1, 2, -1, -2, 0, 2, -1, -1] + +>>> dic4={"a1":1,"a2":2,"a3":3,"a4":4} +>>> qqq=slozh(**dic4) #Перед ссылкой на словарь надо ставить две звездочки +>>> qqq +10 +>>> e1=(-1,6);dd2={'a3':3,'a4':9} +>>> qqqq=slozh(*e1,**dd2) +>>> qqqq +17 +>>> def func4(*kort7): + """Произвольное число аргументов в составе кортежа""" + smm=0 + for elt in kort7: + smm+=elt + return smm + +>>> func4(-1,2) #Обращение к функции с 2 аргументами +1 +>>> func4(-1,2,0,3,6) #Обращение к функции с 5 аргументами +10 + +>>> def func44(a,b=7,**dict2): + smm=0 + for elt in dict2.values(): + smm+=elt + return a*smm+b + +>>> d1 = {'k1':1, 'k2':2, 'k3':3} +>>> func44(1,1,**d1) +7 +>>> d2 = {'k1':0, 'k2':3, 'k3':6} +>>> func44(-1,2,**d2) +-7 + +>>> a=90 # Числовой объект – не изменяемый тип +>>> def func3(b): + b=5*b+67 + +>>> func3(a) +>>> a +90 + +>>> sps1=[1,2,3,4] +>>> def func2(sps): + sps[1]=99 + +>>> func2(sps1) +>>> print(sps1) +[1, 99, 3, 4] +>>> kort=(1,2,3,4) #Кортеж – неизменяемый тип объекта +>>> func2(kort); kort +Traceback (most recent call last): + File "", line 1, in + func2(kort); kort + File "", line 2, in func2 + sps[1]=99 +TypeError: 'tuple' object does not support item assignment +``` +Заметим, что функция func2 изменяет только изменяемые типы. Например - списки. А числа и кортежи - это неизменяемые типы данных. + +## 4 Специальные типы пользовательских функций +```py +>>> anfun1=lambda: 1.5+math.log10(17.23) #Анонимная функция без аргументов +>>> anfun1() # Обращение к объекту-функции +2.7362852774480286 +>>> anfun2=lambda a,b : a+math.log10(b) #Анонимная функция с 2 аргументами +>>> anfun2(17,234) +19.369215857410143 +>>> anfun3=lambda a,b=234: a+math.log10(b) #Функция с необязательным вторым аргументом +>>> anfun3(100) +102.36921585741014 + +>>> def func5(diap,shag): + """ Итератор, возвращающий значения + из диапазона от 1 до diap с шагом shag""" + for j in range(1,diap+1,shag): + yield j + + +>>> for mm in func5(7,3): + print(mm) + + +1 +4 +7 +>>> alp=func5(7,3) +>>> print(alp.__next__()) +1 +>>> print(alp.__next__()) +4 +>>> print(alp.__next__()) +7 +>>> print(alp.__next__()) +Traceback (most recent call last): + File "", line 1, in + print(alp.__next__()) +StopIteration +``` +Так как диапазон генерации был указан до 7 включительно. А шаг был равен 3, то после трех вызовов print(alp.__next__()) мы прошлись по всему диапазону. Так что дальнейший вызов будет сопутсвоваться ошибкой. + +## 5 Локализация объектов +```py +>>> glb=10 +>>> def func7(arg): + loc1=15 + glb=8 + return loc1*arg + +>>> res=func7(glb) +>>> res +150 +>>> glb +10 +``` +Переменная glb, объявленная до функции, является глобальной переменной. А одноименная переменнная, объявленная в теле функции - локальной переменной, которая распространяется на пространство имен внутри функции. Поэтому глобальная одноименная переменная не поменялась после того, как функция была вызвана. При получении результата выполнения функции использовались значения локальной переменной loc1=15, объявленной в теле функции, и глобальной переменной glb=10, объявленной вне функции, но переданной последней в качестве аргумента. + +```py +>>> def func8(arg): + loc1=15 + print(glb) + glb=8 + return loc1*arg + + +cres=func8(glb) +Traceback (most recent call last): + File "", line 1, in + res=func8(glb) + File "", line 3, in func8 + print(glb) +UnboundLocalError: cannot access local variable 'glb' where it is not associated with a value +``` +Ошибка возникает, потому что мы, имея глобально определенную переменную glb = 10, определяем локальную переменную с таким же именем внутри функции. Но при этом мы пытаемся вызвать print(glb) до того, как объявлена локальная переменная. Происходит конфликт: вроде есть глобальная переменная, но и локальная объявлена. + +```py +>>> glb=11 +>>> def func7(arg): + loc1=15 + global glb + print(glb) + glb=8 + return loc1*arg + + +>>> res=func7(glb); res +11 +165 +``` +Теперь мы объявили в теле функции переменную glb как глобальную. Поэтому, вызов print(glb) выдает значение 11. При этом, если мы потом вызывваем инструкцию glb=8, то переменная glb глобально меняет свое значение. + +```py +>>> globals().keys() #Перечень глобальных объектов +dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'func4', 'func44', 'd1', 'd2', 'a', 'func3', 'func2', 'sps1', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'func88']) +>>> locals().keys() #Перечень локальных объектов +dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'func4', 'func44', 'd1', 'd2', 'a', 'func3', 'func2', 'sps1', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'func88']) +>>> globals().keys() == locals().keys() +True +``` +Сейчас нет различия между перечнями, так как эти функции отображают имена локальных и глобальный переменных именно на том уровне, где они вызываются. На нашем уровне нет различий. + +```py +>>> def func8(arg): + loc1=15 + glb=8 + print(globals().keys()) #Перечень глобальных объектов «изнутри» функции + print(locals().keys()) #Перечень локальных объектов «изнутри» функции + return loc1*arg + + +>>> hh=func8(glb) +dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'func4', 'func44', 'd1', 'd2', 'a', 'func3', 'func2', 'sps1', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'func88']) +dict_keys(['arg', 'loc1', 'glb']) +>>> 'glb' in globals().keys() +True +``` +Внутри функции - локальные переменные: arg, loc1 и glb. Только glb - это не на glb, что объявлена вне функции. Первая - локальная, а вторая - глобальная. Поэтому имя glb встречается как в списке глобальных перемнных, так в списке локальных. +```py +>>> def func9(arg2,arg3): + def func9_1(arg1): + loc1=15 + glb1=8 + print('glob_func9_1:',globals().keys()) + print('locl_func9_1:',locals().keys()) + return loc1*arg1 + loc1=5 + glb=func9_1(loc1) + print('loc_func9:',locals().keys()) + print('glob_func9:',globals().keys()) + return arg2+arg3*glb + + +>>> kk=func9(10,1) +glob_func9_1: dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'func4', 'func44', 'd1', 'd2', 'a', 'func3', 'func2', 'sps1', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'func88', 'hh', 'func9']) +locl_func9_1: dict_keys(['arg1', 'loc1', 'glb1']) +loc_func9: dict_keys(['arg2', 'arg3', 'func9_1', 'loc1', 'glb']) +glob_func9: dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'func4', 'func44', 'd1', 'd2', 'a', 'func3', 'func2', 'sps1', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'func88', 'hh', 'func9']) +``` + +glob_func9_1 и glob_func9 одинаковые, так как для обоих функций все глобальные переменные, объявленные вне их обоих - общие. locl_func9_1 и loc_func9 отличаются. Так как locl_func9_1 - список локальных перемнных вложенной функции, а loc_func9 - внешней функции. + +```py +>>> znach=input('k1,T,k2,Xm,A,F,N=').split(',') +k1,T,k2,Xm,A,F,N=100, 10, 200, 5, 1, 50, 100 +>>> k1=int(znach[0]); k1 +100 +>>> T =int(znach[1]); T +10 +>>> k2 =int(znach[2]); k2 +200 +>>> Xm =int(znach[3]); Xm +5 +>>> A =int(znach[4]); A +1 +>>> F =int(znach[5]); F +50 +>>> N =int(znach[6]); N +100 +>>> vhod=[] +>>> for i in range(N): + vhod.append(A*math.sin((2*i*math.pi)/F)) + +>>> vhod +[0.0, 0.12533323356430426, 0.2486898871648548, 0.3681245526846779, 0.4817536741017153, 0.5877852522924731, 0.6845471059286886, 0.7705132427757893, 0.8443279255020151, 0.9048270524660196, 0.9510565162951535, 0.9822872507286886, 0.9980267284282716, 0.9980267284282716, 0.9822872507286887, 0.9510565162951536, 0.9048270524660195, 0.844327925502015, 0.7705132427757893, 0.6845471059286888, 0.5877852522924732, 0.4817536741017152, 0.36812455268467814, 0.24868988716485524, 0.12533323356430454, 1.2246467991473532e-16, -0.12533323356430429, -0.24868988716485457, -0.3681245526846779, -0.4817536741017154, -0.5877852522924727, -0.6845471059286884, -0.7705132427757894, -0.8443279255020153, -0.9048270524660198, -0.9510565162951535, -0.9822872507286887, -0.9980267284282716, -0.9980267284282716, -0.9822872507286887, -0.9510565162951536, -0.9048270524660199, -0.844327925502015, -0.7705132427757896, -0.684547105928689, -0.5877852522924734, -0.4817536741017161, -0.36812455268467786, -0.24868988716485535, -0.12533323356430465, -2.4492935982947064e-16, 0.12533323356430418, 0.24868988716485488, 0.3681245526846782, 0.4817536741017149, 0.5877852522924729, 0.6845471059286886, 0.7705132427757887, 0.8443279255020152, 0.9048270524660194, 0.9510565162951532, 0.9822872507286886, 0.9980267284282716, 0.9980267284282716, 0.9822872507286886, 0.9510565162951536, 0.9048270524660192, 0.8443279255020151, 0.7705132427757886, 0.6845471059286884, 0.5877852522924734, 0.48175367410171466, 0.368124552684678, 0.2486898871648555, 0.1253332335643039, 3.6739403974420594e-16, -0.12533323356430318, -0.24868988716485477, -0.36812455268467725, -0.48175367410171555, -0.5877852522924728, -0.6845471059286878, -0.770513242775788, -0.8443279255020156, -0.9048270524660197, -0.9510565162951534, -0.9822872507286885, -0.9980267284282714, -0.9980267284282716, -0.9822872507286886, -0.9510565162951538, -0.90482705246602, -0.8443279255020161, -0.7705132427757898, -0.6845471059286885, -0.5877852522924735, -0.4817536741017163, -0.3681245526846781, -0.2486898871648556, -0.125333233564304] + +>>> def realdvig(xtt,kk1,TT,yti1,ytin1): + #Модель реального двигателя + yp=kk1*xtt #усилитель + yti1=yp+yti1 #Интегратор + ytin1=(yti1+TT*ytin1)/(TT+1) + return [yti1,ytin1] + +>>> def tahogen(xtt,kk2,yti2): + #Модель тахогенератора + yp=kk2*xtt #усилитель + yti2=yp+yti2 #интегратор + return yti2 + +>>> def nechus(xtt,gran): + #зона нечувствит + ytt = None + if xtt(-gran): + ytt=0 + elif xtt>=gran: + ytt=xtt-gran + elif xtt<=(-gran): + ytt=xtt+gran + return ytt + +>>> yi1=0;yin1=0;yi2=0 +>>> vyhod=[] +>>> for xt in vhod: + xt1=xt-yi2 #отрицательная обратная связь + [yi1,yin1]=realdvig(xt1,k1,T,yi1,yin1) + yi2=tahogen(yin1,k2,yi2) + yt=nechus(yin1,Xm) + vyhod.append(yt) + + +>>> vyhod +[0, 0, -2062.187673241671, 3752502.2801429303, -6811818291.756302, 12365297400107.988, -2.2446367934687616e+16, 4.074624468431861e+19, -7.396548344503773e+22, 1.342674100065877e+26, -2.4373175906128126e+29, 4.4243923653693636e+32, -8.031471925583947e+35, 1.4579299475411253e+39, -2.6465382082285303e+42, 4.8041845216406776e+45, -8.720897679168846e+48, 1.5830794172859812e+52, -2.873718433161771e+55, 5.216578235381038e+58, -9.469504100271485e+61, 1.7189717830141683e+65, -3.1203999275043293e+68, 5.664372041346515e+71, -1.0282371288365432e+75, 1.866529220539488e+78, -3.3882566904288307e+81, 6.150604701981334e+84, -1.116501542132187e+88, 2.026753065730243e+91, -3.6791064180730074e+94, 6.6785758286883414e+97, -1.212342618860748e+101, 2.2007306096497498e+104, -3.994922838562404e+107, 7.25186827324016e+110, -1.3164107437767657e+114, 2.3896424769952626e+117, -4.3378491058778625e+120, 7.874372441280753e+123, -1.4294121310025034e+127, 2.5947706379059605e+130, -4.710212343459617e+133, 8.550312692910703e+136, -1.552113616450096e+140, 2.8175071075087226e+143, -5.1145394362419765e+146, 9.284276009512575e+149, -1.6853478616277227e+153, 3.059363392237472e+156, -5.5535741782845336e+159, 1.008124312135154e+163, -1.8300190041432215e+166, 3.321980747029509e+169, -6.030295892364987e+172, 1.0946622307185519e+176, -1.9871087932498902e+179, 3.607141313004942e+182, -6.547939647887588e+185, 1.1886286095251596e+189, -2.1576832520707578e+192, 3.916780211210369e+195, -7.110018214307417e+198, 1.2906611114684283e+202, -2.3428999117116665e+205, 4.252998674495826e+208, -7.72034589904807e+211, 1.401452136780036e+215, -2.5440156663544065e+218, 4.618078306638927e+221, -8.38306443167872e+224, 1.5217535216899362e+228, -2.7623953026351666e+231, 5.0144965654797075e+234, -9.102671070002446e+237, 1.652381640443558e+241, -2.999520761189287e+244, 5.444943575135833e+247, -9.8840491187859e+250, 1.7942229452788257e+254, -3.257001193211853e+257, 5.912340381387176e+260, -1.0732501068232718e+264, 1.948239981957719e+267, -3.536583880278735e+270, 6.419858774112167e+273, -1.1653784577080823e+277, 2.1154779216742002e+280, -3.840166091530762e+283, 6.9709428112924446e+286, -1.2654151544507626e+290, 2.2970716536645406e+293, -4.1698079586848016e+296, 7.569332190649337e+299, -1.374039053598805e+303, 2.494253486651031e+306, -inf, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None] +``` \ No newline at end of file