Esimerkkitehtävät
1 Tehtävä 1
Lasketaan tehtävänannon järjestyksessä yhdistetyt funktiot:
| (%i1) | exp(log(x)); |
Tuli mitä pitikin, koska kyseessä on toistensa käänteisfunktiot.
| (%i2) | log(exp(x)); |
Tässä samoin kuin edellisessä kohdassa oikea tulos.
| (%i3) | exp(log(sin(x))); |
Kanssa odotettu tulos, Maxima sieventää "turhat" pois.
| (%i4) | exp(sin(log(x))); |
Ei sievene enempää.
2 Tehtävä 2
| (%i5) | osoittaja:x^4 - 5*x^3 + 5*x^2 + 5*x - 6; |
| (%i6) | nimittaja: x^2 - 1; |
| (%i7) | lauseke:osoittaja/nimittaja; |
Ei sievene automaattisesti. Kokeillaan sieventämiskomentoja:
| (%i8) | ratsimp(lauseke); |
Sieveni!
| (%i9) | factor(lauseke); |
Tämäkin toimi, mutta antaa erinäköisen tuloksen.
| (%i10) | factor(ratsimp(lauseke)); |
Ovat kuitenkin samat. Faktoroidaan vielä osoittaja ja nimittäjä:
| (%i11) | factor(osoittaja); |
| (%i12) | factor(nimittaja); |
Sieltähän tosiaan supistuu mukavasti termejä pois.
3 Tehtävä 3
| (%i13) | y:tan(k*x); |
Lasketaan yhtälön vasen puoli, y:n toinen derivaatta:
| (%i14) | vasen:diff(y,x,2); |
Lasketaan yhtälön oikea puoli:
| (%i15) | oikea:2*k^2*y*(1+y^2); |
Ei näitä näe suoraan samoiksi, pitänee kokeilla sieventää.
| (%i16) | trigsimp(vasen); |
| (%i17) | trigsimp(oikea); |
Tuli samat sieventämällä!
4 Tehtävä 4
| (%i18) | f:x^2+x+41; |
| (%i19) | g:2*x^2+11; |
Ratkaistaan leikkauspisteiden x-koordinaatit:
| (%i20) | solve(f=g); |
Niitä löytyi kaksi. Lasketaan kuvaajien leikkauspisteet ja nimetään ne:
| (%i21) | p1:[6,ev(f,x=6)]; |
| (%i22) | p2:[-5,ev(f,x=-5)]; |
| (%i23) |
wxdraw2d( color=blue, explicit(f,x,-10,10), color=red, explicit(g,x,-10,10), color=black, point_type=circle, points([p1,p2]) ); |
Komento asettaa ensin väriksi sinisen ja piirtää funktion f kuvaajan välillä [-10,10].
Sitten väriksi asetetaan punainen ja piirretään funktion g kuvaaja samalla välillä.
Tämän jälkeen vaihdetaan väriksi musta ja pisteiden tyyliksi pallot, minkä jälkeen
piirretään vielä leikkauskohdat.
5 Tehtävä 5
Ajetaan ensiksi kill(values) komento, koska aiemmassa tehtävässä
nimettiin lauseke y:ksi.
| (%i24) | kill(values); |
| (%i25) | kayra1:x^3+y^2=1; |
| (%i26) | kayra2:x^2+y^2=25; |
Kokeillaan piirtää kuva, että nähdään millaisista käyristä on kyse.
| (%i27) |
wxdraw2d( implicit(kayra1,x,-10,10,y,-10,10), implicit(kayra2,x,-10,10,y,-10,10) ); |
Kuvan perusteella näyttäisi olevan kaksi leikkauspistettä.
Katsotaan mitä algsys antaa:
| (%i28) | ratkaisut:algsys([kayra1,kayra2],[x,y]); |
Ajetaan tehtävänannossa mainittu komento:
| (%i29) | ratkaisut2:map(lambda([z],ev([x,y],z)),ratkaisut); |
Näyttäisi tulevan 6 ratkaisua, joista kuitenkin vain kaksi viimeistä ovat reaalisia.
Reaalisten juurten lukumäärä sitä mitä odotettiikin. Poimitaan ne
| (%i30) | leikkauspiste1:ratkaisut2[5]; |
| (%i31) | leikkauspiste2:ratkaisut2[6]; |
Piirretään vielä tehtävässä vaadittu kuva:
| (%i32) |
wxdraw2d( color=black, implicit(kayra1,x,-10,10,y,-10,10), color=blue, implicit(kayra2,x,-10,10,y,-10,10), color=red, point_type=circle, points([leikkauspiste1,leikkauspiste2]) ); |
6 Tehtävä 6
Asetetaan epsilon ja lasketaan likiarvo integraalille välillä [epsilon,10]
| (%i33) | epsilon:0.01; |
| (%i34) | integraali:romberg(exp(-x^2)*log(x),x,epsilon,10); |
Ratkaistaan gamma annetusta yhtälöstä. Merkitään gammaa yhtälössä g:llä.
| (%i35) | yhtalo:integraali=-(g + 2*log(2))*sqrt(%pi)/4; |
| (%i36) | solve(yhtalo,g); |
Pitänee poimia tuloksesta yhtälön oikea puoli
| (%i37) | gamma:ev(g,solve(yhtalo,g)); |
Lasketaan likiarvo:
| (%i38) | gamma,numer; |
Ei nyt kyllä näytä kovin tarkalta, ilmeisesti numeerinen integrointi ei ollu
tarpeeksi tarkka. Kokeillaan pienentää epsilonia:
| (%i39) | epsilon:0.001; |
Romberg ei konvergoinut (ei jätetä komentoa tähän, koska sitten ei voi
ajaa koko tiedostoa kerralla läpi).
Pitänee katsoa mitä rombergit tekee. Ilmeisesti liittyy siihen miten
paljon lasketaan. Muutetaan sitä:
| (%i40) | rombergit; |
Kokeillaan asettaa arvoksi suurempi, ehkä se toimii paremmin.
Katsotaan mitä saadaan.
| (%i41) | rombergit:20; |
| (%i42) | integraali:romberg(exp(-x^2)*log(x),x,epsilon,10); |
Nyt konvergoi! Kokeilin epsilonille eri arvoja ja seuraava
ainakin toimi.
| (%i43) | epsilon:0.000001; |
| (%i44) | integraali:romberg(exp(-x^2)*log(x),x,epsilon,10); |
Lasketaan gamma kuten aiemminkin:
| (%i45) | yhtalo:integraali=-(g + 2*log(2))*sqrt(%pi)/4; |
| (%i46) | solve(yhtalo,g); |
| (%i47) | gamma:ev(g,solve(yhtalo,g)); |
| (%i48) | gamma,numer; |
Nyt näyttää jo aika tarkalta, ero vasta kuudennessa desimaalissa!