/* [wxMaxima batch file version 1] [ DO NOT EDIT BY HAND! ]*/ /* [ Created with wxMaxima version 17.10.0 ] */ /* [wxMaxima: title start ] Luento 3 [wxMaxima: title end ] */ /* [wxMaxima: comment start ] Tehtävissä saa aina piirtää kuvia, jos se auttaa. Vaikka kuva pyydettäisiinkin, lisäkuvat auttavat joskus paljonkin. Selityksille ja kuville ei ole ylärajaa. Joitain tehtäviä ja niissä vastaan tulevia ongelmia ei ymmärrä piirtämättä kuvaa. [wxMaxima: comment end ] */ /* [wxMaxima: section start ] Kevyt piirtäminen [wxMaxima: section end ] */ /* [wxMaxima: subsect start ] wxplot2d ja plot2d [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Olemme jo tutustuneet komentoihin wxplot2d ja plot2d. Kuten huomattiin, ne soveltuvat hyvin yksinkertaisten funktioiden kuvaajien piirtämiseen. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxplot2d(sin(x)+x,[x,-2*%pi,2*%pi])$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Komento plot2d toimii samalla tavalla, mutta piirtää kuvan erilliseen ikkunaan. Ikkuna pitää sulkea ennen kuin Maxima suostuu ajamaan alla olevan solun "1+1". [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ plot2d(sin(x)+x,[x,-2*%pi,2*%pi])$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ 1+1; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Tämän käytöksen takia pyrimme mielummin käyttämään komentoa wxplot2d kun mahdollista. Erityisesti jos koko wxm-tiedostoa haluaa tutkia yhdellä kertaa ja valitsee "Evaluate All Cells", eteneminen pysähtyy jokaiseen ulkoiseen kuvaan. Sen sijaan wxplot2d:n kuvat eivät keskeytä etenemistä. Lukijalle wx-komennot ovat siksi mukavampia! Muuten komennot käyttäytyvät aika lailla samalla tavalla. Komennolle wxplot2d ei ainakaan tällä hetkellä löydy dokumentaatiota Maximan hakemistosta. Näihin kahteen komentoon liittyviä ohjeita kannattaa siksi lukea komennon plot2d kohdalta hakemistosta. Näihin komentoihin voi sisällyttää kaikenlaisia ylimääräisiä asetuksia tekemään kuvista nätimmän näköisiä, esimerkiksi: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxplot2d( [2*x-1,x^2 - 1,[discrete,[[0,-1],[2,3]]]], [x, -3, 3], [style,lines,lines,points], /* Määritellään kuvaajien tyyli... */ [color,blue,green,red], /* ... sekä värit ... */ [point_type,asterisk], /* ... että diskreettien pisteiden tyyli. */ [box, false], /* Poistetaan kuvan reunat */ [legend,false], /* Poistetaan selitykset */ [yx_ratio, 1], /* Tämä asetus määrittää kuvan x-y suhteen */ [axes, solid], /* Piirretään x- ja y- akselit yhtenäisellä viivalla */ grid2d, /* Laitetaan kuvaan näkyviin ruudukko katkoviivalla */ [xtics, -2, 4, 2], [ytics, -6, 2, 6], /* Kerrotaan mihin ruudukko halutaan */ [label, ["y = x^2 - 1", -2, 3.5],["y = 2x - 1", -2.4, -3.5]], /* Asetetaan kuvaan vähän tekstiä mainittuihin kohtiin */ [title, "Parabelin ja suoran leikkauspisteet"] /* Ja lopuksi annetaan kuvalle otsikko */ )$ /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] 3D-kuvaajat [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] 3D-kuvaajista selviää lisää lukemalla plot3d:n ohjetta. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxplot3d(x^2+5*sin(y),[x,-4,4],[y,-6,6])$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Toisin kuin edellä, nyt wx-versio ei toimikaan ihan samoin. Kokeile pyöritellä eri komentojen kuvia. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ plot3d(x^2+5*sin(y),[x,-4,4],[y,-6,6])$ /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Mutkikkaammat tasopiirrokset [wxMaxima: section end ] */ /* [wxMaxima: subsect start ] wxdraw2d [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] wxdraw2d ja draw2d mahdollistavat mutkikkaampien kuvien piirtämisen. Ne eroavat toisistaan kuten plot-vastineensakin. [wxMaxima: comment end ] */ /* [wxMaxima: subsect start ] explicit [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Plot2d-komennolla funktion sin(x) kuvaajan piirtäminen menisi näin: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxplot2d(sin(x),[x,0,%pi])$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Sen sijaan draw2d-komennolle täytyy syöttää seuraavaa jos halutaan sama tulos: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxdraw2d(explicit(sin(x),x,0,%pi))$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ideana on, että Maximassa ensin luodaan piirrettävät otukset komennoilla kuten explicit(), ja sitten nämä otukset voidaan syöttää komentoon draw2d tai wxdraw2d jotka piirtävät ne ruudulle. Tavallisen funktion kuvaaja siis luodaan aina komennolla explicit(). [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ parabeli:explicit(x^2,x,-1,1); kayra:explicit(-(x+1)^3,x,-2,0); wxdraw2d( parabeli, kayra ); /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] implicit [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Implisiittisillä kuvaajilla tarkoitetaan jonkin tietyn yhtälön ratkaisujoukkoa, joka voi koostua vaikka jostain käyrästä tasossa. Tällaisen olion voi luoda Maximaan komennolla implicit(), ja sen syöttäminen komentoon wxdraw2d toimii samalla tavalla kuin äskeisessä esimerkissä. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ sydan:implicit((x^2+y^2-1)^3-x^2*y^3 = 0,x,-2,2,y,-2,2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw2d(sydan)$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Parannetaan kuvaa asettamalla lisää asetuksia komentoon wxdraw2d. Asetukset erotellaan pilkulla komennon wxdraw2d sisällä: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxdraw2d( color=red, /* Asetetaan piirrettävä väri punaiseksi */ line_width=3, /* Viivojen paksuutta kasvatetaan */ sydan, /* Piirretään sydän */ proportional_axes=xy /* Asetetaan x-y akselit yhtä pitkiksi */ )$ /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] polar [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Napakoordinaateissa (tutustu näihin jos käsite ei ole tuttu) määriteltyjen käyrien luominen onnistuu komennolla polar(). [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ lemniskaatta: polar(sqrt(cos(2*theta)), theta, 0, 2*%pi); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw2d(lemniskaatta)$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Parannetaan kuvaa. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxdraw2d( proportional_axes=xy, /* Asetetaan x-y akselit yhtä pitkiksi */ xrange=[-1.5,1.5], yrange=[-1.5,1.5], /* Määritellään x-y välit */ xaxis=true, yaxis=true, /* Piirretään koordinaattiakselit myös kuvaan */ nticks=300, /* Tarkennetaan piirtotarkkuutta */ lemniskaatta )$ /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] parametric [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Joskus piirrettävä käyrä on annettu parametrisessa muodossa, eli sen x- ja y- koordinaatit ovat jonkin muuttujan (esimerkiksi ajan) funktioita. Tätä voi ajatella polun tai käyrän piirtämisenä. Näiden luominen onnistuu komennolla parametric(). [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ympyra:parametric(cos(t), sin(t), t, 0, 2*%pi)$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ cornu_spiral:parametric( fresnel_c(t), fresnel_s(t), t,-5,5)$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw2d( proportional_axes=xy, nticks=300, color=red, cornu_spiral, color=blue, ympyra )$ /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] Pisteet [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Diskreetin pistejoukon luominen onnistuu yksinkertaisesti komennolla points(). Piirretään pisteet (1,1), (2,-3), (-4,5), (-1,2) ja (0,3). [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxdraw2d(points([[1,1],[2,-3],[-4,5],[-1,2],[0,3]]))$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Kaikki pisteet eivät oikein näy. Laajennetaanpa kuvaa. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxdraw2d( points([[1,1],[2,-3],[-4,5],[-1,2],[0,3]]), xrange=[-5,4], yrange=[-4,7] )$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Tutki points-komennon ohjetta. Sieltä löytyy monia tapoja lisätä pisteitä. [wxMaxima: comment end ] */ /* [wxMaxima: subsect start ] Yhdistely [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Tyylikkäitä kuvia saa yhdistelemällä erilaisia osia. wxdraw2d-komennolle voi antaa niin monta piirrettävää oliota ja kuvaa muuttavaa asetusta kuin haluaa. Eri piirtokomennot kannattaa laittaa eri riveille, jotta lukeminen helpottuu. Erilaisia yllä nähtyjä elementtejä voi yhdistellä vapaasti. Komennot erotellaan aina pilkulla. [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] Piirretään kuva, jossa on punaisella funktion cos(x) kuvaaja välillä [0,pi] ja sinisellä funktion x^2+1 kuvaaja välillä [-2,2]. Näin se käy: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxdraw2d( color=red, explicit(cos(x),x,0,%pi), color=blue, explicit(x^2+1,x,-2,2) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ajattele komentoa näin: - otetaan käteen punainen pensseli: color=red - piirretään eksplisiittinen kuvaaja: explicit(cos(x),x,0,%pi) - otetaan käteen sininen pensseli: color=blue - piirretään toinen eksplisiittinen kuvaaja: explicit(x^2+1,x,-2,2) [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] Huomaa: Järjestyksellä on väliä! Pensselin väri ei muutu ellei sitä muuta! [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] Lisätään edelliseen kuvaan pisteitä. Vaihdetaan välillä väriä ja tyyliä. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxdraw2d( color=red, /*punainen pensseli käteen*/ explicit(cos(x),x,0,%pi), /*eksplisiittinen (tavallinen) kuvaaja*/ color=blue, /*sininen pensseli käteen*/ explicit(x^2+1,x,-2,2), /*toinen eksplisiittinen kuvaaja*/ points([[1,1],[1,2]]), /*pisteet (1,1) ja (1,2)*/ color=green, /*vihreä pensseli käteen*/ points([[0,1],[0,2]]), /*pisteet (0,1) ja (0,2)*/ point_type=circle, /*vaihdetaan pisteet ympyrän muotoisiksi*/ points_joined=true, /*yhdistetään yhtä aikaa piirrettävät pisteet viivalla*/ points([[2,2],[3,3],[2,4]]), /*pisteet (2,2), (3,3) ja (2,4)*/ point_size=10, /*pisteen kooksi 10*/ color=red, /*punainen pensseli käteen*/ points([[0,0]]) /*piste (0,0)*/ )$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Huomaa, että osa komennoista muuttaa asetuksia: - points_joined=true - color=red - jne. Osa taas piirtää kulloinkin voimassa olevilla asetuksilla: - explicit - points - implicit - jne. [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] On myös yleisasetuksia, kuten kuvan koko/ulottuvuudet/jne. Tällaisten komentojen sijainnilla ei ole väliä. [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] Piirretään nyt samaan kuvaan yhtälön x^2+y^4=3 ratkaisut vihreällä sekä sinisellä käyrä (t^2,t), jossa parametri t on välillä [0,10]. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxdraw2d( color=green, implicit(x^2+y^4=3,x,-10,10,y,-10,10), color=blue, parametric(t^2,t,t,0,10) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Leikataanpa kuvaa sopivamman kokoiseksi. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxdraw2d( xrange=[-2,2], yrange=[-2,2], color=green, implicit(x^2+y^4=3,x,-10,10,y,-10,10), color=blue, parametric(t^2,t,t,0,10) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Vihreä kuva on karkea. Laitetaan Maxima piirtämään se tarkemmin. Ohjeista löytyy vihje, että ip_gridin arvoa voi muuttaa. Sininen käyrä taas paranee, kun nticks kasvaa. Nyt kuvasta tulee parempi, mutta sen piirtäminen vie hieman kauemmin. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxdraw2d( xrange=[-2,2], yrange=[-2,2], color=green, ip_grid=[200,200], implicit(x^2+y^4=3,x,-10,10,y,-10,10), color=blue, nticks=200, parametric(t^2,t,t,0,10) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Lasketaanpa, missä käyrät leikkaavat. Kyseessä on polynomiyhtälöryhmä, jonka ratkaisemiseen voi esimerkiksi käyttää komentoa algsys. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ratkaisut:algsys( [ x^2+y^4=3, x=t^2, y=t ], [x,y,t] ); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Saadaan neljä ratkaisua. Kuvassa on vain yksi leikkauspiste. Selvästi t:n täytyy olla positiivinen reaaliluku. Siispä ensimmäinen ratkaisu on oikea. Valitaan se ottamalla listan "ratkaisut" ensimmäinen alkio. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ratkaisut[1]; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Etsimämme piste (x,y) voidaan poimia tästä monella tavalla. Vaikkapa näin komennolla part: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ leikkauspiste:[part(ratkaisut,1,1,2),part(ratkaisut,1,2,2)]; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Piirretään tämä piste isolla ja pienellä punaisella ympyrällä kuvaan. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxdraw2d( xrange=[-2,2], yrange=[-2,2], color=green, ip_grid=[200,200], implicit(x^2+y^4=3,x,-10,10,y,-10,10), color=blue, nticks=200, parametric(t^2,t,t,0,10), color=red, point_type=circle, point_size=5, points([leikkauspiste]), point_size=1, points([leikkauspiste]) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] Paloittain määritelty funktio [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Piirretään kuva funktiosta, joka on ax+b kun x on alle 1 ja sin(pi x) kun x on yli 1. Piirretään osat eri väreillä. Kokeillaan eri vakioiden arvoja. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ a:1; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ b:1; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw2d( explicit(a*x+b, x,-2,1), color=red, explicit(sin(%pi*x), x,1,4), yrange=[-2,3], proportional_axes=xy, xaxis=true, yaxis=true ); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ b:-1; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw2d( explicit(a*x+b, x,-2,1), color=red, explicit(sin(%pi*x), x,1,4), yrange=[-2,3], proportional_axes=xy, xaxis=true, yaxis=true ); /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] Komennot draw3d ja wxdraw3d [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Kolmiulotteisten kuvien piirtäminen onnistuu komennolla draw3d samalla idealla kuin kaksiulotteisten kuvien piirtäminen komennolla draw2d. Esimerkiksi eksplisiittinen kuvaaja: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ draw3d( explicit(x^2+5*sin(y),x,-4,4,y,-6,6) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Tyyliä voi myös muuttaa monilla erilaisilla asetuksilla: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ draw3d( enhanced3d=true, wired_surface=true, explicit(x^2+5*sin(y),x,-4,4,y,-6,6) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Esimerkiksi parametrinen piirtäminen onnistuu myös: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ expr_1: 5*cos(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y) + 3.0) - 10.0$ expr_2: -5*sin(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y) + 3.0)$ expr_3: 5*(-sin(x/2)*cos(y) + cos(x/2)*sin(2*y))$ kleinbottle: parametric_surface(expr_1,expr_2,expr_3,x,-%pi,%pi,y,-%pi,%pi); draw3d( enhanced3d=true, wired_surface=true, kleinbottle ); /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Piirrettyjen kuvien muokkaus ja tallennus [wxMaxima: section end ] */ /* [wxMaxima: subsect start ] wxm-tiedostot [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Tallennettuihin wxm-tiedostoihin (joko itselle jäävä tai palautettava) kannattaa jättää vain wx-alkuisia piirtokomentoja. Niissä on sama syntaksi, mutta ne piirtyvät wxMaximan ikkunaan eivätkä katkaise evaluaatiota. Kun evaluoi kaikki näkyvät solut (ks. valikko tai paina ctrl+R), Maxima pysähtyy ulkoisten kuvien kohdalla kunnes kuva on suljettu, mutta jatkaa wx-piirrettyjen kuvien läpi. Tämä tekee kaikkien elämästä mukavamman. Harjoitustehtävissä on syytä käyttää vain wx-alkuisia kuvakomentoja, ellei ole erityistä (kommentilla osoitettua) syytä tehdä toisin. [wxMaxima: comment end ] */ /* [wxMaxima: subsect start ] Oletusasetusten muokkaaminen [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Kuten muistetaan, Maximassa draw-komennon sisään laitetaan sekä piirrettävät asiat että piirtämiseen liittyvät komennot: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ f1: (1-x^2-y^2)^(2/3); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Nyt luodaan funktion (tai pikemminkin lausekkeen) f1 kuvaajasta kolmiulotteinen objekti komennolla explicit: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ f1kuvaaja : explicit(f1,x,-10,10,y,-10,10)$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Syötetään tämä funktioon draw3d parilla lisäasetuksella: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ draw3d( proportional_axes=xyz, enhanced3d=true, wired_surface=true, contour_levels = {1,4,8,14}, contour=both, xyplane=-3, f1kuvaaja)$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Mitä jos nyt haluttaisiin piirtää samoilla asetuksilla kuva uudesta funktiosta? [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ f2: (1-2*x^2-y^2)^(2/5)+sin(x+3*y); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f2kuvaaja : explicit(f2,x,-15,15,y,-15,15)$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Copy+Paste edellisestä komennosta kyllä onnistuu, mutta ei ole hirveän elegantti tapa jos halutaan piirtää monta kuvaa samoilla asetuksilla. [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] Sen sijaan voidaan käyttää komentoa set_draw_defaults määrittämään oletusasetukset piirtämiseen: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ set_draw_defaults( proportional_axes=xyz, enhanced3d=true, wired_surface=true, contour_levels = {1,4,8,14}, contour=both, xyplane=-3 )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ draw3d(f1kuvaaja)$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ draw3d(f2kuvaaja)$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Toki asetuksia voi vielä vaihtaa lennossa: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ draw3d( wired_surface = false, contour_levels = {1,2,5,7}, f2kuvaaja)$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Jos halutaan palauttaa oletusasetukset, helpointa on kutsua funktiota set_draw_defaults ilman argumentteja: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ set_draw_defaults(); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ draw3d(f2kuvaaja)$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Kuten tästä ehkä voidaan päätellä, kutsuessa funktiota set_draw_defaults kaikki muut paitsi komenossa mainitut asetukset palautetaan oletuksiin. [wxMaxima: comment end ] */ /* [wxMaxima: subsect start ] Kuvien tallentaminen [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Yksinkertainen mutta ehkä hieman epäelegantti tapa tallentaa piirretyt kuvat tiedostoiksi on piirtää ne ensin ruudulle ja sitten tallentaa ne wxMaximan kautta. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ draw3d(f2kuvaaja); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw3d(f2kuvaaja); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Draw-komennot osaavat tallentaa kuvat tiedostoina myös suoraan. Tämä onnistuu vaihtamalla asetusta "terminal", eli oleellisesti vaihtamalla mihin draw-komento tulostaa luomansa grafiikat. Oletusasetus on "terminal = screen", eli kuvat tulostuvat tietokoneen ruudulle kuten ollaan huomattu. Seuraavalla tavalla tallennetaan kuva .png-muodossa samaan kansioon missä tämä .wxm-tiedosto on: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ draw3d( f2kuvaaja, terminal='png, file_name="testikuva" )$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Myös animaatioita voi tehdä: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ draw( delay = 100, file_name = "testianimaatio", terminal = 'animated_gif, gr2d(explicit(x^2,x,-1,1)), gr2d(color=red,explicit(x^4,x,-1,1)), gr2d(color=green,explicit(x^6,x,-1,1)))$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Tässä pitää käyttää vähän yleisempää piirtämisfunktiota draw funktion draw2d sijaan. Itseasiassa draw2d on vain lyhenne komennolle draw(gr2d(...)). [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] Kolmiulotteisissa kuvissa näkyy vain yksi kuvakulma, mutta sitä voi muuttaa: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ draw3d( f2kuvaaja, terminal='png, dimensions=[1000,1000], view=[47,12], file_name="testikuva2" )$ /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Tehtäviä [wxMaxima: section end ] */ /* [wxMaxima: comment start ] A) Piirrä esimerkeissä esiintyneet sydän ja lemniskaatta samaan kuvaan. [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] B) Piirrä seuraavat asiat samaan kuvaan wxdraw2d:lla: - funktion cos(sin(x)) kuvaaja välillä [-2,0] sinisellä - ympyrä, jonka säde on 1 ja keskipiste origo, vihreällä - funktion 1+x^2 kuvaaja välillä [0,2] sinisellä - piste (0,1) isona ja punaisena [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] C) Piirrä ympyrä eri tavoin (eri kuviin tai monta samaan): - implisiittipiirrolla (yhtälön ratkaisujoukkona) - eksplisiittipiirrolla (kahden kuvaajan avulla) - parametripiirrolla (reunakäyrä sinin ja kosinin avulla) - napakoordinaattikuvaajana (vakiosäde!) - pisteenä, joka on circle-tyyppinen ja iso [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] D) Montako ratkaisua on yhtälöparilla x^2+y^6=6 x^3-2y=1? Piirrä kuva, ja päättele sen perusteella. Etsi halutessasi ratkaisut myös jollain ratkaisutoiminnolla. [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] F) Piirrä jokin haluamasi 3D-pinta esim. komennolla draw3d [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] G) Piirrä käyrä y=sin(x^2)-x^3 ja sen tangentti pisteessä x=2. Korosta kuvaan tangenttipiste ja piste, jossa tangenttisuora leikkaa x-akselin. Miten tämä liittyy Newtonin metodiin? [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] H) Kuten edellinen tehtävä, mutta tee funktio, joka piirtää kuvan kun on annettu lauseke, muuttuja ja sen arvo. [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] I) Piirrä paloittain määritelty funktio f(x)=x^2 kun x>0 ja 1-cos(x) kun x<0 kahdella tavalla: - kokoamalla kaksi kuvaajaa yhteen - määrittelemällä paloittain määritelty funktio ja piirtämällä se. (Huomautus: Paloittain voi määritellä funktion mutta piirtäminen ei näytä onnistuvan. Jos joku saa pelittämään, kertokaa ja saatte lisäpisteitä.) [wxMaxima: comment end ] */ /* Maxima can't load/batch files which end with a comment! */ "Created with wxMaxima"$