{VERSION 4 0 "IBM INTEL NT" "4.0" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 1 }{CSTYLE "2D Math" -1 2 "Times" 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 1 }{CSTYLE "2D Output" 2 20 "" 0 1 0 0 255 1 0 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 256 "Helvetica" 1 14 128 0 0 1 0 0 2 0 0 0 0 0 0 1 } {CSTYLE "" -1 257 "" 0 24 0 0 255 1 0 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 258 "Helvetica" 0 1 128 0 0 1 0 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 259 "Helvetica" 0 1 128 0 0 1 0 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 260 " " 1 18 255 0 0 1 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 261 "" 1 14 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 262 "" 1 14 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 263 "" 1 14 0 0 0 0 0 1 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 264 "" 1 14 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 265 "" 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 266 "" 1 14 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "Tim es" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 1 0 1 0 2 2 0 1 } {PSTYLE "Maple Output" -1 11 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 3 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "" 11 12 1 {CSTYLE "" -1 -1 "" 0 1 0 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 "Title" -1 256 1 {CSTYLE "" -1 -1 "Times" 1 18 0 0 0 1 2 1 1 2 2 2 1 1 1 1 }1 1 0 0 12 12 1 0 1 0 2 2 19 1 } {PSTYLE "Author" -1 257 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 8 8 1 0 1 0 2 2 0 1 }} {SECT 0 {EXCHG {PARA 256 "" 0 "" {TEXT 257 41 "Set Theory - Maple Prog ramming Assignment" }}{PARA 257 "" 0 "" {TEXT 260 43 "Mth 355 Fall 200 1 Assignment 2. Due Oct 12." }}{PARA 0 "" 0 "" {TEXT 256 30 "Mth 355/3 99 Oct 5 2001 Maple 6" }}{PARA 0 "" 0 "" {TEXT 258 16 "Bent E. Peterse n" }}{PARA 0 "" 0 "" {TEXT 259 44 "Filename: 355f2001-assign-002-maple -prog.mws" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 154 "Now that you have had a bit of experience with Maple in \+ the MLC lab, you are probably ready to write some code of your own. Do n't forget the on-line help." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 335 "Procedures in Maple can have any number of arg uments, specified or not. Maple uses nargs to tell a procedure how man y arguments it was called with. The individual arguments are accessed \+ through the args[] array. Here is an example, mintersect(), which will compute the intersection of any finite number of sets (so multiple in tersect):" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 18 "mintersect:=proc()" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "local k,Z;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "if nargs = 0 th en " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 39 " Z:= \{\}; # empty intersec tion is empty" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "elif nargs = 1 the n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 35 " Z:= args[1]; # nothing else \+ to do" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 4 "else" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 14 " Z:= args[1];" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 26 " for k from 2 to nargs do" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 28 " Z := Z intersect args[k];" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 5 " od;" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 3 "fi;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "return Z;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 4 "end:" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 197 "Note the local variables are private to the procedure. Even if you have assign ed a value to k outside the procedure above it will run correctly, \+ and it will not disturb the value assigned to k." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 14 "Let's test it:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "m intersect();" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#<\"" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 101 "A1:=\{1,2,4,6,7,5,9,8\}; A2:=\{2,5,7,8,1 \}; A3:=\{2,5,8,3\}; A4:=\{1,3,5,9,4\}; A5:=\{3,2,6\}; A6:=\{2,3,6,7,8 \};" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#A1G<*\"\"\"\"\"#\"\"%\"\"&\" \"'\"\"(\"\")\"\"*" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#A2G<'\"\"\"\" \"#\"\"&\"\"(\"\")" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#A3G<&\"\"#\" \"$\"\"&\"\")" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#A4G<'\"\"\"\"\"$\" \"%\"\"&\"\"*" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#A5G<%\"\"#\"\"$\" \"'" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#A6G<'\"\"#\"\"$\"\"'\"\"(\" \")" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "mintersect(A1,A2,A3) ;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#<%\"\"#\"\"&\"\")" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "mintersect(A1,A2,A3,A4);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#<#\"\"&" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "mintersect(A1,A2,A3,A4,A5);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#<\"" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 9 "Looks OK!" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT 261 10 "Problem 1." }{TEXT -1 103 " Write a Map le procedure, munion(), to compute arbitrary unions. Be sure to check it works correctly." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 " " {TEXT -1 82 "Here's another example where one does not want to speci fy the number of arguments " }{TEXT 265 9 "a priori." }}{PARA 0 "" 0 " " {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT 264 10 "Problem 2." }{TEXT -1 103 " Write a procedure, mmax(), to compute the maximum value of an ar bitrary finite number of real numbets." }}{PARA 0 "" 0 "" {TEXT -1 0 " " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 79 "Recall our procedure, carp(), for computing the Cartesian product of two sets:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "carp:=proc( X,Y)" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 14 " local Z,x,y;" }}{PARA 0 " > " 0 "" {MPLTEXT 1 0 8 " Z:=\{\};" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 15 " for x in X do" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 17 " for y in Y do" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 25 " Z:=Z union \{[x,y]\} ;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 7 " od;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 5 " od;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "return Z;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 4 "end:" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 4 "Thus" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "carp(A3,A4) ;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#<67$\"\"&\"\"*7$\"\")\"\"\"7$F(\" \"$7$F(\"\"%7$F(F%7$F+F)7$F+F+7$F+F-7$F+F&7$F%F)7$F%F+7$F%F-7$F%F%7$\" \"#F)7$F8F+7$F8F-7$F8F%7$F8F&7$F+F%7$F(F&" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 50 "For the Cartesian product of A3, A4 and A5 we have" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 77 "Z:=\{\}: for x in carp(A3,A4) do fo r a in A5 do Z:=Z union \{[op(x),a]\}; od; od;" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 2 "Z;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6# " 0 "" {MPLTEXT 1 0 10 "op([3,4]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$\"\"$\"\"%" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT 262 10 "P roblem 3." }{TEXT -1 120 " Write a Maple procedure, recursive if you w ish, to compute the Cartesian product of an arbitrary finite number of sets." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 95 "In Problem 3 it is probably safer to make use of nargs and args[] ra ther than using recursion." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 142 "Again perform a check (using the sets above if y ou wish). You might also try the case when one factor is empty - you s hould get the empty set." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 175 "The Boolean values true and false ar e keywords in Maple. You can assign them to variables directly or as r esult of Boolean operations. As an example recall our subset test" }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "subset:=proc(X,Y)" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 12 " local \+ x,s;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 10 " s:=true;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 15 " for x in X do" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 26 " s:= s and member(x,Y);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 5 " od;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 4 "end:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "subset( A3,A4);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%&falseG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "subset(A5,A6);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%%trueG" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT 263 11 "Problem 4. " }{TEXT -1 157 "Write a Mapl e procedure which accepts as input any finite number of finite sets an d returns true if they are pairwise disjoint and returns false other wise." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 81 " Test your procedure with B1, B2, B3, B4 and also with B1, B2, B3, B4 , B5 where" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 56 "B1:=\{2,3\}; B2:=\{4,7\}; B3:=\{5,8\}; B4:=\{1,6,9 \}; B5:=\{7,9\};" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#B1G<$\"\"#\"\"$ " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#B2G<$\"\"%\"\"(" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#B3G<$\"\"&\"\")" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#B4G<%\"\"\"\"\"'\"\"*" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%#B 5G<$\"\"(\"\"*" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 111 "Note sets need not be defined by tediously listing \+ all the elements. Here's an example using the seq() command:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 " \{seq(n^2,n=1..20)\};" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#<6\"\"\"\"\"% \"\"*\"#;\"#D\"#O\"#\\\"#k\"#\")\"$+\"\"$@\"\"$W\"\"$p\"\"$'>\"$D#\"$c #\"$*G\"$C$\"$h$\"$+%" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 44 "Here's another example which uses a do-lo op:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 60 "A:=\{\}: for k from 1 to 50 do A:= A union \{ithprime (k)\}; od: " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 2 "A;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#\"#B\" #H\"#J\"#P\"#T\"#V\"#Z\"#`\"#f\"#h\"#n\"#r\"#t\"#z\"#$)\"#*)\"#(*\"$, \"\"$.\"\"$2\"\"$4\"\"$8\"\"$F\"\"$J\"\"$P\"\"$R\"\"$\\\"\"$^\"\"$d\" \"$j\"\"$n\"\"$t\"\"$z\"\"$\"=\"$\">\"$$>\"$(>\"$*>\"$6#\"$B#\"$F#\"$H #" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 101 "Finally here is an (trivial) example where a set is specified as \+ the set of solutions of an equation:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "p:=(t-1)*(t-2)*(t-3)*(t-4 );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"pG**,&%\"tG\"\"\"F(!\"\"F(,& F'F(\"\"#F)F(,&F'F(\"\"$F)F(,&F'F(\"\"%F)F(" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "B:=\{solve(p=0,t)\};" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"BG<&\"\"\"\"\"#\"\"$\"\"%" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 116 "The Maple function call irem( m,n) returns the integer remainder when m is divided by n. Here a re some examples" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 26 "irem(75,12); irem(123,29);" }}{PARA 11 "" 1 " " {XPPMATH 20 "6#\"\"$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"\"(" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT 266 9 "Pr oblem 5" }{TEXT -1 156 ". Write a procedure g(a,b) which returns the s et consisting of all integers from a to b which are divisible by 3 and by 5, but are not divisible by 7." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 46 "Your code should probably start so mething like" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 12 "g:=proc(a,b)" }}{PARA 0 "" 0 "" {TEXT -1 14 "local A,B,...;" }} {PARA 0 "" 0 "" {TEXT -1 16 "if nargs<>2 then" }}{PARA 0 "" 0 "" {TEXT -1 14 " return FAIL;" }}{PARA 0 "" 0 "" {TEXT -1 3 "fi;" }} {PARA 0 "" 0 "" {TEXT -1 25 "A:=ceil(a); B:=floor(b);" }}{PARA 0 "" 0 "" {TEXT -1 7 "......." }}{PARA 0 "" 0 "" {TEXT -1 4 "end:" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 9 "Hav e fun!" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{MARK "36 6 \+ 0" 14 }{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }