From b9e1ad651dcfdbb1247e80314d406114004653dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gi=C3=B9=20Marcer?= Date: Sat, 13 Jun 2020 10:43:40 +0000 Subject: [PATCH] ex-1: add the possibility to plot the gala and gamo plots - gala plot: plot Gaussian + Landau PDFs - gamo plot: plot Gaussian + Moyal PDFs Also add the images to the folder. --- ex-1/plots/misc.py | 72 ++++++++++++++++++++++++++----------- slides/images/gala-pdf.pdf | Bin 0 -> 8418 bytes slides/images/gamo-pdf.pdf | Bin 0 -> 8941 bytes 3 files changed, 51 insertions(+), 21 deletions(-) create mode 100644 slides/images/gala-pdf.pdf create mode 100644 slides/images/gamo-pdf.pdf diff --git a/ex-1/plots/misc.py b/ex-1/plots/misc.py index 1109550..bec6279 100755 --- a/ex-1/plots/misc.py +++ b/ex-1/plots/misc.py @@ -6,23 +6,31 @@ import argparse import sys -# -i → agrs.show → open plot in interactive mode -# -s → args.save → save plot +# -i → agrs.show → open plot in interactive mode +# -s → args.save → save plot # -# -n → agrs.note → do the Landau plot with the notes -# -b → args.both → do the Landau-Moyal plot -# -m → args.area → do the Landau median plot -# -c → args.cauchy → do the Cauchy PDF plot +# -n → agrs.note → do the Landau plot with the notes +# -b → args.both → do the Landau-Moyal plot +# -m → args.area → do the Landau median plot +# -gm → args.gamo → do the Gaussian-Moyal compare plot +# -gl → args.gala → do the Gaussian-Landau compare plot +# -c → args.cauchy → do the Cauchy PDF plot +# Moyal PDF def moyal(x, μ, σ): N = (1)/(np.sqrt(2 * np.pi) * σ) return N * np.exp(- 0.5 * ((x - μ)/σ + np.exp(- (x - μ)/σ))) - +# Cauchy PDF def cauchy(x): return 1/(np.pi*(1 + x**2)) +# Gauss PDF +def gauss(x, μ, σ): + N = (1)/(np.sqrt(2 * np.pi) * σ) + return N * np.exp(- 0.5 * ((x - μ)/σ)**2) + def main(args): # prepare figure @@ -30,12 +38,12 @@ def main(args): plt.figure() elif args.save: plt.rcParams['font.size'] = 8 - if (args.both or args.area): + if (args.both or args.area or args.cauchy): plt.figure(figsize=(3, 2)) + elif (args.gamo or args.gala): + plt.figure(figsize=(2.5, 2)) elif args.note: plt.figure(figsize=(5, 3)) - elif args.cauchy: - plt.figure(figsize=(3, 2)) if args.note: # useful coordinates @@ -68,12 +76,13 @@ def main(args): plt.xlim(-10, 10) plt.ylim(y_min, y_max) - if args.both: + if (args.both): plt.ylim(-0.015, 0.265) # draw Landau plot - x, y = np.loadtxt(sys.stdin, unpack=True) - plt.plot(x, y, color='#92182b', label='Landau') + if not args.gamo: + x, y = np.loadtxt(sys.stdin, unpack=True) + plt.plot(x, y, color='#92182b', label='Landau') # Color the area under the function if args.area: @@ -82,20 +91,31 @@ def main(args): plt.fill_between(x[:x0], y[:x0], color='#ff99a8') plt.fill_between(x[x0:], y[x0:], color='#b28e94') - # do Moyal plot - if args.both: - μ = -0.22278298 - σ = 1.1191486 - x = np.arange(-10, 30, 0.01) - plt.plot(x, moyal(x, μ, σ), color='gray', label='Moyal') - plt.legend() - # do Cauchy plot if args.cauchy: x = np.arange(-10, 10, 0.01) plt.plot(x, cauchy(x), color='gray', label='Cauchy') plt.legend() + μ = -0.22278298 + σ = 1.1191486 + + # do Moyal plot + if (args.both or args.gamo): + x = np.arange(-10, 10, 0.01) + plt.plot(x, moyal(x, μ, σ), color='gray', label='Moyal') + plt.legend() + + # do Gaussian plot + if (args.gamo or args.gala): + x = np.arange(-10, 10, 0.01) + if args.gala: + a = 1.97 + if args.gamo: + a = 1.65 + plt.plot(x, gauss(x, μ, a*σ), color='#cfb017', label='Gauss') + plt.legend() + # save figure plt.tight_layout() if args.show: @@ -109,6 +129,10 @@ def main(args): plt.savefig('slides/images/median.pdf', transparent=True) if args.cauchy: plt.savefig('slides/images/cauchy-pdf.pdf', transparent=True) + if args.gamo: + plt.savefig('slides/images/gamo-pdf.pdf') + if args.gala: + plt.savefig('slides/images/gala-pdf.pdf') if __name__ == '__main__': @@ -132,5 +156,11 @@ if __name__ == '__main__': parser.add_argument('-c', '--cauchy', action='store_true', default=False, help='do the cauchy plot') + parser.add_argument('-gl', '--gala', + action='store_true', default=False, + help='do the gaussian-landau plot') + parser.add_argument('-gm', '--gamo', + action='store_true', default=False, + help='do the gaussian-moyal plot') args = parser.parse_args() main(args) diff --git a/slides/images/gala-pdf.pdf b/slides/images/gala-pdf.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4a8325a561a7ce7121e0d7e65a708c5463365d4e GIT binary patch literal 8418 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 oJg`OP3bubv)FpE9ylqIB;B|cdqX|c43Qua`a zgrriDEk%*~brsP{IE2jkZm6IPfrd~J z-PseNrUoI+DehDzgaJL45Yjr>j|w5l6c)vs?ha{aAgI2sFd}i@1f3w3o)wG2qC&XY zNxF1j7KELBHm9&yRE95vhhGs$a|YeTipqj)0Ud2!us$`21tAT508OoLE%{q(0NF!G zD-Vh*&DR}Lo}IqK%-NIb!h#5##ecAaMuCnw0W^Jm=`1E70p^ndD^y?bMw(qfk3nbq zL9m!)D+sAg4WPMDE%g9t@Mg`R_%i({463h7@SNnc_<#`7gz8G8Xwiefx-c;`5daPc z(=dmpu;w&oNoCU63>Tn6SV!Mg2y1no{$O_I_|>I(0~J9?U2mX6ZK@016{y^p>g&$( zfY9*HSi%#TEC!Y0g9u8?Ib{}Sf0e&xa@5MBQ)zwl3Il`2l{9{yH|vi)P>NEDIr6gh z(%S5Z)gPWr>J8l7f=xFT7CG=f)o3V6B>0}x#|;(g1|f-tA&sNRfzg3=Vc{7YDxOa^ z=fC^#b%V6VvqCeA*B8h8x0sz>XL|pp>wun3Ik7aU*|IR$qx`W9VTk9j95JBQiw)JwlE?As50s;W_ou=_vz0@HD#PQ{nBd znbifyQ`kW_L`J3y2Q*8r?rTbRPaRxe`WfH7)KdnvyzRyQb8)*K^*yS2^x@#L%<$6G z*!H2eFB-%91dH^#yzLe+Tteyo9|@E1SM|j>md68kVaMYAt&@K#K( ztk8_exH=|YFJ1ItQ*>OxYudWjv6ZFQLLY}uynjQgT&EXsHQXN%?~2~b=k+vqp|E;) zTcbs|>D9rFh5cNKmx4`ZLQa28(#TG^X?l#mL9R2(7@226E`9#=)}Hdv>5=IEfwwOQ zY$|=VM9<5p&$-W|$6RDJPWvAYbSbmjW5%+Bvapn7kX5+~ziEJcwXJ}GBKh2`(JX1m1 zKX3pqo8tTS%XG3q(i{DDC)9gNnoI%SFVW7xJ<(|c)mKj4Ah~mOP*i-b`$v-DD~XJ^ zWS7UC#S@+)_`!m0Q94()TDOvRJ1xc?uh1!L*>v!H$yRQ3lEX?=@QyQFHtaM{n z%W(g}TWyu#nS9Rs2-MV- zQV7Xc+$+#KEh~9=jGfzs68vn-cs>FJAJT8gZq0TtIy$kxOO$s*f`+^hm*(wwd%>c* zeC`f0R@Q<=Ras{B3Lg@)*Sg+!mfy-{uNbn&as{E_WND!By2|+Da>i~wF$wfV&NntY(##+1PrB zDjf(~Q!}`$Dfked;6&w-RHYQM)+b6BPw;(WcHmCM10f5@pSo+Kj@EA9^+xxw)}@Ov z#lc+)M)FRZnAI0k&7PgUX>iMGrgD+!@SzJ1MfZy(YF!z@`p>?a(LOv<;^Rp&#Mw$b z+R!4}k)JSPUi$ z^1H)n4wqPYqwl#V5}8-CunPlH{Tj|}U3x*uH^9j-25)FAd(!D+y@GX#OqTvj=iQS# zDs7;sgsei#iSz`LQ^xTzk!LPpzL<69Q@B5H&5 zYdc0X&#KB-8n#{OXb*dJGDBow>DmF?XNA!1+hYS^k>VcLI{Pcys%I0)SyD|pG4lJ4 zle2F}Y+3(M%e`AJQo>7d!B=V=ZQOfPLFd5(rvHQ-Anm%mF z@jvXJX}s%krf%g|g@=i_RHcN7#XSMSsNut&h(p=2Uu+iOQrL&w%2L+yq}-@8x3x4L zAzw(iLpBcj$DO@_D6o)^h7~MH75(7Q*%hntK&Zu_tz$>I^YXo~g|#+$h*gYP>DT1gQqDkK!0PA z+NA$KVcWBFVbCDij6aE}mx>!a=@2tdh%bsN2 zKwg`1R@#b)^;72sd0Qej7h2u1SbfNMjoh8#oq-M%+3^q0rFP-s-<3+F$T1BZ$2L^e zb-39E7kJ^tZlo>#*NIGbf;QFT*VG>^PHER8be6`?bH&H^4{rP1R_4*$sZ5RORbUS*;EZ zcPx+UJg&G{ySDP_Ky8UjSm1q@dVOr<%S(b-mbl|dwJm$>i#{u%Iw~f|*bP>J@h$s9 z4%VsR+W9@6)oj6DT#>Y>G%KJ^96dSOKfcB}7CpxB|JrCa6a4XQ*pbit!df9ATGx2f zB()c5Ec@5Xwc7Q>lFmo9f z8cu=!CS|~YtYm(^U}9n5TaDto@kR9CO0J~yHNj?4>0L99Mk*_f1tV7O>|GJKX=Bm5 zqC;h3Dr+2-#|%68{*^50tG<6&bmoEb`ob`CpMA#F+6gT>Pd&P&pT3jR{*r)j$nSA! z*6S|B(FZzezV<9>P0>4d9`Qcjh3P6yvlrH>n`{ZW&;LO70MF;{gKLCxNFk!fzIF*d zE`2cE-qnA`g8Tzcp>2>J-0MTt9H?m7Lk)Z_k-d_w>;fp zTk;2u!U^NwD33_^Nq6c;Z!E7wEhUHMI`NG2M(k$fr%gZEyM@+5Rx!QCtIT)*!N{F^ z`v{tEb&!{o=z9@T(HmAxP28(FW0PESF;{2sAkH9-VDZK@+OVJdguxes?sC{z2a{7)Zw>_jyCv1e2(^g09aYT~KZgKgq*;ufNPQ&MJU zA_ok6!_+oQ*@dEX#a6tsda(6qv0dSqgVuz=Rf(cInw|#z#hcVR*db<0zT(Y7g09!C zKbcw#kF;QK4jb~SuekDJ$J^biDVGN%Qi;Riqq^;PV=j0|h1YN2G$iBHZM9Kng{$e6 z9lp_z(%)uo&Sge0S3!fFQ4yAX&f5$2@Tt-jkev$k$D5X6bkCZk6NBo*V^cl^pXd*o zUf?~>RQ-eE|27ZD;C?m?6N?)@+GxI^XCijbxrV%g)0bJ=PteH?OXKfAnMm2QGGY_8 zMtm=p*b3f!m9UMxM{)~#7^|S(@TzS~-}MG-k(;9DQcszSJHMFr;3*elA=k^_UGglB z%E!Dn`8-SLq|-*6(|NkVM)61GSl2s8GLKeirdqEIG!ap_Ali(rAF&}6sT4!rK{CR< zwOrafo#OG$PFXRRPsG(B^ubs)&_KH4U9RwQH^D`g$)^)esHi*dzPfcLgDU^&OT+!~ z>1Cpu?c{#fA7=i!>%R;ahyUrj!eXwPqs%Yi7OaR6+lc6MTa1v6uuBrMQ4%*+Skkoc zL6RS0efnaqjNN>te;_*lw5m0GBvVAAFla~-r;LTr1QHHHW3X8GZ1!I~VF?JN72BD` zIpXTl89sA|zPVH8d@uSEgF{)Nl=0i@UtR0SvOMy&udA|*oDMSalFVca;{EO;eIk=jA0-u&aVI@U;mfdc=T@(6HBwITlM^oc zr@IRKncs)SZ4)VZ*%oTac6xjTV$=z)IYRItL z&#Wx;n#u}{RSzX1k|&){A;RkY;^ZtR{54(6*we#VmwX-B`}#tx3O-IQkuwVj@KH)3m2!V#?~DRF(S>ZaHGdHeS6T)b7{3~|YY zjgj*FT(xibH~v8(aFyh52xGCBpC~I@l8$ab^EFN*!kxH=#@?q(8n=C!VHs>&wCJ37 zquMJ*m9|W{Li`g8uinSHZvWhQcd?-9(5U{CdX>Xo^*VM9Nq5|}6<(pM)vEW8KKZmt za_W3jL-CSYWas26o8f%kMy=XtY)O^e(JHz6%T7b<&xHnAWmn~I=y(}Dqfx^Y-!FDk z+M^OV)n6bTbTeD0OWo~BiLGD~P49$A(t#1$y~bBYLkipLUQR)sJ)){wp4<1HK?T+Z zD;>r7P_?}%?gz4KYbN?S;&OQG-_%mGi3_KaP1%Uj{4*(v)q_vBX;-s>#r|wr>@LSJy9ETP})SwQa^KWV?I_ho+qoo zA}e-HP53~g^l8dAX-~c{c1BMgGllO-;8ev5)JQpc+tV5wYL>|_nJ#ax)UlQ*P!n3= zck2mxI&JtBq37ZC;+hYi9GFGrDA677`$|{Go0NVcAbUTlzZ{zSmpd=VR_qT7{M+OU zO+f#oK$CbA0WB$^1CwcI#8H{!+;QU`b_3H_1Kv&b?*CvUMLt`_y;iSRS1;n;o1jY# zXo2!&n2ipx;~6nS8;506!euhh== zIz`84uoJ_>Z?xLC<*+APr4ecMN6q9tWGjdmEBT5x+p^~)b*{@aWWjs4kZ)Z;V-xY0|wM}rS-5t0qi+R;A;g)uvRkrb z^}XK91D}`QIA*iErBAm^#$&(UuobO4$zQmd8^35!cF-=XT z!E{TE0GHExhn;(eFKCmD9v;ofpqJN83U1}H`qS}Ze!$S8FsYmhI4CcBQf$~(psEbY z%^nm6T>NH2=x?QP9bZuCg=^btY6zq@&CQJpSDr!L*cQSmLr6a=gGP6Sa6||hLS@h) zB;6O3g;{}g2#bA*fXX00I_~(YF!<=n#hEIT4&-0(P1+ z?OUY5z(EWkfxBN$gqjUD7&!X{y=-9LvroYghC>B08<&8Wg%N)Eu=%c77udn z$4X7~>|LxTSYs|MeZNgcx&VRTg^`+=IW!Q$X1(c;OXqoL*f}(m5{QF;LWBo2H0E(T zPp3avoR{(c=$xO${)ktKJ~Ur8P}%o;+HVnQ&XIGjn(1s1bpY!|G*>vhb8f3G;qt^R zi?cWGKPUmC`*92;gKJ+Fjqa-rU$Af1RzZ^pAgqF4_y@g97J=kofFQithr;snrn9_h z&Jb1!t%Oy8JXkD06(sV=ZWj-X)D8OH2iqk41NqMN5mCUbf9WF-2tYkQ%#)S_$wX;q)fl`VQ|X7@drfxy$^QFzs$w|i9g^