{VERSION 2 3 "IBM INTEL NT" "2.3" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Helvetica" 1 10 0 0 255 1 0 0 0 0 1 0 0 0 0 }{CSTYLE "" -1 256 "" 1 14 178 0 20 0 0 0 1 0 0 0 0 0 0 }{CSTYLE "" -1 257 "" 1 12 0 0 5 0 0 0 1 0 0 0 0 0 0 }{CSTYLE "" -1 258 "" 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 }{CSTYLE "" -1 259 "" 0 1 48 32 48 0 0 0 1 0 0 0 0 0 0 }{CSTYLE "" -1 260 "" 0 1 131 62 188 0 0 0 1 0 0 0 0 0 0 }{CSTYLE "" -1 261 "" 0 1 0 0 2 0 0 0 1 0 0 0 0 0 0 } {CSTYLE "" -1 262 "" 1 12 20 2 28 0 0 0 1 0 0 0 0 0 0 }{CSTYLE "" -1 263 "" 0 1 0 80 232 0 0 0 1 0 0 0 0 0 0 }{CSTYLE "" -1 264 "" 0 1 18 62 96 0 0 0 1 0 0 0 0 0 0 }{CSTYLE "" -1 265 "" 0 1 189 0 48 0 0 0 1 0 0 0 0 0 0 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "Helvetica" 1 10 0 0 0 1 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 3 0 3 0 0 0 -1 0 } {PSTYLE "" 0 256 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 257 1 {CSTYLE "" -1 -1 " " 0 1 184 0 84 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 258 1 {CSTYLE "" -1 -1 "" 0 1 136 255 152 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 256 "" 0 "" {TEXT 256 39 "LES ENSEMBLES DE JULIA \+ ET DE MANDELBROT" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "with(plots):\n" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 257 "" 0 "" {TEXT 257 22 "Les ensembles de Julia " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 2 "1)" }{TEXT 259 94 "Approximation d'un ensemble de Julia par encercl ement progressif de l'ensemble des prisonniers" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 2436 "julia1:=proc(c,n,pas)\nlocal R,h,f,phi,extra ction,go,points,liste_de_d\351part,liste_d_arriv\351e,pos,neg,i,k;\n\n # d\351finition de quelques fonctions utiles\n\n# h(r,couple) conserve un point donn\351 par la liste couple de ses deux coordonn\351es s'il est dans un disque de rayon r\nh:=(r,couple)->if couple[1]^2+couple[2 ]^2(x,fonction,map2(fonction,x,liste));\n# extraction permet d'extraire d'un couple de complexes le couple des parties r\351elle et imaginair e du premier de ces complexes: cette proc\351dure sera appliqu\351e \+ \340 un couple auquel on aura appliqu\351 n fois la fonction f, le pre mier \351l\351ment restant invariant\nextraction:=couple->[Re(couple[1 ]),Im(couple[1])];\n\n# initialisations\n\n# d\351clenchement du chron om\350tre\ngo:=time();\n# selon pas, qui d\351signe la finesse de la g rille de points dans le disque de r\351f\351rence, construction de la \+ liste de ces points par balayage du demi-carr\351 en \351liminant les \+ points ext\351rieurs au demi-disque sup\351rieur en appliquant la fonc tion h\n# l'ensemble des prisonniers \351tant sym\351trique par rappor t \340 l'origine, on ne travaille qu'avec un demi-disque\nR:=max(2,abs (c));\npoints:=[seq(seq(h(R,[k*pas,i*pas]),k=-floor(R/pas)..floor(R/pa s)),i=0..floor(R/pas))];\n# cr\351ation de la liste des couples [z,z], pour z dans le demi-disque de d\351part\nliste_de_d\351part:=[seq([po ints[i],points[i]],i=1..nops(points))];\n\n#corps de la proc\351dure\n \n# on applique n fois phi \340 la liste de d\351part, en \351liminant \340 l'\351tape k les points dont le k-i\350me it\351r\351 sort du di sque de r\351f\351rence\nliste_d_arriv\351e:=op(3,[(phi@@n)(c,f,liste_ de_d\351part)]);\n# on extrait les points qui restent sous forme cart \351sienne\npos:=map(extraction,liste_d_arriv\351e);\n# on calcule l'e nsemble des points sym\351triques, en vue de reconstituer la figure co mpl\350te\nneg:=-pos;\n# construction des points\nprint(plot([op(pos), op(neg)],style=POINT,symbol=POINT,scaling=CONSTRAINED,axes=NONE));\n# \+ impression du temps n\351cessaire\nprint(temps=time()-go)\nend:" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "julia1(-0.5+0.5*I,10,0.03); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "julia1(-1,7,0.03);" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "julia1(0.4,10,0.03);" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "julia1(-2,3,0.05);" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "julia1(-2,8,0.05);" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "julia1(I,7,0.03);" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "julia1(0,8,0.05);" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 2 "2) " }{TEXT 258 120 "Approximation par it\351ration d'un IFS sur un trian gle, ou comment trouver un r\351sultat int\351ressant par une m\351tho de fausse!" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 794 "julia2:=proc (c,n) # construction de l'ensemble des prisonniers associ\351 au param \350tre c. n repr\351sente le nombre d'it\351rations.\nlocal j,k,s,tra nsforme_triangle,s\351quence_de_triangles,go,liste_de_points;\ngo:=tim e();\ntransforme_triangle:=(x,triangle)->map2((x,z)->evalf(sqrt(z-x)), x,triangle);\ns\351quence_de_triangles:=[[1,cos(2*Pi/3)+I*sin(2*Pi/3), cos(2*Pi/3)-I*sin(2*Pi/3)]];\nfor j to n\ndo\ns:=NULL;\ns:=s,seq(trans forme_triangle(c,s\351quence_de_triangles[k]),k=1..nops(s\351quence_de _triangles)),seq(-transforme_triangle(c,s\351quence_de_triangles[k]),k =1..nops(s\351quence_de_triangles));\ns\351quence_de_triangles:=[s];\n od;\nliste_de_points:=map(t->map(p->[Re(p),Im(p)],t),s\351quence_de_tr iangles);\nprint(polygonplot(liste_de_points,axes=NONE,style=POINT,sym bol=POINT,scaling=CONSTRAINED));\nprint(temps=time()-go)\nend:" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "julia2(-1,9);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 731 "julia2bis:=proc(c,n) # constructio n de l'ensemble de Julia proprement dit\nlocal j,k,s,transforme_triang le,s\351quence_de_triangles,go,liste_de_points;\ngo:=time();\ntransfor me_triangle:=(x,triangle)->map2((x,z)->evalf(sqrt(z-x)),x,triangle);\n s\351quence_de_triangles:=[[1,cos(2*Pi/3)+I*sin(2*Pi/3),cos(2*Pi/3)-I* sin(2*Pi/3)]];\nfor j to n\ndo\ns:=NULL;\ns:=s,seq(transforme_triangle (c,s\351quence_de_triangles[k]),k=1..nops(s\351quence_de_triangles)),s eq(-transforme_triangle(c,s\351quence_de_triangles[k]),k=1..nops(s\351 quence_de_triangles));\ns\351quence_de_triangles:=[s];\nod;\nliste_de_ points:=map(t->map(p->[Re(p),Im(p)],t),s\351quence_de_triangles);\npri nt(polygonplot(liste_de_points,axes=NONE,color=BLACK,scaling=CONSTRAIN ED));\nprint(temps=time()-go)\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "julia2(-1,9);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 " " }}{PARA 0 "" 0 "" {TEXT -1 2 "3)" }{TEXT 260 29 "Correction de l'IFS pr\351c\351dent" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 493 "julia3 :=proc(c,n) local f,h,g,u,go,p; # n repr\351sente le nombre d'it\351ra tions, c le param\350tre\nf:=(z,a)->evalf(sqrt(z-a)):\nh:=(liste,fonct ion,b)->([op(map(fonction,liste,b)),op(map(-fonction,liste,b))],foncti on,b):\ng:=t->[2.5*I+.5*exp(I*t)]: # le compact initial pour l'it\351r ation de l'IFS est ici un cercle, au lieu d'un triangle rempli\nu:=x-> [Re(x),Im(x),t=-Pi..Pi]:\ngo:=time():\np:=map(u,(h@@n)(g(t),f,c)[1]); \nprint(plot(p,color=BLACK,scaling=CONSTRAINED,axes=NONE));\nprint(tem ps=time()-go)\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "juli a3(-1,5);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "julia3(I,5);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 2 " 4)" }{TEXT 261 71 "Approximation d'un ensemble de Julia par utilisatio n d'un IFS ergodique" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 587 "ju lia4:=proc(c,n,z0) local go,z,s\351quence_d_it\351r\351s,i,nombre_au_h asard; # z0 est le point initial, n le nombre d'it\351rations\ngo:=tim e();;\nz:=z0;\ns\351quence_d_it\351r\351s:=NULL;\nfor i to n do nombre _au_hasard:=rand();\n if 0.5*10^12 <= nombre_au_hasard \n then z:=evalf(sqrt(z-c))\n else z:=-evalf(sqrt(z-c))\n fi;\n s\351que nce_d_it\351r\351s:=s\351quence_d_it\351r\351s,[Re(z),Im(z)]\n \+ od;\nprint(plot([s\351quence_d_it\351r\351s[30..n]],color=BLACK,s caling=CONSTRAINED,axes=NONE,style=POINT,symbol=POINT));\nprint(temps= time()-go)\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "julia4( -1,5000,0);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "julia4(I,300 0,0);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 35 "julia4(-.5+.5*I,30 00,1.408-.275*I);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "julia4 (-.83+.6*I,4000,0);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 26 "juli a4(-.83+.16*I,5000,0);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "j ulia4(0,1000,1);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "julia4( -2,1000,0);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "julia4(5-I,3 000,0);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 258 "" 0 "" {TEXT 262 24 "L'ensemble de Mandelbrot" }}{PARA 0 "" 0 "" {TEXT -1 0 " " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 2 "1)" }{TEXT 263 66 "Recherche e mpirique des \351l\351ments r\351els de l'ensemble de Mandelbrot" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 503 "julia_r\351el:=proc(a,n) lo cal liste_de_d\351part,f,g,h,p,k; # a doit \352tre sup\351rieur \340 1 \nliste_de_d\351part:=[seq([evalf(k*10^(-3)),evalf(k*10^(-3))],k=0..10 00)]:\nf:=proc(x,b) local y;\n y:=b*x[2]*(1-x[2]);\n if y<=1 the n [x[1],y] else NULL fi\nend;\ng:=(fon,li,b)->(fon,map(fon,li,b),b);\n h:=li->map(x->[x[1],0.008],li);\np:=plot(h((g@@n)(f,liste_de_d\351part ,a)[2]),style=POINT,symbol=POINT,color=RED);\ndisplay([p,plot(a*x*(1-x ),x=0..1,color=GREEN,xtickmarks=[0,1],ytickmarks=[0,1,a/4])],scaling=C ONSTRAINED)\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "julia_ r\351el(2,3);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "julia_r \351el(3.9,3);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "julia_r \351el(4,3);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "julia_r\351 el(4.01,3);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "julia_r\351e l(4.01,5);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "julia_r\351el (5,5);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 3 "\n2)" }{TEXT 264 69 "Pre mi\350re construction d'une approximation de l'ensemble de Mandelbrot " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 946 "mandelbrot1:=proc(n,pa s) local go,h,f,phi,extraction,points,liste_de_d\351part,liste_d_arri v\351e,pos,neg,i,k;\ngo:=time();\nh:=couple->if couple[1]^2+couple[2]^ 2<=4 then couple[1]+I*couple[2] else NULL fi; \nf:=proc(couple) local \+ z; z:=couple[2]^2+couple[1]; if evalf(abs(z))<=2 then [couple[1],z] el se NULL fi end;\nphi:=(fonction,liste)->(fonction,map(fonction,liste)) ;\nextraction:=couple->[Re(couple[1]),Im(couple[1])];\n\npoints:=[seq( seq(h([k*pas,i*pas]),k=(-1-floor(2/pas))..floor(2/pas)+1),i=0..floor(2 /pas))];\nliste_de_d\351part:=[[-2,-2],seq([points[i],points[i]],i=1.. nops(points))];\n\nliste_d_arriv\351e:=op(2,[(phi@@n)(f,liste_de_d\351 part)]);\npos:=map(extraction,liste_d_arriv\351e);\n# on calcule l'ens emble des points sym\351triques par rapport \340 l'axe des abscisses, \+ en vue de reconstituer la figure compl\350te\nneg:=map(li->[li[1],-li[ 2]],pos);\nprint(plot([op(pos),op(neg)],style=POINT,symbol=POINT,scali ng=CONSTRAINED,axes=NONE));\nprint(temps=time()-go)\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "mandelbrot1(30,0.02);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 3 "\n3)" }{TEXT 265 76 "Construction d'une ap proximation de la fronti\350re de l'ensemble de Mandelbrot" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1450 "mandelbrot2:=proc(pr\351cision) # prendre pr\351cision>=0.03\nlocal go,triangle,appartenance,s,nouveau, polygone_d_approximation,extraction,est_dedans,n,k;\ngo:=time();\ntria ngle:=[[0.25-pr\351cision,true],[0.25+pr\351cision,false],[0.25-pr\351 cision+2*pr\351cision*I,true]];\nappartenance:=proc(c) local z,r\351po nse,i; # teste l'appartenance de c \340 l'ensemble de Mandelbrot\n \+ z:=0;\n r\351ponse:=true;\n for i to 30 while r \351ponse=true do z:=z^2+c; if evalf(abs(z))>2 then r\351ponse:=false \+ fi od;\n # porter cette valeur \340 100 si pr\351cision <= 0.0 2\n r\351ponse\nend;\nextraction:=z->[Re(z),Im(z)];\ns:=0.25; \ndo\n if triangle[3][2]=triangle[1][2] then\n nouveau :=triangle[3][1]+triangle[2][1]-triangle[1][1];\n if Im(nouve au)<-2*pr\351cision then break fi;\n est_dedans:=appartenance (nouveau);\n if est_dedans=true then s:=s,nouveau fi;\n \+ triangle:=[triangle[2],triangle[3],[nouveau,est_dedans]]\n \+ else\n nouveau:=triangle[3][1]+triangle[1][1]-triangle[2][1]; \n if Im(nouveau)<-2*pr\351cision then break fi;\n e st_dedans:=appartenance(nouveau);\n if est_dedans=true then s :=s,nouveau fi;\n triangle:=[triangle[1],triangle[3],[nouveau ,est_dedans]]\n fi\nod;\nn:=nops([s]);\ns:=s,seq(conjugate(s[n- k+1]),k=1..n);\npolygone_d_approximation:=map(extraction,[s]);\nprint( polygonplot([polygone_d_approximation],scaling=CONSTRAINED,axes=NONE)) ;\nprint(temps=time()-go)\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "mandelbrot2(0.004);" }}}}{MARK "45 0 0" 0 }{VIEWOPTS 1 1 0 1 1 1803 }