new sl 2012, luento 3b - jyväskylän...

13
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" ja Wilhelm Haager: Graphics with MAXIMA, pdf-dokumentti osoitteessa http://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, ja ilman 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 vain rasterigrafiikkana (png, jpg, bmp tai xpm). Tällainen kuva kelpaa vain 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.ps oletushakemistoon (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])$

Upload: others

Post on 21-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: New SL 2012, luento 3b - Jyväskylän yliopistousers.jyu.fi/~lehtonen/opetus/sl2012/SL_esim_L3b.pdf · 2012. 11. 15. · SL_esim_grafiikkaa.wxm 4 / 13 1.5 3d/funktion kuvaaja: z=f(x,y)

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])$

Page 2: New SL 2012, luento 3b - Jyväskylän yliopistousers.jyu.fi/~lehtonen/opetus/sl2012/SL_esim_L3b.pdf · 2012. 11. 15. · SL_esim_grafiikkaa.wxm 4 / 13 1.5 3d/funktion kuvaaja: z=f(x,y)

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?

Page 3: New SL 2012, luento 3b - Jyväskylän yliopistousers.jyu.fi/~lehtonen/opetus/sl2012/SL_esim_L3b.pdf · 2012. 11. 15. · SL_esim_grafiikkaa.wxm 4 / 13 1.5 3d/funktion kuvaaja: z=f(x,y)

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)

Page 4: New SL 2012, luento 3b - Jyväskylän yliopistousers.jyu.fi/~lehtonen/opetus/sl2012/SL_esim_L3b.pdf · 2012. 11. 15. · SL_esim_grafiikkaa.wxm 4 / 13 1.5 3d/funktion kuvaaja: z=f(x,y)

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):

Page 5: New SL 2012, luento 3b - Jyväskylän yliopistousers.jyu.fi/~lehtonen/opetus/sl2012/SL_esim_L3b.pdf · 2012. 11. 15. · SL_esim_grafiikkaa.wxm 4 / 13 1.5 3d/funktion kuvaaja: z=f(x,y)

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

Page 6: New SL 2012, luento 3b - Jyväskylän yliopistousers.jyu.fi/~lehtonen/opetus/sl2012/SL_esim_L3b.pdf · 2012. 11. 15. · SL_esim_grafiikkaa.wxm 4 / 13 1.5 3d/funktion kuvaaja: z=f(x,y)

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)$

Page 7: New SL 2012, luento 3b - Jyväskylän yliopistousers.jyu.fi/~lehtonen/opetus/sl2012/SL_esim_L3b.pdf · 2012. 11. 15. · SL_esim_grafiikkaa.wxm 4 / 13 1.5 3d/funktion kuvaaja: z=f(x,y)

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)$

Page 8: New SL 2012, luento 3b - Jyväskylän yliopistousers.jyu.fi/~lehtonen/opetus/sl2012/SL_esim_L3b.pdf · 2012. 11. 15. · SL_esim_grafiikkaa.wxm 4 / 13 1.5 3d/funktion kuvaaja: z=f(x,y)

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 ] )

Page 9: New SL 2012, luento 3b - Jyväskylän yliopistousers.jyu.fi/~lehtonen/opetus/sl2012/SL_esim_L3b.pdf · 2012. 11. 15. · SL_esim_grafiikkaa.wxm 4 / 13 1.5 3d/funktion kuvaaja: z=f(x,y)

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)

Page 10: New SL 2012, luento 3b - Jyväskylän yliopistousers.jyu.fi/~lehtonen/opetus/sl2012/SL_esim_L3b.pdf · 2012. 11. 15. · SL_esim_grafiikkaa.wxm 4 / 13 1.5 3d/funktion kuvaaja: z=f(x,y)

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");

Page 11: New SL 2012, luento 3b - Jyväskylän yliopistousers.jyu.fi/~lehtonen/opetus/sl2012/SL_esim_L3b.pdf · 2012. 11. 15. · SL_esim_grafiikkaa.wxm 4 / 13 1.5 3d/funktion kuvaaja: z=f(x,y)

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 φ ]

Page 12: New SL 2012, luento 3b - Jyväskylän yliopistousers.jyu.fi/~lehtonen/opetus/sl2012/SL_esim_L3b.pdf · 2012. 11. 15. · SL_esim_grafiikkaa.wxm 4 / 13 1.5 3d/funktion kuvaaja: z=f(x,y)

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)

Page 13: New SL 2012, luento 3b - Jyväskylän yliopistousers.jyu.fi/~lehtonen/opetus/sl2012/SL_esim_L3b.pdf · 2012. 11. 15. · SL_esim_grafiikkaa.wxm 4 / 13 1.5 3d/funktion kuvaaja: z=f(x,y)

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)