{VERSION 5 0 "IBM INTEL NT" "5.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 Comment" 2 18 "" 0 1 0 0 0 0 0 0 0 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 257 "Symbol" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }{CSTYLE " " -1 258 "Symbol" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 259 " " 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 260 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 261 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 262 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 263 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 264 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 265 "Symbol" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 266 "Symbol" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 267 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE " " -1 268 "Symbol" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 269 " " 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 270 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 271 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 272 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 273 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 274 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 275 "" 0 1 74 0 179 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 276 "" 0 1 91 50 44 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 277 "" 0 1 76 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 278 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 279 "" 0 1 17 0 152 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 280 "" 0 1 10 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 281 "" 0 1 23 1 115 0 2 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 282 "" 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 283 "" 0 1 0 0 4 0 2 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 284 "" 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 285 "" 0 1 8 0 48 0 2 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 286 "" 0 1 93 1 0 0 2 0 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 287 "" 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 288 "" 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 289 "" 0 1 0 0 2 0 2 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 290 "" 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 291 "" 0 1 10 0 0 0 0 1 0 0 0 0 0 0 0 1 } {CSTYLE "" -1 292 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 293 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }{CSTYLE "" -1 294 "" 1 12 0 0 0 0 0 2 2 0 0 0 0 0 0 1 }{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 "Heading 3" -1 5 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 1 1 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Error" -1 8 1 {CSTYLE "" -1 -1 "Courier" 1 10 255 0 255 1 2 2 2 2 2 1 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 "Maple Output" -1 12 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 3 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Title" -1 256 1 {CSTYLE "" -1 -1 "Times" 1 24 0 0 0 1 2 1 2 2 2 2 1 1 1 1 }2 1 0 0 12 12 1 0 1 0 2 2 19 1 }} {SECT 0 {SECT 1 {PARA 256 "" 0 "" {TEXT -1 33 "Chapter 12\n\nComposite Data Types\n" }}{PARA 0 "" 0 "" {TEXT 294 31 "\251 Copyright 2003 by \+ Andr\351 Heck." }}}{SECT 1 {PARA 0 "" 0 "" {TEXT 259 2 "1." }{TEXT -1 5 " Let " }{XPPEDIT 18 0 "U" "6#%\"UG" }{TEXT -1 44 " be the set of fi rst ten prime numbers. Let " }{XPPEDIT 18 0 "V" "6#%\"VG" }{TEXT -1 60 " be the set of the first twenty natural numbers of the form " } {XPPEDIT 18 0 "2^n-1" "6#,&)\"\"#%\"nG\"\"\"F'!\"\"" }{TEXT -1 2 ".\n " }{TEXT 274 3 "(a)" }{TEXT -1 37 " Generate the sets U and V in Maple .\n" }{TEXT 275 3 "(b)" }{TEXT -1 9 " Compute " }{XPPEDIT 18 0 "U" "6# %\"UG" }{TEXT -1 1 " " }{TEXT 258 1 "\310" }{TEXT -1 1 " " }{XPPEDIT 18 0 "V" "6#%\"VG" }{TEXT -1 5 " and " }{XPPEDIT 18 0 "U" "6#%\"UG" } {TEXT -1 1 " " }{TEXT 257 1 "\307" }{TEXT -1 1 " " }{XPPEDIT 18 0 "V" "6#%\"VG" }{TEXT -1 2 ".\n" }}{SECT 1 {PARA 5 "" 0 "" {TEXT 281 3 "(a) " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 33 "U := \{seq(ithprime(i), i=1..10)\}; " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"UG<,\"\"#\"\"$\"\"&\"\"(\"#6\" #8\"#<\"#>\"#B\"#H" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "V := \+ \{seq(2^i-1, i=1..20)\};" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%\"VG<6\" \"\"\"\"$\"\"(\"#:\"#J\"#j\"$F\"\"$b#\"$6&\"%B5\"%Z?\"%&4%\"%\">)\"&$Q ;\"&nF$\"&Nb'\"'r58\"'V@E\"'(GC&\"(v&[5" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 5 "" 0 "" {TEXT 282 3 "(b)" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 70 "restart;\nU := \{seq(ithprim e(i), i=1..10)\}:\nV := \{seq(2^i-1, i=1..20)\}:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "U union V;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6 #<>\"\"\"\"\"#\"\"$\"\"&\"\"(\"#6\"#8\"#:\"#<\"#>\"#B\"#H\"#J\"#j\"$F \"\"$b#\"$6&\"%B5\"%Z?\"%&4%\"%\">)\"&$Q;\"&nF$\"&Nb'\"'r58\"'V@E\"'(G C&\"(v&[5" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "U intersect V; " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#<$\"\"$\"\"(" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}}{SECT 1 {PARA 0 "" 0 "" {TEXT 260 2 "2. " }{TEXT -1 1 " " }{TEXT 276 3 "(a)" }{TEXT -1 73 " Generate a list of 100 randomly chosen integers between -10 and 10.\n " }{TEXT 277 3 "(b)" }{TEXT -1 50 " Remove all duplicate entries from this list.\n \+ " }{TEXT 278 3 "(c)" }{TEXT -1 86 " Select from the list obtained in \+ (b) all numbers which can be divided by 2 or 3.\n " }{TEXT 279 3 "( d)" }{TEXT -1 72 " Pick out from the list obtained in (b) all numbers \+ greater than 5.\n " }{TEXT 280 3 "(e)" }{TEXT -1 119 " For each num ber in the list obtained in (d) compute the number of occurences in th e original list of random numbers.\n " }}{SECT 1 {PARA 5 "" 0 "" {TEXT 283 3 "(a)" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart; " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 63 "die := rand(-10..10):\n list_a := [seq(die(), i=1..100)]:\nlist_a;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#7`q!\"%\"\"(\"\")\"#5!\"'!\")!\"&F%\"\"'F(\"\"!\"\"&!#5 \"\"\"F/!\"$F.F-F$F)!\"\"F.\"\"#\"\"$F1!\"*F&\"\"%F*F'!\"#F-F%F%!\"(F5 F)F2F&F%F&F6F3F+F1F+F7F1F0F/F5F&F0\"\"*F$F3F$F$F(F'F1F7F1F1F8F7F2F&F(F 5F.F/F2F.F5F5F6F,F'F1F*F4F3F,F&F8F0F+F%F3F&F2F*F$F5F(F*F8F-F4" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 5 "" 0 " " {TEXT 284 3 "(b)" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart ;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 63 "die := rand(-10..10): \nlist_a := [seq(die(), i=1..100)]:\nlist_a;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#7`q!\"%\"\"(\"\")\"#5!\"'!\")!\"&F%\"\"'F(\"\"!\"\"&!#5 \"\"\"F/!\"$F.F-F$F)!\"\"F.\"\"#\"\"$F1!\"*F&\"\"%F*F'!\"#F-F%F%!\"(F5 F)F2F&F%F&F6F3F+F1F+F7F1F0F/F5F&F0\"\"*F$F3F$F$F(F'F1F7F1F1F8F7F2F&F(F 5F.F/F2F.F5F5F6F,F'F1F*F4F3F,F&F8F0F+F%F3F&F2F*F$F5F(F*F8F-F4" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "convert(list_a, set);" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#<7!#5!\"*!\")!\"(!\"'!\"&!\"%!\"$!\"#! \"\"\"\"!\"\"\"\"\"#\"\"$\"\"%\"\"&\"\"'\"\"(\"\")\"\"*\"#5" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "list_b := convert(%, list); " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%'list_bG77!#5!\"*!\")!\"(!\"'!\" &!\"%!\"$!\"#!\"\"\"\"!\"\"\"\"\"#\"\"$\"\"%\"\"&\"\"'\"\"(\"\")\"\"* \"#5" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 5 "" 0 "" {TEXT 285 3 "(c)" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 85 "die := rand(-1 0..10):\nlist_a := [seq(die(), i=1..100)]:\nlist_b := [op(\{op(list_a) \})];" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%'list_bG77!#5!\"*!\")!\"(! \"'!\"&!\"%!\"$!\"#!\"\"\"\"!\"\"\"\"\"#\"\"$\"\"%\"\"&\"\"'\"\"(\"\") \"\"*\"#5" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 61 "list_c = selec t( x -> (irem(x,2)=0 or irem(x,3)=0), list_b );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/%'list_cG71!#5!\"*!\")!\"'!\"%!\"$!\"#\"\"!\"\"#\"\"$ \"\"%\"\"'\"\")\"\"*\"#5" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 " " }}}}{SECT 1 {PARA 5 "" 0 "" {TEXT 286 3 "(d)" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 85 "die := rand(-10..10):\nlist_a := [seq(die(), i=1..100)]:\nlist_b := [op(\{op(list_a)\})];" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%'list_b G77!#5!\"*!\")!\"(!\"'!\"&!\"%!\"$!\"#!\"\"\"\"!\"\"\"\"\"#\"\"$\"\"% \"\"&\"\"'\"\"(\"\")\"\"*\"#5" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 35 "list_d := select(x -> x>5, list_b);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%'list_dG7'\"\"'\"\"(\"\")\"\"*\"#5" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 5 "" 0 "" {TEXT 287 3 "(e)" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 121 "die := rand(-10..10):\nlist_a := [ seq(die(), i=1..100)]:\nlist_b := [op(\{op(list_a)\})]:\nlist_d := sel ect(x -> x>5, list_b);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%'list_dG7' \"\"'\"\"(\"\")\"\"*\"#5" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 166 "for i in list_d do \n numberOfOccurrences := nops(select( x-> x =i, list_a )):\n print(`number of occurrences of `||i||` is `||\n \+ numberOfOccurrences)\nend do:" }}{PARA 11 "" 1 "" {XPPMATH 20 "6 #%@number~of~occurrences~of~6~is~4G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6 #%@number~of~occurrences~of~7~is~6G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6 #%@number~of~occurrences~of~8~is~8G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6 #%@number~of~occurrences~of~9~is~4G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6 #%Anumber~of~occurrences~of~10~is~4G" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}}{SECT 1 {PARA 0 "" 0 "" {TEXT 261 2 "3." } {TEXT -1 52 " You know of course how many solutions the equation " } {XPPEDIT 18 0 "x^50-x^20=0" "6#/,&*$%\"xG\"#]\"\"\"*$F&\"#?!\"\"\"\"! " }{TEXT -1 58 " has over the complex numbers. When you use the proced ure " }{TEXT 0 5 "solve" }{TEXT -1 160 " to solve equations, so many s olutions scroll over the terminal screen that it is difficult to count the number of solutions found by Maple. Use the procedures " }{TEXT 0 4 "nops" }{TEXT -1 5 " and " }{TEXT 0 3 "map" }{TEXT -1 128 " for th e above-mentioned equation to count the number of solutions and to che ck the answrs by back substitution. (Advice to use " }{TEXT 0 3 "map" }{TEXT -1 21 " in combination with " }{TEXT 0 4 "subs" }{TEXT -1 84 " \+ you had better consider the equation as a system of one equation in on e variable.)\n" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart;" } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "eq := x^50 -x^20 = 0;" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%#eqG/,&*$)%\"xG\"#]\"\"\"F+*$)F)\"#? F+!\"\"\"\"!" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 38 "listOfSolut ions := [solve(\{eq\}, \{x\})]:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "nops(listOfSolutions);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"#] " }}}{PARA 0 "" 0 "" {TEXT -1 78 "This is the expected number of solut ions! Let us have a look at the solutions:" }}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 16 "listOfSolutions;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6 #7T<#/%\"xG\"\"!F$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F$<#/F&!\"\"<#/F& \"\"\"<#/F&,$*&\"\"#F*,&F2F**&^#F2F-\"\"$#F-F2F-F7F*<#/F&,$*&F2F*F3F7F -<#/F&,$*&F2F*,&F2F**&^#!\"#F-F6F7F-F7F*<#/F&,$*&F2F*F@F7F-<#/F&,$*$,( #F-\"\"%F**&FNF*\"\"&F7F-*(^##F-FNF-F2F7,&FPF-*$FPF7F-F7F-F7F*<#/F&,$* $,(#F-FNF**&FNF*FPF7F**(FRF-F2F7,&FPF-FUF*F7F-F7F*<#/F&,$*$,(#F-FNF**& FNF*FPF7F**(^##F*FNF-F2F7FhnF7F-F7F*<#/F&,$*$,(#F-FNF**&FNF*FPF7F-*(Fa oF-F2F7FTF7F-F7F*<#/F&FK<#/F&FY<#/F&F\\o<#/F&Ffo<#/F&,$*$-%'RootOfG6$, 0F-F-%#_ZGF**$)F[qF6F-F-*$)F[qFNF-F**$)F[qFPF-F-*$)F[q\"\"(F-F**$)F[q \"\")F-F-/%&indexGF-F7F*<#/F&,$*$-Fhp6$Fjp/FiqF2F7F*<#/F&,$*$-Fhp6$Fjp /FiqF6F7F*<#/F&,$*$-Fhp6$Fjp/FiqFNF7F*<#/F&,$*$-Fhp6$Fjp/FiqFPF7F*<#/F &,$*$-Fhp6$Fjp/Fiq\"\"'F7F*<#/F&,$*$-Fhp6$Fjp/FiqFdqF7F*<#/F&,$*$-Fhp6 $Fjp/FiqFgqF7F*<#/F&Ffp<#/F&F]r<#/F&Fdr<#/F&F[s<#/F&Fbs<#/F&Fis<#/F&Fa t<#/F&Fht" }}}{PARA 0 "" 0 "" {TEXT -1 81 "So, Maple uses the indexed \+ RootOf notation for roots of two 8 degree polynomials." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 64 "Let us check numeric ally that these are indeed the 50 solutions." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 41 "solutions := map(evalf, listOfSolutions);" }} {PARA 12 "" 1 "" {XPPMATH 20 "6#>%*solutionsG7T<#/%\"xG$\"\"!F*F&F&F&F &F&F&F&F&F&F&F&F&F&F&F&F&F&F&F&<#/F($!\"\"F*<#/F($\"\"\"F*<#/F(^$$!+++ ++]!#5$!+SSDg')F8<#/F(^$$\"+++++]F8$\"+SSDg')F8<#/F(^$F6F@<#/F(^$F>F9< #/F(^$$!+U*p,4)F8$!+AD&y(eF8<#/F(^$$!+V*p,4$F8$!+i^c5&*F8<#/F(^$FR$\"+ i^c5&*F8<#/F(^$FK$\"+AD&y(eF8<#/F(^$$\"+U*p,4)F8Fhn<#/F(^$$\"+V*p,4$F8 FY<#/F(^$FboFT<#/F(^$F]oFM<#/F(^$$!+2gZ\"y*F8$!+3p6z?F8<#/F(^$$!+xXXN \"*F8$!+JkOnSF8<#/F(^$$!+kgI\"p'F8$!+b#[9V(F8<#/F(^$$!+LYGX5F8$!+a*=_% **F8<#/F(^$Fbq$\"+a*=_%**F8<#/F(^$F[q$\"+b#[9V(F8<#/F(^$Fdp$\"+JkOnSF8 <#/F(^$F]p$\"+3p6z?F8<#/F(^$$\"+2gZ\"y*F8Fhr<#/F(^$$\"+xXXN\"*F8Fcr<#/ F(^$$\"+kgI\"p'F8F^r<#/F(^$$\"+LYGX5F8Fiq<#/F(^$F\\tFdq<#/F(^$FgsF]q<# /F(^$FbsFfp<#/F(^$F]sF_p" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "nops(solutions);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"#]" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "Digits := 20:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 57 "for s in solutions do\n fnormal(evalf(subs(s, eq)), 7)\nod;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/$\"\"!F%F$" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#/$\"\"!F%F$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/$\"\"!F%F$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/$\"\"!F %F$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/$\"\"!F%F$" }}{PARA 11 "" 1 " " {XPPMATH 20 "6#/$\"\"!F%F$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/$\"\" !F%F$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/$\"\"!F%F$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/$\"\"!F%F$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/$\" \"!F%F$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/$\"\"!F%F$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/$\"\"!F%F$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/$ \"\"!F%F$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/$\"\"!F%F$" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#/$\"\"!F%F$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/ $\"\"!F%F$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/$\"\"!F%F$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/$\"\"!F%F$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6# /$\"\"!F%F$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/$\"\"!F%F$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/$\"\"!F%F$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/$\"\"!F%F$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/^$$!\"!\"\"!$F'F'F( " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/^$$!\"!\"\"!$F'F'F(" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#/^$$!\"!\"\"!F%$F'F'" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/^$$!\"!\"\"!F%$F'F'" }}{PARA 11 "" 1 "" {XPPMATH 20 "6 #/^$$!\"!\"\"!$F'F'F(" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/^$$!\"!\"\"! $F'F'F(" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/^$$!\"!\"\"!F%$F'F'" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#/^$$!\"!\"\"!F%$F'F'" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/^$$!\"!\"\"!$F'F'F(" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/^$$!\"!\"\"!$F'F'F(" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/^$$!\"! \"\"!F%$F'F'" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/^$$!\"!\"\"!F%$F'F'" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/^$$\"\"!F&F%F%" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/^$$!\"!\"\"!$F'F'F(" }}{PARA 11 "" 1 "" {XPPMATH 20 "6 #/^$$!\"!\"\"!F%$F'F'" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/^$$!\"!\"\"! F%$F'F'" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/^$$!\"!\"\"!$F'F'F(" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#/^$$!\"!\"\"!$F'F'F(" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/^$$!\"!\"\"!F%$F'F'" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/^$$\"\"!F&$!\"!F&F%" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/^$$\"\" !F&F%F%" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/^$$!\"!\"\"!$F'F'F(" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#/^$$!\"!\"\"!F%$F'F'" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/^$$!\"!\"\"!F%$F'F'" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/^$$!\"!\"\"!$F'F'F(" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/^$$!\"! \"\"!$F'F'F(" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/^$$!\"!\"\"!F%$F'F'" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/^$$\"\"!F&$!\"!F&F%" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 0 "" 0 "" {TEXT 262 2 "4." }{TEXT -1 47 " How would you double the elements in the lis t " }{XPPEDIT 18 0 "[a,b,c]" "6#7%%\"aG%\"bG%\"cG" }{TEXT -1 6 " into \+ " }{XPPEDIT 18 0 "[a,a,b,b,c,c]" "6#7(%\"aGF$%\"bGF%%\"cGF&" }{TEXT -1 43 "? How can you hereafter transform the list " }{XPPEDIT 18 0 "[a ,a,b,b,c,c]" "6#7(%\"aGF$%\"bGF%%\"cGF&" }{TEXT -1 6 " into " } {XPPEDIT 18 0 "[[a,a],[b,b],[c,c]]" "6#7%7$%\"aGF%7$%\"bGF'7$%\"cGF)" }{TEXT -1 123 "? Can you apply your methods also to the list of first \+ ten thousand natural numbers and get the result in reasonable time?\n " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "[a,b,c];" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7%%\"aG%\"bG%\"cG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "map(x -> (x,x), %);" }}{PARA 11 "" 1 "" {XPPMATH 20 " 6#7(%\"aGF$%\"bGF%%\"cGF&" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "matrix(nops(%)/2,2, %);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#-%'matr ixG6#7%7$%\"aGF(7$%\"bGF*7$%\"cGF," }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "convert(%, listlist);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7%7$%\"aGF%7$%\"bGF'7$%\"cGF)" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "settime := time():" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "[$1..10000]:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "map(x -> (x,x), %):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "matrix(nops(%)/2,2, %):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "convert(%, listlist):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 39 "cpu_time = (time() - settime)* seconds;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/%)cpu_timeG,$*&$\"$T$!\"$\"\"\"%(secondsGF*F*" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 0 "" 0 " " {TEXT 263 2 "5." }{TEXT -1 152 " Write a procedure called maketable \+ that, given a list containing indicies and a list containing entries, \+ construct a corresponding table. For example, " }{TEXT 0 33 "maketable ( [red,green], [0,1/3] )" }{TEXT -1 38 " should create the table assoc iations " }{TEXT 0 8 "red -> 0" }{TEXT -1 5 " and " }{TEXT 0 11 "green ->1/3" }{TEXT -1 2 ".\n" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "r estart;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 242 "Maketable := pr oc(L1::list, L2::list ) \n local T,i;\n if nops(L1) <> nops(L2) then \n error \"list should have the same number of entries\"\n end if :\n T := table():\n for i to nops(L1) do\n T[L1[i]] := L2[i] \n \+ end do:\n eval(T)\nend proc;" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#>%*Ma ketableGf*6$'%#L1G%%listG'%#L2GF)6$%\"TG%\"iG6\"F/C&@$0-%%nopsG6#9$-F4 6#9%YQLlist~should~have~the~same~number~of~entriesF/>8$-%&tableGF/?(8% \"\"\"FBF3%%trueG>&F=6#&F66#FA&F9FH-%%evalG6#F=F/F/F/" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 48 "colorTable := Maketable([red, green ], [0, 1/3]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%+colorTableG-%&TABL EG6#7$/%$redG\"\"!/%&greenG#\"\"\"\"\"$" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "colorTable[red];" }}{PARA 11 "" 1 "" {XPPMATH 20 "6# \"\"!" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "colorTable[green]; " }}{PARA 11 "" 1 "" {XPPMATH 20 "6##\"\"\"\"\"$" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 0 "" 0 "" {TEXT 264 2 "6. " }{TEXT -1 13 " Create the 3" }{TEXT 265 1 "\264" }{TEXT -1 9 "3 matr ix " }{XPPEDIT 18 0 "M" "6#%\"MG" }{TEXT -1 39 " defined by\n \+ " }{XPPEDIT 18 0 "M[i,j] = x^(gcd(i+1,j+1)+1" "6#/&% \"MG6$%\"iG%\"jG)%\"xG,&-%$gcdG6$,&F'\"\"\"F0F0,&F(F0F0F0F0F0F0" } {TEXT -1 49 "\nand write it as a matrix with factored entries.\n" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart;" }}}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 47 "M := Matrix(3, 3, (i,j)->(x^(gcd(i+1,j+1))+1 ));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"MG-%'RTABLEG6%\")SB\"f\"-%' MATRIXG6#7%7%,&*$)%\"xG\"\"#\"\"\"F3F3F3,&F1F3F3F3F.7%F4,&*$)F1\"\"$F3 F3F3F3F47%F.F4,&*$)F1\"\"%F3F3F3F3%'MatrixG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "factor(M);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#-%'R TABLEG6%\")SB\"f\"-%'MATRIXG6#7%7%,&*$)%\"xG\"\"#\"\"\"F1F1F1,&F/F1F1F 1F,7%F2,&*$)F/\"\"$F1F1F1F1F27%F,F2,&*$)F/\"\"%F1F1F1F1%'MatrixG" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "map(factor, M);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#-%'RTABLEG6%\")7\"=R\"-%'MATRIXG6#7%7%,&*$)%\"x G\"\"#\"\"\"F1F1F1,&F/F1F1F1F,7%F2*&F2F1,(F-F1F/!\"\"F1F1F1F27%F,F2,&* $)F/\"\"%F1F1F1F1%'MatrixG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 2 "M;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#-%'RTABLEG6%\")SB\"f\"-%'MATR IXG6#7%7%,&*$)%\"xG\"\"#\"\"\"F1F1F1,&F/F1F1F1F,7%F2,&*$)F/\"\"$F1F1F1 F1F27%F,F2,&*$)F/\"\"%F1F1F1F1%'MatrixG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 30 "LinearAlgebra:-Map(factor, M);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#-%'RTABLEG6%\")SB\"f\"-%'MATRIXG6#7%7%,&*$)%\"xG\"\"#\" \"\"F1F1F1,&F/F1F1F1F,7%F2*&F2F1,(F-F1F/!\"\"F1F1F1F27%F,F2,&*$)F/\"\" %F1F1F1F1%'MatrixG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 2 "M;" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#-%'RTABLEG6%\")SB\"f\"-%'MATRIXG6#7%7% ,&*$)%\"xG\"\"#\"\"\"F1F1F1,&F/F1F1F1F,7%F2*&F2F1,(F-F1F/!\"\"F1F1F1F2 7%F,F2,&*$)F/\"\"%F1F1F1F1%'MatrixG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 0 "" 0 "" {TEXT 267 2 "7." }{TEXT -1 13 " Create the 5" }{TEXT 266 1 "\264" }{TEXT -1 9 "5 matrix " } {XPPEDIT 18 0 "M" "6#%\"MG" }{TEXT -1 38 " defined by\n \+ " }{XPPEDIT 18 0 "M[i,j] = 10^(-(i^2+j^2))" "6#/&%\"MG6$%\" iG%\"jG)\"#5,$,&*$F'\"\"#\"\"\"*$F(F.F/!\"\"" }{TEXT -1 23 "\nand use \+ the procedure " }{TEXT 0 7 "fnormal" }{TEXT -1 46 " to normalize small matrix entries into zero.\n" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 53 "M := Matrix( 5, 5, (i,j) -> fnormal(10^(-(i^2+j^2))));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"MG-%'RTABLEG6%\")7`1;-%'MATRIXG6#7'7'#\"\"\"\"$+\"# F/\"'++5$\"\"!F4F3F37'F1#F/\"*++++\"F3F3F37'F3F3F3F3F3F8F8%'MatrixG" } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 0 "" 0 "" {TEXT 269 2 "8." }{TEXT -1 13 " Create the 7" }{TEXT 268 1 "\264" } {TEXT -1 26 "7 lower-triangular matrix " }{XPPEDIT 18 0 "M" "6#%\"MG" }{TEXT -1 102 " with all nonzero entries equal to one. Convert it into a list of integers using the row major order.\n" }}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 8 "restart;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "M := Matrix(7,7, (i,j)->if i>=j then 1 else 0 fi);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"MG-%'RTABLEG6%\"))y!3<-%'MATRIXG6#7)7)\" \"\"\"\"!F/F/F/F/F/7)F.F.F/F/F/F/F/7)F.F.F.F/F/F/F/7)F.F.F.F.F/F/F/7)F .F.F.F.F.F/F/7)F.F.F.F.F.F.F/7)F.F.F.F.F.F.F.%'MatrixG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 45 "convert(LinearAlgebra:-Transpose(M) , Vector):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "convert(%, li st);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#7S\"\"\"\"\"!F%F%F%F%F%F$F$F%F %F%F%F%F$F$F$F%F%F%F%F$F$F$F$F%F%F%F$F$F$F$F$F%F%F$F$F$F$F$F$F%F$F$F$F $F$F$F$" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 0 "" 0 "" {TEXT 291 2 "9." }{TEXT -1 42 " Generalize the special indexing function " }{TEXT 0 11 "tridiagonal" }{TEXT -1 88 " from \+ \24712.4 such that it can be used for banded matrices of band width gr eater than 0. \n" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart; " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 667 "`index/banded` := proc (idx::list(posint), rtb::rtable, val::list)\n local idx1, init_val; \n idx1 := op(idx);\n if not assigned(_EnvBandWidth) then\n _ EnvBandWidth := 1\n end if;\n if nargs=2 then\n if outofband(i dx1) then \n 0\n else \n rtb[idx1]\n end if; \n \+ else\n if outofband(idx1) then\n if op(val)<>0 then \n \+ error \"band width \"||_EnvBandWidth||\" is exceeded\", \n \+ 'indices' = idx1\n else \n try\n rtb[idx 1] := op(val);\n catch \"unable to store\":\n op(v al);\n end try;\n end if;\n else\n rtb[idx1] : = op(val);\n end if; \n end if;\nend proc:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 343 "outofband := proc()\n local indset, pair s, p, d:\n indset := \{args\};\n if nops(indset) <= 1 then \n \+ return false \n end if;\n pairs := combinat[choose](indset, 2);\n \+ for p in pairs do\n d := p[1] - p[2];\n if type( d, integer \+ ) and abs(d) > _EnvBandWidth then \n return true\n end if\n \+ end do:\n return false\nend proc:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 45 "A := Array(banded, 1..4, 1..4, fill=UNKNOWN);" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"AG-%'RTABLEG6%\"(Kvx#-%'MATRIXG6#7 &7&%(UNKNOWNGF.\"\"!F/7&F.F.F.F/7&F/F.F.F.7&F/F/F.F.%&ArrayG" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "_EnvBandWidth := 2:" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 47 "B := Array( banded, 1..7, 1. .7 , fill=UNKNOWN);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"BG-%'RTABLE G6%\"(![\"*H-%'MATRIXG6#7)7)%(UNKNOWNGF.F.\"\"!F/F/F/7)F.F.F.F.F/F/F/7 )F.F.F.F.F.F/F/7)F/F.F.F.F.F.F/7)F/F/F.F.F.F.F.7)F/F/F/F.F.F.F.7)F/F/F /F/F.F.F.%&ArrayG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}} {SECT 1 {PARA 0 "" 0 "" {TEXT 292 3 "10." }{TEXT -1 67 " Define a spec ial indexing function for upper triangular matrices.\n" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart;" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 670 "`index/uppertriangular` := proc(idx::list(posint), rtb::rtable, val::list)\n local idx1, init_val;\n idx1 := op(idx) ; \n if nargs=2 then\n if inlowerpart(idx1) then \n 0\n \+ else \n rtb[idx1]\n end if; \n elif nargs=3 then\n \+ if inlowerpart(idx1) then \n if op(val)<>0 then\n er ror \"you cannot assign a value to a lower entry\", \n 'in dices' = idx1\n else\n try\n rtb[idx1] := o p(val);\n catch \"unable to store\":\n op(val) ;\n end try;\n end if;\n else \n rtb[idx1] := op(val)\n end if \n else \n error \"invalid arguments\" \+ \n end if\nend proc:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 57 " inlowerpart := proc()\n evalb(args[1]>args[2])\nend proc:" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 54 "A := Array(uppertriangular, \+ 1..4, 1..4, fill=UNKNOWN);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"AG-% 'RTABLEG6%\")[#**f\"-%'MATRIXG6#7&7&%(UNKNOWNGF.F.F.7&\"\"!F.F.F.7&F0F 0F.F.7&F0F0F0F.%&ArrayG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 12 " A[4,1] := x;" }}{PARA 8 "" 1 "" {TEXT -1 95 "Error, (in index/uppertri angular) you cannot assign a value to a lower entry, indices = (4, 1) \n" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 0 "" 0 "" {TEXT 293 3 "11." }{TEXT -1 41 " Define a special indexing fun ction, say " }{TEXT 0 10 "polynomial" }{TEXT -1 61 ", which restricts \+ entries of such arrays to polynomial type.\n" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 378 "`index/polynomial` := proc(idx::list(posint), rtb::rtable, val::l ist)\n local idx1;\n idx1 := op(idx); \n if nargs=2 then\n \+ rtb[idx1] \n elif nargs=3 then\n if not type(op(val), polynom) then \n error \"you can only assign a polynomial value\"\n \+ else \n rtb[idx1] := op(val)\n end if\n else \n error \"invalid arguments\" \n end if\nend proc:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 30 "A := Array( polynomial, 1..4);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"AG-%'RTABLEG6%\"(W " 0 "" {MPLTEXT 1 0 12 "A[1] := x +1;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>&%\"AG6#\"\"\",&%\"xGF'F'F'" } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "A[2] := sin(y);" }}{PARA 8 "" 1 "" {TEXT -1 68 "Error, (in index/polynomial) you can only assig n a polynomial value\n" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 2 "A; " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#-%'RTABLEG6%\"(W " 0 "" {MPLTEXT 1 0 8 "restart;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 192 "ADD := proc(x,y)\n if not type( x, [anything,anythi ng] ) or \n not type( y, [anything,anything] ) then \n error \" Invalid arguments\"\n else \n [ x[1]+y[1], x[2]+y[2] ]\n end if\n end proc:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 222 "MUL := proc(x ,y) \n if not type( x, [anything,anything] ) or\n not type( y , [anything,anything] ) then \n error \"Invalid arguments\"\n else \n [ x[1]*y[1] + 2*x[2]*y[2], x[1]*y[2] + x[2]*y[1] ]\n end if\ne nd proc:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 262 "DIV := proc(x, y)\n local d;\n if not type( x,[anything,anything] ) or\n not ty pe( y,[anything,anything] ) then\n error \"Invalid arguments\"\n e lse \n d := y[1]^2 - 2*y[2]^2;\n [ (x[1]*y[1] - 2*x[2]*y[2])/d , (x[2]*y[1] - x[1]*y[2])/d ]\n end if\nend proc:" }}}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 18 "ADD([a,b], [c,d]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7$,&%\"aG\"\"\"%\"cGF&,&%\"bGF&%\"dGF&" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "MUL([a,b], [c,d]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7$,&*&%\"aG\"\"\"%\"cGF'F'*(\"\"#F'%\"bGF'%\"dGF'F ',&*&F&F'F,F'F'*&F+F'F(F'F'" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "DIV([a,b], [c,d]); " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7$*&,&*&%\" aG\"\"\"%\"cGF(F(*(\"\"#F(%\"bGF(%\"dGF(!\"\"F(,&*$)F)F+F(F(*&F+F()F-F +F(F.F.*&,&*&F,F(F)F(F(*&F'F(F-F(F.F(F/F." }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 5 "" 0 "" {TEXT 289 3 "(b)" }} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart;" }}}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 49 "`print/algnum` := proc(x,y) x+y*sqrt(2) end \+ proc:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "algnum(a,b);" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#,&%\"aG\"\"\"*&%\"bGF%\"\"##F%F(F%" }} }{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 1 {PARA 5 "" 0 " " {TEXT 290 3 "(c)" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart ;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 49 "`print/algnum` := proc (x,y) x+y*sqrt(2) end proc:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 226 "ADD := proc(x,y)\n if not type( x, specfunc(anything, algnum) ) \+ or\n not type( y, specfunc(anything, algnum) ) then\n error \" Invalid arguments\"\n else \n algnum(op(1,x) + op(1,y), op(2,x) + op(2,y))\n end if\nend proc:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 270 "MUL := proc(x,y)\n if not type( x, specfunc(anything, algnum ) ) or\n not type( y, specfunc(anything, algnum) ) then \n erro r \"Invalid arguments\"\n else \n algnum(op(1,x)*op(1,y) + 2*op(2, x)*op(2,y),\n op(1,x)*op(2,y) + op(2,x)*op(1,y))\n end if\n end proc:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 327 "DIV := proc(x ,y)\n local d; \n if not type( x, specfunc(anything, algnum) ) o r\n not type( y, specfunc(anything, algnum) ) then\n error \"In valid arguments\"\n else \n d := op(1,y)^2 - 2*op(2,y)^2;\n alg num((op(1,x)*op(1,y) - 2*op(2,x)*op(2,y))/d,\n (op(2,x)*op(1 ,y) - op(1,x)*op(2,y))/d)\n end if\nend proc:" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 58 "algnum(a,b) + algnum(c,d) = ADD(algnum(a,b), a lgnum(c,d));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/,*%\"aG\"\"\"*&%\"bGF &\"\"##F&F)F&%\"cGF&*&%\"dGF&F)F*F&,(F%F&F+F&*&,&F(F&F-F&F&F)F*F&" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 56 "algnum(a,b)*algnum(c,d) = MU L(algnum(a,b), algnum(c,d));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&,&% \"aG\"\"\"*&%\"bGF'\"\"##F'F*F'F',&%\"cGF'*&%\"dGF'F*F+F'F',(*&F&F'F-F 'F'*(F*F'F)F'F/F'F'*&,&*&F&F'F/F'F'*&F)F'F-F'F'F'F*F+F'" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 56 "algnum(a,b)/algnum(c,d) = DIV(algnu m(a,b), algnum(c,d));" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&,&%\"aG\" \"\"*&%\"bGF'\"\"##F'F*F'F',&%\"cGF'*&%\"dGF'F*F+F'!\"\",&*&,&*&F&F'F- F'F'*(F*F'F)F'F/F'F0F',&*$)F-F*F'F'*&F*F')F/F*F'F0F0F'*(,&*&F)F'F-F'F' *&F&F'F/F'F0F'F6F0F*F+F'" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 " " }}}}}}{MARK "0" 0 }{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }