From baec87278bfbf0bc0eba203947a6eb9f5df3aa01 Mon Sep 17 00:00:00 2001 From: Cedric Fritzsch Date: Sun, 3 May 2026 17:22:04 +0200 Subject: [PATCH] Stufe 7: Reproduzierbare Abbildungen (TikZ + mplstyle) --- 20_Hauptteil.tex | 4 ++-- aufbau.png | Bin 43836 -> 0 bytes blockdiagramm.tex | 19 +++++++++++++++++++ paper.tex | 26 +++++++++++++------------- plot.py | 42 +++++++++++++++++++----------------------- thn.mplstyle | 26 ++++++++++++++++++++++++++ 6 files changed, 79 insertions(+), 38 deletions(-) delete mode 100644 aufbau.png create mode 100644 blockdiagramm.tex create mode 100644 thn.mplstyle diff --git a/20_Hauptteil.tex b/20_Hauptteil.tex index 788e0d1..29303b7 100644 --- a/20_Hauptteil.tex +++ b/20_Hauptteil.tex @@ -9,8 +9,8 @@ automatisierte Auswertung erfolgte in Python~\cite{python2024}. \begin{figure}[ht] \centering -\includegraphics[width=0.8\textwidth]{aufbau.png} -\caption{Multiplot der Frequenzgangmessung (BORIS-Screenshot).} +\input{blockdiagramm.tex} +\caption{Messaufbau (TikZ, Vektorgrafik).} \label{fig:setup} \end{figure} diff --git a/aufbau.png b/aufbau.png deleted file mode 100644 index b54946bd9a230ae4b647d83d645dd5ebe312b49f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43836 zcmeFZc~p}5|2Rt1V&$YWZBCieW>%&)IcbSXS+-f4d#;R`ODf_LkSJ1FIcepT8JVf6 zxuTLAsHkL3nY$%u3W((n0;VD&+kLQ_X+FQt@BF^!+1p1+3`7+>>in{P$fM1Iu?2lW5O4>J#0}o6551%;< z0+lAJO1+l?&nrStxJH0LYOj?47d0aCFMvRW?@k^)?0DIW$69e^yHlD#QZJ~B5-=tG zW@*^yyUk-BM76=wkoe!L_uo}Dy-UjaCL)&qMdiXz@rHu!XQ^zk1 zuT}yDTrVI?&|mJZ#4QK5v~a2a%v|*4PJ3(B;xBh*M?+P<++F@-K<&%j^<$6lI}f!qIO zy8p-F`~TF0navF>8jZ%JK7RE-#M2k_^}Mk-F!(~&LQ~!M(>-;UgpQ?6$;kF=*Ox;;pv(c2^&nd3UoT;# ziyESX>hpcT`Oa(>{p@*!r@YsLka@~8d$u5 zvoreAX~RR8E{^z$Th7c&>|i&f3~9Xqp7Fy^Hwye*8Kt#;1xj zDys?~R1$)xnjx5yTl>h1Krd9JZ+^J4@$tF27UMQv-|Ri=9$b{?V;<%VE`wV8Z3F#J zqFN=+07<+a;Zt)AyQc7|`zQ7}$R*x|%NHs|qS`fbgm>DCtxjPU)n;+0 z@hLqQNi87ISn(9>n>%sgM?qts?17K08g|8H+FIF0vUbw{y&LMzUs zA<-!==3^9Rpab?)?ZA|o@K(nY!tB9`O~O(q{{nOM`I~)k1(A>}Nzby7ekK-b&6*uP z!$;NjVMYxL*MTjZ>(G*HI)!X*5C44iVx?GO0Z>okz=8IQPYU0(soN7_^;Aq->TEgR z9j{-N)QI>OXcfY&oqv6@`uR`ok-t81&f5eNz^nVPvt<$VkN6@xf`Nsn*32tnL4m3Z zp^hrD624QlAfg~RH=dODiWb*ye)LRC1WwpcE^-z?f^3C+Bb1%s0PhH=IM1d~G1sR; z)2y#a#_(>r=lc@agQz5y9Z~iOsjwe>5~i!4nZIu- z$n*S0fV(c=bMx@5J+ZX2xF+J0Mt#@~(-E$s;I74R*~Ffb@im6d$D@biWJc9@CH3<| zrEDh^Ft*-wAcF1e&^1~pyE~WLH~PGs-l%47jh*?^h^DQQmYznhY>COsPn?J-o1bj7 zv4_OWEUA?7VRj7u{P4s?iTcFMQenLol-OS`v+Ld9Q++X@>Ie=F+7X*vrz|j}D z<@8s)-qM@mm0BkR32RJj@0c+Nrva`Y2_dKEyDkKfKfW_;vZUN{5nNk!uu4wZ%DLr4B)5 z8aWj3<;Q))Yx4XIPe3brZUsurhhC52X)4h0Cm2QCT{}T9f2XhnZb2aZsgWr#uND0; zbCxUb%Qx_P_QRMn>)^Yd&X6vXiR}9F*_GT54-&wjp0c|eou+2bt>6viyj~*`+`EA) zL+sM(8yB=S$DzbrWPpeY6}{Y3!I(>?xQYy4Z$LXbScR%Q4LW@obT*c^^f3K?XZuVe zbhj`LDz!83C9t95M4SdM^GSv-jfk7RUZZHxrD4_0GWpnn&;6>Mi;E@jnxX1Ne?F{<$Wr4?l||Zh z+^JLku$9WyRi}MI?mpP;ACn$EBuW@*zAE0AY6R{WX^o0u5hP$2w1`t8(QdJ%xYWr9 zm!OZFlINy9xtMnZauSXZWL^n2W|XI{XBp zofTQxb!Dd2f|4~d6e9z0uc@s3Q%c!SydA}e-doffc`W0i|3=-4sAnd}YnJo)6Uo<6 z#LI173D+PDpAF7{hCxc~NJFtZrx1zBSnKgl8yw={hQ8jCo=jG`#WZtIMbyVP5CE}G z!~Q)TtMMGAae14Ly2qpjk%3gVK-&f63*63cWlwDmGs^VBD2(Y5}f30^5c zUuueDrq#y^>+lIY-(|jW1wUS!8WRHg>&VTSd~f|h3#iLm zU%!-|71L3&!)pyJA>xC_ZlD}sXSZ2fQt-9s@%9a#^3UU|!_%zGs_jxAV7teU_s)MP zEPsN<1k07QmPZJ7 z$ajuhc^@V}^PRh2>uq?YnRfViTF>PGT|+aNS?T-8&^$1Ocd)bL&YnxV;!kDIRFT`( z)wH(cTo>0}M=5n*Qm0MK-I`36q2Rta!e99E3~J*B=6Iva%mGP9!$3s$g>fZ*SZ<#` z`p{pQ1mka@rkntj?#@h$PVTg+KNX-0)2T=zuI_8IeZv2UDO>}XukMJC@sQOD{gAC#|uyqtftZZ4_C zx70lcgLZW!G3?gTV|w3=ekw%Y!~+mV^BG=GF6w4_8skFBlIHPuEF5=Nb@_T3=nRE3 zrcFbH#x7ZX2M0^?`zf+_t|0PjmE3Y-3tLt&!PPW@?v%_wHsRs1*w;bOhgcRsJ73r^ z`e8IuHhZpoC=zt+-m9aDCZMsEN}1j}vGi<8pP-9faT7Iv8X`ugblOno9^gigP%_x! z095z2mH`7r)ij$sdTf2oTB{s846|oN{Pv2}#}+*&19YLsS)Dc`wkvpElUZ6fm!U1% zZ(%Y#f!}yD^?xakg@xwl^19b9EL2@|Iv@{rx!Kn*04>p?wzRvAZLK1l;@>v}#q2b) z@MSWtZ7px*E>KXS^-iI_(KF*BzAXbSH&EpTM+9g_eA-)99X;G+!JXMQa=%gS_SU!+ z4O&-9eq9Q9++q!LCvJA!lV8DoO{(^hVHa3<075e^>h_Fx@<}k6jf^;o z`*T3;&>&}-72r-xbe7j1=rTw>5;dK79o4}K4H8_V?BmRCdsaAA-V*WN3i^}w!PDoG zKwmWQW>p*`;aXW`i>^%??(lBIy>LJsFHh#ScG`GFH~W%+UzeJZrWF(+J~7`PDw0*k zQVQQ-?f%-jVR_Gi!Tu-y+bfcc?&+Mn2XJ-srdgR+Dn>~=DM_2G>4~$(hY_H%d;u6`unP~}%xp!7)9m!z7lL02!@oLU< za9WN<5H#H9_Yla2wDyD^jQhGZJhd@^POJ04_ES9 z$&Ft?Ufsu%xp?QAuTCA zX%#sbu5+9#nU@6!hxo&E$KnR9=KHU%?_cqi`H`@-aB8E=sW{ZMp@rT}R5=-%l|GAh z2kdx&2kW4nCB<_V@;bqYH)FOtlVv22Aq>S*yb+0&H&7!CpJAnK=&v2#%_Vt0cMRNCbL^fXVMK%Hlh*L<5ABGX;MxrticPFuyh zpq<>wAMYr_b%$#lwqwOS(#d3DMXWr2)u0+u!Xp#hL#nMjaWY{qyFwG0%Oco*@TmJV zr#OpMHFz`I(67>$1l|^GW$tH*$#Q?BTVfP6HfZwou9_0Ld^o z^@yz=HL(P}(^_p!_x7(&2Muet9ibBl2-Ig%9Nj@a(FXV<8(q*g4?05{6VnF(X$s8^ z3FuKcEEYK8rYq3f0Xi{!+KhPHD-BYr^5x5@kE<0XfBln(vP8pC+fxv-;ynJimGe++zY*G z#rJE;z~TM3>KS?9L%XAHXb>mAq$PRkX{3bc%R$;ysTvo#B9YuGsbmpld}L z^}mV-+NCoe%x6Cw;gz)*1m>lo>>(4+WBdG4;k5X5dbFtiY3<74hwg=Bs*D#Xo*L$y zL12>lg3H@zL0;1vg}1lK@tAkkXi^9zfs+MZp7@Ka@vPHWV_jyO znoKldM@P(}Cx?I_sL8gBi1)%2VCV#|oOIM&IgJ`Te@(t#%PQLwzUzXtw}oLITV;W3Qw< zL$*f(xNWWMDTElLD#m<%twF%oP55#Qp~ByUwua398lFL6Ld<5f?^H^|a6;CHK&FP( zp8Hor>1k_pDj4BhK!nnsgt?ehBvID@dQu^T!IGjw{bMji06zkF=n9FAFn$X#CUGCS zB?UEw0OF|nX5EgE+Rtw|y9jbibHP%E8<}N=e5Zc>_;*UBD%x(X`yENvA6EN*Dgh$7 z>nOpwuh%UBA^nLniAxH5ok}l|}y$G!w*POK@Vq}eUJ+E>+rk5ac zOsx$x5#D#1$O3q<9P@DpqyX1Dc7(IkurE`AKCFmz7cy6oot4)50#5T%>}aiv`JjMo zZ;Q*7Vmr}=)W|*v4JL0Jna_3oO=W;}DJDS*XYv}GRqWof|8e)pixo#@ zSfUE)|1ed{>nA%Gr4W53kuA;|hwrtp?c76Tu1Z^**q+js-TfwS7#OF;w4HOd`;G&m(Em*>R;g@NH;-9R9(0?G-X1{j*j zfBY=ufR4z-nh+i-$H?e=x}FP!KrVPgTml?a@OuRaRJ)aX05GAT&dQpg`!ydO<#MYA z*LTA&YlCUR^B+X>Y!c6L_`K$!-M{FAK*YDEca>!}B^bcO$yA(OsGnDfwUMEbp@tPZ z70;E7zsJ-6_wQ3TJW0t(QFO%fhNZEcm zrp>Sbw)V+7PlMK$=6;(GA&?2V)Bo<(CRyA2DF&ULO5ShS)!Nef9-k77PsNXKbV-x^ zP~iO^+g$y!0LX10ioCrZbj5{Za382DdgN1fyz|eoixnooq+2B`pKkh3fbN9`Dzn)q z^OG%sI^=(1`KSt-G|=q)5*2wH$lyI_3|IuZoWtL`0VrkOs0mtqjq(X7SvLD90kKEl z`w@`Am(Ta#@-Pl8-nXYJi93bACG{;`-=Ot{sOwxCm9@?*C9B+%-ujB0^;YtS!mmME z)+~Dw|LzCSWPH(}vLbb;r*;2HI)|NM#E%CYrJafY`rFLoznsHaKpd>M`x@k_+1LGa zsh$Uct{607EF!A{ulZ-ZrLt0cey_~|U)AcGqJ0gl=Pe0; zL%mX2vi;-gbq7-C?uz%B%;%v1p9QEXIeeXxJAaCO6bliPOQc9&=+ScM%^eIB*cRJGVW&=4jvi*8rGP^hQpJU7B6C;l+@NlO z78G->FD8+g-{eUxBK3oERQD2-R{S4Begm?2 zDs}}Nz0M}Mme&;D9YtP>?TuR znp@7!s-%{jDSU#|SA5?#ahx{0ib7gCHD9l=Pp=OjDZ}GVRGsqrJyRKLWUE`2sh& zHjWS6&Dt5CwR87h9OA{BR43Gv0sfyp2ET0V0}`@b4QUoF2Cxz!RSC_fsd`la@$lcv zC4C*)+;d;pJQl8S?v1@`O0^Hj>!|2LB+@^owRH03Uht|*5J2L#DAfykKEV@MDn2WJ zFM*oALGIie4Mb3WTA@Q^)gzD<6Wbr?0pYt5@6wggtrZl-qMUR^2V*sJ(JH0R0`ovR1T&rhA`78kK%T%yZ<<%S`ol?b$3M< zI~9?rKfie;*1i0g>zS(Qh59^4oPlO99svpVc@a0Q)92hp_Jx*4k%t!p^Ho33B(2L3uRX_=2!-vYB`%cP+VbnWc z*-SZc<0U}Tl>`Ir0KRq1B0xpFeA`(v*5v~f9QZXZ1yD)C@PBSirVUF`S7viKAYwwN z4QCf_*6%APDQDcYU2<^SHA~VDLx*3x}|6#DrIeLnkLV9i#&ki{ zoDr89SCxLf3sIJ6oA08K)CczZMG;);QHH`Y9K)gRQZFBf!6yp60EMMgHh;Ly-&ZGS z)CQ=03B!+2w-@AqSOETj*>bSYZR(5Ou`Df)o`mrd#;#>35v2xx47)fR7 zmTmM_$^1}~t+6wZGRzQ$<6m1eYe;s&CbFXecl&?xAg)M^=KDU>*E1rN8u5c6UCD|q zaP?Ch5mjOS&-wr?OWjGW*1Izjd-we|+K>jq~0(~z2T^lF;d=)cM+W7CSKWZLz_nYYY3QCtBOdD5`FxYZbeav(!`|S4%Js|t~ zxr+C8{P?*QWIO6Bo@|c{H32Ni#Vq~jMzN-{-@(z74Mp0Q2NwN%t-=@?7iL&CcS0X+=pJ5d8rdmg<8aO*78>R(>W?z~7ri3gO&i}=KUAA- z-Q4lxWUxPbe6r-;K)V^k0NgiTJ~5<1^QSeb6MQ}A)6y@Ascjw=G@^@YDG&Ro9)v-`M zo+{0me{C3(86%(0ATSVA&te$Wg1`u&+*uHWZ`1!h@sP)T^vOSUx1_60Zr5y~VvWK5 zl^dDkM!X@FB(QzVIdOx|vm}*m>ilkZgcDTK+dM~v%50CCiec)#(8D!iS;`Kza<+9 zhC1FfLG0VqOWwwzZLR?cxSLCXiba!+j`@S_cI~93OZUF@b{71(=XAfN9&VqF1^2K` zND?}iGiji>x(;AUDdPg%pD|8_>*g(PmS9!@0h03ib7j-ZA;HHccCArIO$)BC$b#E` zF%%DF*u-VPN(WV_16<$R#f-UXE`$Y4 z>dl3y9#}p=*$R0o88PI4e{=C49-~vE5BE$oLgitzi`LBxfLe#|@KF;6!#7O@EmqI% zY)G4Mynp26&%I(p~&@D^DKVk+Iaf-jn34Z01bH7O!SDwF3#vT6~XFsLPDtBj759Hi`Vs zJ*33=m7zn=%o?=S?^@ni=+$rZoOQ6gEAaez`!hB}0tY|Ik=ZZQ>iqL;EW}%N?D2Bm z^$Xs3Pn7FyQ`!9D-SP5vPal6~3P3G@&y}dplhRl4rvOzWdQ})5+OzGdtM>ty9h)>q z!>3Qz*Y}R!nwWsfkcU%v8Z2d(Hwg6f;1(71%O5$dILZ#!4>@?R$JnwW@uGDj>}n(E z)2$zXOh3B+TtnJpr>-?i5mCuTgFAAg$ZzX+{rog#0&l&SJjZ)JWz@ zyn`>y3wpc;6RLaZ_a4Up-TQz$U^)NxE^w*9l+qBArC%%6UqRWiU!Z*7dGDn<%%J&E@$n+V9-G9 zm@);Tyf!cUraS)c^~GlnT!U1n|I4JDH@pVrkGz(5 zAG;Aexa4e$i_?z{7#+!5sD*o59BTE44IO!#+`~r-coyO^^YnuL>1`ibtGHmdOP=)x zbz}GUJa>oI*%vbi;QnER!%VHd>y*B=P&=Vg4V*6}Jqzw|mj}1m>4@H4O&b$Xm=Ugy zJus0&Y&z|Gt|C)edn0TCzU1_~nybWUYZkx1V`>Cf$VOj05=uRiqU zc;ILU)}^?PA5!^h)WBJzh++*#e~7GWp?cTJ4j^Clv^xfM7uj(`JfKiP2_-De4a?am z?Cro=d4@J57KsRMa9-Ru;oAM|JuwlGq@mm8(SU8Wguu^T*1ei`4m}v_T6LZ=l8O9-sl z6gNl3Z2P*vK@)0Fy_cL+479-L96DGi<}lSZn14C5`LXZ?>U z`+w=)pz!ith7KB4zzJEPW@mxv(Ch?3jo&XSRb5sBb}mbl4wgHuX96uo4sjiLHGZ(D z3D5idHlh+!Y_Av9(PfK}wPkUUvbpyy^uGNLfo+joT8)!ld1nYFDJLPsWFnFxg&JtRkQ$`%UUWOhhz&BuAovQB=3&_NaHgYa@CTNb-_ zMb$f>@y%p$kX_vpe1VTkhTkgsT~BO{aCVTUX)(19Ih#W!*ruV*ppLO=CtV6U(jsE} zCbl)YBVd&_X2V4j+^vbbgufHJi(Cm7(Gd(qx$K2o(<}ai9pCrKhyKkq$>gpQPPFixwy5 z_wXp)7`9zy$JMy}GyP@BZqYirv;S+hk{6W=%R|Wac+feKp0r^-GVewoIwC48(X+orTuQ zR)r9;m&}b69=3D){ykTkdmw7!NJJ{P+>JCGDD1DZE$we#AX-aLR%eOG%&)TR_(&{- zA)E4zGF$zjxc+p(__X7CGcR;YY(hvmKVA=@THWW;7`I}eG54|C{^T1dU2qsPi{TvE z&w0R$>}p`$8uduR>JJVZ;=~>SJ?i`^#vXSQR_I`K06DzHcX1{w7O(H3Uc&Q4_1o`9 z1`5RPkpAe+mAy8N?nf$n1T(%|9-+H>6lYuKBQT=rnDpn#v1B5l347Nmm4_)bon=5B zh>T&{1co7N?iS(ZGI}?J<`#_8T~9tD$s4>_bcl8o8;pC|Q^eTmK$2Y;v4prtGQa7u zm8F;D>w-i5^~4aQ)zrtNi*0?v1z~!AKSKajlU>D3er%*yqRk3Q>Za8r{8{Fi237K( zk$j}Ouq5g>6%xP;#noHA@mgN&zrr=7Ip=)`ql-umA23wGUgqT^F1BfAMTbE zb}*`Zqxy&7^iOZQVjf}l4=2{?DFO$pJ43wt?hWcw+p^rS{WUk-%28V?+)Jak)EZe* zgh9q1V-AZ9~emLhCkTFhynWP5@de| z`8PZOzhP?eFo3b4JvGte&zovb15PEgm*ncGn-N_$|Cg>srd-wuE>O{q@nD6Hg6Xyb zX>85NU0wP*vce*YG9e0)dkSiFXiaE^m0YJB8ox}0L z+o&wNhCiQNG*JkyksA%%$BnBX6G0~VIqo)u9_(a7H#gzb>^)qx-^t(oh9GL49hVV0@U% zdELZRRY7<07&iGuNP!!AVp(8Y;VN45u;$F&#^J!%kB7Sf?G>Gm8cjnRtfU8v^xUDY z=t?)z;0g`|T5Vm2&DhTw7$@ductsV@cju-Sis}`imAuiCv#G(d;R#f@1nhY^bG|zW zmd4saEzU9>`ZMP39-tEvXw!PaQLqk2%6pobk-eDx2dmSNn!bg_-x2qmsbZxuP|BS4 zjj=3JvnhN4PbHZGhLs-HsFhbz^=YLL9Oqfc$IXQy2R(6)CNrEqnC!5ptVNfe!_7FW zA)ENzkF?D<*%Vz+GnSP=3!(6G+btx)Tw{18qd(*AHHzf+06(d56S2K|z*3lIUE+u^ zoB2^Vk>)};qi*V1EdIETqk@NJqGUtz5_;Yg0(DsqPQeLm()xTk?IB!DQ;n$ zaISG2;Je8#Y<7f<88!OjTY60RVQ-@IcaU4yWM%VvDQ6H?dqOLMU(`1j3v<*cmR&U! z_1Ze%%*GP}dDe0}>}5PXu$#iS*<~D^Kv|sXA8*ll-qn+uLp0pYnBL*v)5N%7 z@*x;GTlXZA9L+ggi4g`?&YG>rac+-8u_f)I^(-iiG+KPC%p5Ua+1Ah($IKIhmSNCuKX=uQqI+MEnt_8) z+D1PWvMzO<=^dUD>eLC?QGfZm=98iXD6!;Wfij&3pK9=-b5vt;`$bKHe4d3IIQOiW zBXY)g8D&0^OZsB&| zblPU&AXsrgQXNOv!F%k(MMeHdg7*dXBnnJ4nCAI@2#O~wO0hVwQRZBrenzV>ojiDt zvnwjSV8>laDWhgK{ji6#iEB<WYkQOj)Y$+ISP z#|rX7_7xkS>n02bm6Z#&SFH)km1MHi>!H%(*EN8%zXmXQ%A|}=_XBg=h{lxqM2q(8 zYW!CCdZ5z0nx?h5@`H9phiRm%Vx!436x#Pf*GzGE4-UKo2h2%l{ zOZ=c^v8MAniu}7D#&868R9_~#7ebp*W8|xP2`z;@qmGIY6BxUGU~A<(ZU18L$7Z9h zp(Yx+C!5^e5)Y0{|5p?FO^Z(HWbAg&X(e}`>Lpzy0DaCb=JL5g*R+`V@!o{c6_dd_ zJ!zNTpPVMcO3&Xwrjj13^R>rR(1}7mb!xzt;6O#z_bIOL=cIrSddYB6X$9%k(=N2x z49FQQZ(@Tmv%t21Y|AgI7s=!*=Wp*`vFG&kM~}l;QM_b*veFD@{hmL@E0x(M^5{%= zAN;8%m6Ipnz0j^bFsnthEePg50@iD~+X{e^GBup4zk9{RrD3wJGL|cECBNphj2wZ; zPL@abMwPUdnQO1$=MD+_&Y0&v5*jrpxE*hr@OJ^Yp==MWD9bn0`KGj&%ds zAu`d-kD```IioWq(xNHGeLya)fHaWt8L?!g7IT`t4?L8}ByVKSoqLON)>xgGf1T{&f=eaCI%L7IifRn=U26zoV zAYmLIu;fwA$D5jErX!DhXm?Ed^9^bzErXiicMp8}L(HH~B@-(`x|}J|!LZ8lhq3|w zh&#fCT00$r{PZ}2j<2sj#tQ2(=R|S+==Ct_xwHtekfVWS=5$AoN;u^(@#DT|Mj9PW z6=Au?(>jR^t6_4G>dn@T2UG+-*B zKMr3RYzGcvO8E6*cE98O`(f80y*DFW?TRfbfev<8&nXme2r@ScmY1kiM2`U5_%M$3 z?p{f6b?c)@&p1FGiM`X1z~1hR%8HScon}Eiiew-O12A zpl}2sm2B2xGl~Nr~n~3(&-LzcV&+kLCtLPg_r?Vh&#vt z5%olU$Lj(U)C*xOB)KML)>#3p9SLQhgc>G{r=BzAF3q>hJXz zz@)}=jtQ2O{;-F1W?ow#KbtW2xyZfluyatZMtw;#k${0EvJMreV*&+iTPK2u<0N2r z=|#~cqM7E`I5LqlZ5+~@P6pbM?>5>E$$Qz36Yy<-^&1}u0eVFM=g)!&2E25;TpQ^0 zL}q4R*eEO487D#sD=VpI8Q?k_IEk$jIJoY(zo;DE;f!F9@2xyfN7E&0loR?`QAOWm zTE>QaU!wfEDbGqX-&)SW6{qOrl4%9{M@02` ziC3L9FXF|6KDbCLs_}z;rM%X+S0($z$^6;2E~+={SV~~fKlUy2!58~B6-{3SD1{1o zJ4EmV$b{409S0ZBvT=%{*}fn{z{Em)5ph_qJ8(!^#sOSM6V`8((`-3d{t;XRjH*}B z&f4*idc00@Bq~4Ifk1wzH-!s~H+2lRa-iru1+Dx)mW3(p4+66 z%~bicf)>EZZJ=AzQX|X+rcktNJsW*oz;KeJldZ2SYGtpjGAY z?9+DuxtquL3yJcvrJUqCA2|;!e}If4&G(>jZfCTSIT*THBf)mly!a}&{UGl*Bs3ctti#ZzIkLkf(r=|Uw<9l#4hMMb^~dtaPNPtW5|R9cvpi=JheGE{9w-?NiX;nh$lJq zTb==DS?{RZr28-0rDU~u zBSZ!;FF=m_VrhR%l3J$dC4MhKobiiintHtY*`GIr&*bQ}<05LV(92{oe^aV0U; z7jD%cVyO=9A!V6;=aX>uB6F^wtc5RD$WLK;$%c0RSYFU#Mv(*ClzV%RqkCOoikp#s zW3N3Dh0v~Gk!-#*PCMCOjZ>z&xLF15*W`+{7q{pro5X;Ktq*YNX+uNLFryH5f%7J8 z!8|KFksyhguBsusprLb*Y6j)U={%8HQAiz^tUP(1>AVS9fN76N&-M})y7-DJ;pN=- ziPUBn8Nz+t(z8m}z1uf5FKB#f7kBsz>c!31YO2+r?lm-m*1oK*D~{JrtkrUE&r0o! zDRJIora<06mvt>KT~2jM*+?0zZ);#`#_3<@2|t~ zq+xEk!Hi#=bkn2z4&|fhPA;y9JnIrgPd{%4J0vGDl8YCoEA|K*$-%kWu4PAM@?On+ zxYzvF%8}bfWqp31UUQm8ga7mt#SJ4IkJm|oIQq7GkPWmLT?BvnP~WrguHt1N7w+-B zk(l~oB+%Sqvcc}@HRq=dn_Ga8H#_k4JA6L;uFSTw?N`-Gq%+=Mr>FP;XEhg#)st;{ z)L|u$EM>iMwrcpZW#jro>yj-7OHL^(C%?jg({gR2$A5rKqh2-ljKZG)j?Yx>TirhZ z-|NhWX6aw&-S3#r+7~7m)||ldmnxpg=Ste>jmD9;OeL*GqeRGPQ8~>bHTYS2bdNjT z&hW!tN^vCYn@h5@nf+eu^1Oisl>aRc8mu_lN)+Q#*`tOXF2Rc)@O~Y!z6Oc(dN#8G zMPjTXe8@17NomDWltT$vKA;kqs3G@RPa7sCwb(E(b?vEWf&J4~B6eR0{3+s*)Ln`H zn?eqdt3!94F|pJBvY4@*8RGA_WUbY>RPVz8ACU5=W(HbnukA^VACC6UYK8Y|Z~K<8 z1>SyTy--a0Zk*lPbrC-^|JC2}Aa0#UC>aRx{@yomQ+RZR(Q?y)q%Oxp>n?TA33#e-92^wPdA;fQ3?tQCJ5YbRk_zd8-hm62#f|)t>-x7EJB@*M zfR8^(w|z_lS_v2GVt>${57@*VnN;`x`YlyQL(YYYa?BOZtaMpWyC=G^SiP>RYQhdV zmC2>;o8DL5*4*zqjm$O`mt=9f3u1}JCGHhkz?Tm!LQVpn&!=jE$3)Zsrg+T1RS|uY z(LoIxn03!kj4}5|lz2fyWo2u?=W6S!8Ld$8HszNFDX&9A0LUGY(Sr?7cY}?6*+dr= z@MG1t>u+3)xSA?7)pB07EMoOdIE%sW{GHfdpKwmpC8-~fy9StqR-4_uF1U=(8SA&IHGJFiJ%q=fmA6oi2I$ZSm;x_8{@r45R9}BO!*1ST7kT8ky*iKELj%VKHNZp%mfg zKdKuaz=I49w6^dWQMEqTQP+&V_I+$M*;A#7dBZvs;QJ)<;SHx_lfKK`7mMDlzebtB zU{R^jZ9s>*4K8gkn2nW@%V!1U!dqMwM4rH(g8OKEXQ1Tw3|U5{C?W%KJz?Fy@cT;s zCT#<%EzT>P^kjpx??*?w0b~Dxvg#LHj&Rz)hZQ5oAg4U*TJA^=GRSRNj8&>1Z+CY7 zhGSgg-YBh`_dQMyZNgvIGpfa@T0<(NF+Eb-xHrT%Ld|R3) zO8AL8|B=o_zHtqo#zEVk?_8dQP5GE!j%A35B66tawz+c8{w{XoOXT9r^R{w~B+m24 zWii<&ytXXo4-|NNyT5)4M`1Qg-GMek<@8q$tWxCji~H(qF*0&jIgN0LKX~9ay3mI}4n?m8U?Dw4-)Bu~>t!JcB>YzqI^- z-Rzg{m80j+h3385G8bpWA1DTTA%drNnjW!%!3_RLO@mkyqdOO{dT0+I1y9084cn_? z$uk?mZwP{mXS#c;jb?`Q$wpm)_Eb8_WzCu-pXkmn-5DQ$SwC6xS*VT{F4Cu%j8JHEjD%H@*;dJ9}@uh1~J+j(w-S)a8qf+jm-M7 z|BJOZ0f%yZAICo}PRl5jGRk(GI%yG2vc-%O?S%?aSz?mxTMWifN|I$dM`b4>AtYrt z2s4#s2w4WBCNuVl8OF?5{?9u@%jbN5zw7tCuK#tNt5dx1{odPi-}iGb&+`hF?Ea*b z9X$59lg<(=#TAx)z+@+v6;L+%39%t140xIoa@L z`n7bAi3Zm7VT=Or!C)xC*|8%xkq`ecoMo!i!a2zO$dM$TJu%Eqv*U8 z_}tSntGd^)@teLyT0rT@(J;MY*m`65@PC@hwP9bw&yvdx2J2ttt;$L!RLinK4X+C4 zYFacFN4fBJ_4uX?>Z#%3oK&UaIpeO4(syqn4B7HS4k=a3^GeUcy>{}Fc3SadYb4j6 zOeC~syCKN@^ql-7)R8q_O<~-ro^SmwNny zAU4i_2rG)-wZn^NkoUGun;Bh5+=R!NY&z=7R2O#oO74-D zriUBEal1;*cf72UGJFoxiXddXk0ykm0(6avnC!i08d&q!Jw;nMJlzDAO#l+8SiFLK z0$U%K`rN)R5=NY7jUcRWn@ z6xVOA_|w|}byJ0U&9MwmP{brARC8Lx(AcV%+RgD{Yzja#N(wN7q~^{Xy&?TH%Ni&w%>2Mw=N@ zNLr7>Y=6BZeQwdSYpU?_N9)G@UNtwCgJP~s!gRT##@N_XZMqWkJ{EiW#ng(e>=4~fRO6PK!IMe-xmp&=qJY)PuLZ2m903Si z)1_xI*~*FytlkluhGq;#H;x5N+1{YC+Cedgca{1Vq`Z*#>$F=!o{St_1}mQke*L8W zDbs$qlqrvoeNZy2H3x&S{5hqPD(v3G2lVn7E3&}SDeW$BxaJ2M-VDSvpBkVxq+;Uj zi{yG9EDtIhpLzNFm0PBUCj^8Tb>PIj%I`FpP=~C{Vi;u|bulT-@jC|>3Awp_C8l@6 z`YtG2-Sn~A=x%2s$NVj+t&G>QhFdr@0uOC3UM2tMZn_!fL%@pCaMoRlq~%dr#4 zi&kTEQ^XRNqBwkpjnuc8M%KD-f<@yp@Sm?FF)x^+g9&9@J|rA>TV=Je$9jFW1;}If zezTPam=ex@$MlOvXz&Q3wSGUqG&|cJU<$Kd!Zf5mS1G8>W#-jtzz(a`uu^Ryb^ovL zFpjMjvd|PK=Imcf^r8;gNdlVM+cf|SgZD4dq~~S|ueRX(U;59>D$nhAgwoF@gs7ox zXr)ZHiYSo&kVkkk=h_U4Db$}B@J?`2n{)8=47)yABuR>(JU9uAW9cyVI&Hg}K07gq zhxa9DSwxEQ`b4RW?{Z%c^NV24$q|pZb)b?1xCK?7H5?)1g-AXNCA1nXAjp`E`iaBT z_|N=B1}=--(DSCg$ZA&cTh9dUoLwr=u~epfM3|Xs3x+qWL+85OK&lO5Rs55M3aVAL zF{sR&I~@kF(;_GfWyD6Nxo^zg$uqE;BWY73a!J48TqDUW*=iYoFsGoQ>(-$}4HyDQ zkr+ax;5adR^V%$clqrPN(~*3D6pd9bl&SzJ63J=?Ldy4W^l@ryn>ST&n>fM|teOtj z2G$tM`b;y2KBN7Ux{gguz)>*mB7aMPMd=>L?xM+i>rW-l^CEl+I8^u=UY~R_Lpw-o z223rw-RaLoqUPV)-C{f@3&lyniP>t`=4KLFttt`ZB60{qfYi^NT10BnSHLNU0%l5h z@aBVE7~ZHdo$Jj#ATfw7@K0P^%3m9@Vuxb;7D60XVgPc{NC-KL<^kZ+-*j=#5_Q+c zjcVbh;Vl0$|E(}~#YI9BXwLk$rP{*dTHDv2JFlg8ml71kMOj6*h4KK$0hgS{Bum;#+UJ#+B4 zK`hH(;6jhP!PSDauHM%z4=vds_7s>jel5vrGDsu|OPKCH0wjBZswcT(w>?-96hk1{ z342i>S*`}7Zq_fdU&(1D#w<m_Vu}WZZbPty? zNr4XCgIY+A7|UPFUu${@tK~m}ZOCJ+9)EkxE#zSsax#>mdNmTROV>&w5 zBV8+d^cBCwefA`a01I^)$C;Zk)R)3#Fy^h3Tti$*C>;0`hv!Z~99=#Ba>J)aedAJ| zUFW_dHwsi*VMVbCv1Oa%0{WVzsR1SNX8o!)j3gL{ot7sY1VRQnR8xdbCV)Q)q$Of9 z_pBWOGk9eeW%~5@q?R29ffwQ1Saeyah^6PCmcQQ3C@A=%bLm{4o>tEEOxwbD)2^xF z;NhYhmv<`pk8Gx)TQrygu1vo*ZjL zGpOt(n1TWpMwLVY>mF8qjq3-5dr-BPvw>c|`HgDdP^DE2Bc4G+7*Z)TqlGn)3lvxw z`b_bYdLUv&EBrE`p3nHQZxfY_*fM|3^#Z54_(th-mHaBl$9bgx z0BN@3#H^c6pSw&;oaYDo5-t*Cnd}M+g7hi@IWqmgv#UUhQTWC(@J19^{@{&xS|Y7V z4lrPH$_y}IazNvEfrIgQpB$=dv zb4?Z_f$7;rd(2281GfkChBe{y1T5ezrhKFCZU=0+r}oS(UxFq|j>fLQp`^tYxpgz? z>zeVNNnndf%kyLiGU7nl^numqDw$Y>V2gfL>ZY78w4vnmKR01{KLM(#ZIT9YvV zg%cpH0bDP`0E%!Vd}#UmQXBSstVP&R0trw|Va`F;YAPR9;7fgtT)KA1O|wrgk#*jZa}k!~z&kbj*E zv>9e0qkyPP+Ai4tL$Z`gQ5>8!>tFY3-`6zr$3%lK5=Hv`~6Vg1~lv^ z5xo0ULGaqbvElkY$t-yih6aQEOG>{T3VC7WghC0=w;|}GoQfQhs7|poGo{IQ_p2$S z&a_tvz196Akv6ralG?k*p750E4U*JKk?`-!AeZn!0x}!jVtM`=mJI}kT%Z(rS?Onw z@(^ui`Y}$g+Nbn5Iwju*yFSgPh6(K-n1lQ$NF&s;Wz`_AgPs@p?CP+T$1Z*Qn)MmB8cOm{YQEaCYk6$A&LGM8Ji`1 z=(VQ7C8dqUgBHw6BnYZR2rcf~F9 z)4kk0P*+~Xa+lBW!u5o=Vv>^$AL_ZmbtsZk)=6R$#reo+`IGyq>`z@Mx$MEIlQJ$6 zuJeoKzgz#|HO_~l;gsd%!h2DZ`W+b*Xw=qnu^I9SR__lj#>&QX;$?aO9bYWq>?`Wn*x|ceHH`d!4Mx8=gk8 zxk|@uiK)sg|K}vbSVrgZ-77VmSC17(RDiI&Mh!3XLrIdFfs*7ae$&15&fY>+3#?=m zBL&IH%%X6b8D*UhWw3+>7D8IbHrZ3IR<{4Od@WjyP6#2)-uv?m+K16B)y38Vz_mFYXHtXHGH+?}!p{b1s2EVx8 zaYXWu?<^w1zW~C%idepbY35|3pNA4c`ocB?;zT_y-!&jE*uLN%B$GTuBU(cW>m>VM z@2jP$J|i$lv3Y3cn8HYK-2Y;1?&2@6G&rei(H~rXPsPhiRJ9#bpq#?ldCZG1Tay6K zIz;=B;fs2PemDAF180Bf%rXPGF7g6;sEkR=eo+{?{U<;vO2cR5mA=`S0Vc`l=}-5L z8Y<%MA5A2X_EUr3)tOD&C*dbFvM9;VYB%-Y__GbIdKW0qGh)jpcW|G@q7FwWw;fH~ zohFi0@*vC_k>TYo{icOu#^3Vl5DsrmfJI~@zP4)1jkrH#nj{94Y|^{gntm4F-pn6w zmGnrDK!<*}4p7>uwEQfj%u3IIGJi1xy9fkF>7W-+wmt#AHX2O?gwbj5Mq{)4+BfuALl9s~M1-a85ED zFmp(aHn}6wKeOX2`rvB9xD|Vz~c{56mrn0HPjC*rTOq)W{j$+HYFW@eh_uQ}6hP^ZGcmKG!|Z+yJd( zV4p|$5-tc2hjlHR2e_}RPCIY3bKu8J<}IRt&$G_ue)&ynum zL3C%*U|eH-rW%&%d6QPqjMul~_kD6_WK0tY! zgnlAJV<)U-6#Si_w<@sV0Fn0a2`K3P=%@ zn)l~FkZPmn571zTSU&wR*NGZ9ymQmYc~epm9z?WRTv|1W5b`@4-I_s&C;1qWe0Rm6 za(|dd2VJY?0k1bzX!#UVkx)1P)4Cj4Dm_2Z3%E0tL{Gtm}EAhTliEYIYAl_|$=lj%SvBoSGON@nOsi zI}Xo$!zFRfiIUQkaZHaUmPr%|oOiGU#ZnYNQG?V-T*5Q#jjw<3x1dOLT}2iS@80AX zFGkAG0~9$v7@_UBkd8vJD@HWQruwqLRWI?y7XdtZ_oe=!qtdVv8)sRol=3Gk zc&W%lUe+{{sF}A9B~ymNVCFrH1GzKW!@Omz67%$uXMt1UDI zz|8vd@9oXYK`W-gZ_p=d5XOd&2qX>ao4O+OC&omRyV|<}g!o5oW|(9oDVOKceXp-SQmVdO3rbO9bSv^h7TVKZRd+4IA`gA8_XH%VOS6SiO zXv&^vMWHP=AW(~g^ddVKpxg$(A#F5eJcJErS+x2iQ8=(WunUVNol8XTZu2GV&6f^y z=JeL($Hnc8e6zIWTyGf{n*jT?GrZu-HM=%;?b`uc!^fT_Io7Y7r`Fcgy?Rpb=x~dq z>*DV$?I>Rf*t;(>&moJA{G^$;h9DP30PKBJXD)3dPi9%%8_;mdW-3Lt7^}L!_`bLQ zMjmDNT)yONS2I+=*x7a?_I2Yx;j!O~_bNOF>uf|s7FNRR*7&3wc$nm_mb3?l_iFOo zcL&|VnP|$t@S-Vy3s0N+EGDvAjprg8O_Pq#bo}BYOi1=8f|AsHnx=iAcs3y*^+-3} zx5E+Q`iz3(yLjc5DAG3*OgqGO6Q7Q(yeGZEQj6U(4% zXhn2hr8c7ThbQid=u5kP=Xv>4YWJlFZ{DxtMLB$4CsEwuM zm2|KtBwE3>OqG)#rjehxP3aFJOEwU-NIh=!i3`&)VfIO`m(Gx^jBs)c$s>pklKE1? zVimceX>P1U-qotzHBg3IG-U4Lcrd7}#pY7;K)VIdLdRpRB=d0PK@ExHdx3Ffl$SQp z6d$7Z-I-`Ys9$PFD-(SQYw~5V`s|7i?jauLav0&l&<62NL8pY*vr?G0gh%6bUQF1O zh>Wt*T_Kc14Ya*!XhjH$sbv>>|0mzRH=U8l4xBQ!JY`!4Nk+Ix$;PWGFXS|=JxX#~ z*hd!H&_z#{hJjL-Lq-nV{**Mq2-lLSHQ7!1YWTg>#%Aeft9&IjxzumNf(X#9G^O&ruWgQAvH+wdw&i5=cL2000DT|G_3?2IGFa2~p(OtA2S8)4An6nF zU$m`E!bubjoH}0WHECc%m@KW<qh?#_yKEw~5!x>sP?X{7G=gUaRM{pkE51ZN`BjY#FCN6lDdzRk-z@sbF zMoq#&`s~vw;oR?^#d`JyJSUCI7n_pebqbn1rp?=(BTg3D&3~lBIYE-ZpB;s1N3PO2 z=q370x+l~a?;50~#qzl~5%YWTX~PCm!D)o7t1YR_H{31Z2B{tK+-f`V9!T(kZEE2A zi|$c#m4`DNZC>?{7F$;*K7W;i7#f>|`R7A`3q@o}w{+qT{bnRKe#bW&uNmi^*P^c(|1JF^znO@=PqGnDW6}{xZ}TmWz94nI1oow0&Xgp-=$35a2f4vX zO|VrJRVr|gOirJIzD!6;#RJz%dr0#y2^j|%YYM3O9P>MBeMW~Q;*HsSWH6c#ZiX*N zoiJFK8~9?jLl`8lV(+lp+><_g8ubYnIK^-0$30iaX-Mc{<*9c!6Az!G8pSg2bTMME z&TE~^Gj3?Bz5m2{7|B0pgKWA_)T-b_hoQmw8-i$LciiBVvQNSJO&}?y+&+IdEfoB! zsYzN45gFQcyDSE)B?_3c+UJJoOq9@qdo zWIcT#IDl9+g*fS^ekmNiqprVc6n&=R#UHg3vMfZ`V{4ot&b-#&|0I<)r=L$s$;6)7 zB&e3%+-|ayXDqQSUun>3ZhO_5+au_I2+>h;$|-w?v8TZHQdgRpFB|2&t(`MFbHX;f zHoz(U6WOc{skE3V{5wm$qU85`UgtK@QgffXuGFx0!=3ranY>RlxaS0-1%h}!yFmmH z@@T9~^TK&a<=qXwyV(deFZ}7nQ0!_?D2gtk>l9XMjr*f&O-McMAA%`5G9@*CbC7XR zSu_9ZrROvx5nZ5f!gq;`k0BY1dRjJAgjpn_qZY-GsnS9!K6}skuzHrxN{!EMzD^%G z6EU>R>u0!%^nN93{04sOW{8=soKDi&aFQ{>YBoU3G?BIhz#Y-TfUlDevpr`webvm$ ztUtJBApazFWVcG8|J4z&bxP{OZ{UA?eU^k3C0&ai2L3gFGX-HgB3?Q1nSAGqX zTFIQH~jXcL2Cu*Q`Pjf-_k`X-JgW3IcLUt0- ztqKQmW1i3@T8@C-tz@^E=!C{LMhTsR?Ia=%mXz+9 z0?%DS#$vVY;pjlr2r5JI+uJY08tKeN4^@CA7=|q#wSPXYh#DjIPVXGbDum=?&52PR(M&4KBV{wY$IHmH4i0+PLQlKz{LGvz!95bBE(JTB zwCvEnfj`ofT^WLL+_%yvBz!5VP)N zG>+r!#P^;($OY5x$n_@pi;MXDWjKjC!`9z-<=BKZB06xiw7Y7#@)Ty&ls>$K-_`#D(YEZHJ}mdRe|21es)&>4kb*{8bt zA<(S@K~2*>>D{$U5Tgs}%ZAEaJ!RtnFy>_Ox<`h%q6l23+RTm7*At!GIoXgb(mr5D z!5vdKx1$W$^tZ$pJ8$GaaU98iRJ{ZxZzn@!2n+X2+An8ngctKhgmZEuDG#{aoI=K} zTzujz&6$T_@sYA7krsSda`&feeDo7o@Hr- zU(sHBppT;Mjqb-%DKS!|+SexWhNi7RfcQNmBAA%%d;oiTj)Ve1LUzyuySA_ z0*1;KCOz-w9!g{Cld*-#7vZHF>wR2#oe}!0ajt$z*ZDE|NZCv^AVq)`m^%^Z!j9Jf ztKUI}Hwt!$LVjMau!NR%e&crTo~N0bp|1Xlhs!c!E+lZ8{HuV(Kd zg^kVEteyX(__Wa=NNKBFi}+ZZ4|3gU{%@I_;)lq{C1U_8vy`_V6z9U4y?cwd`~hsr z-ZH3FVci$|6;9Nka{_9G!3^N z1)jq-0Ub-o2+>pq*;M;ezDdzH_2m?}{W+(C?@^iVyS1p_cV18i-X47m+%Oku%S)1_ zm*3dflfHYv7d3#sLuF3v_S6<%bkhIBbD{l8jsN}F?%y!GK`KIk1PwyMSJ?s)iHT&i zfRw&A3h+Pq07+$$|GI9`Y7#!~&;8D{a$XP8Kx58sBEb}->mN?~7;B;gHXX|anO zk}p0j1uNGuMm`(DUSfm(h1ShzYBtEGpYkow@b}+OCS^2CfP%nct}Z=7#1bsmRyJ}U zZw3^R?&mX280DMO5A_-8sKqd72ZxJyF52Mpu<`RC?~z{>rq@o3BV^QQgINhM^AEBh!L*J`1N~;Z>4a#A-(P$fK7id8EeLQMiGYJ? zn|ktN3V>>W^`Z%(;RB&j!nB2$sMe<`!2?XZa3kSY{rF!!3^V~GPLszpAjlO=TZlja zdHqk2e@O%?IV*nqVnhc8*@*&~RiOBontZuTMA8&xf*b7#6DF_5_d{l=h73$X=d z8woP1Iuv(M4cv^S)`4#c+SL7_cx8Owj$B+38#z8}=<1nXj(S3@hOc*_*1u;Mn;^ZC}R)%b#}M8xqN>9HuQvZ`5X73#mlZPL@T2OP=~cK?G{t0>bP~1;UduR!-m6!_eEf(4rcx7 zHPTXS5Pi_0o<3u~rL9x#E+QeLuk`@Xxl5^P@TH-o-QGNLcAGc=0HHBM$^- z0)_g3%R6+;W)qrfG;VhhXcSc70vBk5o-t_oe@rE<#^Lqa1=tS|Ol7tsLi3rsIR%RU z!d?P-Y!HNwO}@Zn?FJ{GNQRya#~GF++XD4iD&>UQ0wq*#CJt?2d*%^~-zzo7YOMbktewO&oy0M@MOZ1P--OVveCPb4x%$5Y0?SIw z7g~p)YH|?a^425+6V8G9qZs98yd)du@RjmKUfd=LCnfgl=7+wwS5?u%c-gBseC#BC zi5u-rMO9Rs&3}>|B4Qbr#tcu~-##P-uwp0nD_z|^ox7fhjnfT8s)LjVXw~}f8HgYe z3nUQS4xHWSolFC&Bop*Wt;EQm&c}G|?`z%68!53Cbc(G~ZamWz>>y6u>J6^9^RxLp z`B9;-@ys++W$2Hjy%M}59po)qRq>RqJymMFrqJh_!O?v=qe|=GZ9#bc8jvYOR7+aWJ;uFRF>dmHh7F zJ+4?Wd6-(Pn>2W_xt+9JS^p!3Xy`LM9X^q?lh+sBodDOP8jZxl08YWPel8&80M>D} z7EiR~EvE2--^fVMR=>%|lvsP!OsWGVJ2dn?0yUT#)8}%}ObD-(8J^-+Jh%noD(*1I zzW|Ift#Tm-O^%eD6Ef&u(-?2>v!``ygK{B-`iQd=4X!zwC*Uvad>qSW5PNFQBN%Aw z11oZbuAmpthv@E>L2eppul?Hab_~0U%l_JP*+ZrxLhWm4l86Nk$SIBAB)K*u%o0*f zDm?8VBe;+A&~IQ9z)Zd}Nh(;-7WnNo)Lu3L$ClZQ<+TG?npVEp}fo7N#qVXZ=|@sJEx$NrA=jbH-d7 z#o%-7(A1vI=-uI|hMP@t8#)3J!Xc4v+j1{etGTEzm)4K(NvKf2A0VC50z1_9H1PBG zeb=a4PtSX{Z-->ce_~88Z{{bRN;XFWwP@?`v=yqw7`UHwUpem0H@)q9a9N|P*X#W? zr=k1Srbz~%{(+N-7*IEzvj%H|Aa=@@04rf;vY)SkggWDwtGFao=Ep5_y(Q;5l$-6C zZ^V~hqYRmxFl#QU0cyb|s63mcXXyxZv+jHhOLrW*cFuk+#5_QKn2>sMb5UN?^Y^2r z9?2`S$$bT@JpT-;SgV@=lE=>D$<+}pbiJVx|E-UqIL=Bjn5)!A$Y_q=2?W2nd!%F!P+1}vc!~z2PMVUX`e!5( zWYl*Q*I%{kjHSd$YOf$Ks~9``@`+~{uqjSBJ16dYTPuO?dgqgUQ>KyAgo6=4cbhHA zCWi&OTlMz?;Osod7l~0`C>~z}5!0(Qt*Kl~AoWG5eP6&(>kH&UjCBw1l20nl%# zV>Zc5-BIi)(tZVaaWT;$XbSmQ2ZVPNXBW<`^U@JuQD>9H(gkg-71zaoJPS&`-N0RC zK4*p_0uQ#p1ok5zlz^IfvYyJ_fR{_Y7VP1Hx!MZ&WZZ@!#_Gfkia@wlm^FA>UdQ1} z;LbKnmKSQ)6Ii8nfTKBB{i&OfQ9+r%5Ip%t%o(WglE3<2KN&HsMa#LYk6aLFv-_dkQOahN*~1(pwMEI0HF|04m1UPUg}=) zPaeG3pbDwN2XJtl*hnISa2mWVj7|i>{a!1OvXKC$96(3seTVL0 z6VK8e!a9+$9RT{|+?2V@Vm5S=iJ-h1o-lcu07b22Lys5T}f3a+dvI^u0WB zWLSweV6;&eL1jIqmFU?BFruap zgTo&FDYuXqkRO4TGZE<0tF6wcJOPQrHZe?p(BA|)z7|P@0>#=Q$d#3Wb!wkLP*IC- zp|d^+^x1F_YM>CC^PQ6U7vh3PdmZ_j0>tqOY)x_pA!NRs7x^!V9CV>>O?G)R=MM#o zRFXK)pMj?81sdp8{h;wnE42I}cM3iI^vBci$pq->0F++!kEewjPy1~}%4i>`8KignesZxDc^&%719$>z}f*h+N@R#F-yuq8!uqRM6foM`-$@)x&FbwjUbp_ z%pX1mCqq#w8|N=i#t^2EUl|8>{G`SpMXN|Jg?yM7ugS;jX&3{V_tYeZPPHak3 z^oO+f|Ax$@WSv$V6h6;yipj~yX5bf}XC?l49#x*?xKYitkGEQuw z1h(~GGRXw2E1-=`mOuuO&;kFFz&K6S^B>nG{$Sn5DTvXKKQac~qfB^ldjye3?`r2h zRys2U>6-Fy^I0;eg)S=1O%}v|Wl|}in~9Bl&DeM2Cw>SLZ_zv9AZoqPG35z;QZN)p z1~Y8a33ZT-UbKj5^^m@CfWEyqp>C~dzcJ@8L}3kRa7tmyBdzj(65yg80#jt@;<(&o zWyrFWLH(a7(9+G=EAej>qH%W8(X<*C+bx7LN-7lQ4T`Emb$fm zVCI{)5Ct$IHd4w=(KgKg$y^A!YD)hfA0Dy+3daBiEqjk%43X_d&=v$YP$Mt16!hSe z&xQZnyyOBI%Qi(bLLikG2VKY((KxXI&HF!8sQ&~77(>lUU<^U8wn}aom)#@q(a@~e z2xy7dR!96>a9}QqSeR%?76dW96&vVfxnOq2QydcHlGze&v_S{Cos%-1;wcDET<{9jpJZb1 z2;rar;qZzXK82D?UM283&_q-BXjvZl@cr*>zKIw-*?U1BeeV17UY74_l)(^FIEIc( z25fBmG*Y4@jCkGBA|TzU1meydB4nWGINYqjVq8l{^?|=<{yPomI~r zp{Wd#!0CZ88CsGrO8+N)2Q@;)!C7c`RsO{BE)yRs`2Kn-Q3veAzf=F+kT_2v-)L5G zNCNKxhJ|RA!g-i`Ki0*P04`9C;#TPTybur$Mx?|J3a4Ox!VwfY3!cDMfQaHvI|eD1 zwjX}yn}&cUFcl?x9n5}$Eaty?1%}Bs(}T{+3QQ}QacNkkKaG3{(#${6B{U_^3i+~p z{|z5#0&7-OAI*L89;)f3|Aa3nmE}TS_wyCtb)n}IzCTY6(M-t%&r{PEy`ylBPLLC6 zJ4!_-!gc-3h4gXvD<5pZ%oT%H`}04Aq+k4iioqp-ih(J^{HAsCAVmf3f7MHqq`?19 zfU%W-GudJaS;&=tO{#&65A#?DOHVkO@zYAaC$N7$kb-3sNNUILO#28Fy|HF4;s+aI9+J}nu%plz?D_`3FCMgKI$a_4RG7 z){Jj}0bl7LZJ~JNGZe0Jn*q-FW`>r)?#p#2>6o*j4t7Xi+I^7>Fh~Cq-1yah4_s67 z+2&R>bQD0h^d?>c2@(M3c)aI{UcyMS>epXYj0Tnt{R^n8>Z7KR4@-93)f9N+aWN$R zH6mKr1OCH+{O33^c93H3lX?;O&96pOy_nM=SQPLzz}`_Qvy~$WMumRjYa5^g$}vpl zFbU+{pm6|FG|a+lL`K^XRuLrBe^Q(*0V;0+DugKu@?KQaKF}?^^n9M69r=GU4*sKM zc+ar;*zbrq__=Ha?bKj2>Zetgd7z~rCJahual0{8dQ2x>TfoR<_Uy+tX`?qx{RQpo ztA4UmU65~1fP7sCsC|=bHK-6-)VcPr38v{x{dwu@V1nSgRf~n5E{C3G5cvD4Gv8DW z-V(U5qG$AY&;aTFixC7n#}Iu`*xvPd6~vngrbUw`g1ktpDuO9!YW!(YZMe5pb+`D? z*M=UBNn_T~`!%Wv^{uD%&lqIKc9mqyNUF7{=RddudQj4L-yvWSoLUq^fNV{_-}r9O zz#>$ygQHXCgMxfe$nOnjnnYaCA{ft<@+-`$5kDFl?Uo(4v0;+H+6pH=fpap(qF}*2@@{MWQd*RVx*)3j`!T3`D}kh4`HY zi8z)xqxNe!fIS*$g(!}v8dT4*r^MI)qcz8hgK0{54nfv(1HZ3!_Nq(kfVW_;ffK`r zm4NoGQp%kLz=4l>44Wgu4A^d1+s>WsuLE31VyY7Z;+;PC5_@tZoJdd$;At4ptl(}; zH0xo>J~#yi1q*DXxfgv`0h8`c?2>p3qIRR{(wC--8L7AXFI1^%aWJEI%eP#peDtXr zTs3oBD-Ft%>W-Ijzj!A2W{=P538F`_%K=S$v|NV>cu%W4Vc(sU_39nPVP2`E>yXs^ zs4V3pUR&~eFYHkju;yDAU3s?@Wi0K%Z$Qz7G0vToAwlx3eJ~WLLB|ID}+IqBy5kdh%UZ#wQY>Jq{w=f9ld(l`8rx>^y#*wJTUO4I{H+bXSt65{4OI~ z+wc71UwD@Km+|Q^!46$dk|^4FEkofIUw?Cghx#xtt2=I#(kUi<1$uWEo?u#o%KFUR zgHJME{0qUf^%Ht%xnPH};jTM5T#ENuT*cu)najJ&_IvO9z9PA?Q9y*h{D(dhbc)wS24a_5WW`y*}(&!5l; znSU)Fa2Yx>L6@W!yE%Vk6eo3f*NrI(r6-K@upkc!WRNkY+38 zse119J|b5A&^Y!l8YGgHm=k>sUwdi~SAb zdlW6dmQZxE21}V0a!&#iRU3{PUE1o(3ezB#DVL6G(JG`G8(0HHb%4SSh{BqS)W+Y5 zJr|gLlTG(ioe_OyEnZZt>2x0K3MdytCluMoC#N|ts2*8>Cj>2|#;Gq@*^e&R+Fl6J zpx2H=OdKI_27`$!8=VdJ(wsjB_oen75JHh;%7CcCy-@furgb@{${Kv_owp}$uIg1J zU|lZ1PyFK|@BX>4IqN!)*Ag}HHmop6|KcJUFb;ZS$1^n|Wfr9ft5loD*MWe9d5MT! zl`xGP+`46&y24o+WAncMFS!lj8st%lbWOAdI!{tv|ekC`Y$$no_7t~f;MRERoo<-A_6Pw2E7f`~;vnwz9 zU{57!WZxEGjSAGHRhW$PEdRLILJFRcbC6{ALM)eAsoJ+jFxY=5LhIz^uPzFKJvZLQ zln=Nj>nq1q$c)Qv0pF9wRm#_OH@%^gDBl()>jk0^aL0=}HO(tZPX5$b`Sf7(5g>g) zs~D|fg%TgtR4DuglJ`n}pmmXFo9J$D)m;?ij=RJcr~hWyPKV>5SMc-7H$5zv>b%)E z74I?DS|Fnmo-#CX;l^|@@%z`Fgc76zpJe~#6t3-U~m$qErH>&l>q^l!#OSh z-J~j_mSAx`c)3=5{&|t^HgQhs`!Y^m@X_QF)h!Ez)urDh#iJzF z!b1daW4g3y6}WZm3JjLze0If~!F}h1KQ93s#6|K^ffVbJL!QDGaW8fH1;CEI##wNqfJf#LwUs!H!CE zR;P~b`|#mR!()mDMQ6`YDRcV}ADp$4l|OM|GC;`Iza^OwZXKKnOKIV9Ic`&~p4vWf ztxEzdQVR}l2YHF@2XUuvv;^wQc+CZEf@vc^OGOox%{{&E!p~*aEYEY+k5I30llH27 zHjV#W3NpAAd&hYw%bTrj?jei+c8*l1^ib*Z`A;Z>5cNe3eLZwEddlhfreulh&EkG7 zU!8D&Glb?!tkN(v_&>zfcRqV3z8IhZD`*6jKCO>c+E(l@iEbMNhGQN+7*8_|%)$Z&A|D56~X_*mdP z)1jI3+d)Jh`)zaK^@i`C`|^^>dlBj{hF$o=DRVsp*{1mvN%p2pDaxz#qBycv&qEXyX zaWe3b`o;P#qiL&#I`M#OE|=#h4bJtmd4H*yOp9T(2l-#`lq~ekt(wn9ZTtKRe6;xj zS2+s+_Gt!yR{_A@=fvt8S>c@Z!k?H=Tg*RwfpR>R)nUjwqqrAfr9FsUy|^9(e(gVh zgHqp5g($%fpCAGCv~Z!b{NFi9!TbMzzH-H>pkiSeXikKjp#VBM28w#cPq%@ytOjuE~-GH7ILXV;b%AmyB`b?o`i1VUkuF!mQ<^MSZ}{Mt@NP*I(2?{9&$_3MBB zUEJF78RLt^!oXz_F?!A`m8fG^)HQQ7s@Hn~x^lkf`~@t$r)N|x6Ii+41^jAXr^@)( z13#Z<>fo~`sBFK;*2Qy1pOpK%9S=6D7Qv|Zxc%2H$X4K|9=~2oTxYow)7JUt`@Aua zpMhotfTL8=U?lRVBUg<*kGdU?0BxN=AG+EIM#@#ae?50q)pXe^jA^Ex+NIRTibEau zTUW`MRT`M?ee9IBzT{M(4kmd^hE$P#ZtkJ0Pygm0!qshh(;{zrF^^TTdi?tsmw&d4 z)hf>31(o6#h(cVuyu(vsK$3q+z^HAJLeb@SC+>UxbHIdy*xXAkE;lwjH7kvtD!fwG z6e->{zt*dCs&shE88>hkd&fXfS!??c@Arlzb4t{K&hQI*2e`3nhmKg-mbpB+y2;D^ z%4;yQ`JE(!Nl4ypM)r~Z1K#bu-cdU74@btLdo9PkGxE-!Ca%Zd9V=)c8{LS1g+FTA zPKnNOFS9z1!`=X`y_9R1bRz;uPoTX3?ZFQ98|z}1w&ko2Y=pzJHvZ%@u_LQ7tt zxfG4gef4&^U3OZjpR$*^gxbEnTi$g`Qc$ z0&~k=zbJF&$T6t_1H_}bp)p%K{*ci*FZ85c%T^sykMk zyE+C?7dUTe|I|ALZgLt&9mQh^9{dCRKTSFd_V6Fp!(AwW^LKj!=iP@XbY=B`zEhMI zPJZt*4)bqhJ(J??JI{!vRObFoisVY0X2X=r_wSv<#rBW)VVNe-ZOz`;yr$y%`H@@P zJNvSN6}+#!jje2QddS5s1hCdMiQGOAtBAVCE4r)^)3|f0NWF4hS0A`j(bd897p^x} z%sb6_ee2;|Y@8EaaX7go`2a_Gri9q-9e^b|-|e&O9PzQ3qYN=hlff0JrV9Zua0lP! zu4EW(B63EPx9pz@PqLLAHk>xiJIEDHqxqWXJ3X;fPYAwU$AX6%fpaevdb|_eAFMyKfmjuz z^H&39gbyD(eQLcfi@*PVf8^5bfgg(EuoYdrkt;YI9JLxpUKLm~o?KDb5iQ0q$#S8T z8;;MXkE2VHl}Z-=I-zpaswTHSAo75`(LA<(fa|;kNz9*)Epu_9+)lZ?pyu)E+1TV! z%GL=_#lEI56tlp>qg2yk|97;wN~;#uo~`8j6SvF!PfF0|sKo_=S)*6>r7c|BYB-#l zrb^w#;?H`)0t;OFT|3qxi$9E?4s@kNQh#Cc);#sgI2or40hftejgE5UihHz6Y&*#> zT(xW{HL`Y@{7yph-jYh!Y6~X+JW|Rrd3vsXen;^zGKrS3pig3>U z#Q^16u8MzD*7#S|Ik!OWMK(FMmoUiKhNi5bNaiC)a8A_tXl3n;xhKb|xgS`)mChB( zPY1mxT`7g6F1z{C;D1Pc)K71nzwXEm9)mmEvB`*H8NTyx3(ow2@_J{yF22@9_8d*23H2EVQXm(@NnSraS!-iwC#(6MI3Sl<%~Ooc0CYRnUiyIZiW515Al3W_7p7Q5v426(O+5TxV7J? z>rY0Sd!e^tz2)=yLY`cCb7fJL14(_ulVJ*ZN|mqKQ18rdrsU5_ z)4kca$)bGc*4e&te`~ArVL_TBv@DNNW7zoJN8r|DtALVH-f(t-^sxi4z-36d-;1L} z^$mg?cNAl1CrCNfi93Q{d2$cCR7`yu4Ut+s?yqd$m%8G^1&?oC>vt@K{a6*yq27L5 z5^cdHY^Pqmlv|h~4aYg=o&)!2qaXkMewESeuxaIo`Pzi}BVEMXS}bt0bmR>;1)X~d z%XjIRpRKmYdvybgsw*^o{3)_HBJU?12F}l<;{Mx1Eb94xf-T(ZwhVVW=9#F2E1gos zo;~O{Sik|n5Z8}`i-vCaWZW*BU1fa2Ekoytt^q&F=syESD!Q=o|GG%`IUS&wom=Yg zm0A=9i>%zmk{x8~gsx=;v~CgU5%V%e>$gH#Yth z2W&p-Yx56Z5y~L5>Tac zC+*&$@~9i<`qcKGd^#JUdQxWK@VgAhcPn`B4Fmo`YV4L7Tyltl&pdSfv+Ge){*Kmv zoK7E5`u}!vx61cPf4tkvT;+l>9pN`s{ z5+{Ol^{So9?n{Q=e zJmsGCPnD^(vB$H>%Ha|;vD;um%Ag)*jB}RF#Lzc0>jOHeLE}P2#M&=uIlJAOcCUIkcS+Y_CL7sDFBSTc(tp>Y8r`|cFJo3~Y&bnXb2|Uq fc@>X1zy4=_*l+xDhmB1XsQK;b>gTe~DWM4f-QIX# diff --git a/blockdiagramm.tex b/blockdiagramm.tex new file mode 100644 index 0000000..6a916ed --- /dev/null +++ b/blockdiagramm.tex @@ -0,0 +1,19 @@ +% Eingebunden in paper.tex via \input{blockdiagramm.tex} +% Vektor, reproduzierbar, Schrift passt automatisch zum Paper. +\begin{tikzpicture}[ + node distance=1.4cm and 1.6cm, + block/.style={draw, thick, rectangle, rounded corners=2pt, + minimum height=1.0cm, minimum width=2.0cm, + align=center, font=\sffamily\small}, + signal/.style={-{Stealth[length=2.5mm]}, thick} +] + \node[block] (sin) {Sinus-\\Generator}; + \node[block, right=of sin] (str) {Drehzahl-\\Strecke}; + \node[block, right=of str] (mp) {Multi-\\plot}; + \node[block, below=of str] (pc) {PC\\(BORIS)}; + + \draw[signal] (sin) -- node[above]{\scriptsize $u_\mathrm{in}$} (str); + \draw[signal] (str) -- node[above]{\scriptsize $n_\mathrm{ist}$} (mp); + \draw[signal] (pc) -- (sin); + \draw[signal] (mp) |- (pc); +\end{tikzpicture} diff --git a/paper.tex b/paper.tex index 8e9e6d3..37d726a 100644 --- a/paper.tex +++ b/paper.tex @@ -1,27 +1,27 @@ % ===================================================================== -% STUFE 5 -- Cross-References +% STUFE 7 -- Reproduzierbare Abbildungen (Endzustand) % -------------------------------------------------------------------- -% Was sich gegenueber Stufe 4 geaendert hat: -% + \usepackage[ngerman]{cleveref} -> automatische Praefixe -% (cleveref muss NACH hyperref geladen werden -- hyperref ist -% bereits in der Praeambel des Templates aktiv) -% + \label{...} an Figures, Tables, Equations -% + \cref{fig:setup} statt "Abb.~1" hand-getippt -% + \eqref{eq:fg} fuer Gleichungen -% + Verschiebt man eine Abbildung -> Nummer wandert mit +% Was sich gegenueber Stufe 5/6 geaendert hat: +% + aufbau.png -> blockdiagramm.tex (TikZ, Vektorgrafik) +% + plt.style.use('thn.mplstyle') -> Plot-Stil zentral definiert +% + Schrift im Diagramm passt automatisch zum Paper +% + Versionsverwaltung (Stufe 6) bleibt aktiv % -% Was noch unschoen ist: -% - Versionsverlauf existiert nicht (Regel 6) -% - aufbau.png noch pixelig (Regel 7) +% Ergebnis: +% Beliebig zoom- und druckbar, reproduzierbar, konsistent. % ===================================================================== \documentclass[a4paper, parskip=half, titlepage=yes, 11pt, BCOR=12mm, toc=flat]{scrreprt} \input{01_AbschlussarbeitPraeambel} -% Cross-References (cleveref muss nach hyperref geladen werden) +% Cross-References (cleveref nach hyperref) \usepackage[ngerman]{cleveref} +% TikZ fuer reproduzierbare Diagramme (neu in Stufe 7) +\usepackage{tikz} +\usetikzlibrary{positioning, arrows.meta, shapes.geometric} + \input{werte.tex} \newcommand{\thn}{TH N\"urnberg Georg Simon Ohm} diff --git a/plot.py b/plot.py index f7f51dd..aa6595e 100644 --- a/plot.py +++ b/plot.py @@ -1,27 +1,28 @@ """ -plot.py -- erzeugt aus messwerte.csv: - * plot.pdf Bode-Diagramm (Betrag und Phase) - * tabelle.tex LaTeX-Tabelle (mit siunitx S-Spalten) - * werte.tex LaTeX-Makros mit Rohzahlen (1.59 statt 1{,}59) +plot.py -- finale Version mit zentralem Plot-Stil. -Aenderung gegenueber Stufe 2: - siunitx (\\SI{...}{...}) im paper.tex formatiert die Zahlen jetzt - selber -- wir geben hier nur Rohzahlen mit Punkt aus. Das macht - plot.py einfacher (kein "Komma-Bastel" mehr). +Aenderung gegenueber Stufe 3: + + plt.style.use("thn.mplstyle") + Der Plot-Stil (Schrift, Farben, Liniendicken) wird einmal in + thn.mplstyle definiert -- alle Plots im Paper sehen automatisch + gleich aus. Aenderst du den Stil, aktualisieren sich alle Plots. """ import numpy as np import matplotlib.pyplot as plt +# Plot-Stil zentral aus Datei laden +plt.style.use("thn.mplstyle") + # 1) CSV einlesen ------------------------------------------------------ daten = np.loadtxt("messwerte.csv", delimiter=",", skiprows=1) -omega = daten[:, 0] # Kreisfrequenz in rad/s -betrag = daten[:, 1] # Amplitudengang in dB -phase = daten[:, 2] # Phasengang in Grad +omega = daten[:, 0] +betrag = daten[:, 1] +phase = daten[:, 2] -# 2) Theoretische Knickfrequenz (aus Identifikation der Strecke) ------- -omega_K_theor = 56 # PT2-Modell, omega_n -K_s_dB = betrag[0] # DC-Verstaerkung (tiefste Frequenz) +# 2) Theoretische Knickfrequenz ---------------------------------------- +omega_K_theor = 56 +K_s_dB = betrag[0] # 3) Gemessene Knickfrequenz: dort wo der Betrag um 3 dB faellt -------- ziel_dB = K_s_dB - 3 @@ -29,20 +30,18 @@ omega_K_mess = np.interp(ziel_dB, np.flip(betrag), np.flip(omega)) abweichung = abs(omega_K_mess - omega_K_theor) / omega_K_theor * 100 # 4) Bode-Diagramm zeichnen -------------------------------------------- -fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(5, 4), sharex=True) +fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True) ax1.semilogx(omega, betrag, "o-") ax1.axhline(ziel_dB, linestyle=":", color="gray", label=f"$K_s - 3$ dB = {ziel_dB:.2f} dB") ax1.axvline(omega_K_theor, linestyle="--", color="gray", label=f"$\\omega_K$ theor. = {omega_K_theor} rad/s") ax1.set_ylabel("Betrag in dB") -ax1.legend(loc="lower left", fontsize=8) -ax1.grid(True, which="both", alpha=0.3) +ax1.legend(loc="lower left") ax2.semilogx(omega, phase, "o-") ax2.set_xlabel("Kreisfrequenz $\\omega$ in rad/s") ax2.set_ylabel("Phase in Grad") -ax2.grid(True, which="both", alpha=0.3) fig.tight_layout() fig.savefig("plot.pdf") @@ -62,13 +61,10 @@ zeilen.append(r"\end{tabular}") with open("tabelle.tex", "w", encoding="utf-8") as datei: datei.write("\n".join(zeilen) + "\n") -# 6) Werte als LaTeX-Makros (Rohzahlen -- siunitx formatiert deutsch) -- +# 6) Werte als LaTeX-Makros -------------------------------------------- with open("werte.tex", "w", encoding="utf-8") as datei: datei.write(f"\\newcommand{{\\omegaKtheorie}}{{{omega_K_theor}}}\n") datei.write(f"\\newcommand{{\\omegaKmess}}{{{omega_K_mess:.1f}}}\n") datei.write(f"\\newcommand{{\\abweichung}}{{{abweichung:.1f}}}\n") -print("Fertig: plot.pdf, tabelle.tex, werte.tex") -print(f" theoretisch: omega_K = {omega_K_theor} rad/s") -print(f" gemessen: omega_K = {omega_K_mess:.2f} rad/s") -print(f" Abweichung: {abweichung:.1f} %") +print("Fertig: plot.pdf, tabelle.tex, werte.tex (mit thn.mplstyle).") diff --git a/thn.mplstyle b/thn.mplstyle new file mode 100644 index 0000000..d154dfe --- /dev/null +++ b/thn.mplstyle @@ -0,0 +1,26 @@ +# Matplotlib-Stylesheet -- ein Plot, immer derselbe Look. + +font.family : serif +font.serif : Computer Modern Roman, Times New Roman, DejaVu Serif +font.size : 10 + +axes.prop_cycle : cycler('color', ['c8102e', '004680', '009e73', 'd55e00']) +axes.titlesize : 11 +axes.labelsize : 10 +axes.spines.top : False +axes.spines.right : False +axes.grid : True +grid.linestyle : -- +grid.alpha : 0.4 + +lines.linewidth : 1.6 +lines.markersize : 4 + +legend.frameon : False +legend.fontsize : 9 + +figure.figsize : 5.0, 4.0 +figure.dpi : 120 +savefig.dpi : 300 +savefig.bbox : tight +savefig.format : pdf