{VERSION 3 0 "IBM INTEL NT" "3.0" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 1 12 0 0 255 1 0 2 0 0 1 0 0 0 0 }{CSTYLE "2D Math" -1 2 "Times" 1 14 128 0 0 1 0 0 2 0 0 0 0 0 0 }{CSTYLE "2D Output" 2 20 "" 1 14 0 0 128 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" 0 21 "" 0 1 0 0 0 1 0 0 0 0 2 0 0 0 0 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "" 1 16 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Text Output" -1 2 1 {CSTYLE "" -1 -1 "Courier" 1 10 0 0 255 1 0 0 0 0 0 1 3 0 0 }1 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Heading 1" 0 3 1 {CSTYLE "" -1 -1 "" 1 14 0 0 0 0 0 1 0 0 0 0 0 0 0 }1 0 0 0 6 6 0 0 0 0 0 0 -1 0 }{PSTYLE "Heading 2" 3 4 1 {CSTYLE "" -1 -1 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 4 4 0 0 0 0 0 0 -1 0 }{PSTYLE "" 2 6 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Maple Outpu t" 0 11 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 3 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 11 12 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }1 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Tit le" 0 18 1 {CSTYLE "" -1 -1 "Arial Black" 1 24 5 28 176 0 2 1 2 0 0 2 0 0 0 }3 0 0 -1 12 12 0 0 0 0 0 0 19 0 }{PSTYLE "R3 Font 0" -1 256 1 {CSTYLE "" -1 -1 "Courier" 0 9 0 0 0 1 2 2 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 2" -1 257 1 {CSTYLE "" -1 -1 "" 0 10 128 0 0 1 2 2 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } {PSTYLE "" 0 258 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 } 3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 259 1 {CSTYLE "" -1 -1 " " 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }} {SECT 0 {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 258 "" 0 "" {TEXT -1 52 "Copyright (c) Pierre L. Douillet \n" }}{PARA 258 "" 0 "" {TEXT -1 284 "libre reproduction pour un usage universitaire sous reserve d'une copie compl\350te,\navec repro duction du programme source dont, en particulier, la pr\351sente menti on\n \n\naucune garantie de fiabilit\351. en particulier, toute utilis ation dans un contexte industriel est vivement d\351conseill\351e\n " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "restart; gc( ); " }}} {EXCHG {PARA 18 "" 0 "" {TEXT -1 13 "Simul_(V5.07)" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 45 "interface(verboseproc=1); ever_load:= NULL :" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 90 "# simul[]:= 'readlib' (`simul/`) : savelib(`simul/`, `simul/.m`) : \n# mod\350le de d\351cla ration" }}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 22 "Routines pr\351paratoi res" }}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 28 "Cr\351ation de la liste sa velib" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 891 "unprotect (savelib ) : ssavelib:= NULL: \nsavelib:= proc() local filename, values, libra ry, pathname, f; \nglobal savelibname, ssavelib;\n if not assigned(sa velibname) then savelibname := op(1, [libname]) fi;\n filename := arg s[nargs];\n if not type(filename, \{symbol,string\}) then \n ERRO R(`last argument (filename) must be a symbol/string`) fi;\n values := args[1 .. nargs - 1];\n if not type([values], list(\{symbol, string \})) then \n ERROR(`arguments must be symbol/string`) fi;\n if no t type([savelibname], list(string)) then \n ERROR(`savelibname ass igned improperly`) fi;\nssavelib:= ssavelib, values;\n for library \+ in [savelibname] do\n pathname := cat(library, '`/`', filename) ;\n f := subs('T' = (values, pathname), proc() save T end);\n \+ if traperror(f()) <> lasterror then RETURN() fi\n od;\n ER ROR(`unable to save `.filename.` in`, savelibname)\nend :" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 4 "init" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 95 "system(dater): fd:= fopen(\"c:/windows/date.txt\", RE AD):\ndate_string:= readline(fd): fclose(fd):" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 108 "message = \"simul ; author : ; last modif (V5) : \".\n (substring(date_string, 22..35)):" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 134 "`simul/init`:= subs(% , proc( ) option ` Copyright Pierre L. Douillet`; \nunprotect(gamma);\nprint(convert(mess age, symbol)) end ) : %();" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%eosimul ~~;~~author~:~~~;~~last~modif~(V5)~:~Ven~28/04/2000G " }}}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 8 "xreadlib" }}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 249 "xreadlib:= proc(qui::uneval) option `Copyri ght Pierre L. Douillet` ; local qui2, ou ; \nqui2:= eval(qui,1); to 10 do ou:= searchtext('`/`', qui2); if ou = 0 then break fi;\nqui2:= sub string(qui2, ou+1..-1): assign(qui2, readlib(qui)); od; qui2 ;\n end; " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%)xreadlibGR6#'%$quiG%'unevalG6$% %qui2G%#ouG6#%=Copyright~Pierre~L.~DouilletG6\"C%>8$-%%evalG6$9$\"\"\" ?(F/F7F7\"#5%%trueGC&>8%-%+searchtextG6$.%\"/GF2@$/F=\"\"!%&breakG>F2- %*substringG6$F2;,&F=F7F7F7!\"\"-%'assignG6$F2-%(readlibG6#F6F2F/F/F/ " }}}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 0 {PARA 3 " " 0 "" {TEXT -1 66 "Good generators are hard to find : LGM (xlgm_ini, \+ xlgm, xpie2proc)" }}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 4 "xlgm" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 132 "`xlgm_ini` := proc(seed::in teger) option `Copyright LGM`; global lgm_s;\n if nargs = 0 then lg m_s := 1 else lgm_s := seed fi\nend ;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%)xlgm_iniGR6#'%%seedG%(integerG6\"6#%.Copyright~LGMGF*@%/9#\"\"!> %&lgm_sG\"\"\">F29$F*6#F2F*" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 124 "xlgm:= proc() option `Copyright LGM`;\n global lgm_s; lgm_s := i rem(lgm_s*16807, 2147483647); evalhf(lgm_s/2147483647) end ;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%%xlgmGR6\"F&6#%.Copyright~LGMGF&C$>%&lgm_s G-%%iremG6$,$F+\"&2o\"\"+ZO[Z@-%'evalhfG6#,$F+#\"\"\"F1F&6#F+F&" }}}} {SECT 0 {PARA 4 "" 0 "" {TEXT -1 30 "xpie2proc : bien plus rapide !" } }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 433 "xpie2proc:= proc(fun) opt ion `Copyright Pierre L. Douillet`; local x, action; x := 'x': \nacti on:= proc(x, fu) local mg, cut ; \n if nops(fu)=2 then RETURN(convert (op(2,fu), string)) fi; \n cut:= 2*ceil(nops(fu)/4.) : mg:= fu[1..cut ] ;\n \" if \", convert(mg[-2], string), \" then \", procname(x, mg), \n \" else \", procname(x, fu[cut+1..-1]), \" fi \" ; \nend :\nactio n(x,convert(fun(x), list)) ; cat(\"proc(x);\", %, \"end;\"); parse(%); end ;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%*xpie2procGR6#%$funG6$%\"x G%'actionG6#%=Copyright~Pierre~L.~DouilletG6\"C'>8$.F0>8%R6$F)%#fuG6$% #mgG%$cutGF-F-C&@$/-%%nopsG6#9%\"\"#-%'RETURNG6#-%(convertG6$-%#opG6$F AF@%'stringG>F3,$-%%ceilG6#,$F=$\"+++++D!#5FA>F0&F@6#;\"\"\"F36)Q%~if~ F--FF6$&F06#!\"#FKQ'~then~F--9!6$9$F0Q'~else~F--F]o6$F_o&F@6#;,&F3FYFY FY!\"\"Q%~fi~F-F-F-F--F36$F0-FF6$-F_o6#F0%%listG-%$catG6%Q)proc(x);F-% \"%GQ%end;F--%&parseG6#FdpF-F-F-" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "ever_load:= ever_load, xlgm_ini, xlgm, xpie2proc :" } }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 13 "lois usuelles" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "unprotect(gamma):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 232 "nor_law:= (x,a,s)-> exp(-(x-a)^2/2/s^2)/s/sqrt(2*Pi):\ngamma:= (x,a)- > x^(a-1)*exp(-x/1)/GAMMA(a)/1^a;\nchi2:= unapply(gamma(x/2, nu/2)/2, \+ x, nu);\nchi2_cdf:= proc(x, nu) option operator, arrow; global t; int( chi2(t,nu), t=0..x); end; " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%&gammaGR6$%\"xG%\"aG6\"6$%)operatorG %&arrowGF)*&*&)9$,&9%\"\"\"!\"\"F3F3-%$expG6#,$F0F4F3\"\"\"-%&GAMMAG6# F2!\"\"F)F)F)" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%%chi2GR6$%\"xG%#nuG 6\"6$%)operatorG%&arrowGF),$*&*&),$9$#\"\"\"\"\"#,&9%F3!\"\"F4F4-%$exp G6#,$F2#F8F5F4\"\"\"-%&GAMMAG6#,$F7F3!\"\"F3F)F)F)" }}{PARA 11 "" 1 " " {XPPMATH 20 "6#>%)chi2_cdfGR6$%\"xG%#nuG6\"6$%)operatorG%&arrowGF)-% $intG6$-%%chi2G6$%\"tG9%/F3;\"\"!9$F)6#F3F)" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 54 "ever_load:= ever_load, nor_law, gamma, chi2, chi2_ cdf;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%*ever_loadG6)%)xlgm_iniG%%xl gmG%*xpie2procG%(nor_lawG%&gammaG%%chi2G%)chi2_cdfG" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 19 " Plotting (displayf)" }}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 8 "displayf" } }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 393 "displayf:= proc() option ` Copyright Pierre L. Douillet`;\n display((op@remove)(type,[args],`=`), \n 'font' = ['TIMES', 'ROMAN', 20], 'labelfont' = ['TIMES', 'ROMAN', 20],\n 'axesfont' = ['TIMES', 'ROMAN', 20], 'titlefont' = ['TIMES', \+ 'ROMAN', 20], \n 'labels' = ['``', '``'], 'xtickmarks'=5, 'ytickmarks '=3, 'axes'='boxed', \n(op@select)(type,[args],`=`))\nend; ever_load: = ever_load, displayf :" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%)displayf GR6\"F&6#%=Copyright~Pierre~L.~DouilletGF&-%(displayG6,--%\"@G6$%#opG% 'removeG6%%%typeG7#9\"%\"=G/.%%fontG7%.%&TIMESG.%&ROMANG\"#?/.%*labelf ontGF:/.%)axesfontGF:/.%*titlefontGF:/.%'labelsG7$.%!GFM/.%+xtickmarks G\"\"&/.%+ytickmarksG\"\"$/.%%axesG.%&boxedG--F.6$F0%'selectGF2F&F&F& " }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 21 "histo : histogrammes " }}{EXCHG {PARA 0 "" 0 "" {MPLTEXT 0 21 669 "`simul/h isto`:= proc(data2, kj) local k, interv, mino, maxo, opt, tally_;\nglo bal scaleweight, tallyinto;\n mino := min(op(data2)); maxo := max(o p(data2)); k := 'k';\n floor(mino*kj) .. ceil(maxo*kj + .1*10^(-6)) - 1;\n interv := seq(k/kj .. (k + 1)/kj, k = %);\n if nargs >=3 and typematch(args[3], identical('sav') = tally_::anything) \n t hen opt := args[4 .. -1] else opt := args[3 .. -1] fi;\n if opt <> \+ NULL \n then opt := 'view' = [op(1, interv[1]) .. op(2, interv[-1 ]), 'DEFAULT'], opt;\n fi;\n gc();\n transform[tallyinto](dat a2, [interv]); assign(tally_, %);\n transform[scaleweight[1/nops(da ta2)]](%); displayf(histogram(%), opt)\nend:" }}}{EXCHG {PARA 0 "" 0 " " {MPLTEXT 0 21 2652 "`simul/histo`:= proc(stt::\{array, list\}, kmax_ )\nlocal i, ii, count, siz, k, interv, mino, maxo, tally, st, nono, \n sav_value, xla_value, fun_value, eps_value, ran_value, fac_value, km ax, opt;\n opt := [args[3 .. -1]]; xla_value := 0;\n map(typematch, op t, 'nono'::(identical('sav') = 'sav_value'::anything));\n opt := subs( nono = NULL, opt);\n map(typematch, opt, 'nono'::(identical('xla') = ' xla_value'::anything));\n opt := subs(nono = NULL, opt);\n map(typemat ch, opt, 'nono'::(identical('fun') = 'fun_value'::anything));\n opt := subs(nono = NULL, opt);\n map(typematch, opt, 'nono'::(identical('ran ') = 'ran_value'::anything));\n opt := subs(nono = NULL, opt);\n map(t ypematch, opt, 'nono'::(identical('fac') = 'fac_value'::anything));\n \+ opt := subs(nono = NULL, opt);\n \nopt:= op(opt):\n if type(stt, array ) then st := stt; siz := op(2, op(2, eval(st)))\n else siz := nops(stt ); st := array(sort(stt))\n fi;\n mino := st[1]; maxo := st[siz]; k := 'k'; \n if assigned(ran_value) then \n if lhs(ran_value)maxo then maxo:= rhs(r an_value) fi; \n if typematch(kmax_, identical('eps') = eps_value::a nything)\n then kmax:= (maxo-mino)/eps_value\n else kmax:= kmax_ ; eps_value:= (maxo-mino)/(kmax);\n fi; \n else # ran_value not ass igned\n if typematch(kmax_, identical('eps') = eps_value::anything)\n then kmax:= (maxo-mino)/eps_value+1\n else kmax:= kmax_ ; eps_val ue:= (maxo-mino)/(kmax-1);\n fi; \n fi:\n interv := seq(mino+eps_valu e*k, k = 0..kmax);\n if opt <> NULL then opt := \n 'view' = [mino+xl a_value .. interv[-1]+xla_value, 'DEFAULT'], opt \n fi;\n ii := 1;\n c ount := 0;\n tally := NULL;\n for i to siz do\n if st[i] < interv[ii \+ + 1] then count := count + 1\n else\n tally := tally, Weight(interv [ii] + xla_value .. interv[ii + 1] + xla_value, count);\n count := 0 ;\n i := i - 1;\n ii := ii + 1\n fi\n od;\n tally := [tally, Weig ht(interv[ii]+ xla_value .. interv[ii + 1]+ xla_value, count)];\nif as signed(sav_value) then map( \n proc(x,y) local a,b,c; typematch(x, Wei ght(a::anything..b::anything, c::anything));\n Weight(a-y..b-y,c); end , tally, xla_value); assign(eval(sav_value,1), %);\nfi;\n\nif assigned (fun_value) then\n if fun_value='delta' then fun_value:= 1/(interv[-1] -interv[1]) fi;\n if has(fun_value, floor) \n then opt:= plots[pointp lot]([ mino+xla_value,0, seq(\n op([j+xla_value,fun_value(j), j+1+x la_value,fun_value(j), j+xla_value+1,0]),\n j=mino..maxo-1)], style =line), opt;\n else \n opt:= plot(['x'+xla_value,fun_value('x'), 'x' =mino .. interv[-1]]),opt;\n fi;\nfi;\n map(proc(z, siz_) subsop(2 = \+ op(2, z)/siz_, z) end, tally, siz);\n displayf(histogram(%, color=gray ), opt)\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 2826 "`simul/h isto`:= proc(stt::\{array, list\}, kmax_)\nlocal i, ii, count, siz, k, kmax, interv, mino, maxo, tally, st, nono, \n sav_value, xla_value, \+ fun_value, eps_value, ran_value, fac_value, opt;\nopt := [args[3 .. -1 ]]; nono:='nono'; \nxla_value := 0; ran_value:= false; sav_value:= fa lse; fun_value:= false; fac_value:= false;\n \n map(typematch, opt, 'n ono'::(identical('fac') = 'fac_value'::anything));\n opt := subs(nono \+ = NULL, opt);\n map(typematch, opt, 'nono'::(identical('fun') = 'fun_v alue'::anything));\n opt := subs(nono = NULL, opt);\n map(typematch, o pt, 'nono'::(identical('ran') = 'ran_value'::anything));\n opt := subs (nono = NULL, opt);\n map(typematch, opt, 'nono'::(identical('sav') = \+ 'sav_value'::anything));\n opt := subs(nono = NULL, opt);\n map(typema tch, opt, 'nono'::(identical('xla') = 'xla_value'::anything));\n opt : = subs(nono = NULL, opt);\n \nopt:= op(opt):\nif type(stt, array) then st := stt; siz := op(2, op(2, eval(st)))\n else siz := nops(stt); st \+ := array(sort(stt))\nfi;\nmino := st[1]; maxo := st[siz]; k := 'k'; \n if ran_value=false \n then # ran_value not assigned\n if typematch(k max_, identical('eps') = eps_value::anything)\n then kmax:= (maxo-mi no)/eps_value+1\n else kmax:= kmax_ ; eps_value:= (maxo-mino)/(kmax- 1);\n fi; \n else \n if lhs(ran_value)maxo then maxo:= rhs(ran_value) fi; \n \+ if typematch(kmax_, identical('eps') = eps_value::anything)\n then kmax:= (maxo-mino)/eps_value\n else kmax:= kmax_ ; eps_value:= (ma xo-mino)/(kmax);\n fi; \n fi:\ninterv := seq(mino+eps_value*k, k = \+ 0..kmax);\n if opt <> NULL then opt := \n 'view' = [mino+xla_value . . interv[-1]+xla_value, 'DEFAULT'], opt \n fi;\n ii := 1;\n count := 0 ;\n tally := NULL;\n for i to siz do\n if st[i] < interv[ii + 1] then count := count + 1\n else\n tally := tally, Weight(interv[ii] + xl a_value .. interv[ii + 1] + xla_value, count);\n count := 0;\n i : = i - 1;\n ii := ii + 1\n fi\n od;\n tally := [tally, Weight(interv [ii]+ xla_value .. interv[ii + 1]+ xla_value, count)];\nif sav_value < > false then map( \n proc(x,y) local a,b,c; typematch(x, Weight(a::any thing..b::anything, c::anything));\n Weight(a-y..b-y,c); end, tally, x la_value); assign(eval(sav_value,1), array(%) );\nfi;\n\nif fun_value \+ <> false then\n if fun_value='delta' then fun_value:= 1/(interv[-1]-in terv[1]) fi;\n if has(fun_value, floor) \n then opt:= plots['pointplo t']([ mino+xla_value,0, seq(\n op([k+xla_value,fun_value(k), k+1+xl a_value,fun_value(k), k+xla_value+1,0]),\n k=mino..maxo-1)], 'style '='line'), opt;\n else \n opt:= plot(['x'+xla_value,fun_value('x'), \+ 'x'=mino .. interv[-1]], 'color'='black'),opt;\n fi;\nfi;\n if fac_va lue= false then fac_value:= siz; fi;\n map(proc(z, fac_) subsop(2 = op (2, z)/fac_, z) end, tally, fac_value);\n displayf(histogram(%, 'color '='gray'), opt)\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 83 "si mul[histo]:= 'readlib'(`simul/histo`) : savelib(`simul/histo`, \"simul /histo.m\") :" }}}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 28 "histo_arr : hi sto from simul" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1877 "`simul/h isto_arr`:= proc(stt::array) local Qloc, i, k, kmax, mino, maxo, tally , \nfus_, ran_, sav_, xla_, fun_, fac_, eps_, cut_, opt;\n opt := [arg s[2 .. -1]];\n fus_ := xoption(opt, 'fus', 1);\n fac_ := xoption(opt, \+ 'fac', false);\n fun_ := xoption(opt, 'fun', false);\n ran_ := xoption (opt, 'ran', false);\n sav_ := xoption(opt, 'sav', false);\n xla_ := x option(opt, 'xla', 0);\n cut_ := xoption(opt, 'cut', false);\n\n opt : = op(opt);\nif cut_ <> false then \n opt:= opt, 'view' = [op(1,cut_)+ xla_ .. op(2,cut_)+xla_, 'DEFAULT']; \nfi;\n\n Qloc:= op(2, op(2, eval (stt))); # for Qloc1 from Qloc by -1 while stt[Qloc1]=0 do od; \n \nif (ran_=false) then ERROR (\"missing ran parameter\") fi;\n mino := lhs (ran_); maxo:= rhs(ran_);\n eps_:= (maxo-mino)/Qloc*fus_;\n kmax:= flo or(Qloc/fus_); maxo:= mino+(kmax+1)*eps_;\n\ntally := NULL; i := 'i'; \nfor k from 0 to kmax-1 do \n tally := tally, Weight(mino + eps_*k+ x la_ .. mino + eps_*(k+1)+ xla_,\n add(stt[k*fus_+i], i =0..fus_-1) );\nod; tally := [tally, Weight(mino + eps_*kmax+ xla_ .. mino + eps_*(kmax+1)+ xla_,\n add(stt[i], i=kmax*fus_ ..Qloc) )];\n \nif sav_ <> false then\n map(proc(x, y) local a, b, c; \n typematch(x, Weight((a::anything) .. (b::anything), c::anything) ); \n Weight(a - y .. b - y, c)\n end, tally, xla_); assign(eval( sav_, 1), array(%) )\nfi;\n\nif fun_ <> false then\n if fun_ = 'delta' then fun_ := 1/(maxo - mino) fi;\n if has(fun_, floor) \n then opt : = plots['pointplot']([mino + xla_, 0, seq(\n op([k + xla_, fun_(k), \+ k + 1 + xla_, fun_(k), k + 1 + xla_, 0]),\n k = mino .. maxo - 1)], \+ 'style' = 'line'), opt\n else \n opt := plot(['x' + xla_, fun_('x') , 'x' = mino .. maxo], 'color' = 'black'),\n opt;\n fi\nfi;\n\nif fac_ = false then fac_ := add(stt[i], i=0..Qloc) fi;\n\nmap(proc(z, f ac_) subsop(2 = op(2, z)/fac_, z) end, tally, fac_);\ndisplayf(histogr am(%, 'color' = 'gray'), opt)\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 100 "simul[histo_arr]:= 'readlib'(`simul/histo_arr`) : \n savelib(`simul/histo_arr`, \"simul/histo_arr.m\") :" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 25 " chi2_tst : test du chi_2 " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 55 "tri_xy:= proc(x,y) evalb(op([1,1],x) " 0 "" {MPLTEXT 1 0 1608 "`simul/chi2_tst`:= proc(hist, law ) global chisquare, hist1_, hist2_; \nlocal k, xx, nu, a1, b1, c1, a2 , b2, c2, opt, verb_, seuil_;\n\nopt := [args[2 .. -1]];\nverb_ := xop tion(opt, 'verb', false);\nseuil_ := xoption(opt, 'seuil', 5);\n\n map (proc(z) if type(z, range) then Weight(z, 1) else z fi end, convert(hi st, list));\n hist1_ := sort(%, 'tri_xy');\n k := 1;\n while k < nops( hist1_) do\n typematch(hist1_[k], Weight(('a1'::numeric) .. ('b1'::nu meric), 'c1'::numeric));\n if c1 < seuil_ then\n typematch(hist1_[k + 1], Weight(('a2'::numeric) .. ('b2'::numeric), 'c2'::numeric));\n \+ hist1_ := subsop(k = NULL, k + 1 = Weight(a1 .. b2, c1 + c2), hist1_) \n else k := k + 1\n fi\n od;\n while 1 < k do\n typematch(hist1_[k ], Weight(('a1'::numeric) .. ('b1'::numeric), 'c1'::numeric));\n if c 1 < seuil_ then\n typematch(hist1_[k - 1], Weight(('a2'::numeric) .. ('b2'::numeric), 'c2'::numeric));\n hist1_ := subsop(k = NULL, k - \+ 1 = Weight(a2 .. b1, c1 + c2), hist1_);\n k := k - 1\n else break\n fi\n od;\n hist2_ := map(proc(z, laww) local t, qq; t := 't'; \n if has(laww, floor) \n then qq:= add(laww(t), t= op([1,1],z)..op([1,2], z)-1) \n else qq:= evalf(Int(laww(t), t = op(1, z)))\n fi; [op([1, 1 ], z), op(2, z), qq, (op(2,z)-qq)^2/qq] \n end, hist1_, law);\n\n if \+ verb_ then \n #print(matrix([map(round,%[1]), %[2], map(round,%[3])]) ); \n print(map(round, concat(transpose(%), [op([-1, 1, 2], hist1_), \+ ``, ``, 'chi^2'])))\n fi;\n map2(op,4,hist2_);\n nu := nops(%) - 1;\n \+ xx := convert(%%, `+`);\n stats['statevalf', 'cdf', chisquare[nu]](xx) ;\n 'deg_lib' = nu, 'x' = evalf(xx, 4), 'percent' = evalf(%, 3)\nend: \+ toto:=%:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "round(chi^2):=c hi^2;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>-%&roundG6#*$)%$chiG\"\"#\" \"\"F'" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 105 "simul[chi2_tst]: = 'readlib'(`simul/chi2_tst`) : \nsavelib(`simul/chi2_tst`, tri_xy, ` simul/chi2_tst.m`) :" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }} }}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 5 "Infos" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 206 "subs(readlib= _readlib, xreadlib= _readlib, eval( simul)):\n sort(op(%), proc(a,b) lexorder(lhs(a) , lhs(b)) end): 'elem ents' = vector(%, column);\n'ever_loaded' = readlib(`pldx/xcol`)((op@s ort)([ever_load]));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/%)elementsGL%/ %)chi2_tstG-%)_readlibG6#%/simul/chi2_tstG/%&histoG-F)6#%,simul/histoG /%*histo_arrG-F)6#%0simul/histo_arrG%'columnG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/%,ever_loadedGL*%%chi2G%)chi2_cdfG%)displayfG%&gammaG% (nor_lawG%%xlgmG%)xlgm_iniG%*xpie2procG%'columnG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 112 "simu:= proc() option package; end;\nsimu('_InitFile'):= eval(`sim ul/init`);\nsimu('_PackageTable'):= eval(simul); " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%%simuGR6\"F&6#%(packageGF&F&F&F&F&" }}{PARA 11 "" 1 " " {XPPMATH 20 "6#>-%%simuG6#%*_InitFileGR6\"F)6#%=Copyright~Pierre~L.~ DouilletGF)C$-%*unprotectG6#%&gammaG-%&printG6#-%(convertG6$Qeosimul~~ ;~~author~:~~~;~~last~modif~(V5)~:~Ven~28/04/2000F)% 'symbolGF)F)F)" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>-%%simuG6#%._Packag eTableG-%&TABLEG6#7%/%)chi2_tstG-%(readlibG6#%/simul/chi2_tstG/%&histo G-F/6#%,simul/histoG/%*histo_arrG-F/6#%0simul/histo_arrG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "savelib(simu, `simu.m`);" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 63 "savelib('simul', `simul/init`, xreadlib, ever_load, `simul.m`);" }}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 8 "Contr\364le" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 53 "liste:= select(type, [ssavel ib], procedure): sort(%);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#71%%chi2G %)chi2_cdfG%)displayfG%&gammaG%(nor_lawG%%simuG%/simul/chi2_tstG%,simu l/histoG%0simul/histo_arrG%+simul/initG%'tri_xyG%%xlgmG%)xlgm_iniG%*xp ie2procG%)xreadlibG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 56 "read lib(mmint): lasterror:= 'lasterror': _eps:= '_eps': " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 79 "lasterror:= 'lasterror': for _kkkk in liste do lprint(_kkkk); mm int(_kkkk); od;" }}{PARA 6 "" 1 "" {TEXT -1 11 "simul/histo" }}{PARA 6 "" 1 "" {TEXT -1 15 "simul/histo_arr" }}{PARA 6 "" 1 "" {TEXT -1 14 "simul/chi2_tst" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#QM--------------~si mul/chi2_tst~--------------6\"" }}{PARA 6 "" 1 "" {TEXT -1 55 "Names u sed as global names, but not declared: : ``" }}{PARA 6 "" 1 "" {TEXT -1 75 "Local variables used before assigned : : a1, \+ b1, c1, a2, b2, c2" }}{PARA 6 "" 1 "" {TEXT -1 6 "tri_xy" }}{PARA 6 " " 1 "" {TEXT -1 4 "simu" }}{PARA 6 "" 1 "" {TEXT -1 10 "simul/init" }} {PARA 6 "" 1 "" {TEXT -1 8 "xreadlib" }}{PARA 6 "" 1 "" {TEXT -1 8 "xl gm_ini" }}{PARA 6 "" 1 "" {TEXT -1 4 "xlgm" }}{PARA 6 "" 1 "" {TEXT -1 9 "xpie2proc" }}{PARA 6 "" 1 "" {TEXT -1 7 "nor_law" }}{PARA 6 "" 1 "" {TEXT -1 5 "gamma" }}{PARA 6 "" 1 "" {TEXT -1 4 "chi2" }}{PARA 6 "" 1 "" {TEXT -1 8 "chi2_cdf" }}{PARA 6 "" 1 "" {TEXT -1 8 "displayf" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "# restart;" }}}}{EXCHG {PARA 259 "" 0 "" {TEXT -1 52 "Copyright (c) Pierre L. Douillet \n" }}{PARA 259 "" 0 "" {TEXT -1 283 "libre reproduction pour un usage universitai re sous reserve d'une copie compl\350te,\navec reproduction du program me source dont, en particulier, la pr\351sente mention\n \naucune gara ntie de fiabilit\351. en particulier, toute utilisation dans un contex te industriel est vivement d\351conseill\351e\n " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{MARK "5 0 0" 90 }{VIEWOPTS 1 1 0 1 1 1803 }