/* [wxMaxima batch file version 1] [ DO NOT EDIT BY HAND! ]*/ /* [ Created with wxMaxima version 17.10.0 ] */ /* [wxMaxima: title start ] MATA1470 Ensimmäinen luento [wxMaxima: title end ] */ /* [wxMaxima: section start ] Tietokone ja matematiikka [wxMaxima: section end ] */ /* [wxMaxima: subsect start ] Eri ohjelmia eri tarkoituksiin [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Kurssilaiset opiskelevat matemaattisiin asiantuntijatehtäviin. Tietokone voi auttaa monessa asiassa: - laskenta, yhtälöiden ratkaisu, derivointi, integrointi, ... - numeerinen laskenta - symbolinen laskenta - datan käsittely - visualisointi - tulosten ja ajatusten esittely Tietokoneesta on kunnolla hyötyä vasta, kun ymmärtää mitä se osaa ja mitä ei. Tällä kurssilla etsitään tietokoneiden rajoja symbolisessa laskennassa. Eri ohjelmilla voi tehdä eri asioita: Symbolinen laskenta: Maxima, Mathematica (WolframAlpha), GAP, ... Numeerinen laskenta: R, S+, MATLAB, Octave, ... Tilastoanalyysi: SPSS, SAS, ... Piirtäminen: GeoGebra, gnuplot, ... Ladonta: LaTeX. Ohjelmia voi käyttää moniin tarkoituksiin. Tällä kurssilla keskitytään Maximan käyttöön symboliseen laskentaan ja pienessä sivuroolissa LaTeXiin. Ohjelmien hinnoissa on valtavia eroja. Tällä kurssilla käytetään vain ilmaisia ohjelmia, joita voi helposti käyttää myös kurssin ja opintojen jälkeen. Jotta ohjelmasta on hyötyä, tarvitaan kaksi asiaa: käyttötaito ja ymmärrys. [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] Tietokoneavusteisen matematiikan eri aspekteihin on matematiikan, tilastotieteen, fysiikan ja tietotekniikan kursseja. Tämä kurssi on ainoa, joka erikoistuu symboliseen matematiikkaan. [wxMaxima: comment end ] */ /* [wxMaxima: subsect start ] Tavoitteet [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Kurssin jälkeen sinun pitäisi osata - visualisoida tietokoneella mm. funktioiden kuvaajia ja yhtälöiden ratkaisujoukkoja - ratkaista ongelmia Maximalla sekä numeerisesti että symbolisesti ja ymmärtää näiden ero - laskea Maximalla sitä, mitä olet matematiikan kursseilla oppinut (mm. funktion arvot, integrointi, derivointi, ääriarvojen etsiminen, matriisien tulo, matriisin ominaisvektori, lausekkeiden sieventäminen, yhtälöryhmien ratkaiseminen) - arvioida, milloin tietokoneen antama tulos on oikein - käyttää Maximan dokumentaatiota eli ohjesivuja (F1-nappi!) - hyödyntää Maximaa muilla kursseilla tai töissä [wxMaxima: comment end ] */ /* [wxMaxima: subsect start ] Kurssin suorittamisesta [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Kurssi suoritetaan palauttamalla wxMaximalla luotuja (tai pikemminkin valmiista pohjasta muokattuja) wxm-tiedostoja. Kaikkiin tehtäviin kuuluu myös tekstikommenttien kirjoittaminen. Kommentoimaton tehtävä on tekemätön tehtävä! [wxMaxima: comment end ] */ /* [wxMaxima: section start ] Johdanto Maximaan [wxMaxima: section end ] */ /* [wxMaxima: subsect start ] Maxima ja wxMaxima [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Maxima on symbolisen laskennan ohjelmisto, joka sisältää työkaluja matemaattisten laskujen tekemiseen, lausekkeiden sieventämiseen ja muokkaamiseen, yhtälöiden ratkaisemiseen, jne. jne. Jotta tietokoneen käyttäjä pystyy käyttämään näitä työkaluja, tarvitaan myös käyttöliittymä eli paikka johon voidaan syöttää komentoja Maximalle ja katsoa mitä näistä komennoista saadaan aikaiseksi. wxMaxima on tällainen käyttöliittymä. wxMaximassa käyttäjän haluamat komennot sijoitetaan "soluihin", ja solu ajetaan painamalla näppäimistöllä SHIFT+ENTER. Sama solu voi sisältää useampia komentoja. wxMaximassa tehdyn työn voi tallentaa valikosta .wxm-tiedostoksi, joka on tekstitiedosto joka sisältää kaikki käyttäjän luomat solut ja jonka voi jälkeenpäin avata wxMaximassa uudelleen. Tämä tiedosto on myös .wxm-tiedosto. wxMaximassa voi luoda komentosolujen lisäksi teksti- tai otsikkosoluja. Tämä teksti on kirjoitettu tekstisoluun. On mahdollista myös tallentaa työ .wxmx-tiedostona .wxm-tiedoston sijasta. Tämä tallentaa ei pelkästään solut mutta myös mahdolliset solujen tulosteet. Tällä kurssilla ei kuitenkaan suositella tallentamaan koskaan .wxmx-muodossa. [wxMaxima: comment end ] */ /* [wxMaxima: subsect start ] Peruslaskutoimitukset + - * / ^ [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Maximasta löytyy samat toiminnot kuin tavallisesta laskimesta. Tietokoneen laskentateho mahdollistaa laskemisen myös hyvin suurilla luvuilla. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ 1+1; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ 2*3/4; 1/3 - 1/4; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ 5^67; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Huomio: Laskutoimitusten järjestys on samanlainen kuin kirjoitetussa matematiikassa, eli EI aina vasemmalta oikealle! Tarkka laskujärjestyksen määräytyminen selitetään (melko teknisesti) käsikirjan kohdassa Operators > Introduction to operators. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ 1+2*3; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ (1+2)*3; /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] Tärkeät erikoismerkit [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] ; puolipiste päättää komennon $ dollarimerkki päättää komennon, mutta toisin kuin ;-merkissä $-merkkiin päätetyistä komennoista ei tule käyttäjälle tulostetta kun ne ajetaan % prosenttimerkki: edellisen laskun tulos , pilkku toimii erottimena, esim. listoissa ja funktioihin syöttäessä . piste: desimaalipiste; vektoreiden ja matriisien tulot : kaksoispiste: arvon tallettaminen muuttujaan = yhtäsuuruusmerkki: yhtälöt := kaksoispiste-yhtäsuuruusmerkki määrittelee funktion ( ) kaarisulut ilmoittavat funktion argumentit; useita komentoja samalle komentoriville; laskujärjestyksen ryhmittäminen [ ] hakasulut: listat, vektorit; indeksoidut muuttujat tai funktiot; indeksi listan alkioon { } aaltosulut ilmaisevat joukkoja ' lainausmerkki estää seuraavan symbolin arvon laskemisen (vrt. differentiaaliyhtälöt) '' kahdennettu lainausmerkki (ei kaksoislainausmerkki) pakottaa symbolin arvon laskemisen " kaksoislainausmerkki: käytetään merkkijonojen määrittelemisessä /* */ kenoviiva ja kertomerkki: kommenttejen lisääminen soluihin: /* tähän tyyliin */ [wxMaxima: comment end ] */ /* [wxMaxima: subsect start ] Vakiot [wxMaxima: subsect end ] */ /* [wxMaxima: input start ] */ [%e, %gamma, %phi, %pi, %i, minf, inf]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ float(%); /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] Alkeisfunktiot ("Mathematical functions", "Polynomials") [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] sqrt, exp, log (%e-kantainen eli luonnollinen; muita ei ole); trigonometriset: sin, cos, tan cot, sec, csc; arkusfunktiot: asin, acos, atan, acot, asec, acsc; hyperboliset: sinh, cosh, tanh, coth, sech, csch; areafunktiot: asinh, acosh, atanh, acoth, asech, acsch [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ sqrt(9); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sin(%pi/4); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ float(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sin(%pi/4), numer; /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] Valmiit funktiot, osa 1. [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Funktio Maximassa voi olla paljon yleisempi asia kuin matematiikasta tutut funktiot jotka ottavat lukuja arvokseen ja tulostavat lukuja. Maximassa on esimerkiksi paljon valmiita funktioita joita voi käyttää erilaisiin tarkoituksiin. Tässä esimerkiksi funktiot: declare, properties, facts ja remove. Funktiota kutsutaan aina kirjoittamalla sen nimi ja sulkeisiin () funktioon syötettävät asiat. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ cos(n*%pi); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ declare(n, integer); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ cos(n*%pi); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ properties(n); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ facts(); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ remove(n, integer); /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] Lukuteoreettisia funktioita ("Mathematical functions", "Number theory") [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] abs, ceiling, floor (=entier =fix), round, max (lmax listoille), min (lmin listoille), signum, ! (=factorial; kertoma; määritelty myös ei-kokonaislukumuuttujille), binomial, genfact (yleistetty kertoma; laskeva ja nouseva potenssi) [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] divide, gcd (=syt), lcm (=pyj), mod, power_mod, inv_mod, totient, ifactors, divisors, primep, next_prime, prev_prime [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ 3^4/5; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ float(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ floor(3^4/5); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ 5*%; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ceiling(3^4/5); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ 3^4=16*5+1; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ mod(3^4, 5); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ power_mod(3, 4, 5); /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] Muuttujat ja listat [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Kuten kaikissa ohjelmointikielissä, myös Maximasta löytyy matematiikasta tuttu muuttujan käsite. Muuttujaa voi ajatella käyttäjän nimeämänä oliona johon voidaan sijoittaa jokin arvo. Hyöty tässä on se, että myöhemmin laskuissa voidaan viitata tähän arvoon yksinkertaisesti kirjoittamalla muuttujan nimi. Muuttujaan sijoitus onnistuu merkillä ":" [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ /* Sijoitetaan Kissa-nimiseen muuttujaan arvo 7 */ Kissa:7; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ Kissa^2; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Muuttujan arvoa voi myös muuttaa jälkeenpäin: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ Kissa:1 + %pi; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Kokeile nyt poistaa solut joissa muuttujaan "Kissa" asetettiin arvot 7 ja 1+%pi. Poistaminen onnistuu valitsemalla koko solu hiirellä (painamalla hiiri pohjaan ja vetämällä, eli samalla tavalla kuin valitsisit kappaleen tekstiä tietokoneella) ja painamalla delete tai backspace. Kysytään nyt muuttujan "Kissa" arvoa uudelleen: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ Kissa; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Muuttujan arvo on edelleen sama, vaikka sen määritelmä poistettiin. Tämä johtuu siitä, että Maximan laskentaydin muistaa muuttujan edelleen vaikka sen määrittelemä komento poistettiin käyttöliittymästä wxMaxima. Muuttujan tiedot voi poistaa kokonaan funktiolla "kill": [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ kill(Kissa); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ Kissa; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* Kaikki määritellyt asiat voi poistaa seuraavasti: */ kill(all); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Maximassa lista on olio, joka sisältää joukon alkioita. Näillä alkioilla on myös järjestys (numerointi menee 1,2,3...). Listojen hyöty on esimerkiksi, että voidaan tallentaa useita asioita yhteen muuttujaan (esim. vuoden 2018 päivittäisiä keskilämpötilalukemia tuskin haluttaisiin tallentaa erikseen 365 eri muuttujaan). [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ lista1:[1,2,3]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* Lista voi sisältää myös toisia listoja jäsenissään */ lista2:[1,2,lista1]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* Tai kaikkea muuta omituista */ lista3:["Olen merkkijono", cos(%e),Kala]; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Listan alkioita poimitaan hakasulkeilla antamalla halutun alkion indeksi seuraavasti: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ lista1[1]; lista1[2]; lista1[3]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ lista2[3]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ lista3[1]; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Monet funktiot tajuavat, että kun niihin sijoitetaan lista niin halutaan laskea funktion arvo jokaisessa listan alkiossa: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ cos([0, %pi/4, %pi/2, %pi/6]); /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] Lausekkeet [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Melkein jokainen asia Maximassa on "lauseke". Tähän käsitteeseen tutustutaan paremmin kurssin aikana, mutta nyt esimerkki lausekkeesta voisi olla vaikka matemaattinen lauseke, joka sisältää jotain muuttujia: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ Lauseke1: x^2 + 2*x + 1; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ Lauseke2: cos(Koira) + Lauseke1; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Yllä siis määriteltiin kaksi lauseketta, joissa esiintyy muuttujat "x" ja "Koira". Näille muuttujille ei annettu mitään arvoja. Lausekkeen arvon tietyllä muuttujan arvolla voi laskea parilla eri tavalla: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ev(Lauseke1,x=1); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ subst(x=1,Lauseke1); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ Lauseke1, x:1; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ Lauseke1; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Yllä keskimmäisellä rivillä muuttujan x arvo määriteltiin pilkun "," jälkeen. Tässä tapauksessa muuttujaan x asetettiin arvo 1 VAIN tuon kyseisen solun ajaksi. Eli jos muuttujassa olisi ollut aikaisemmin jokin toinen arvo niin se ei olisi muuttunut. Maxima pyrkii aina itse sieventämään lausekkeita vähän kun niitä määritellään: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ Lauseke3: x^2 + x^2 + x^2 + x + x + 1; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ Lauseke4: (x+1)*(x-1); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Viimeinen lauseke ei sieventynyt sen enempää. Sen voisi ehkä vielä sieventää muotoon x^2 - 1, mutta kauneus on katsojan silmässä. [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] Tässä vielä yksi esimerkki millainen otus lauseke voi olla. Lauseke voi olla myös jokin matemaattinen yhtälö (vaikka yhtälössä ei olisikaan mitään järkeä): [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ Lauseke5: sin(x)^2 + cos(x)^2 = 5; /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] Valmiita funktioita Maximassa, osa 2. [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Polynomien jako jaottomiin tekijöihin onnistuu helposti Maximasta löytyvällä factor-funktiolla, johon sijoitetaan annetun polynomin lauseke. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ factor(x^2 - 4); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ factor(x^2 - 2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ factor(x^8-1); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ factor(x^9-1); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Maximassa on paljon valmiita funktioita esim. polynomi- ja trigonometristen lausekkeiden muokkaamiseen. Näitä löytyy wxMaximassa ylhäällä olevasta valikosta "Simplify" tai "Sievennä". Niiden käyttöä harjoitellaan myöhemmin, mutta niihin voi nyt jo halutessaan tutustua. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ ratsimp((x-1)*(x+1)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ expand((x-1)*(x+1)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ factor(%); /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] Itse määritellyt funktiot [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Käyttäjä voi määritellä Maximassa myös omia funktioita, ja käyttää niitä kaikenlaisiin laskuihin ja operaatioihin. Funktioista voi tehdä myös erittäin monimutkaisia, mutta tutustutaan ensin yksinkertaiseen esimerkkiin: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ /* Määritellään funktio, joka ottaa arvon x ja tulostaa luvun x + sin(x) */ funktio1(x) := (x + sin(x))^2; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* Lasketaan tämän funktion arvo pisteessä x=0 */ funktio1(%pi/2); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Tähän funktioon voi myös halutessaan sijoittaa lausekkeen, niin se palauttaa luvun sijasta lausekkeen: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ lauseke1:sqrt(y)+1; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ funktio1(lauseke1); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ expand(funktio1(lauseke1)); /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] Mistä löytää apua? [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Maximaa opetellessa voi tulla usein seinä vastaan: Joko ei tiedä mitä komentoa pitäisi käyttää seuraavaksi tai ei tiedä miten joku annettu komento toimii. Tätä varten voit kokeilla wxMaximasta löytyvää käsikirjaa valitsemalla valikosta Help -> Maxima help. Toinen vaihtoehto on Googlata, joka toimii usein jopa paremmin. Myös kurssin opettajaan voi kääntyä jos kaipaat apua. Maximassa on myös pari valmista komentoa avun etsimiseen: [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] Lista olemassa olevista erillisistä esimerkeistä saadaan komennolla example(); Esimerkiksi komentoon diff liittyviä esimerkkejä saadaan komennolla example(diff); Komento apropos("diff"); tuo listan komennoista, joiden nimen osana on diff. Komento describe(diff); tai sille vaihtoehtoinen muoto ? diff; antaaa komentoon diff liitetyn käsikirjan selityksen. Komento describe(diff, inexact); tai sille vaihtoehtoinen muoto ?? diff; tuo esiin valikon erilaisista käsikirjan kohdista. [wxMaxima: comment end ] */ /* [wxMaxima: subsect start ] Kuvaajien piirtäminen [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Yksi Maximan tärkeimmistä sovelluskohteista on sen visualisointiominaisuudet. Tähän tutustutaan syvemmin kurssia myöten, mutta aluksi otetaan vaikka esimerkki funktion kuvaajan piirtämisestä tietyllä välillä: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ /* Sinifunktion kuvaaja */ wxplot2d(sin(x),[x,-5,5]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* Kaksi kuvaajaa samaan kuvaan */ wxplot2d([sin(x),sin(x^2+1)],[x,-5,5]); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Kuva on helppo tallentaa ja käyttää muualla: klikkaa kuvaa hiiren oikealla painikkeella. [wxMaxima: comment end ] */ /* [wxMaxima: subsect start ] Numeriikkaa ja laskentatarkkuutta [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Maxima on symbolisen laskennan ohjelmisto, joten jos siltä ei erikseen pyydä niin se ei yleensä laske likiarvoilla ollenkaan. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ Muuttuja1: %pi; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ cos(Muuttuja1); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Kuten aiemmin jo nähtiin, niin likiarvoja voi kuitenkin halutessaan pyytää valmiilla funktiolla "float". [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ Muuttuja2: float(Muuttuja1); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ cos(Muuttuja2); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Maximassa likiarvot lasketaan 16 desimaalin tarkkuudella. Tämä tarkoittaa, että likiarvoilla laskemisessa virheet ovat yleensä aika pieniä. Tämä ei kuitenkaan tarkoita, että laskut menisivät täsmälleen oikein! "Yleensä" ei myöskään tässä tarkoita ollenkaan samaa kuin "aina". Kun kyse on likiarvoista, käyttäjän pitää siis osata tulkita Maximan tuottamia laskuja ja joskus myös päätellä, onko Maximan tekemä virhe suuri vai pieni. Huomaa, että kuvaajia piirtäessä Maxima joutuu laskemaan aina likiarvoilla! Tässä vielä esimerkki tilanteesta, jossa laskuvirhe on erittäin suuri: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ kill(all); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Määritellään kuusi lauseketta seuraavasti: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ l_a:u*v*w*x*y; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ l_b1:(u*v*w)^(1/3); l_b2:(v*w*x)^(1/3); l_b3:(w*x*y)^(1/3); l_b4:(u*x*y)^(1/3); l_b5: (u*v*y)^(1/3); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Luku l_a on viiden muuttujan tulo, luvuista l_b1,..., l_b5 kukin on kolmen eri muuttujan kuutiojuuren tulo niin, että jokaisen muuttujan kuutiojuuri esiintyy täsmälleen kolme kertaa. Siis kun kaikki nämä viisi lauseketta kerrotaan keskenään, pitäisi saada ensimmäinen lauseke I_a [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ l_b1*l_b2*l_b3*l_b4*l_b5; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ l_a - l_b1*l_b2*l_b3*l_b4*l_b5; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Erotus on nolla, kuten pitääkin. [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] Testataan sama numeerisilla arvoilla: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ [u,v,w,x,y]:[7919.0, 7927.0, 7933.0, 7937.0, 7949.0]$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ l_a:u*v*w*x*y$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ l_b1:(u*v*w)^(1/3)$ l_b2:(v*w*x)^(1/3)$ l_b3:(w*x*y)^(1/3)$ l_b4:(u*x*y)^(1/3)$ l_b5: (u*v*y)^(1/3)$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ l_a - l_b1*l_b2*l_b3*l_b4*l_b5; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Erotuksen pitäisi olla nolla! Ongelma piilee siinä, että syntyvät tulot ovat niin suuria, että erotukseen jää vain pyöristysvirheitä. [wxMaxima: comment end ] */ /* Maxima can't load/batch files which end with a comment! */ "Created with wxMaxima"$