{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 3 }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 } {PSTYLE "" 0 260 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 261 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 260 "" 0 "" {TEXT -1 52 "Copyright (c) Pierre L. Douillet \n" }}{PARA 258 "" 0 "" {TEXT -1 369 "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 \ncertaines de ces routines sont comment\351es dans \"Maths avec \+ Maple\", paru chez Ellipses\n\naucune garantie de fiabilit\351. \nen p articulier, toute utilisation dans un contexte industriel est vivement d\351conseill\351e" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "rest art; gc( ); " }}}{EXCHG {PARA 18 "" 0 "" {TEXT -1 13 "Pldx_(V5.05) " } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 45 "interface(verboseproc=1); \+ ever_load:= NULL :" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 86 "# pl dx[]:= 'readlib'(`pldx/`) : savelib(`pldx/`, `pldx/.m`) : \n# mod\350l e de d\351claration" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}} {SECT 0 {PARA 3 "" 0 "" {TEXT -1 22 "Routines pr\351paratoires" }} {SECT 0 {PARA 4 "" 1 "" {TEXT -1 41 "Creates an 'Update' repertory (if needed)" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 40 "This section is purpos edly desactivated." }}{PARA 0 "" 0 "" {TEXT -1 69 "Read carefully the \+ help pages for 'march' before using this section !" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 71 "Cette section sert \340 cr\351er (une fois pour t outes) un r\351pertoire update," }}{PARA 0 "" 0 "" {TEXT -1 62 "confor m\351ment au m\351canisme impl\351ment\351 dans Maple. Les nouvelles" }}{PARA 0 "" 0 "" {TEXT -1 56 "biblioth\350ques viendront s'installer \+ dans ce r\351pertoire. " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 361 "if traperror( parse(`read(``c:/Maplev5/update/check.m``)`, statement) )= lasterror then\nprint (` To create an 'update' repertory, \nthe fol lowing statement must be re-activated : \nyou have to replace (1=2) b y (2=2)\nRead carefully the Maple help pages for 'march' `);\nif (1=2) then \n fd:= fopen(\"c:/windows/rep_ret.txt\", WRITE):\n fprintf(fd, \+ \"\\n \\n\"); fclose(fd);" }{TEXT -1 3 "\n " }{MPLTEXT 1 0 574 "fd:= \+ fopen(\"c:/windows/dater.bat\", WRITE):\n fprintf(fd, \"date < c:\\\\w indows\\\\rep_ret.txt > c:\\\\windows\\\\date.txt\\n \\n\"):\n fclose( fd);\n system(`md c:\\\\Maplev5\\\\Update`) :\n system(`c:\\\\Maplev5 \\\\bin.wnt\\\\march.exe -c c:\\\\Maplev5\\\\Update 100`) :\n toto:=1; save `c:/Maplev5/update/check.m`; \n quoi:= `if libname[1] <> \"C:\\ \\\\\\MAPLEV5/update\" `.\n `then libname:= \"C:\\\\\\\\MAPLEV5/upd ate\", libname: fi: `;\n old_screen:= interface(screenwidth); interfac e(screenwidth=length(quoi)+1); \n appendto(`C:\\\\Maplev5/lib/Maple.in i`); print(quoi); writeto(terminal); \n print(_done); \nfi fi ;" }}}} {SECT 0 {PARA 4 "" 0 "" {TEXT -1 28 "Cr\351ation de la liste savelib" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 905 "unprotect (savelib) : ssa velib:= NULL: \nsavelib:= proc() local filename, values, library, pat hname, f; \nglobal savelibname, ssavelib;\n if not assigned(savelibna me) then savelibname := op(1, [libname]) fi;\n filename := args[nargs ];\n if not type(filename, \{symbol,string\}) then \n ERROR(`last argument (filename) must be a symbol/string`) fi;\n values := args[1 .. nargs - 1];\n if not type([values], list(\{symbol, string\})) the n \n ERROR(`arguments must be symbol/string`) fi;\n if not type([ savelibname], list(string)) then \n ERROR(`savelibname assigned im properly`) fi;\nssavelib:= ssavelib, values;\n for library in [save libname] 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 ERROR(`una ble to save `.filename.` in`, savelibname)\nend :\n# command.pif" }}}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 4 "init" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 95 "system(d ater): fd:= fopen(\"c:/windows/date.txt\", READ):\ndate_string:= readl ine(fd); fclose(fd);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 224 "message = \+ \"pldx ; author : ; last modif (V5) : \".\n (su bstring(date_string, 22..35)):\n`pldx/init`:= \n subs(%, proc() optio n `Copyright Pierre L. Douillet`; \n print(convert(message, symbol)) \+ end): %();" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%,date_stringGQDLa~date ~actuelle~est~Lun~28/08/20006\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%do pldx~~;~~author~:~~~;~~last~modif~(V5)~:~Lun~28/08/2 000G" }}}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 8 "xreadlib" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 249 "xreadlib:= proc(qui::uneval) optio n `Copyright Pierre L. Douillet` ; local qui2, ou ; \nqui2:= eval(qui, 1); to 10 do ou:= searchtext('`/`', qui2); if ou = 0 then break fi;\nq ui2:= substring(qui2, ou+1..-1): assign(qui2, readlib(qui)); od; qui2 \+ ;\n end;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%)xreadlibGR6#'%$quiG%'un evalG6$%%qui2G%#ouG6#%=Copyright~Pierre~L.~DouilletG6\"C%>8$-%%evalG6$ 9$\"\"\"?(F/F7F7\"#5%%trueGC&>8%-%+searchtextG6$.%\"/GF2@$/F=\"\"!%&br eakG>F2-%*substringG6$F2;,&F=F7F7F7!\"\"-%'assignG6$F2-%(readlibG6#F6F 2F/F/F/" }}}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 99 "Sucre syntaxique (id, arrdim, evalmm, xco mbipo, xlap, xmaps, xoption, xplus, xprint, xvalue, yjoli)" }}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 3 "id " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 62 "id:= x->x ; pldx[id]:= id : forget := 'readlib'(''forget'') ; \+ " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#idGR6#%\"xG6\"6$%)operatorG%&ar rowGF(9$F(F(F(" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%'forgetG-%(readlib G6#.F$" }}}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 7 "xoption" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 244 "xoption := proc(opt::uneval, quoi, sinon) option `Copyright Pierre L. Douillet`; \nlocal fit ; fit := (o p@select)(has, eval(opt), quoi) ; \n if fit <> NULL then opt:= subs(f it= NULL, eval(opt) ) ; subs(fit, quoi) \n else sinon \n fi ; \n% ; \+ end ;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%(xoptionGR6%'%$optG%'uneval G%%quoiG%&sinonG6#%$fitG6#%=Copyright~Pierre~L.~DouilletG6\"C%>8$--%\" @G6$%#opG%'selectG6%%$hasG-%%evalG6#9$9%@%0F3%%NULLGC$>F?-%%subsG6$/F3 FCF<-FG6$F3F@9&%\"%GF0F0F0" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 25 "x combipo : combine powers" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 73 "Combin e powers. Thereafter YOU have to deal with any subsequent errors !)" } }{PARA 0 "> " 0 "" {MPLTEXT 1 0 233 "xcombipo:= proc (z) option `Copyr ight Pierre L. Douillet`; if hastype(z, `^`) and not type(z, `^`) the n \ncombine(map(procname, z), 'power', 'symbolic') else combine(z, 'po wer', 'symbolic') fi; \nsimplify(%, radical, 'symbolic'); end;" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%)xcombipoGR6#%\"zG6\"6#%=Copyright~P ierre~L.~DouilletGF(C$@%3-%(hastypeG6$9$%\"^G4-%%typeGF0-%(combineG6%- %$mapG6$9!F1.%&powerG.%)symbolicG-F76%F1F=F?-%)simplifyG6%%\"%G%(radic alGF?F(F(F(" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 24 "xlap : Laplace t ransform" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 192 "xlap:= proc (f , t) option `Copyright Pierre L. Douillet`; global x; local _t, _s; _s :='_s': if nargs=1 then _t:= x else _t:= t fi; unapply(Int(f(_t)*exp( -_s*_t),_t = 0 .. infinity),_s) end ;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%%xlapGR6$%\"fG%\"tG6$%#_tG%#_sG6#%=Copyright~Pierre~L.~DouilletG6 \"C%>8%.F1@%/9#\"\"\">8$%\"xG>F89%-%(unapplyG6$-%$IntG6$*&-9$6#F8F6-%$ expG6#,$*&F1F6F8F6!\"\"F6/F8;\"\"!%)infinityGF1F.6#F9F." }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 25 "xmaps : map to a sequence" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 130 "xmaps:= proc(f )option `Copyright \+ Pierre L. Douillet`; if nargs=2 then map(f,args[2]) else op(map(f, [ar gs[2..nargs] ])) fi; end ;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%&xmaps GR6#%\"fG6\"6#%=Copyright~Pierre~L.~DouilletGF(@%/9#\"\"#-%$mapG6$9$&9 \"6#F.-%#opG6#-F06$F27#&F46#;F.F-F(F(F(" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 33 "xplus : adds, with a loose syntax" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 128 "xplus:=proc()options `Copyright Pierre L. Douil let`; if nargs=1 then convert(args,list) else [args] fi; convert( % , \+ `+`); end ;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%&xplusGR6\"F&6#%=Copy right~Pierre~L.~DouilletGF&C$@%/9#\"\"\"-%(convertG6$9\"%%listG7#F1-F/ 6$%\"%G%\"+GF&F&F&" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 43 "xprint : \+ Nice printing for Maple procedures" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 733 "xprint:= proc(arg1 :: \{name, procedure\}) option `C opyright Pierre L. Douillet`; \nglobal uu, lasterror, FUNCTION; local \+ xt, xxt; \ninterface('prettyprint' = 1, 'verboseproc' = 3, 'indentamou nt'=1);\nif type(arg1, procedure) then print(args)\nelse uu:= arg1; xt := disassemble(addressof(uu)); \n if xt[2]= 0 then \n if nargs=2 \+ then print('`unassigned`') else uu:= traperror(readlib(uu)); \n i f uu=lasterror then print('`unassigned`'); else procname(args, 1) fi\n fi; \n else xxt:= disassemble(xt[2]); \n if xxt[1]=kernelopt s(dagtag=FUNCTION) and xxt[2]=addressof(readlib) then print (pointto(x xt[3])); print(eval(arg1)) else print(arg1); fi; \n fi; \nfi; interfa ce('prettyprint' = 2, 'verboseproc' = 1, 'indentamount' = 4)\nend;" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%'xprintGR6#'%%arg1G<$%%nameG%*proced ureG6$%#xtG%$xxtG6#%=Copyright~Pierre~L.~DouilletG6\"C%-%*interfaceG6% /.%,prettyprintG\"\"\"/.%,verboseprocG\"\"$/.%-indentamountGF9@%-%%typ eG6$9$F+-%&printG6#9\"C%>%#uuGFE>8$-%,disassembleG6#-%*addressofG6#FL@ %/&FN6#\"\"#\"\"!@%/9#FY-FG6#.%+unassignedGC$>FL-%*traperrorG6#-%(read libGFT@%/FL%*lasterrorGFhn-9!6$FIF9C$>8%-FP6#FW@%3/&F[p6#F9-%+kernelop tsG6#/%'dagtagG%)FUNCTIONG/&F[pFX-FS6#FboC$-FG6#-%(pointtoG6#&F[p6#F=- FG6#-%%evalG6#FE-FGFiq-F46%/F7FY/F;F9/F?\"\"%F16%FLFeoFhpF1" }}}} {SECT 0 {PARA 4 "" 0 "" {TEXT -1 24 "xvalue : value or error " }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 88 "yvalue:=proc(tmp)options `Co pyright Pierre L. Douillet`; traperror(xvalue(tmp)); end ;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%'yvalueGR6#%$tmpG6\"6#%=Copyright~Pierre~L .~DouilletGF(-%*traperrorG6#-%'xvalueG6#9$F(F(F(" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1023 "xvalue:= proc(f) options `Copyright Pierre L. Douillet`;\nlocal subs_li, funs_li, funs, proc_li, recval, RET, ca s;\n if nargs <> 1 then ERROR(\"incorrect number of arguments \") fi; \+ value(1): \n funs := map2(op, 0, indets(f, 'function'));\n funs_li:= c onvert(funs, list); \n if funs_li = [] then RETURN(f) fi;\n proc_li := map('`value/define`', funs_li);\n ASSERT(nops(funs_li) = nops(proc_li ));\n subs_li:= zip(proc(x, y) if x = y then NULL else x = y fi end, f uns_li, proc_li);\nuserinfo(5, 'xvalue', subs_li);\nrecval:= proc(ff, \+ funs_li, subs_li)\n if not has (ff, funs_li) \n then RET:=(ff); cas :=1;\n elif type(ff, function) \n then if has([op(ff)], funs_li) \n then RET:=( procname(map(procname,ff, funs_li, subs_li), funs_ li, subs_li));\n cas:=2;\n else \nuserinfo(5, 'xval ue', \"evaluating\", ff);\nRET:=((eval@subs)(subs_li, ff)); cas:=3;\n \+ fi;\n else RET:= map(procname, ff, funs_li, subs_li); cas:=4; \n fi;\nuserinfo(5, 'xvalue', ff, \"cas \"=cas, RET); \nRET; \nend;\n recval(f, funs_li, subs_li)\nend:" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 23 "yjoli : back from xjoli" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 58 "`yjoli`:= proc() (op@subs)('``' = (z->z), [args]); % end :" }}}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 115 "ever_load:= ever_load, id, \+ forget, xcombipo, xlap, xmaps, xoption, xplus, xprint, xreadlib, xvalu e, yvalue, yjoli:\n" }}}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 79 "Manipula tion de sommes (xsplit1, ysplit1, xsplit_1, ysplit_1, xavance, xrecule )" }}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 28 "xsplit1 : s\351parer le dern ier" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 268 "xsplit1:= proc (expr ) local var, quoi, debut, fin; \nif typematch(expr, 'Sum'(quoi::anyth ing, var::name = debut::anything .. fin::anything) ) \nthen Sum(quoi, \+ var=debut..fin-1) + subs(var = fin, quoi); \n elif has(expr,Sum) then map(procname,args) else expr fi; % end :" }}}}{SECT 0 {PARA 4 "" 0 " " {TEXT -1 33 "ysplit1 : s\351parer l'apres-dernier" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 278 "ysplit1:=proc(expr) local var, quoi, debut , fin;\n if typematch(expr, 'Sum'(quoi::anything, var::name = (debu t::anything) .. (fin::anything))) then Sum(quoi, var = debut .. fin+1) - subs(var = fin+1, quoi)\n elif has(expr, Sum) then map(procname, args) else expr fi; % end :" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 29 "xsplit_1 : s\351parer le premier" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 279 "xsplit_1:=proc(expr) local var, quoi, debut, fin;\n \+ if typematch(expr, 'Sum'(quoi::anything, var::name = (debut::anythi ng) .. (fin::anything))) then Sum(quoi, var = debut+1 .. fin) + subs(v ar = debut, quoi)\n elif has(expr, Sum) then map(procname, args) el se expr fi; % end :" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 34 "ysplit_1 : s\351parer l'avant premier" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 281 "ysplit_1:=proc(expr) local var, quoi, debut, fin;\n if typem atch(expr, 'Sum'(quoi::anything, var::name = (debut::anything) .. (fin ::anything))) then Sum(quoi, var = debut-1 .. fin) - subs(var = debut- 1, quoi)\n elif has(expr, Sum) then map(procname, args) else expr f i; % end :" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 18 "xavance : chvar + +" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 526 "xavance:= proc(expr, m arque) local var, op1, debut, fin, terme, action;\nif typematch(expr, \+ 'Sum'(op1::anything, var::name = debut::anything .. fin::anything) )\n then if type(op1, `+`) then terme := select(has, op1, marque) else t erme:= op1 fi;\n if nargs=3 then action:= args[3] else action:= (x- >x) fi;\n subs(terme = (action@subs)(var = var + 1, terme), expr) + subs(var = debut, terme);\n if fin = infinity then % else % - subs (var = fin + 1, terme) fi;\nelif has(expr, Sum) then map(procname, arg s) else expr fi end:" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 20 "xrecule : chvar - - " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 525 "xrecule:= \+ proc(expr, marque) local var, op1, debut, fin, terme, action;\nif type match(expr, 'Sum'(op1::anything, var::name = debut::anything .. fin::a nything) )\n then if type(op1, `+`) then terme := select(has, op1, ma rque) else terme:= op1 fi;\n if nargs=3 then action:= args[3] else \+ action:= (x->x) fi;\n subs(terme = (action@subs)(var = var - 1, ter me), expr) - subs(var = debut-1, terme);\n if fin = infinity then % else % + subs(var = fin , terme) fi;\nelif has(expr, Sum) then map(pr ocname, args) else expr fi end:" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 46 "xmanip_sommes : appel des routines et exemples" }}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 398 "`pldx/xmanip_sommes`:= proc() options `Copy right Pierre L. Douillet`; global k, x; local expr; \nif nargs=0 then \+ RETURN() fi; expr:= Sum(x^k, k=2..8); \nprint('xsplit1'(expr)=xsplit1( expr)); print('ysplit1'(expr)= ysplit1(expr));\nprint('xsplit_1'(expr) =xsplit_1(expr)); print('ysplit_1'(expr)= ysplit_1(expr));\nprint('xav ance'(expr)=xavance(expr)); print('xrecule'(expr)= xrecule(expr));\nen d; # \"(); " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 55 "pldx[xmanip_sommes]: = 'readlib'(`pldx/xmanip_sommes`) :" }}{PARA 11 "" 1 "" {XPPMATH 20 "6 #>%3pldx/xmanip_sommesGR6\"6#%%exprG6#%=Copyright~Pierre~L.~DouilletGF &C*@$/9#\"\"!-%'RETURNGF&>8$-%$SumG6$)%\"xG%\"kG/F9;\"\"#\"\")-%&print G6#/-.%(xsplit1G6#F3-FDFE-F?6#/-.%(ysplit1GFE-FLFE-F?6#/-.%)xsplit_1GF E-FSFE-F?6#/-.%)ysplit_1GFE-FZFE-F?6#/-.%(xavanceGFE-F[oFE-F?6#/-.%(xr eculeGFE-FboFEF&6$F9F8F&" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 112 "savelib(`pldx/xmanip_sommes`, xsplit1, ysplit1, xsplit_1, ysplit_ 1, xavance, xrecule, \"pldx/xmanip_sommes.m\") : " }}}}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 83 "Manipulation de produits (zsplit1, zysplit1, zs plit_1, zysplit_1, zavance, zrecule)" }}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 28 "zsplit1 : s\351parer le dernier" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 279 "zsplit1:= proc (expr ) local var, quoi, debut, fin; \+ \nif typematch(expr, 'Product'(quoi::anything, var::name = debut::anyt hing .. fin::anything)) \nthen Product(quoi, var=debut..fin-1) * subs( var = fin, quoi); \n elif has(expr,Product) then map(procname,args) e lse expr fi; % end :" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 34 "zysplit 1 : s\351parer l'apres-dernier" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 283 "zysplit1:=proc(expr) local var, quoi, debut, fin;\nif typematch (expr, 'Product'(quoi::anything, var::name = debut::anything .. fin::a nything)) then Product(quoi, var = debut .. fin+1) / subs(var = fin+1, quoi)\n elif has(expr, Product) then map(procname, args) else expr fi; % end :" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 29 "zsplit_1 : s \351parer le premier" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 283 "zsp lit_1:=proc(expr) local var, quoi, debut, fin;\nif typematch(expr, 'Pr oduct'(quoi::anything, var::name = debut::anything .. fin::anything)) \+ then Product(quoi, var = debut+1 .. fin) * subs(var = debut, quoi)\n \+ elif has(expr, Product) then map(procname, args) else expr fi; % end :" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 35 "zysplit_1 : s\351parer l' avant premier" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 286 "zysplit_1: =proc(expr) local var, quoi, debut, fin;\nif typematch(expr, 'Product' (quoi::anything, var::name = debut::anything .. fin::anything)) then P roduct(quoi, var = debut-1 .. fin) / subs(var = debut-1, quoi)\n el if has(expr, Product) then map(procname, args) else expr fi; % end :" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 18 "zavance : chvar ++" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 533 "zavance:= proc(expr, marque) local var, op1, debut, fin, terme, action;\nif typematch(expr, 'Product'(op 1::anything, var::name = debut::anything .. fin::anything))\n then if type(op1, `*`) then terme := select(has, op1, marque) else terme:= op 1 fi;\n if nargs=3 then action:= args[3] else action:= (x->x) fi;\n subs(terme = (action@subs)(var = var + 1, terme), expr) * subs(var = debut, terme);\n if fin = infinity then % else % / subs(var = fi n + 1, terme) fi;\nelif has(expr, Product) then map(procname, args) el se expr fi end:" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 20 "zrecule : ch var - - " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 532 "zrecule:= proc( expr, marque) local var, op1, debut, fin, terme, action;\nif typematch (expr, 'Product'(op1::anything, var::name = debut::anything .. fin::an ything))\n then if type(op1, `*`) then terme := select(has, op1, marq ue) else terme:= op1 fi;\n if nargs=3 then action:= args[3] else ac tion:= (x->x) fi;\n subs(terme = (action@subs)(var = var - 1, terme ), expr) / subs(var = debut-1, terme);\n if fin = infinity then % e lse % * subs(var = fin , terme) fi;\nelif has(expr, Product) then map( procname, args) else expr fi end:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 545 "zrecule:= proc(expr, marque) local var, op1, debut, fin, terme, action;\n if typematch(expr, 'Product'(op1::anything, var ::name = debut::anything..fin::anything))\nthen\n if type(op1, `*`) t hen terme := select(has, op1, marque) else terme := op1 fi;\n if narg s = 3 then action := args[3] else action := x -> x fi;\n subs(op1 = o p1/terme*(action@subs)(var = var - 1, terme), expr)\n / subs(var = debut - 1, terme);\n if fin = infinity then % else %*subs(var = fin, terme) fi\n elif has(expr, Product) then map(procname, args)\n else e xpr\n fi\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 0 {PARA 4 "" 0 " " {TEXT -1 48 "zmanip_products : appel des routines et exemples" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 409 "`pldx/zmanip_products`:= pr oc() options `Copyright Pierre L. Douillet`; global a, k; local expr; \+ \nif nargs=0 then RETURN() fi; expr:= Product(a[k], k=2..8); \nprint(' zsplit1'(expr)=zsplit1(expr)); print('zysplit1'(expr)= zysplit1(expr)) ;\nprint('zsplit_1'(expr)=zsplit_1(expr)); print('zysplit_1'(expr)= zy split_1(expr));\nprint('zavance'(expr)=zavance(expr)); print('zrecule' (expr)= zrecule(expr));\nend; # \"(); " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 179 "pldx[zmanip_products]:= 'readlib'(`pldx/zmanip_products`) : \+ \nsavelib(`pldx/zmanip_products`, zsplit1, zysplit1, zsplit_1, zysplit _1, zavance, zrecule, `pldx/zmanip_products.m`) : " }}{PARA 11 "" 1 " " {XPPMATH 20 "6#>%5pldx/zmanip_productsGR6\"6#%%exprG6#%=Copyright~Pi erre~L.~DouilletGF&C*@$/9#\"\"!-%'RETURNGF&>8$-%(ProductG6$&%\"aG6#%\" kG/F:;\"\"#\"\")-%&printG6#/-.%(zsplit1G6#F3-FEFF-F@6#/-.%)zysplit1GFF -FMFF-F@6#/-.%)zsplit_1GFF-FTFF-F@6#/-.%*zysplit_1GFF-FenFF-F@6#/-.%(z avanceGFF-F\\oFF-F@6#/-.%(zreculeGFF-FcoFFF&6$F8F:F&" }}}}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 61 "Manipulation d'int\351grales (xjoli, xrev erse, xfubini, xdchvar)" }}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 29 "xjoli \+ : un utilitaire utile !" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1259 "`pldx/xjoli`:=proc(expr, nofact) options `Copyright Pierre L. Douille t`; \nglobal xcombipo, ``; local _cas, op1, op2, _x, temp, _nofact, _k , de, nu, k, li; \n_cas := \{int, Int, Sum\}; _k:='_k':\nif nargs=2 th en _nofact:= nofact else _nofact:= false; fi; \nif type(expr, function ) and member(op(0, expr), _cas) \nthen\n op1 := op(1, expr); op2 := o p(2, expr);\n if type(op1, `*`) and (not _nofact)\n then if type(op2 , `=`) then _x := op(1, op2) else _x := op2 fi;\n (``@remove)(has, \+ op1, _x)*subs(op1 = select(has, op1, _x), expr)\n elif type(op1, `+`) \n then `+`(seq(op(0, expr)(_k, op2), _k = op1)); procname(%, _nofac t)\n else subs(op1= procname(op1, _nofact), expr)\n fi\nelif has(exp r, _cas) \nthen \n if type(expr, `*`) then map(procname, args); temp \+ := (eval@subs)(`` = (z->z), %);\n if type(temp, `*`) \n then '`` '((xcombipo@remove)(has, temp, _cas))*select(has, temp, _cas) \n el se temp \n fi;\n else traperror(map(procname, args)) \n fi \nelif type(expr, 'matrix')\nthen map(denom, map(op, evalmm(expr))); de:=(lc m@op)(%); \n li:= map(numer, map(op, evalmm(expr))); nu:=%[1];\n \+ for k in li while nu <> 1 do nu:= gcd(nu, k); od; \n ``(nu/de )*evalm(de/nu*expr);\nelif hastype(expr, 'matrix')\nthen map(procname, expr);\nelse expr \nfi; %; end ;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 81 "pldx[xjoli]:= 'xreadlib'(`pldx/xjoli`) : savelib(`pldx/xjoli`, `pl dx/xjoli.m`) : " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%+pldx/xjoliGR6$%% exprG%'nofactG6-%%_casG%$op1G%$op2G%#_xG%%tempG%(_nofactG%#_kG%#deG%#n uG%\"kG%#liG6#%=Copyright~Pierre~L.~DouilletG6\"C'>8$<%%$SumG%$IntG%$i ntG>8*.F@@%/9#\"\"#>8)9%>FG%&falseG@+3-%%typeG6$9$%)functionG-%'member G6$-%#opG6$\"\"!FPF:C%>8%-FV6$\"\"\"FP>8&-FV6$FEFP@'3-FN6$Fen%\"*G4FGC $@%-FN6$Fjn%\"=G>8'-FV6$FhnFjn>FioFjn*&--%\"@G6$%!G%'removeG6%%$hasGFe nFioFhn-%%subsG6$/Fen-%'selectGFdpFPFhn-FN6$Fen%\"+GC$-F^q6#-%$seqG6$- FU6$F@Fjn/F@Fen-9!6$%\"%GFG-Fgp6$/Fen-Fiq6$FenFGFP-Fep6$FPF:@%-FN6$FPF aoC%-%$mapG6$Fiq9\">8(--F`p6$%%evalGFgp6$/FbpR6#%\"zGF76$%)operatorG%& arrowGF7FPF7F7F7F[r@%-FN6$F\\sFao*&-.Fbp6#--F`p6$%)xcombipoGFcp6%FepF \\sF:Fhn-F[qFdtFhnF\\s-%*traperrorG6#Fgr-FN6$FP.%'matrixGC(-Fhr6$%&den omG-Fhr6$FV-%'evalmmG6#FP>8+--F`p6$%$lcmGFV6#F[r>8.-Fhr6$%&numerGFau>8 ,&F[r6#Fhn?&8-F^v0FcvFhn>Fcv-%$gcdG6$FcvFgv*&-Fbp6#*&Fcv\"\"\"Fgu!\"\" Fhn-%&evalmG6#*&*&FguFhnFPFhnFawFcvFbwFhn-%(hastypeGFjt-Fhr6$FiqFPFPF[ rF76$FctFbpF7" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 7 "xfubini" }} {EXCHG {PARA 0 "" 0 "" {TEXT -1 55 "l'utilisateur est charg\351 de v \351rifier les hypoth\350ses... " }{MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 755 "`pldx/xfubini`:=proc(expr) options `Copyright Pie rre L. Douillet`; local su1, su2, var1, su11, var2, expr0, expr_; \nif typematch(expr, su2::anyfunc(su1::anyfunc(expr_::anything, var1::equa tion), var2::equation)) \n then op(0, su1)(op(0, su2)(expr_, var2 ), var1)\nelif typematch(expr, su2::anyfunc(su1::`*`, var2::equation)) and has(su1, \{Sum, Int\}) then\n expr0:= select(has,su1,\{Sum, Int\} );\n if typematch(expr0, su11::anyfunc(expr_::anything, var1::equation ))\n then subs(su11= op(0,su11)(expr_*remove(has,su1,\{Sum, Int\}), \+ var1), expr0); \n procname(op(0, su2)(%, var2))\n else expr\n fi \+ \nelif has(expr, \{Sum, Int\}) then map(procname, expr) else expr fi; \+ end ;\npldx[xfubini]:= 'xreadlib'(`pldx/xfubini`) : savelib(`pldx/xfub ini`, `pldx/xfubini.m`) : " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%-pldx/ xfubiniGR6#%%exprG6)%$su1G%$su2G%%var1G%%su11G%%var2G%&expr0G%&expr_G6 #%=Copyright~Pierre~L.~DouilletG6\"@)-%*typematchG6$9$'8%-%(anyfuncG6$ '8$-F;6$'8*%)anythingG'8&%)equationG'8(FF--%#opG6$\"\"!F>6$--FK6$FMF96 $FBFHFE3-F56$F7'F9-F;6$'F>%\"*GFG-%$hasG6$F><$%$SumG%$IntGC$>8)-%'sele ctG6%FfnF>Fhn@%-F56$F]o'8'F?C$-%%subsG6$/Feo--FK6$FMFeo6$*&FB\"\"\"-%' removeGF`oF`pFEF]o-9!6#-FP6$%\"%GFHF7-Ffn6$F7Fhn-%$mapG6$FdpF7F7F2F2F2 " }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 28 "xreverse : rebrousse-segmen t" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 361 "`pldx/xreverse`:= proc (expr ) options `Copyright Pierre L. Douillet`; local deb, fin; \nif \+ typematch(expr, Int(anything, name = deb::anything .. fin::anything) ) \nthen subs(deb..fin = fin..deb, -expr); \nelif has(expr, Int) then m ap(procname,args) else expr fi; % end ;\npldx[xreverse]:= 'readlib'(`p ldx/xreverse`) : savelib(`pldx/xreverse`, `pldx/xreverse.m`) : " }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%.pldx/xreverseGR6#%%exprG6$%$debG%$f inG6#%=Copyright~Pierre~L.~DouilletG6\"C$@'-%*typematchG6$9$-%$IntG6$% )anythingG/%%nameG;'8$F7'8%F7-%%subsG6$/;F;F>F<,$F3!\"\"-%$hasG6$F3 F5-%$mapG6$9!9\"F3%\"%GF-F-F-" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 33 "xdchvar : chvar \340 deux variables " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 557 "`pldx/xdchvar`:= proc(qui, chvar, newvar) options `C opyright Pierre L. Douillet`; \nglobal det, Doubleint: local v1, x1, \+ x2, t1, t2, Jac; \nif typematch(qui, Int(Int(v1::anything, x1::anythin g=anything), x2::anything=anything))\nand op([1,1], chvar)=x1 and op([ 2,1], chvar)=x2 \nand typematch(newvar, [\{t1::name=anything, t1::name \}, \{t2::name=anything, t2::name\}]) \nthen\nsubs(chvar, [x1,x2]); Ja c:= matrice(map2(diff,%,[t1,t2]));\nprint(Jac, linalg[det](Jac));\n de t(Jac)*subs(chvar, v1); student[Doubleint](%,op(newvar));\nelse ERROR( \"mauvais matching\")\nfi; end;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 88 " pldx[xdchvar]:= 'readlib'(`pldx/xdchvar`) : savelib(`pldx/xdchvar`, `p ldx/xdchvar.m`) : " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%-pldx/xdchvarG R6%%$quiG%&chvarG%'newvarG6(%#v1G%#x1G%#x2G%#t1G%#t2G%$JacG6#%=Copyrig ht~Pierre~L.~DouilletG6\"@%333-%*typematchG6$9$-%$IntG6$-F=6$'8$%)anyt hingG/'8%FCFC/'8&FCFC/-%#opG6$7$\"\"\"FO9%FF/-FL6$7$\"\"#FOFPFI-F96$9& 7$<$/'8'%%nameGFCFfn<$/'8(FhnFCF[oC'-%%subsG6$FP7$FFFI>8)-%(matriceG6# -%%map2G6%%%diffG%\"%G7$FgnF\\o-%&printG6$Fco-&%'linalgG6#%$detG6#Fco* &-FdpFepFO-F_o6$FPFBFO-&%(studentG6#%*DoubleintG6$F[p-FL6#FX-%&ERRORG6 #Q1mauvais~matchingF3F36$FdpF^qF3" }}}}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 70 "De tout un peu (xcollect, xnice, xreg_falsi, xHospital, xplif, \+ xclone)" }}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 21 "xcs : complete square " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 197 "`pldx/xcs`:= proc(a,b,x x) option `Copyright Pierre L. Douillet`; \n student['completesquare' ](b, xx): a+ select(has,%,xx), remove(has,%,xx) :\nif nops(indets(%[2] ))=1 then %[1]+%[2] else % fi;\nend ;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%)pldx/xcsGR6%%\"aG%\"bG%#xxG6\"6#%=Copyright~Pierre~L.~DouilletGF *C%-&%(studentG6#.%/completesquareG6$9%9&6$,&9$\"\"\"-%'selectG6%%$has G%\"%GF6F:-%'removeGF=@%/-%%nopsG6#-%'indetsG6#&F?6#\"\"#F:,&&F?6#F:F: FJF:F?F*F*F*" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 194 "`pldx/xcs` := proc(a, b, xx) option `Copyright Pierre L. Douillet`;\n student['co mpletesquare'](b, xx); \n if type(%, `+`) then a + select(has, %, xx), remove(has, %, xx)\n else RETURN(a+%) fi;\nend;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%)pldx/xcsGR6%%\"aG%\"bG%#xxG6\"6#%=Copyright~Pierre~L .~DouilletGF*C$-&%(studentG6#.%/completesquareG6$9%9&@%-%%typeG6$%\"%G %\"+G6$,&9$\"\"\"-%'selectG6%%$hasGF;F6F@-%'removeGFC-%'RETURNG6#,&F?F @F;F@F*F*F*" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 723 "`pldx/xcs2` := proc(f) option `Copyright Pierre L. Douillet`; \nlocal x,y,u,v,chva r, ravch, g,dg,g0,g1,g2; global _xcs2_flag;\nif args[-1]='recurse' the n _xcs2_flag:=0; RETURN(procname(args[1..-2])); fi; \nif nargs=1 then \+ RETURN( normal(f) ) else x:= args[2] fi;\n g:=expand(f); dg:=traperro r(degree(g,x)): \n if dg=2 then \n g0:= coeff(g,x,0): g1:= coeff(g,x ,1): g2:= coeff(g,x,2);\n g2*(x+normal(g1/2/g2))^2 + procname(g0-g1^2 /g2/4, args[3..-1])\n elif dg=1 and nargs > 2 and assigned(_xcs2_flag) and _xcs2_flag%* pldx/xcs2GR6#%\"fG6-%\"xG%\"yG%\"uG%\"vG%&chvarG%&ravchG%\"gG%#dgG%#g0 G%#g1G%#g2G6#%=Copyright~Pierre~L.~DouilletG6\"C'@$/&9\"6#!\"\".%(recu rseGC$>%+_xcs2_flagG\"\"!-%'RETURNG6#-9!6#&F;6#;\"\"\"!\"#@%/9#FM-FE6# -%'normalG6#9$>8$&F;6#\"\"#>8*-%'expandGFV>8+-%*traperrorG6#-%'degreeG 6$FhnFY@'/F\\oFfnC&>8,-%&coeffG6%FhnFYFC>8--Fio6%FhnFYFM>8.-Fio6%FhnFY Ffn,&*&F`pFM),&FYFM-FU6#,$*&F\\p\"\"\"F`p!\"\"#FMFfnFMFfnF[qFM-FH6$,&F goFM*&*$)F\\pFfnF[qF[qF`pF\\q#F=\"\"%&F;6#;\"\"$F=FM333/F\\oFM2FfnFQ-% )assignedG6#FB2FB-%%nopsG6#-%'indetsG6#FhnC)>8%&F;6#Fiq>8(<$/FY,&8&FM8 'FM/F[s,&FcsFMFdsF=>8)-%&solveG6$%\"%G<$FdsFcs>FB,&FBFMFMFM-FH6&-%%sub sG6$F_sFhnFcsFds&F;6#;FeqF=>FB,&FBFMF=FM-Fct6$Fhs%#%%GFWF6FarF6" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 147 "pldx[xcs2]:= 'readlib'(`pld x/xcs2`) : savelib(`pldx/xcs2`, `pldx/xcs2.m`) :\npldx[xcs]:= 'readlib '(`pldx/xcs`) : savelib(`pldx/xcs`, `pldx/xcs.m`) :" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 29 "xpurge : trop petit est nul !" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 648 "`pldx/xpurge`:= proc(zz) local eps ; global xpurge0; option `Copyright Pierre L. Douillet`;\nif nargs = 2 then eps := 10^(-args[2]) else eps := 1/10000000000 fi;\nxpurge0:= pr oc(z,eps)\n if type(z, \{array, set, `=`, list\}) then map(procname , z, eps) \n elif type(z, numeric) then `if`(abs(z) < eps, 0, z)\n \+ elif type(z, complex) then\n if abs(z) < eps then 0 elif abs (Re(z)) < eps then I*Im(z) \n elif abs(Im(z)) < eps then Re(z) else z fi\n elif type(z, \{`+`, `*`\}) then map(procname,z,e ps) \n else z\n fi\nend; xpurge0(zz,eps); \nend; \npldx[xpurge]: = 'xreadlib'(`pldx/xpurge`) : savelib(`pldx/xpurge`, `pldx/xpurge.m`) \+ :" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%,pldx/xpurgeGR6#%#zzG6#%$epsG6# %=Copyright~Pierre~L.~DouilletG6\"C%@%/9#\"\"#>8$)\"#5,$&9\"6#F1!\"\"> F3#\"\"\"\",+++++\">%(xpurge0GR6$%\"zGF)F,F,F,@+-%%typeG6$9$<&%$setG%% listG%&arrayG%\"=G-%$mapG6%9!FH9%-FF6$FH%(numericG-%#ifG6%2-%$absG6#FH FR\"\"!FH-FF6$FH%(complexG@)FYFgn2-Fen6#-%#ReGFfnFR*&%\"IGF=-%#ImGFfnF =2-Fen6#FcoFRF_oFH-FF6$FH<$%\"+G%\"*GFNFHF,F,F,-F@6$FHF3F,6#F@F," }}}} {SECT 0 {PARA 4 "" 0 "" {TEXT -1 9 "xcollect " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 519 "`pldx/xcollect`:=proc(expr, z) options `Copyri ght Pierre L. Douillet`;\nlocal kmx, k; k:='k': \nif type(z, list) \n then kmx := nops(z);\n subs(seq(z[k] = _Env.k, k = 1 .. kmx), seq(-z[ k] = -_Env.k, k = 1 .. kmx), expr);\n collect(%, [seq(_Env.k, k = 1 . . kmx)], args[3 .. nargs]);\n subs(seq(_Env.k = z[k], k = 1 .. kmx), \+ %)\nelse k:= 1: collect(subs(z = _Env.k, expr), _Env.k, args[3 .. narg s]); \n subs(_Env.k = z, %)\nfi end; \npldx[xcollect]:= 'readlib'(`pl dx/xcollect`) : savelib(`pldx/xcollect`, `pldx/xcollect.m`) : " }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%.pldx/xcollectGR6$%%exprG%\"zG6$%$km xG%\"kG6#%=Copyright~Pierre~L.~DouilletG6\"C$>8%.F1@%-%%typeG6$9%%%lis tGC&>8$-%%nopsG6#F7-%%subsG6%-%$seqG6$/&F76#F1(%%_EnvGF1/F1;\"\"\"F;-F C6$/,$FF!\"\",$FHFQFJ9$-%(collectG6%%\"%G7#-FC6$FHFJ&9\"6#;\"\"$9#-F@6 $-FC6$/FHFFFJFWC%>F1FL-FU6%-F@6$/F7FHFSFHFen-F@6$/FHF7FWF.F.F." }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 0 {PARA 4 "" 0 " " {TEXT -1 34 "xnice : pour de belles expressions" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 189 "`pldx/subsnice`:= proc(u, quoi) options `Cop yright Pierre L. Douillet`; local nu; nu:='nu' : if member(quoi, [op(u )], 'nu') then subsop(nu= -quoi, u) else subs(quoi= -quoi, u); fi;% ; \+ end ;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 843 "`pldx/xnice0`:= proc(u,v) options `Copyright Pierre L. Douillet`; local all_op, sel_op, try_op, _k, smile ; if not has(u,v) then u\nelif not type(u,`*`) then map(pro cname,u,v);\nelse\n all_op:= \{op(u)\}; sel_op:= select(type, %, ident ical(v)^anything) union select(member,%,\{v\}); \n if % = \{ \} then m ap(procname,u,v) \n else normal(u/subs(v=-v,u)); \n if %=-1 then \n \+ all_op minus sel_op; map2(op,1,select(type,%,`^`)) union remove(type,% ,`^`); convert(%,list);\n select(proc(uu) map(op, [op(uu)]); select(t ype, %, negative); evalb(% <> []) end, %);\n try_op:=sort(%, proc(a,b ) evalb(length(a) " 0 "" {MPLTEXT 1 0 333 "`pldx/xnice` := proc(u, v) option s `Copyright Pierre L. Douillet`; local smile; global yjoli ; smile:= \+ `pldx/xnice0`(u, v); \n(normal@yjoli)(smile = u); if not evalb(%) then ERROR( '` erreur nice `', %) fi; smile ; end ; \npldx[xnice]:= 'readl ib'(`pldx/xnice`) : savelib(`pldx/xnice`, `pldx/xnice0`, `pldx/subsnic e`, `pldx/xnice.m`) : " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%.pldx/subs niceGR6$%\"uG%%quoiG6#%#nuG6#%=Copyright~Pierre~L.~DouilletG6\"C%>8$.F 0@%-%'memberG6%9%7#-%#opG6#9$F1-%'subsopG6$/F0,$F6!\"\"F;-%%subsG6$/F6 F@F;%\"%GF-F-F-" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%,pldx/xnice0GR6$% \"uG%\"vG6'%'all_opG%'sel_opG%'try_opG%#_kG%&smileG6#%=Copyright~Pierr e~L.~DouilletG6\"C$@'4-%$hasG6$9$9%F84-%%typeG6$F8%\"*G-%$mapG6%9!F8F9 C%>8$<#-%#opG6#F8>8%-%&unionG6$-%'selectG6%F<%\"%G)-%*identicalG6#F9%) anythingG-FP6%%'memberGFR<#F9@%/FR<\"F?C$-%'normalG6#*&F8\"\"\"-%%subs G6$/F9,$F9!\"\"F8!\"\"@%/FRFdoC*-%&minusG6$FEFK-FM6$-%%map2G6%FH\"\"\" -FP6%F8&-%%sortG6$F RR6$%\"aG%\"bGF1F1F1-Fhq6#2-%'lengthGFI-FirFVF1F1F1>8(%&falseG?&8'F]r% %trueGC$-F[o6#*&-%.pldx/subsniceG6$F8F_sF^oF8Feo@$FgoC$>F\\sF`s%&break G@%F\\s-F`o6$FboFes*&-%!G6#FdoFapF_oFapF_oFRF1F1F1" }}{PARA 11 "" 1 " " {XPPMATH 20 "6#>%+pldx/xniceGR6$%\"uG%\"vG6#%&smileG6#%=Copyright~Pi erre~L.~DouilletG6\"C&>8$-%,pldx/xnice0G6$9$9%--%\"@G6$%'normalG%&yjol iG6#/F0F4@$4-%&evalbG6#%\"%G-%&ERRORG6$.%.~erreur~nice~GFCF0F-6#F;F-" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 24 "xreg_falsi : ordre 1.6 !" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 152 "`pldx/xreg_falsi_k`:= proc( fu,a, b, _k); a-fu(a)*(b-a)/(fu(b)-fu(a)); if abs(%-b)< 10^(2-Digits) \+ then %,_k else \nprocname(fu, b, %, _k+1); fi; % end : " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 226 "`pldx/xreg_falsi`:= proc(fu,a, b) options `C opyright Pierre L. Douillet`; reg_falsi_k(fu,a,b,0)[1]; end;\npldx[xre g_falsi]:= 'readlib'(`pldx/xreg_falsi`) : savelib(`pldx/xreg_falsi`, ` pldx/xreg_falsi_k`, `pldx/xreg_falsi.m`) : " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%0pldx/xreg_falsiGR6%%#fuG%\"aG%\"bG6\"6#%=Copyright~P ierre~L.~DouilletGF*&-%,reg_falsi_kG6&9$9%9&\"\"!6#\"\"\"F*F*F*" }}}} {SECT 0 {PARA 4 "" 0 "" {TEXT -1 9 "xHospital" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 644 "`pldx/xHospital`:= proc(expr, ou_ca) options ` Copyright Pierre L. Douillet`; \nglobal yjoli, xjoli; local try, var, ici, regles; \nif type(expr, `=`) then RETURN(map(procname, args)) fi ;\ntypematch(ou_ca, var::name = ici::numeric); try := convert([numer, \+ denom](expr), D);\nif nargs = 3 then regles := args[3] else regles := \+ \{var = var\} fi; \nwhile subs(regles, (eval@subs)(var = ici, regles, \+ regles, try)) = [0, 0] do try := convert(map(diff, try, var), D); od; \n(eval@subs)(var = ici, regles, try[1]/try[2]); subs(regles, (yjoli@e val@xjoli)(%)) end ;\npldx[xHospital]:= 'readlib'(`pldx/xHospital`) : \+ savelib(`pldx/xHospital`, `pldx/xHospital.m`) :" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%/pldx/xHospitalGR6$%%exprG%&ou_caG6&%$tryG%$varG%$ici G%'reglesG6#%=Copyright~Pierre~L.~DouilletG6\"C)@$-%%typeG6$9$%\"=G-%' RETURNG6#-%$mapG6$9!9\"-%*typematchG6$9%/'8%%%nameG'8&%(numericG>8$-%( convertG6$-7$%&numerG%&denomG6#F6%\"DG@%/9#\"\"$>8'&F?6#FY>Fen<#/FFFF? (F0\"\"\"F\\oF0/-%%subsG6$Fen--%\"@G6$%%evalGF_o6&/FFFIFenFenFL7$\"\"! Fio>FL-FN6$-F<6%%%diffGFLFFFU-Fbo6%FgoFen*&&FL6#F\\o\"\"\"&FL6#\"\"#! \"\"-F_o6$Fen--Fco6$-Fco6$%&yjoliGFeo%&xjoliG6#%\"%GF06$FaqFbqF0" }}}} {SECT 0 {PARA 4 "" 0 "" {TEXT -1 30 "xclone : m\352me nom, autre objet " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 437 "`pldx/xclone` := proc(x ) options `Copyright Pierre L. Douillet`; local _x1, _x2;\nif type([ar gs], [\{string, symbol\}]) \n then subs('X' = x, proc() local X; X:=X \+ ; X end)()\n elif typematch(args, _x1::anyfunc(_x2::\{string, symbol\} ) ) \n then subs('X' = op(0,_x1), 'Y' = _x2, proc() local X,Y; X:=X: X (Y) end)() \n else ERROR('` invalid arguments`') \nfi end ;\npldx[xclo ne] := 'readlib'(`pldx/xclone`) : savelib(`pldx/xclone`, `pldx/xclone. m`) :" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%,pldx/xcloneGR6#%\"xG6$%$_x 1G%$_x2G6#%=Copyright~Pierre~L.~DouilletG6\"@'-%%typeG6$7#9\"7#<$%'sym bolG%'stringG--%%subsG6$/.%\"XG9$RF-6#F>F-F-C$>8$FDFDF-F-F-F--%*typema tchG6$F3'FD-%(anyfuncG6#'8%F5--F:6%/F=-%#opG6$\"\"!FD/.%\"YGFMRF-6$F>F XF-F-C$>FDFD-FD6#FMF-F-F-F--%&ERRORG6#.%3~invalid~argumentsGF-F-F-" }} }}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 19 "convert/D revisited" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 697 "`pldx/convert/D`:= proc() options \+ `Copyright Pierre L. Douillet`;\nglobal `convert/D` ,`liesymm/difftool s/initflag`, `liesymm/difftools/init` ;\n`liesymm/difftools/initflag` := true ; readlib( `liesymm/difftools/init`)() ;\n print( '`coucou, i nitializing convert/D`' ) ; \nsubs(ERROR= proc() end, 'readlib'(''`too ls/gensym`'')= '`pldx/xclone`', \n readlib( '`liesymm/convert/D`' )) \+ ;\n### WARNING: semantics of type `string` have changed\n convert(%, \+ string): substring(%, 1..searchtext(`if`,%)-1), substring(%, searchtex t( '`fi;`' , %)+3..-1) : `convert/D`:= parse(cat(%)) : \n`convert/D`( args) ; end ;\npldx[`convert/D`]:= 'readlib'(`pldx/convert/D`) : savel ib(`pldx/convert/D`, `pldx/convert/D.m`) :" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%/pldx/convert/DGR6\"F&6#%=Copyright~Pierre~L.~Douille tGF&C*>%;liesymm/difftools/initflagG%%trueG--%(readlibG6#%7liesymm/dif ftools/initGF&-%&printG6#.%?coucou,~initializing~convert/DG-%%subsG6%/ %&ERRORGRF&F&F&F&F&F&F&F&/-.F/6#..%-tools/gensymG.%,pldx/xcloneG-F/6#. %2liesymm/convert/DG-%(convertG6$%\"%G%'stringG6$-%*substringG6$FM;\" \"\",&-%+searchtextG6$%#ifGFMFT!\"\"FT-FQ6$FM;,&-FW6$.%$fi;GFMFT\"\"$F TFZ>%*convert/DG-%&parseG6#-%$catG6#FM-F_o6#9\"F&6%F_oF+F1F&" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 108 "# xprint(`pldx/convert/D`) \+ ; `pldx/convert/D`(diff(f(x),x)) ; xprint(`convert/D`) ; xprint(`tools /gensym`); " }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 25 "xplif : simplify assuming" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 198 "xmemo:= proc(z ) global `property/OrigName`; \n if assigned (`property/OrigName`[z]) \+ then [addressof(eval(`property/OrigName`[z],1)), addressof(z), z] \n e lse [addressof(z), addressof(z), z] fi; end :" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 1421 "`pldx/xplif`:= proc(expr, assu::list) option `Copyr ight Pierre L. Douillet`; local k, kmax;\nglobal `property/object`, `p roperty/Involves`, `property/OrigName`, Eprop, Eorin, Einvo, expr1, ex pr2, liste0, perm, xplif_var, xplif_var0, xplif_var00, lasterror, xmem o;\n userinfo(5, 'xplif', '` entered with`', args); k := 'k';\n if tra perror((op@op)(4, eval(`property/Involves`))) = \n lasterror then as sume(xplif_var0 + xplif_var00 < xplif_var0) fi;\n Eprop := copy(eval(` property/object`));\n Eorin := copy(eval(`property/OrigName`));\n Einv o := convert(copy((op@op)(4, eval(`property/Involves`))), set);\n list e0 := convert(indets(assu) minus \{'positive', 'real', 'negative'\}, l ist);\n userinfo(5, 'xplif', \"liste qualifi\351e des noms : \", map(x memo, %));\n kmax := nops(liste0);\n perm := \{seq(liste0[k] = xplif_v ar.k, k = 1 .. kmax)\};\n userinfo(5, 'xplif', \"substitutions : \", % );\n assume((op@eval)(subs(perm, assu)));\n userinfo(4, 'xplif', \"ass ertions : \", assume_((op@eval)(subs(perm, assu))));\n subs(perm, expr );\nuserinfo(4, 'xplif', \"quod est evaluenda : \", %); \nexpr1 := val ue(%);\n `property/object` := copy(eval(Eprop));\n `property/OrigName` := copy(eval(Eorin));\n for k in convert((op@op)(4, eval(`property/In volves`)), set) minus Einvo do forget(`property/Involves`, lhs(k) ) od;\n expr2 := (eval@subs)(map(rhs = lhs, perm), expr1);\n unassign( seq(evaln(xplif_var.k), k = 1 .. kmax), xplif_var0, xplif_var00);\n ex pr2\nend;" }}{PARA 0 "" 0 "" {MPLTEXT 0 21 1278 "`pldx/xplif`:= proc(e xpr, assu::list) options `Copyright Pierre L. Douillet`; local k, kma x ; \nglobal `property/object`, `property/Involves`, `property/OrigNam e`, Eprop, Eorin, Einvo, expr1, expr2, liste0, perm, _var,\n_var0, _va r00, lasterror, xmemo; k := 'k';\n if traperror((op@op)(4, eval(` property/Involves`))) = lasterror then assume(_var0 + _var00 < _var0) \+ fi;\n userinfo(5, 'xplif', '` entered with`', args);\n Eprop := \+ copy(eval(`property/object`)); Eorin := copy(eval(`property/OrigName`) );\n Einvo := convert(copy((op@op)(4, eval(`property/Involves`))), \+ set);\n liste0 := convert(indets(assu) minus \{'positive', 'negativ e', 'real'\}, list);\n userinfo(5, 'xplif', map(xmemo, %));\n km ax := nops(%); perm := \{seq(liste0[k] = _var.k, k = 1 .. kmax)\}; us erinfo(5, 'xplif', %);\n assume((op@eval)(subs(perm, assu))); useri nfo(4, 'xplif', assume_((op@eval)(subs(perm, assu))));\n subs(perm, expr); expr1 := value(%); `property/object` := copy(eval(Eprop));\n \+ `property/OrigName` := copy(eval(Eorin));\n for k in convert((op@ op)(4, eval(`property/Involves`)), set) minus Einvo do forget(`propert y/Involves`, lhs(k)) od;\n expr2 := (eval@subs)(map(rhs = lhs, perm ), expr1); unassign(seq(evaln(_var.k), k = 1 .. kmax), _var0, _var00); \n expr2\nend:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 86 "pldx[xplif]:= \+ 'readlib'(`pldx/xplif`) : savelib(`pldx/xplif`, xmemo, `pldx/xplif.m`) :" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%+pldx/xplifGR6$%%exprG'%%assuG %%listG6$%\"kG%%kmaxG6#%=Copyright~Pierre~L.~DouilletG6\"C8-%)userinfo G6&\"\"&.%&xplifG.%.~entered~withG9\">8$.F<@$/-%*traperrorG6#--%\"@G6$ %#opGFG6$\"\"%-%%evalG6#%2property/InvolvesG%*lasterrorG-%'assumeG6#2, &%+xplif_var0G\"\"\"%,xplif_var00GFUFT>%&EpropG-%%copyG6#-FK6#%0proper ty/objectG>%&EorinG-FZ6#-FK6#%2property/OrigNameG>%&EinvoG-%(convertG6 $-FZFB%$setG>%'liste0G-Fco6$-%&minusG6$-%'indetsG6#9%<%.%)positiveG.%% realG.%)negativeGF*-F36&F5F6Q8%-%%nopsG6#Fho>%%permG<#-%$seqG6$/&Fho6#F<(%*xplif_varG F%&expr1G-%&valueG6#F`q>Fhn-FZ6#-FK6#FX>F_o-FZ 6#-FK6#Fjn?&F<-F\\p6$-Fco6$FCFfoFao%%trueG-%'forgetG6$FM-%$lhsGF^r>%&e xpr2G--FE6$FKF]s6$-F]q6$/%$rhsGFcuFgqF[t-%)unassignG6%-Fjq6$-%&evalnG6 #F_rFarFTFVFeuF061FhnFMF_oFXFjnFaoF[tFeuFhoFgqF`rFTFVFNF_qF0" }}}}} {SECT 0 {PARA 3 "" 0 "" {TEXT -1 29 "Trigonom\351trie (xtrig, sinsin) " }}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 26 "xtrig : regrouper en (a-b)" } }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1023 "`pldx/xtrig`:= proc(expr, a,b) options `Copyright Pierre L. Douillet`;\nlocal s1,s2,s3,s4,s5, tm p, mini, k, ss,dd; \nss:= expand((a+b)/2); dd:= expand((a-b)/2);\ns1 : = subs(cos(a) = 2*cos(ss)*cos(dd)-cos(b),expr); if s1 = expr then s1 := NULL fi;\ns2 := subs(cos(a) =-2*sin(ss)*sin(dd)+cos(b),expr); if s2 = expr then s2 := NULL fi;\ns3 := subs(sin(a) = 2*sin(ss)*cos(dd)- sin(b),expr); if s3 = expr then s3 := NULL fi;\ns4 := subs(sin(a) = 2*sin(dd)*cos(ss)+sin(b),expr); if s4 = expr then s4 := NULL fi;\ns 5 := subs(sin(a) = (sin(expand(a+b)) - cos(a)*sin(b))/cos(b) ,expr); \+ \n if s5 = expr then s5 := NULL fi;\ntmp := [s1,s2,s3,s4,s5]; if nops (tmp) = 0 then RETURN(expr) fi;\nif args[nargs]= 'verb' then print( '`***`', zip(proc(a,b) a = b end, %, map(length,%)), '`***`') fi;\nif \+ 3 < nargs and type(args[4],integer) then RETURN(tmp[args[4]]) fi;\nmin i := min(op(map(length,tmp))); \n for k in tmp while mini < length(k) \+ do od; RETURN(k)\nend ;\npldx[xtrig]:= 'readlib'(`pldx/xtrig`) : savel ib(`pldx/xtrig`, `pldx/xtrig.m`) :" }}{PARA 11 "" 1 "" {XPPMATH 20 "6# >%+pldx/xtrigGR6%%%exprG%\"aG%\"bG6,%#s1G%#s2G%#s3G%#s4G%#s5G%$tmpG%%m iniG%\"kG%#ssG%#ddG6#%=Copyright~Pierre~L.~DouilletG6\"C5>8,-%'expandG 6#,&9%#\"\"\"\"\"#9&F@>8--F<6#,&F?F@FC#!\"\"FB>8$-%%subsG6$/-%$cosG6#F ?,&*&-FR6#F:FA-FR6#FEFAFB-FR6#FCFJ9$@$/FLFfn>FL%%NULLG>8%-FN6$/FQ,&*&- %$sinGFWFA-FcoFYFA!\"#FZFAFfn@$/F\\oFfn>F\\oFjn>8&-FN6$/-FcoFS,&*&Fbo \"\"\"FXFapFB-FcoFenFJFfn@$/FjoFfn>FjoFjn>8'-FN6$/F^p,&*&FdoFapFVFapFB FbpFAFfn@$/FgpFfn>FgpFjn>8(-FN6$/F^p*&,&-Fco6#-F<6#,&F?FAFCFAFA*&FQFAF bpFAFJFapFZ!\"\"Ffn@$/FaqFfn>FaqFjn>8)7'FLF\\oFjoFgpFaq@$/-%%nopsG6#Fb r\"\"!-%'RETURNG6#Ffn@$/&9\"6#9#.%%verbG-%&printG6%.%$***G-%$zipG6%R6$ F(F)F7F7F7/FfnF?F7F7F7%\"%G-%$mapG6$%'lengthGF`tFhs@$32\"\"$Fbs-%%type G6$&F`s6#\"\"%%(integerG-F[s6#&Fbr6#F\\u>8*-%$minG6#-%#opG6#-Fbt6$FdtF br?&8+Fbr2Feu-Fdt6#F_vF7-F[sFbvF7F7F7" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 6 "sinsin" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 151 "`pldx /sinsin`:= proc(u) simplify(u, \{cos('t')^2=1-sin('t')^2\}) end;\npldx [sinsin]:= 'readlib'(`pldx/sinsin`) : savelib(`pldx/sinsin`, `pldx/sin sin.m`) :" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%,pldx/sinsinGR6#%\"uG6 \"F(F(-%)simplifyG6$9$<#/*$)-%$cosG6#.%\"tG\"\"#\"\"\",&\"\"\"F9*$)-%$ sinGF3F6F7!\"\"F(F(F(" }}}}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 64 "Matri ces (arrdim, evalmm, matrice, xeig, xmk_piv, xtens, isdiag)" }}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 6 "arrdim" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 160 "arrdim:= proc(ar) option `Copyright Pierre L. Douill et`; if type(ar, matrix) then linalg['rowdim'](ar) else op(2, eval(ar) ); rhs((proc(u);u;end)(%)); fi ; end ;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%'arrdimGR6#%#arG6\"6#%=Copyright~Pierre~L.~DouilletGF(@%-%%typ eG6$9$%'matrixG-&%'linalgG6#.%'rowdimG6#F/C$-%#opG6$\"\"#-%%evalGF7-%$ rhsG6#-R6#%\"uGF(F(F(F/F(F(F(6#%\"%GF(F(F(" }}}}{SECT 0 {PARA 4 "" 0 " " {TEXT -1 6 "evalmm" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 134 "eva lmm:= proc(ma) option `Copyright Pierre L. Douillet`; evalm(ma): if \+ type(%,\{matrix\}) then matrix(%) else convert(%,list) fi; end;" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%'evalmmGR6#%#maG6\"6#%=Copyright~Pie rre~L.~DouilletGF(C$-%&evalmG6#9$@%-%%typeG6$%\"%G<#%'matrixG-F66#F4-% (convertG6$F4%%listGF(F(F(" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 7 "ma trice" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 58 "matrice:= proc(); l inalg['transpose'](matrix(args)); end ;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%(matriceGR6\"F&F&F&-&%'linalgG6#.%*transposeG6#-%'matrixG6#9\" F&F&F&" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 47 "ever_load:= ever _load, arrdim, evalmm, matrice:" }}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 24 "xmk_piv : pivot de gauss" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 290 "`pldx/xmk_piv` := proc(ma,k) options `Copyright Pierre L. Douille t`; \nlocal _ma, j; _ma:= diag(1$rowdim(ma)); \nfor j to rowdim(ma) do if k<> j then _ma[k,j]:= -ma[k,j]/ma[k,k] fi od; \nevalm(_ma); end ; \npldx[xmk_piv]:= 'xreadlib'(`pldx/xmk_piv`) : savelib(`pldx/xmk_piv`, `pldx/xmk_piv.m`) :" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%-pldx/xmk_pi vGR6$%#maG%\"kG6$%$_maG%\"jG6#%=Copyright~Pierre~L.~DouilletG6\"C%>8$- %%diagG6#-%\"$G6$\"\"\"-%'rowdimG6#9$?(8%F8F8F9%%trueG@$09%F>>&F16$FBF >,$*&&F " 0 "" {MPLTEXT 1 0 482 "`pldx/xeig`:= proc(ma) \+ options `Copyright Pierre L. Douillet`; \nlocal tmp ; tmp:= [eigenvect s( map(evalf,ma))];\nmap(proc(x) op(2,x) end , tmp); if convert(%,`+`) < rowdim(ma) then \n ERROR('`matrice non diagonalisable`') fi;\nmap( proc(x) op(op(3,x)) end , tmp); transpose(matrix(%)); end ;\n`pldx/xei gg`:= subs(evalf=eval, %);\npldx[xeig]:= 'xreadlib'(`pldx/xeig`) : sav elib(`pldx/xeig`, `pldx/xeig.m`) :\npldx[xeigg]:= 'xreadlib'(`pldx/xei gg`) : savelib(`pldx/xeigg`, `pldx/xeigg.m`) :" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%*pldx/xeigGR6#%#maG6#%$tmpG6#%=Copyright~Pierre~L.~Do uilletG6\"C'>8$7#-%+eigenvectsG6#-%$mapG6$%&evalfG9$-F56$R6#%\"xGF,F,F ,-%#opG6$\"\"#F8F,F,F,F/@$2-%(convertG6$%\"%G%\"+G-%'rowdimG6#F8-%&ERR ORG6#.%;matrice~non~diagonalisableG-F56$RF%+pldx/xeiggGR6#%#maG6#%$tmpG6#%=Copyright~Pierre~L.~DouilletG6 \"C'>8$7#-%+eigenvectsG6#-%$mapG6$%%evalG9$-F56$R6#%\"xGF,F,F,-%#opG6$ \"\"#F8F,F,F,F/@$2-%(convertG6$%\"%G%\"+G-%'rowdimG6#F8-%&ERRORG6#.%;m atrice~non~diagonalisableG-F56$RF " 0 "" {MPLTEXT 1 0 452 "`pldx/xtens`:= proc(a_,b_) options `Copyright Pierre L. Douille t`; \nlocal a,b,ra,ca,rb,cb, fu, j, k; a:=evalmm(a_): b:=evalmm(b_); \+ \nra:= rowdim(a): ca:=coldim(a); rb:= rowdim(b): cb:=coldim(b); j:= 'j ' : k:= 'k' : \nfu:= unapply('op'( 'irem'(k-1, ra)+1, op('irem'(j-1, ca)+1, a)) * 'op'( 'iquo'(k-1, rb)+1, op('iquo'(j-1, cb)+1, b)),j,k); \nmatrix(ra*rb, ca*cb, fu); end ;\npldx[xtens]:= 'xreadlib'(`pldx/xten s`) : savelib(`pldx/xtens`, `pldx/xtens.m`) :" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%+pldx/xtensGR6$%#a_G%#b_G6+%\"aG%\"bG%#raG%#caG%#rbG% #cbG%#fuG%\"jG%\"kG6#%=Copyright~Pierre~L.~DouilletG6\"C,>8$-%'evalmmG 6#9$>8%-F:6#9%>8&-%'rowdimG6#F8>8'-%'coldimGFF>8(-FE6#F>>8)-FJFN>8+.FS >8,.FV>8*-%(unapplyG6%*&-.%#opG6$,&-.%%iremG6$,&FV\"\"\"!\"\"FboFCFboF boFbo-Fjn6$,&-F^o6$,&FSFboFcoFboFHFboFboFboF8Fbo-Fin6$,&-.%%iquoG6$Fao FLFboFboFbo-Fjn6$,&-F^p6$FioFPFboFboFboF>FboFSFV-%'matrixG6%*&FCFboFLF bo*&FHFboFPFboFYF5F5F5" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 55 "isdia g : les \351l\351ments diagonaux d'une matrice diagonale" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 239 "`pldx/isdiag`:= proc(mm) options ` Copyright Pierre L. Douillet`; \nlocal k; seq(mm[k,k], k=1..rowdim(mm) ); \nif iszero(mm-diag(%)) then [%] else false fi end:\npldx[isdiag]:= 'xreadlib'(`pldx/isdiag`) : savelib(`pldx/isdiag`,`pldx/isdiag.m`):" }}}}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 39 "Pr\351sentation de r\351sult ats (xcol, xcol3)" }}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 26 "xcol : colon nes ordinaires" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 355 "`pldx/xco l`:=proc(z) option `Copyright Pierre L. Douillet`; \nif nargs >1 then \+ setattribute([args], 'column') ;\nelif nops(z)=0 then z ; \nelif type( z,table) then op(eval(z)); `_table`(op(%)); procname( % ) \nelse op(0, z), matrix(nops(z),1, unapply(op('j',z), 'j', 'k' ) ) fi ; end ;\npldx [xcol]:= 'readlib'(`pldx/xcol`) : savelib(`pldx/xcol`, `pldx/xcol.m`) \+ :" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%*pldx/xcolGR6#%\"zG6\"6#%=Copyr ight~Pierre~L.~DouilletGF(@)2\"\"\"9#-%-setattributeG6$7#9\".%'columnG /-%%nopsG6#9$\"\"!F:-%%typeG6$F:%&tableGC%-%#opG6#-%%evalGF9-%'_tableG 6#-FB6#%\"%G-9!FJ6$-FB6$F;F:-%'matrixG6%F7F--%(unapplyG6%-FB6$.%\"jGF: FY.%\"kGF(F(F(" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 25 "xcol3 : trunc ate & column" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 221 "xcut3:= pro c(zz) option `Copyright Pierre L. Douillet`; if type (zz, \{numeric, \+ name\}) then evalf(zz,3) elif \nnops(zz) >7 then procname(op(0,zz) (op (1..2,zz), '` ...etc... `',op(-2..-1,zz))) else map(procname, zz) fi e nd;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%&xcut3GR6#%#zzG6\"6#%=Copyrig ht~Pierre~L.~DouilletGF(@'-%%typeG6$9$<$%%nameG%(numericG-%&evalfG6$F/ \"\"$2\"\"(-%%nopsG6#F/-9!6#--%#opG6$\"\"!F/6%-FA6$;\"\"\"\"\"#F/.%,~. ..etc...~G-FA6$;!\"#!\"\"F/-%$mapG6$F=F/F(F(F(" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 272 "`pldx/xcol3`:=proc(z) option `Copyright Pierr e L. Douillet`; global xcut3; if nops(z)=0 then RETURN(z) fi ; \n if type(z,table) then op(eval(z)); `_table`(op(%)); procname( % )\n el se matrix( nops(z),1, unapply(op('j',z), 'j','k' ) ): op(0,z), map(xcu t3, % ); \nfi; end ;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%+pldx/xcol3G R6#%\"zG6\"6#%=Copyright~Pierre~L.~DouilletGF(C$@$/-%%nopsG6#9$\"\"!-% 'RETURNGF0@%-%%typeG6$F1%&tableGC%-%#opG6#-%%evalGF0-%'_tableG6#-F<6#% \"%G-9!FDC$-%'matrixG6%F.\"\"\"-%(unapplyG6%-F<6$.%\"jGF1FR.%\"kG6$-F< 6$F2F1-%$mapG6$%&xcut3GFEF(6#FfnF(" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 86 "pldx[xcol3]:= 'readlib'(`pldx/xcol3`) : savelib(`pldx /xcol3`, xcut3, `pldx/xcol3.m`) :" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 20 "xres (ini, run, cut)" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 193 "`pldx/xres_ini`:= proc(nb_lin::posint, titres::list(symbol)) glob al res; \noption `Copyright Pierre L. Douillet 1996`; \n res := mat rix(nb_lin + 1, nops(titres), titres, 'array'); titres\nend ;" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%.pldx/xres_iniGR6$'%'nb_linG%'posint G'%'titresG-%%listG6#%'symbolG6\"6#%BCopyright~Pierre~L.~Douillet~1996 GF0C$>%$resG-%'matrixG6&,&9$\"\"\"F;F;-%%nopsG6#9%F?.%&arrayGF?F06#F5F 0" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 383 "xres_cut:=proc() loca l j; global res; option `Copyright Pierre L. Douillet 1996`;\nfor j fr om linalg['rowdim'](res) by -1 do traperror(assigned(res[j, 1])); \n \+ if % <> false then break fi \nod;\nmatrix(j, linalg['coldim'](res), pr oc(jj, kk) eval(res[jj, kk]); \nif kk=4 and type(%, \{array, table, pr ocedure\}) then % else res[jj, kk] fi end );\n res := map2(subs, re s= '_res', %);\nend ;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%)xres_cutGR 6\"6#%\"jG6#%BCopyright~Pierre~L.~Douillet~1996GF&C%?(8$-&%'linalgG6#. %'rowdimG6#%$resG!\"\"F&%%trueGC$-%*traperrorG6#-%)assignedG6#&F56$F- \"\"\"@$0%\"%G%&falseG%&breakG-%'matrixG6%F--&F06#.%'coldimGF4R6$%#jjG %#kkGF&F&F&C$-%%evalG6#&F56$9$9%@%3/FZ\"\"%-%%typeG6$FD<%%&tableG%&arr ayG%*procedureGFDFWF&F&F&>F5-%%map2G6%%%subsG/F5.%%_resGFDF&F4F&" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 547 "xres_run:= proc(new_lin::\{ procedure, list, specfunc(procedure,`@`)\}) local col, lres, item; opt ion `Copyright Pierre L. Douillet 1996`; global res; \nif not type(ne w_lin, list) \n then for item from 2 to linalg['rowdim'](res) \n do l res := new_lin(item - 1); for col to nops(lres) do res[item, col] := l res[col] od \n od; RETURN(eval(res))\n else for item to linalg['rowdi m'](res) - 1 \n do if traperror(assigned(res[item, 1])) = false then \+ break fi \n od;\n for col to nops(new_lin) do res[item, col] := new_ lin[col] od;\n RETURN(new_lin)\n fi end ;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%)xres_runGR6#'%(new_linG<%-%)specfuncG6$%*procedureG% \"@G%%listGF-6%%$colG%%lresG%%itemG6#%BCopyright~Pierre~L.~Douillet~19 96G6\"@%4-%%typeG6$9$F/C$?(8&\"\"#\"\"\"-&%'linalgG6#.%'rowdimG6#%$res G%%trueGC$>8%-F<6#,&F?FA!\"\"FA?(8$FAFA-%%nopsG6#FMFJ>&FI6$F?FS&FM6#FS -%'RETURNG6#-%%evalGFHC%?(F?FAFA,&FBFAFQFAFJ@$/-%*traperrorG6#-%)assig nedG6#&FI6$F?FA%&falseG%&breakG?(FSFAFA-FU6#FFX&F " 0 "" {MPLTEXT 1 0 111 "pldx[xres_ini]:= 'rea dlib'(`pldx/xres_ini`) : savelib(`pldx/xres_ini`, xres_cut, xres_run, \+ `pldx/xres_ini.m`) :" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }} }}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 42 "Plotting (xfenetre, xput, xput 3, displayf)" }}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 6 "xcolor" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 384 "Digits:=15: xcolor:= 'xcolor': rea dlib(`plot/color`): \nindices(`plot/colortable`): \nsort(map(op, [%])) : %[nops(%)/2+1..-1]:\ntmp:= map(z-> (xcolor(z)= COLOUR(RGB, op(`plot/ colortable`[z]))), %):\nselect(has, tmp,\{0.80000000,1.00000000\}):\n( eval@subs)(xcolor=proc(z) xcolor(z.0) end, 1.00000000=1.0, 0.80000000= 0.8, %):\nassign(%), assign(tmp): assign(xcolor(fill)=COLOR(RGB,0.7,0. 7,1.0)):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 30 "`pldx/xcolor`:= eval(xcolor): " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 85 "pldx['xc olor']:= 'readlib'(`pldx/xcolor`) : savelib(`pldx/xcolor`, `pldx/xcolo r.m`) ;" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 8 "xfenetre" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 567 "`pldx/xfenetre`:= proc() option `C opyright Pierre L. Douillet`; local tmp, x1, x2, y1, y2, shape, curv; \+ shape:=7;\ncurv:= proc(z); xmaps( z->subs('COLOUR'=( ()-> NULL),z) , \+ op(select(has, z, 'CURVES'))); %; end :\n tmp:= (eval@subs)('CURVES'= op, map(curv, [args] ));\n map( u->op(1,u), tmp); x1:=min(op(%)); x2: =max(op(%%)); \n map( u->op(2,u), tmp); y1:=min(op(%)); y2:=max(op(%% ));\n 'view' = [x1-(x2-x1)/shape..x2+(x2-x1)/shape , y1-(y2-y1)/shape ..y2+(y2-y1)/shape]; end ;\npldx[xfenetre]:= 'readlib'(`pldx/xfenetre` ) : savelib(`pldx/xfenetre`, `pldx/xfenetre.m`) :" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%.pldx/xfenetreGR6\"6)%$tmpG%#x1G%#x2G%#y1G%#y2G%&shap eG%%curvG6#%=Copyright~Pierre~L.~DouilletGF&C,>8)\"\"(>8*R6#%\"zGF&F&F &C$-%&xmapsG6$RF8F&6$%)operatorG%&arrowGF&-%%subsG6$/.%'COLOURGRF&F&F? F&%%NULLGF&F&F&9$F&F&F&-%#opG6#-%'selectG6%%$hasGFJ.%'CURVESG%\"%GF&F& F&>8$--%\"@G6$%%evalGFC6$/FRFL-%$mapG6$F67#9\"-Fin6$R6#%\"uGF&F?F&-FL6 $\"\"\"FJF&F&F&FV>8%-%$minG6#-FL6#FT>8&-%$maxG6#-FL6#%#%%G-Fin6$RF`oF& F?F&-FL6$\"\"#FJF&F&F&FV>8'Fgo>8(F^p/.%%viewG7$;,&FfoFdo*&,&F]pFdoFfo! \"\"\"\"\"F3!\"\"Ffq,&F]pFdoFdqFdo;,&F[qFdo*&,&F]qFdoF[qFfqFgqF3FhqFfq ,&F]qFdoF\\rFdoF&F&F&" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 28 "xput : nommer un point en 2D" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "ep s_:=1.6 :" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 287 "`pldx/xput`:=proc(pa, nom, n) option `Copyright Pierre L. Douillet`; \n global eps_, x, y; if nargs=2 then [ pa[x], pa[y], nom ] else [ pa[x]+eps_*cos(n*Pi/4), \+ pa[y]+ eps_*sin(n*Pi/4), nom ] ; fi ; end ;\npldx[xput]:= 'readlib'(`p ldx/xput`) : savelib(`pldx/xput`, 'eps_', `pldx/xput.m`) :" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%*pldx/xputGR6%%#paG%$nomG%\"nG6\"6#%=Copyr ight~Pierre~L.~DouilletGF*@%/9#\"\"#7%&9$6#%\"xG&F36#%\"yG9%7%,&F2\"\" \"*&%%eps_GF<-%$cosG6#,$*&9&F<%#PiGF<#F<\"\"%F\"\"\"-%$si nGFAFF5F8F*" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 26 "xput3 : nommer un point 3D" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 351 "`p ldx/xput3`:= proc(pa, nom) option `Copyright Pierre L. Douillet`; \n global eps_, x, y, z ; local k; k:='k': \nif nargs = 2 then [pa[x],pa [y],pa[z], nom] else [args[3..5], 0] ; \n evall([pa[x], pa[y], pa[z], nom] + %/ sqrt(sum(%[k]^2, k=1..4))*eps_ );\nfi end ; \npldx[xput3]:= 'readlib'(`pldx/xput3`) : savelib(`pldx/xput3`, 'eps_', `pldx/xput3.m `) :" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%+pldx/xput3GR6$%#paG%$nomG6# %\"kG6#%=Copyright~Pierre~L.~DouilletG6\"C$>8$.F0@%/9#\"\"#7&&9$6#%\"x G&F86#%\"yG&F86#%\"zG9%C$7$&9\"6#;\"\"$\"\"&\"\"!-%&evallG6#,&F6\"\"\" *&*&%\"%GFO%%eps_GFO\"\"\"-%%sqrtG6#-%$sumG6$*$)&FR6#F0F5FT/F0;FO\"\"% !\"\"FOF-6&FSF:F=F@F-" }}}}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 8 "display f" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 305 "displayf:= proc() opti on `Copyright Pierre L. Douillet`;\n display((op@remove)(type,[args],` =`), 'font' = ['TIMES', 'ROMAN', 20], 'labelfont' = ['TIMES', 'ROMAN', 20],\n 'axesfont' = ['TIMES', 'ROMAN', 20], 'titlefont' = ['TIMES' , 'ROMAN', 20], 'labels' = ['``', '``'], (op@select)(type,[args],`=`)) \nend;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%)displayfGR6\"F&6#%=Copyri ght~Pierre~L.~DouilletGF&-%(displayG6)--%\"@G6$%#opG%'removeG6%%%typeG 7#9\"%\"=G/.%%fontG7%.%&TIMESG.%&ROMANG\"#?/.%*labelfontGF:/.%)axesfon tGF:/.%*titlefontGF:/.%'labelsG7$.%!GFM--F.6$F0%'selectGF2F&F&F&" }}}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 33 "ever_load:= ever_load, displ ayf :" }}}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 55 "Arbres (prefix_tree, x tree1, xtree, xop, xsubsop, xapp)" }}{SECT 0 {PARA 4 "" 0 "" {TEXT -1 11 "prefix_tree" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 355 "prefix_t ree:=proc(z) option `Copyright Pierre L. Douillet`; \n if member(whatt ype(z),\{function\}) or nops(z)>1 then [op(0,z), maps(procname, op(z) ) ] \n elif type(z,table) then op(eval(z)); procname( `_table`(op(%) ))\n### WARNING: semantics of type `string` have changed\n elif type( z,numeric) or type(z,string) then z \n else map(procname ,z ) ;fi; e nd ;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%,prefix_treeGR6#%\"zG6\"6#%= Copyright~Pierre~L.~DouilletGF(@)5-%'memberG6$-%)whattypeG6#9$<#%)func tionG2\"\"\"-%%nopsGF27$-%#opG6$\"\"!F3-%%mapsG6$9!-F " 0 "" {MPLTEXT 1 0 702 "xtree1:= proc(z) local \+ kk, opk, line2; option remember, `Copyright Pierre L. Douillet`;\nif n ops(z) = 0 then RETURN(z = 'empty')\n### WARNING: semantics of type `s tring` have changed\nelif type(eval(z), \{integer, procedure\}) or (ty pe(z, string) and not assigned(z)) then RETURN(NULL);\nelif type(z, ar ray) then RETURN(z=cat('array_', z))\nelif type(z, table) then op(eval (z)); RETURN( z = (rhs@procname@'_table'@op)(%) )\nelse line2 := array (1 .. nops(z));\n for kk to nops(z) do opk:= op(kk, z) ; \n if eva lb(opk = NULL) then '_NULL' elif whattype(opk) = 'exprseq' then _seq( opk) else opk fi;\n line2[kk] := % od; \narray([[op(0, z), '``' $ (no ps(z) - 1)], convert(line2, list) ]);\nfi ; RETURN(z=%) ; end;" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%'xtree1GR6#%\"zG6%%#kkG%$opkG%&line2 G6$%)rememberG%=Copyright~Pierre~L.~DouilletG6\"C$@+/-%%nopsG6#9$\"\"! -%'RETURNG6#/F6.%&emptyG5-%%typeG6$-%%evalGF5<$%(integerG%*procedureG3 -F@6$F6%'stringG4-%)assignedGF5-F96#%%NULLG-F@6$F6%&arrayG-F96#/F6-%$c atG6$.%'array_GF6-F@6$F6%&tableGC$-%#opG6#FB-F96#/F6--%\"@G6$-Fbo6$-Fb o6$%$rhsG9!.%'_tableGF[o6#%\"%GC%>8&-FS6#;\"\"\"F3?(8$FdpFdpF3%%trueGC %>8%-F[o6$FfpF6@'-%&evalbG6#/FjpFP.%&_NULLG/-%)whattypeG6#Fjp.%(exprse qG-%%_seqGFgqFjp>&F`p6#FfpF]p-FS6#7$7$-F[o6$F7F6-%\"$G6$.%!G,&F3Fdp!\" \"Fdp-%(convertG6$F`p%%listG-F96#/F6F]pF/F/F/" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 12 "Main routine" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 428 "`p ldx/xtree`:= proc(expr,n::positive) local su, k; global xtree1; \nopti on `Copyright Pierre L. Douillet 1996`; \nreadlib('forget')(xtree1); s u[1]:= \{xtree1(expr)\}; \nfor k from 2 to n do map(rhs, %): select(ty pe,%,array): map(op@convert,%,listlist); map(op, %): \n su[k]:= map(xt ree1,%); od; subs( seq(su[k], k=1..n), expr); end ;\npldx[xtree]:= 're adlib'(`pldx/xtree`) : savelib(`pldx/xtree`, xtree1, prefix_tree, `pld x/xtree.m`) :" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%+pldx/xtreeGR6$%%ex prG'%\"nG%)positiveG6$%#suG%\"kG6#%BCopyright~Pierre~L.~Douillet~1996G 6\"C&--%(readlibG6#.%'forgetG6#%'xtree1G>&8$6#\"\"\"<#-F96#9$?(8%\"\"# F>9%%%trueGC'-%$mapG6$%$rhsG%\"%G-%'selectG6%%%typeGFM%&arrayG-FJ6%-% \"@G6$%#opG%(convertGFM%)listlistG-FJ6$FXFM>&F<6#FD-FJ6$F9FM-%%subsG6$ -%$seqG6$Fhn/FD;F>FFFBF0F8F0" }}}}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 5 "Infos" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 147 "subs(readlib= _re adlib, xreadlib= _readlib, eval(pldx)): sort(op(%), proc(a,b) lexorder (lhs(a) , lhs(b)) end): 'elements' = setattribute(%,column);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/%)elementsGLB/%*convert/DG-%)_readlibG6#%/p ldx/convert/DG/%#idGF-/%'isdiagG-F)6#%,pldx/isdiagG/%'sinsinG-F)6#%,pl dx/sinsinG/%*xHospitalG-F)6#%/pldx/xHospitalG/%'xcloneG-F)6#%,pldx/xcl oneG/%%xcolG-F)6#%*pldx/xcolG/%&xcol3G-F)6#%+pldx/xcol3G/%)xcollectG-F )6#%.pldx/xcollectG/%'xcolorG-F)6#%,pldx/xcolorG/%$xcsG-F)6#%)pldx/xcs G/%%xcs2G-F)6#%*pldx/xcs2G/%(xdchvarG-F)6#%-pldx/xdchvarG/%%xeigG-F)6# %*pldx/xeigG/%&xeiggG-F)6#%+pldx/xeiggG/%)xfenetreG-F)6#%.pldx/xfenetr eG/%(xfubiniG-F)6#%-pldx/xfubiniG/%&xjoliG-F)6#%+pldx/xjoliG/%.xmanip_ sommesG-F)6#%3pldx/xmanip_sommesG/%(xmk_pivG-F)6#%-pldx/xmk_pivG/%&xni ceG-F)6#%+pldx/xniceG/%&xplifG-F)6#%+pldx/xplifG/%'xpurgeG-F)6#%,pldx/ xpurgeG/%%xputG-F)6#%*pldx/xputG/%&xput3G-F)6#%+pldx/xput3G/%+xreg_fal siG-F)6#%0pldx/xreg_falsiG/%)xres_iniG-F)6#%.pldx/xres_iniG/%)xreverse G-F)6#%.pldx/xreverseG/%&xtensG-F)6#%+pldx/xtensG/%&xtreeG-F)6#%+pldx/ xtreeG/%&xtrigG-F)6#%+pldx/xtrigG/%0zmanip_productsG-F)6#%5pldx/zmanip _productsG%'columnG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 52 "'eve r_loaded' = `pldx/xcol`((op@sort)([ever_load]));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/%,ever_loadedGL2%'arrdimG%)displayfG%'evalmmG%'forgetG %#idG%(matriceG%)xcombipoG%%xlapG%&xmapsG%(xoptionG%&xplusG%'xprintG%) xreadlibG%'xvalueG%&yjoliG%'yvalueG%'columnG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 60 "s avelib('pldx', `pldx/init`, xreadlib, ever_load, `pldx.m`);" }}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 8 "Contr\364le" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 53 "liste:= select(type, [ssavelib], procedure): sort(%); " }}{PARA 12 "" 1 "" {XPPMATH 20 "6#7bo%'arrdimG%)displayfG%'evalmmG%' forgetG%#idG%(matriceG%/pldx/convert/DG%*pldx/initG%,pldx/isdiagG%,pld x/sinsinG%.pldx/subsniceG%/pldx/xHospitalG%,pldx/xcloneG%*pldx/xcolG%+ pldx/xcol3G%.pldx/xcollectG%,pldx/xcolorG%)pldx/xcsG%*pldx/xcs2G%-pldx /xdchvarG%*pldx/xeigG%+pldx/xeiggG%.pldx/xfenetreG%-pldx/xfubiniG%+pld x/xjoliG%3pldx/xmanip_sommesG%-pldx/xmk_pivG%+pldx/xniceG%,pldx/xnice0 G%+pldx/xplifG%,pldx/xpurgeG%*pldx/xputG%+pldx/xput3G%0pldx/xreg_falsi G%2pldx/xreg_falsi_kG%.pldx/xres_iniG%.pldx/xreverseG%+pldx/xtensG%+pl dx/xtreeG%+pldx/xtrigG%5pldx/zmanip_productsG%,prefix_treeG%(xavanceG% )xcombipoG%&xcut3G%%xlapG%&xmapsG%&xmemoG%(xoptionG%&xplusG%'xprintG%) xreadlibGFW%(xreculeG%)xres_cutG%)xres_runG%(xsplit1G%)xsplit_1G%'xtre e1G%'xvalueG%&yjoliG%(ysplit1G%)ysplit_1G%'yvalueG%(zavanceG%(zreculeG %(zsplit1G%)zsplit_1G%)zysplit1G%*zysplit_1G" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 56 "readlib(mmint): lasterror:= 'lasterror': eps_:= \+ 'eps_': " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "with(linalg, de t):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 79 "lasterror:= 'lasterr or': for _kkkk in liste do lprint(_kkkk); mmint(_kkkk); od;" }}{PARA 6 "" 1 "" {TEXT -1 18 "pldx/xmanip_sommes" }}{PARA 6 "" 1 "" {TEXT -1 7 "xsplit1" }}{PARA 6 "" 1 "" {TEXT -1 7 "ysplit1" }}{PARA 6 "" 1 "" {TEXT -1 8 "xsplit_1" }}{PARA 6 "" 1 "" {TEXT -1 8 "ysplit_1" }}{PARA 6 "" 1 "" {TEXT -1 7 "xavance" }}{PARA 6 "" 1 "" {TEXT -1 7 "xrecule" }}{PARA 6 "" 1 "" {TEXT -1 20 "pldx/zmanip_products" }}{PARA 6 "" 1 " " {TEXT -1 7 "zsplit1" }}{PARA 6 "" 1 "" {TEXT -1 8 "zysplit1" }} {PARA 6 "" 1 "" {TEXT -1 8 "zsplit_1" }}{PARA 6 "" 1 "" {TEXT -1 9 "zy split_1" }}{PARA 6 "" 1 "" {TEXT -1 7 "zavance" }}{PARA 6 "" 1 "" {TEXT -1 7 "zrecule" }}{PARA 6 "" 1 "" {TEXT -1 10 "pldx/xjoli" }} {PARA 6 "" 1 "" {TEXT -1 12 "pldx/xfubini" }}{PARA 6 "" 1 "" {TEXT -1 13 "pldx/xreverse" }}{PARA 6 "" 1 "" {TEXT -1 12 "pldx/xdchvar" }} {PARA 6 "" 1 "" {TEXT -1 9 "pldx/xcs2" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#QH--------------~pldx/xcs2~--------------6\"" }}{PARA 6 "" 1 "" {TEXT -1 63 "These global variables start with an '_': : _xcs 2_flag" }}{PARA 6 "" 1 "" {TEXT -1 57 "Local variables used before ass igned : : u, v" }}{PARA 6 "" 1 "" {TEXT -1 8 "pldx/xcs" }} {PARA 6 "" 1 "" {TEXT -1 11 "pldx/xpurge" }}{PARA 6 "" 1 "" {TEXT -1 13 "pldx/xcollect" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#QL--------------~ pldx/xcollect~--------------6\"" }}{PARA 6 "" 1 "" {TEXT -1 57 "Names \+ used as global names, but not declared: : _Env" }}{PARA 6 "" 1 " " {TEXT -1 10 "pldx/xnice" }}{PARA 6 "" 1 "" {TEXT -1 11 "pldx/xnice0 " }}{PARA 6 "" 1 "" {TEXT -1 13 "pldx/subsnice" }}{PARA 6 "" 1 "" {TEXT -1 15 "pldx/xreg_falsi" }}{PARA 6 "" 1 "" {TEXT -1 17 "pldx/xreg _falsi_k" }}{PARA 6 "" 1 "" {TEXT -1 14 "pldx/xHospital" }}{PARA 6 "" 1 "" {TEXT -1 11 "pldx/xclone" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q@--- -----------~a~--------------6\"" }}{PARA 6 "" 1 "" {TEXT -1 54 "Local \+ variables used before assigned : : X" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q@--------------~a~--------------6\"" }}{PARA 6 "" 1 " " {TEXT -1 57 "Local variables used before assigned : : X, Y" }}{PARA 6 "" 1 "" {TEXT -1 14 "pldx/convert/D" }}{PARA 6 "" 1 "" {TEXT -1 10 "pldx/xplif" }}{PARA 6 "" 1 "" {TEXT -1 5 "xmemo" }}{PARA 6 "" 1 "" {TEXT -1 10 "pldx/xtrig" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q @--------------~a~--------------6\"" }}{PARA 6 "" 1 "" {TEXT -1 58 "Th is equation was used as a statement: : a = b" }}{PARA 6 " " 1 "" {TEXT -1 11 "pldx/sinsin" }}{PARA 6 "" 1 "" {TEXT -1 12 "pldx/x mk_piv" }}{PARA 6 "" 1 "" {TEXT -1 9 "pldx/xeig" }}{PARA 6 "" 1 "" {TEXT -1 10 "pldx/xeigg" }}{PARA 6 "" 1 "" {TEXT -1 10 "pldx/xtens" }} {PARA 6 "" 1 "" {TEXT -1 11 "pldx/isdiag" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#QJ--------------~pldx/isdiag~--------------6\"" }}{PARA 6 "" 1 " " {TEXT -1 54 "Local variables used before assigned : : k " }}{PARA 6 "" 1 "" {TEXT -1 9 "pldx/xcol" }}{PARA 6 "" 1 "" {TEXT -1 10 "pldx/xcol3" }}{PARA 6 "" 1 "" {TEXT -1 5 "xcut3" }}{PARA 6 "" 1 " " {TEXT -1 13 "pldx/xres_ini" }}{PARA 6 "" 1 "" {TEXT -1 8 "xres_cut" }}{PARA 6 "" 1 "" {TEXT -1 8 "xres_run" }}{PARA 6 "" 1 "" {TEXT -1 11 "pldx/xcolor" }}{PARA 6 "" 1 "" {TEXT -1 13 "pldx/xfenetre" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#QL--------------~pldx/xfenetre~------------- -6\"" }}{PARA 6 "" 1 "" {TEXT -1 136 "This equation was used as a stat ement: : view = [x1-(x2-x1)/shape .. x2+(x2-x1)/shape, y1- (y2-y1)/shape .. y2+(y2-y1)/shape]" }}{PARA 6 "" 1 "" {TEXT -1 9 "pldx /xput" }}{PARA 6 "" 1 "" {TEXT -1 10 "pldx/xput3" }}{PARA 6 "" 1 "" {TEXT -1 10 "pldx/xtree" }}{PARA 6 "" 1 "" {TEXT -1 6 "xtree1" }} {PARA 6 "" 1 "" {TEXT -1 11 "prefix_tree" }}{PARA 6 "" 1 "" {TEXT -1 9 "pldx/init" }}{PARA 6 "" 1 "" {TEXT -1 8 "xreadlib" }}{PARA 6 "" 1 " " {TEXT -1 2 "id" }}{PARA 6 "" 1 "" {TEXT -1 6 "forget" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q@--------------~a~--------------6\"" }}{PARA 6 " " 1 "" {TEXT -1 55 "Names used as global names, but not declared: \+ : Fs" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#QE--------------~forget~----- ---------6\"" }}{PARA 6 "" 1 "" {TEXT -1 94 "Names used as global name s, but not declared: : `invalid arguments`, [linalg, plots], `/` " }}{PARA 6 "" 1 "" {TEXT -1 61 "These local variables were never used : : initproc" }}{PARA 6 "" 1 "" {TEXT -1 56 "Local variabl es used before assigned : : pkg" }}{PARA 6 "" 1 "" {TEXT -1 8 "xcombipo" }}{PARA 6 "" 1 "" {TEXT -1 4 "xlap" }}{PARA 6 "" 1 "" {TEXT -1 5 "xmaps" }}{PARA 6 "" 1 "" {TEXT -1 7 "xoption" }}{PARA 6 " " 1 "" {TEXT -1 5 "xplus" }}{PARA 6 "" 1 "" {TEXT -1 6 "xprint" }} {PARA 6 "" 1 "" {TEXT -1 8 "xreadlib" }}{PARA 6 "" 1 "" {TEXT -1 6 "xv alue" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q@--------------~a~----------- ---6\"" }}{PARA 6 "" 1 "" {TEXT -1 58 "This equation was used as a sta tement: : x = y" }}{PARA 6 "" 1 "" {TEXT -1 6 "yvalue" }} {PARA 6 "" 1 "" {TEXT -1 5 "yjoli" }}{PARA 6 "" 1 "" {TEXT -1 6 "arrdi m" }}{PARA 6 "" 1 "" {TEXT -1 6 "evalmm" }}{PARA 6 "" 1 "" {TEXT -1 7 "matrice" }}{PARA 6 "" 1 "" {TEXT -1 8 "displayf" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{EXCHG {PARA 259 "" 0 "" {TEXT -1 52 "Co pyright (c) Pierre L. Douillet \n" }}{PARA 259 "" 0 "" {TEXT -1 281 "libre reproduction pour un usage universitaire sous r eserve d'une copie compl\350te,\navec reproduction du programme source dont, en particulier, la pr\351sente mention\n \ncertaines de ces rou tines sont comment\351es dans \"Maths avec Maple\", paru chez Ellipses \n\naucune garantie de fiabilit\351. " }}{PARA 261 "" 0 "" {TEXT -1 89 "en particulier, toute utilisation dans un contexte industriel est \+ vivement d\351conseill\351e\n " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{MARK "7 2 1 0 0" 905 }{VIEWOPTS 1 1 0 1 1 1803 }