{VERSION 5 0 "SUN SPARC SOLARIS" "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 "" -1 256 "" 1 14 0 0 0 0 0 1 0 0 0 0 0 0 0 1 } {PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Maple Plot" 0 13 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 256 1 {CSTYLE "" -1 -1 "" 1 14 0 0 0 0 0 1 0 0 0 0 0 0 0 1 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 257 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 13 258 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 }} {SECT 0 {PARA 256 "" 0 "" {TEXT -1 0 "" }}{PARA 257 "" 0 "" {TEXT 256 71 "Testing an affine transformation to see if it's a Euclidean contra ction" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 5 " \+ " }}{PARA 0 "" 0 "" {TEXT -1 419 "If you define a function using A FFINE1 (from the Lpictures file), you may want to make sure it's a con traction to make sure your IFS will generate a fractal. The following procedure will do this: First, make sure you load the linear algebra library so that the procedure can use matrix commands: This procedur e depends on a linear algebra theorem known as the singular value deco mposition of a matrix, see Math 2270." }}{PARA 0 "" 0 "" {TEXT -1 0 " " }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 38 "with(linalg): #linear a lgebra library" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1263 "STRETCH TEST:=proc(fcn) #test affine map for contraction\n\nlocal Atemp, #mat rix of affine transformation\n temp; #hold eigenvector information of the transpose\n #of Atemp times Atemp - the square root \+ of\n #the largest eigenvalue\n #is the largest str etch factor -\n #you want this to be less than one\n\nAtemp: =transpose\n (matrix([fcn([1.,0])-fcn([0,0]),fcn([0,1])-fcn([0,0])]) );\ntemp:=eigenvectors(transpose(Atemp)&*Atemp);\n\nif (temp[2]=2 and \+ temp[1]>=1) #uniform stretch, factor >=1\n then return(print(\"expand s uniformly, by \" , temp[1] , \"in all directions - not contraction! \"));\n fi;\nif (temp[2]=2 and temp[1]<1) #uniform stretch, factor <1 \n then return(print(\"contracts uniformly, by \", temp[1] , \"in all directions - contraction!\"));\n fi;\n\nif (temp[1][1]>temp[2][1] an d temp[1][1]>=1) \n then return(print (\"not a Euclidean contract ion: maximum stretch factor\" , sqrt(temp[1][1]) , \"in direction\" , \+ temp[1][3][1] )); \n fi;\nif (temp[1][1]= 1) \n then returnt(print (\"not a Euclidean contraction: m aximum stretch factor\" , sqrt(temp[2][1]) , \"in direction\" , temp[2 ][3][1] ));\n fi;\nif (temp[1][1]<1 and temp[2][1]<1)\n \+ then print (\"contraction!\");\n fi;\n\nend:\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}} {PARA 258 "" 1 "" {TEXT -1 8 "Example:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 154 "f1:=P->AFFINE1(P,.7,.8,.8,-.7,.6,3);\nf2:=P->AFFINE1 (P,.5,-.6,.2,.3,.8,.5);\nf3:=P->AFFINE1(P,1.5,0,1,.5,.25,.5);\nf4:=P-> AFFINE1(P,.7,.2,-.2,.7,.6,3);\n " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "TESTMAP([f1,f2,f3,f4]);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "STRETCHTEST(f1);\n" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "STRETCHTEST(f2);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "STRETCHTEST(f3);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "STRETCHTEST(f4);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}} {MARK "5 0" 0 }{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }