new sl 2012, luento 3b - jyväskylän...
TRANSCRIPT
SL_esim_grafiikkaa.wxm 1 / 13
1 Plot
Maximan sisäänrakennetut piirtokomennot sopivat"kevyeen" työskentelyyn.Komennot tunnistaa nimistä, joiden osana on plot.
Avuksi Maximan käsikirjan luku "Plotting" jaWilhelm Haager: Graphics with MAXIMA, pdf-dokumentti osoitteessahttp://www.austromath.at/daten/maxima/zusatz/Graphics_with_Maxima.pdf
wxMaxima-käyttöliittymään piirtokomennoista on yleensä kaksi versiota:wx-alkuiset, jotka sijoittavat kuvan wxMaxima-dokumenttiin, jailman wx-etuliitettä olevat. Vain jälkimmäiset on dokumentoitu käsikirjaan.
1.1 Funktion kuvaaja: y=f(x)
wxplot-komentojen ruudulle muodostaman kuvan voi tallettaa vainrasterigrafiikkana (png, jpg, bmp tai xpm). Tällainen kuva kelpaavain ruudulla käytettäväksi, ei julkaistavaksi/tulostettavaksi.
(%i1) wxplot2d([x^2, 3*x^2, x^2*(2+sin(1/x))], [x,-0.01,0.011])$
(%t1)
Kun kuva on tarkoitus tallettaa EPS-tiedostoksi, pitääwxplot-komentojen tilalle vaihtaa vastaava plot-komento:
--> plot2d([x^2, 3*x^2, x^2*(2+sin(1/x))], [x,-0.01,0.011],[gnuplot_term, ps],[gnuplot_out_file, "/Users/lehtonen/plot2d.eps"])$
Jos määre [gnuplot_out_file, "<hakemisto>/<nimi>.eps"]jätetään antamatta, kuva talletetaan nimellä maxplot.psoletushakemistoon (käytttäjän kotihakemistoon).
--> plot2d([x^2, 3*x^2, x^2*(2+sin(1/x))], [x,-0.01,0.011],[psfile, "/Users/ari/plot2d.eps"])$
Kuvan ohjaaminen erilaisiin "ikkunointijärjestelmiin"(toimivuus riipuu käyttöympäristöstä):
--> plot2d([x^2, 3*x^2, x^2*(2+sin(1/x))], [x,-0.01,0.011],[gnuplot_term, x11])$
--> plot2d([x^2, 3*x^2, x^2*(2+sin(1/x))], [x,-0.01,0.011],[gnuplot_term, aqua])$
SL_esim_grafiikkaa.wxm 2 / 13
--> plot2d([x^2, 3*x^2, x^2*(2+sin(1/x))], [x,-0.01,0.011],[plot_format, xmaxima])$
1.2 Tasa-arvokäyrä: f(x,y)=c
--> wxcontour_plot( x^2 + y^2, [x,-1.5,1.5], [y,-1.5,1.5],[gnuplot_preamble, "set size ratio -1"] )$
[gnuplot_preamble, "set size ratio -1"]asettaa kuvan x- ja y-akseleille saman mittayksikön.Ilman tätä asetusta ympyrät näyttävät ellipseiltä.
(%i2) load(implicit_plot)$
(%i3) wximplicit_plot( x^2 + y^2 = 2, [x,-1.5,1.5], [y,-1.5,1.5],[gnuplot_preamble, "set size ratio -1"])$
(%t3)
1.3 Parametrisoitu käyrä: x=x(t), y=y(t)
Cornun spiraali määritellään ns. Fresnelin integraalien avulla:
(%i4) cornu_spiral:[parametric, fresnel_c(t), fresnel_s(t), [t,-10,10]]$
(%i5) circle:[parametric, cos(t), sin(t), [t,0,2*%pi]]$
(%i6) wxplot2d([cornu_spiral, circle], [nticks, 500], [gnuplot_preamble, "set size ratio -1"])$
(%t6)
Mitä tässä esiintyvät Fresnelin integraalit ovat?
SL_esim_grafiikkaa.wxm 3 / 13
(%i7) diff([fresnel_c(t), fresnel_s(t)], t);
(%o7) [ cosπ t2
2, sin
π t2
2]
(%i8) ev([fresnel_c(t), fresnel_s(t)], t=0);(%o8) [ 0 , 0 ]
Siis
(%i9) [fresnel_c(t) = 'integrate( cos(%pi*s^2/2), s,0,t),fresnel_s(t) = 'integrate( sin(%pi*s^2/2), s,0,t)];
(%o9) [ fresnel_c t =0
tcos
π s2
2d s , fresnel_s t =
0
tsin
π s2
2d s ]
Cornun spiraalin raja-arvo, kun t kasvaa, on:
(%i10) [fresnel_c(inf), fresnel_s(inf)];
(%o10) [12,12]
...tai laskettuna integaalina:
(%i11) [integrate( cos(%pi*s^2/2), s,0,inf),integrate( sin(%pi*s^2/2), s,0,inf)];
(%o11) [12,12]
Vastaavasti, kun t vähenee:
(%i12) [fresnel_c(minf), fresnel_s(minf)];
(%o12) [ -12, -
12]
1.4 Data
(%i13) lst:[[1,55], [2,15], [3,20], [4,17],[5,50], [6,85], [7,72], [8,89],[9,128], [10,57], [11,25], [12,90]]$
(%i14) wxplot2d([discrete, lst],[x,0.5,12.5], [y,0,130],[style, impulses])$
(%t14)
SL_esim_grafiikkaa.wxm 4 / 13
1.5 3d/funktion kuvaaja: z=f(x,y)
3d-grafiikka kannattaa usein piirtää komennon plot3d avulla, ei wxplot3d.Erilliseen ikkunaan piirrettyä 3d-oliota voi pyörittää hiiren avulla;wxplot3d-komennon tuottama kuva on täysin kaksiulotteinen.
(%i15) wxplot3d(x^2 - y^2, [x, -1, 1], [y, -1, 1])$
(%t15)
1.6 3d/parametrisoitu pinta: x=f(u,v), y=g(u,v), z=g(u,v)
Edellisen satulapinnan esitys napakoordinaattien avulla:
(%i16) z_rt:ev(x^2 - y^2, x=r*cos(theta), y=r*sin(theta));
(%o16) r2 cos θ 2 - r2 sin θ 2
(%i17) wxplot3d([r*cos(theta), r*sin(theta), z_rt], [r, 0, sqrt(2)], [theta, -%pi, %pi])$
(%t17)
Pallopinta (pallokoordinaattien avulla):
SL_esim_grafiikkaa.wxm 5 / 13
(%i18) wxplot3d([cos(theta)*cos(phi), sin(theta)*cos(phi), sin(phi)], [theta, -%pi/2, %pi], [phi, -%pi/2, %pi/2])$
(%t18)
Funktio cos(-x^2 + y^3/4)(muuttujan grid avulla määrätään laskentapisteiden lukumäärä):
(%i19) wxplot3d(cos(-x^2 + y^3/4), [x, -4, 4], [y, -4, 4], [grid, 150, 150], [mesh_lines_color, false], [colorbox, true])$
(%t19)
Tasa-arvokäyrästö (=kuvaa katsotaan ylhäältä;tämä ilmeisesti ei toimi wxplot3d:llä):
--> plot3d(cos(-x^2 + y^3/4), [x, -4, 4], [y, -4, 4], [grid, 150, 150], [mesh_lines_color, false], [elevation, 0], [azimuth, 0], [colorbox, true])$
2 Draw
Erikseen ladattava draw-kirjasto on monipuolinen grafiikkapaketti.Komennot tunnistaa nimistä, joiden osana on draw.
Avuksi Maximan käsikirjan luku "draw" jaWilhelm Haager: Graphics with MAXIMA, pdf-dokumentti osoitteessahttp://www.austromath.at/daten/maxima/zusatz/Graphics_with_Maxima.pdf
SL_esim_grafiikkaa.wxm 6 / 13
Draw-kirjaston graafisia objekteja:2d:explicit, parametric, implicit, polar,points, polygon, rectangle, ellipse, triangle,quadrilateral, region, bars, vector, errors3d:explicit, parametric, parametric_surface, implicit,cylindrical, spherical, tube,points, triangle, quadrilateral, vector
draw- ja implicit_plot -kirjastot eivät ole yhteensopivia:
(%i20) load(draw)$STYLE-WARNING: redefining MAXIMA::CONTAINS-ZEROS in DEFUNSTYLE-WARNING: redefining MAXIMA::SAMPLE-DATA in DEFUNSTYLE-WARNING: redefining MAXIMA::PRINT-SEGMENT in DEFUNSTYLE-WARNING: redefining MAXIMA::PRINT-SQUARE in DEFUNSTYLE-WARNING: redefining MAXIMA::IMP-PL-PREPARE-FACTOR in DEFUNSTYLE-WARNING: redefining MAXIMA::IMP-PL-PREPARE-EXPR in DEFUN
2.1 Funktion kuvaaja: y=f(x)
(%i21) g1:explicit(x^2, x,-0.01,0.011);
(%o21) explicit x2 , x , - 0.01 , 0.011
(%i22) g2:explicit(3*x^2, x,-0.01,0.011)$
(%i23) g3:explicit(x^2*(2+sin(1/x)), x,-0.01,0.011)$
(%i24) wxdraw2d(color=red, g1, color=red, g2, color=green, g3)$
(%t24)
2.2 Tasa-arvokäyrä: f(x,y)=c
(%i25) g:implicit(x^2 + y^2 = 2, x,-1.5,1.5, y,-1.5,1.5)$
SL_esim_grafiikkaa.wxm 7 / 13
(%i26) wxdraw2d(g)$
(%t26)
draw-kirjastossa user_preamble="set size ratio -1"asettaa x- ja y-akseleille saman mittayksikön:
(%i27) wxdraw2d(user_preamble="set size ratio -1",g)$
(%t27)
2.3 Parametrisoitu käyrä: x=x(t), y=y(t)
(%i28) cornu_spiral:parametric( fresnel_c(t), fresnel_s(t), t,-5,5)$
(%i29) circle:parametric(cos(t), sin(t), t, 0, 2*%pi)$
SL_esim_grafiikkaa.wxm 8 / 13
(%i30) wxdraw2d(user_preamble="set size ratio -1",nticks=200,color=red, cornu_spiral,color=blue, circle)$
(%t30)
2.4 Data
(%i31) lst:[[1,55], [2,15], [3,20], [4,17],[5,50], [6,85], [7,72], [8,89],[9,128], [10,57], [11,25], [12,90]]$
(%i32) wxdraw2d(xrange=[0.5,12.5], yrange=[0,130],fill_color=blue, points_joined=impulses,points(lst) )$
(%t32)
Pylväsdiagrammeja varten datapisteissä pitää kolmantenakomponenttina olla pylvään leveys:
(%i33) lst2:makelist([lst[j][1], lst[j][2], 0.8], j,1,length(lst));(%o33) [ [ 1 , 55 , 0.8 ] , [ 2 , 15 , 0.8 ] , [ 3 , 20 , 0.8 ] , [ 4 , 17 , 0.8 ] , [ 5 , 50 , 0.8 ] , [ 6 , 85 , 0.8 ] , [ 7 , 72 , 0.8 ] , [ 8 , 89 ,0.8 ] , [ 9 , 128 , 0.8 ] , [ 10 , 57 , 0.8 ] , [ 11 , 25 , 0.8 ] , [ 12 , 90 , 0.8 ] ]
Muutetaan lista pylväsdiagrammi-olioksi:
(%i34) apply(bars, lst2);(%o34) bars ( [ 1 , 55 , 0.8 ] , [ 2 , 15 , 0.8 ] , [ 3 , 20 , 0.8 ] , [ 4 , 17 , 0.8 ] , [ 5 , 50 , 0.8 ] , [ 6 , 85 , 0.8 ] , [ 7 , 72 , 0.8 ] , [ 8, 89 , 0.8 ] , [ 9 , 128 , 0.8 ] , [ 10 , 57 , 0.8 ] , [ 11 , 25 , 0.8 ] , [ 12 , 90 , 0.8 ] )
SL_esim_grafiikkaa.wxm 9 / 13
(%i35) wxdraw2d(xrange=[0.5,12.5], yrange=[0,130],fill_color=blue,apply(bars, lst2) )$
(%t35)
Komennon wxdraw jälkeen kuva ei ole EPS-muodossa talletettavaksi kelpaava,kommennon draw jälkeen on. Komento draw_file tallettaa viimeisimmän kuvan.
--> draw2d(xrange=[0.5,12.5], yrange=[0,130],fill_color=blue,apply(bars, lst2) )$
--> draw_file(terminal=eps, dimensions=[1500,1000],file_name="/Users/lehtonen/draw2d");
HUOMIO: Tulostettavaksi tarkoitettu kuva pitää tallettaa EPS-muotoon(tai PDF-muotoon; JPEG tai PNG ei ole riittävä).
2.5 3d/funktion kuvaaja: z=f(x,y)
(%i36) g:explicit( sin(x)*sin(y), x,-2*%pi,2*%pi, y,-2*%pi,2*%pi)$
(%i37) wxdraw3d(g);
(%t37)
(%o37)
SL_esim_grafiikkaa.wxm 10 / 13
(%i38) wxdraw3d(xu_grid=50, yv_grid=50,surface_hide=true, view=[60, 30],g);
(%t38)
(%o38)
(%i39) wxdraw3d(xu_grid=50, yv_grid=50,enhanced3d=true, surface_hide=true, view=[60, 30],contour=base,g);
(%t39)
(%o39)
Erilliseen ikkunaan piirrettyä 3d-oliota voi pyörittää hiiren avulla;wxdraw3d-komennon tuottama kuva on täysin kaksiulotteinen.
--> draw3d(xu_grid=50, yv_grid=50,enhanced3d=true, surface_hide=true, view=[60, 30],contour=both,g);
--> draw_file(terminal=eps_color, dimensions=[1500,1000],file_name="/Users/lehtonen/draw3d");
SL_esim_grafiikkaa.wxm 11 / 13
(%i40) wxdraw3d(xu_grid=50, yv_grid=50,contour_levels=10, contour=map,g);
(%t40)
(%o40)
2.6 Tasa-arvopinta f(x,y,z)=c
(%i41) wxdraw3d(enhanced3d=true, surface_hide=true,proportional_axes=xyz,x_voxel=15, y_voxel=15, z_voxel=15,implicit( x^2 + y^2 + z^2 = 1, x, -1.1, 1.1, y, -1.1, 1.1, z, -1.1, 1.1) )$
(%t41)
2.7 Parametrisoitu pinta: x=f(u,v), y=g(u,v), z=g(u,v)
(%i42) s2:[cos(theta)*cos(phi), sin(theta)*cos(phi), sin(phi)];(%o42) [ cos φ cos θ , cos φ sin θ , sin φ ]
SL_esim_grafiikkaa.wxm 12 / 13
(%i43) wxdraw3d(enhanced3d=true, surface_hide=true,proportional_axes=xyz,xrange=[-1.1, 1.1], yrange=[-1.1, 1.1], zrange=[-1.1, 1.1],parametric_surface( s2[1], s2[2], s2[3],theta, -%pi/2,%pi, phi, -%pi/2,%pi/2))$
(%t43)
2.8 Parametrisoitu käyrä: x=f(t), y=g(t), z=g(t)
(%i44) s2_c:ev(s2, phi=0.1*theta);(%o44) [ cos 0.1 θ cos θ , cos 0.1 θ sin θ , sin 0.1 θ ]
(%i45) c:parametric(s2_c[1], s2_c[2], s2_c[3],theta, -6*%pi, 6*%pi)$
Spiraali (ns. loksodromi) pallopinnalla etelänavalta pohjoisnavalle:
(%i46) wxdraw3d(enhanced3d=false, surface_hide=true,proportional_axes=xyz,xrange=[-1.1, 1.1], yrange=[-1.1, 1.1], zrange=[-1.1, 1.1],nticks=500, line_width=2, color=red,c)$
(%t46)
SL_esim_grafiikkaa.wxm 13 / 13
(%i47) wxdraw3d(enhanced3d=false, surface_hide=true,proportional_axes=xyz,xrange=[-1.1, 1.1], yrange=[-1.1, 1.1], zrange=[-1.1, 1.1],parametric_surface( s2[1], s2[2], s2[3], theta, -%pi,%pi, phi, -%pi/2,%pi/2),nticks=500, line_width=2, color=red,c)$
(%t47)