4 Matemaattiset algoritmit
|
|
- Risto Lehtonen
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 98 Matemaattiset algoritmit 4 Matemaattiset algoritmit Tämä luku sisältää erilaisia matemaattisia ongelmanratkaisuja. Luvun aiheita voi hyödyntää myös matematiikan opetuksessa. Vaihtelu virkistää! Juuri tämän luvun myötä voi todeta tietokoneen työskentelytavan ihmiseen verrattuna: ihminen laskee valmiilla kaavalla, kun taas tietokone pyrkii tekemään runsaasti työtä ja lähestymään ratkaisua askel askeleelta. 4.1 Kertoma Kertoma on kokonaislukujen tulo. Kertoman merkkinä käytetään matematiikassa yleisesti huutomerkkiä (!). Esimerkiksi kertoma 3! = 1*2*3 = 6. Luku nolla (0) lasketaan kokonaislukuihin ja sen kertoma (0!) on yksi. Kertoma: #include <iostream.h> void main() int i, j, a; j=1; cout << "Minkä luvun kertoma lasketaan? \n"; cin >> a; for (i=1; i<=a; i++) j=j*i; cout << "Kertoma on " << j << "\n"; Huomautus Jos kertoman arvo kasvaa niin suureksi, että tulos ei mahdu tietotyypin arvoalueelle, kiepsahtaa arvoalue uudelleen nollaan ja lisää jäljelle jääneen osan tulokseksi. (Tietenkin, jos tietotyyppi on etumerkillinen (signed), hypätään arvoalueen ylittämisen jälkeen pienimpään negatiiviseen arvoon nollan sijaan.) Tämän takia kertomassa voisikin suuria lukuja varten käyttää double-tyyppiä.
2 Matemaattiset algoritmit Likiarvoja Suhteellisen nopeutensa ansiosta tietokone soveltuu ihmistä paremmin erilaisten likiarvojen laskemiseen. Monet päättymättömät likiarvot voidaan laskea sarjojen avulla Neperin luvun (e) likiarvon laskeminen Sovellamme tässä esimerkissä edellä kuvattua kertoman algoritmia Neperin luvun likiarvon saamiseksi. Neperin luku (e) on erittäin tärkeä esimerkiksi eksponenttifunktion kantalukuna, koska tällöin funktion derivaattafunktio on sama kuin alkuperäinen funktio. Neperin luku saadaan päättymättömän sarjan avulla seuraavasti: e = (1/k!) k=0 Jotta ohjelma olisi järkevä, asetetaan ylärajaksi jokin kokonaisluku, joka tallennetaan muuttujaan. Jo ylärajalla 8 saadaan Neperin lukuun 5 oikeata desimaalia. Neperin luku: #include <iostream.h> int kertoma(int a); float neper(int n); void main() int a; cout << "Kuinka tarkka neper lasketaan? \n"; cin >> a; cout << "Neper on " << neper(a) << "\n"; int kertoma(int a) int i; intj=1; if (a == 0) return 1; for (i=1; i<=a; i++)
3 100 Matemaattiset algoritmit j=j*i; return j; float neper(int n) int laskuri; float tulos = 0; for (laskuri = n; laskuri >= 0; laskuri--) tulos = tulos + 1/(float)kertoma(laskuri); cout << tulos << ""<<laskuri << return(tulos); "\n"; Lisää ylle laskentatarkkuus esimerkiksi kahden perättäisen Neperin luvun välisen erotuksen avulla. Neperin luvun likiarvo voitaisiin laskea myös lukujonon raja-arvosta e = lim (1 + 1/n) n, kun n-> Lausekkeen hyvä puoli on se, että n on positiivinen kokonaisluku. Laskentatarkkuus riippuu mm tietokoneen ominaisuuksista. Mikäli arvo tuntuu oudolta, voi sen sijaan käyttää raja-arvoa: e = lim (1 + 1/h) 1/h, kun h-> e x, cos(x) ja sin(x) sarjakehitelmillä Edellä kuvattua kertomaa voidaan hyödyntää vielä reaalialueen sarjakehitelmissä. e x = 1 + x + x 2 /2! + x 3 /3! +... cos(x) = 1 - x 2 /2! + x 4 /4! -... sin(x) = 1 - x 3 /3! + x 5 /5! -... Lasketaan e x : Määritetään eksponentti x
4 Matemaattiset algoritmit 101 Määritetään tarkkuus e, jota verrataan kahden peräkkäisen tuloksen erotukseen (toinen vaihtoehto on määrittää tarpeeksi pieni yläraja summalle) Määritetään jokin yläraja, MAX Tulos = 0 i=0tomax Tulos = Tulos + xi/i! Vastaavasti voidaan määritellä likiarvo lausekkeelle cos(x). Hankaluutena on tässä tapauksessa se, että jokaisen peräkkäisen summatekijän etumerkki vaihtuu. Etumerkkiä ei voida määrittää myöskään summausindeksin parillisuuden/parittomuuden perusteella. Siksi algoritmissa käytetään kahta eri summaa, joissa toisessa ovat negatiiviset ja toisessa positiiviset tekijät. Lopuksi osasummat lasketaan yhteen. Lausekkeen cos(x) likiarvo: Tulos1 = 0 Tulos2 = 0 i=0tomax,i=i+4 Tulos1 = Tulos1 + xi/i! i=2tomax,i=i+4 Tulos2 = Tulos2 - xi/i! Tulos = Tulos1 + Tulos2 Lausekkeen sin(x) likiarvo: Tulos1 = 0 Tulos2 = 1 i=3tomax,i=i+4 Tulos1 = Tulos1 - xi/i! i=5tomax,i=i+4 Tulos2 = Tulos2 + xi/i! Tulos = Tulos1 + Tulos2 π:n likiarvo voidaan määritellä likiarvo hieman nurinkurisesti esimerkiksi hyödyntäen Pascalin arcustangentti-funktiota. Kun tiedetään, että arctan(1) = π/4, saadaan π = arctan(1) * Derivaatta, differentiaali ja yhtälöt
5 102 Matemaattiset algoritmit Tässä aliluvussa käsitellään derivaatan ja differentiaaliyhtälön numeerista käsittelyä. Mukana on myös tavallisten yhtälöiden ratkaiseminen Derivaatan likiarvo Tässä käsitellään hieman derivaatan laskemista lähinnä sen määritelmän pohjalta. Allaoleva kuva havainnollistaa derivaatan määritelmää erotusosamäärän käsitteellä: Kun delta_x lähestyy nollaa, segmentti muuttuu tangentiksi. Tangentin kulmakerroin kertoo käyrän kasvunopeuden sivuamispisteen kohdalla. Edellä olevassa kuvassa funktion keskimääräinen kasvunopeus välillä (x... x + delta_x) saadaan erotusosamäärän avulla. Erotusosamäärä on delta_y/delta_x. Kyseinen erotusosamäärä kertoo suoraan lineaarisen käyrän muuttumisnopeuden eli se on samalla itse käyrän (eli suoran) kulmakerroin. Epälineaarisilla funktioilla käyrän kasvunopeus riippuu tietyllä välillä x-arvojen valinnasta. Derivaatta y'(x) = f'(x) = lim delta_y/delta_x (kun delta_x->0) = lim (f(x+delta_x) - f(x))/delta_x) (kun delta_x->0) Derivaatta edustaa siis funktion paikallista kasvunopeutta eli kasvunopeutta äärettömän lyhyellä välillä.
6 Matemaattiset algoritmit 103 Funktion kasvunopeus voidaan approksimoida tietokoneella muuttamalla arvoa delta_x mahdollisimman pieneksi ja määrittelemällä haluttu tarkkuus. Erityisesti approksimointi soveltuu käytettäväksi silloin, kun funktion suoraa derivointia ei voida jostain syystä tehdä. Monissa yhteyksissä riittää myös funktion keskimääräisen muuttumisnopeuden laskeminen tietyllä välillä. Numeerinen derivointi suoritetaan yleisemmin ottamalla delta_x molemmin puolin x- arvoa. Kuvamme selvittää tilanteen: f'(x) on siis tangentin kulmakerroin sekantin kulmakerroin. Eli kuvasta saadaan f'(x) = (f(x + delta_x) - f(x - delta_x))/ 2*delta_x Edelleen saadaan f''(x) = (f(x + delta_x) * 2f(x) + f(x - delta_x))/ delta_x Differentiaali Differentiaalin avulla kuvataan funktioissa tapahtuvia muutoksia. Alla oleva kuva selvittää differentiaalin käsitettä ja antaa samalla perusteet differentiaalin approksimointiin tietokoneella.
7 104 Matemaattiset algoritmit Kun funktio on sopiva ja delta_x lähestyy nollaa, kuvaa delta_y differentiaalia dy. Differentiaali dy on siis kasvunopeus käyrän alkupisteessä * välin pituus, eli dy = f'(x) * delta_x Havainnollistamme differentiaalin laskentaa esimerkillä: Jos funktio on muotoa 1/3 x 3 ja halutaan tietää, paljonko funktio muuttuu, kun x kasvaa arvosta 2 arvoon 2.1. delta_x = 0.1 f(x) = 1/3 x 3, jolloin f'(x) = x 2 dy = f'(x) * delta_x = x 2 * 0.1 = 2 2 * 0.1 = 0.4. Funktio kasvaa siis 0.4 yksikköä, kun x kasvaa arvosta 2 arvoon 2.1. Differentiaalin avulla voidaan siis laskea funktiossa tapahtuva muutos (dy), kun tiedetään x:n muutos (delta_x). Approksimointi on nyt helppo tehdä, koska olemme aiemmin jo käyneet läpi derivaatan approksimoinnin. Nyt f'(x):n likiarvo tietyssä pisteessä saadaan aiemmasta algoritmista, jolloin tarvitaan vain antaa delta_x, jotta dy saadaan laskettua.
8 Matemaattiset algoritmit Differentiaaliyhtälön numeerinen ratkaiseminen Differentiaaliyhtälön y' = r(x,y) yleistä ratkaisua edustaa käyräparvi, jossa jokaisella C:n arvolla on oma käyränsä. Jos jonkin tunnetun pisteen (x 0,y 0 ) kautta kulkevan käyrän suunta halutaan tietää, voidaan laskea y', joka on siis kyseisen käyrän tangentin kulmakerroin pisteessä (x 0,y 0 ). Eulerin menetelmällä voidaan saada esille ratkaisukäyrän likimääräisiä pisteitä ratkaistaessa yhtälöä: y' = r(x,y), missä ratkaisufunktion y = y(x) tulee toteuttaa alkuehto y(x 0 ) = y 0. Tällöin edetään radan tangentin suuntaan lyhyitä askelia. Askelpituus delta_x = h. Kuva havainnollistaa menettelyä: Menettelyllä saadaan ratkaisukäyrän pisteitä seuraavasti: x 0 ja y 0 siis tiedetään. x 1 = x 0 + h x 2 = x 1 + h jne y 1 = y(x 0 + h) y 0 + r(x 0, y 0 )h y 2 y 1 + r(x 1, y 1 )h jne
9 106 Matemaattiset algoritmit Algoritmissa annetaan alkuarvopiste ja r(x,y):n lauseke ja määritetään askelpituus sekä väli, jolta pisteitä halutaan. Runge-Kuttan menetelmää pidetään yleisesti Euleria tarkempana menetelmänä. Runge-Kutta sisältää Eulerin periaatteen, mutta uusi piste lasketaan (ekstrapoloidaan) paremmalla menetelmällä. Runge-Kutta-menetelmässä käytetään kaavaa y n+1 = y[x 0 + (n+1)h] y(x n+1 ) y n + h/6(k 1 + 2k 2 + 2k 3 + k 4 ), missä k 1 = r(x n, y n ) k 2 = r(x n + h/2, y n + h/2 k 1 ) k 3 = r(x n + h/2, y n + h/2 k 2 ) k 4 = r(x n + h, y n + h k 3 ) Kyseiset kertoimet kuuluvat neljännen kertaluvun Runge-Kutta-menettelyyn. Toisen kertaluvun Runge-Kutta-menettely on melko lähellä Euleria, mutta siinä haetaan pisteet kohdasta, jossa askel on h/2. Algoritmi on Euleria työläämpi, mutta sinänsä yksinkertainen laadittava Toisen asteen yhtälö Yhtälö kirjoitetaan yleismuodossa seuraavasti: ax 2 + bx + c = 0 Yhtälön juuret saadaan muodosta: x = (-b ± (b 2-4ac))/2a Yhtälöllä voi olla kaksi reaalijuurta x 1 ja x 2 tai kaksoisjuuri x 1,2 tai sillä ei ole reaalijuuria (vaan imaginäärijuuret), jolloin funktion kuvaaja ei leikkaa tai sivua x- akselia.
10 Matemaattiset algoritmit asteen yhtälö: Yhtälön juuret voidaan tarkistaa lauseketta (b2-4ac) tutkimalla. Jos lausekkeen arvo > 0, yhtälöllä on kaksi reaalijuurta. Jos lausekkeen arvo = 0, yhtälöllä on reaalinen kaksoisjuuri. Jos lausekkeen arvo < 0, yhtälöllä on kaksi imaginäärijuurta. Juurten muotojen ja yhtälön ratkaisun algoritmi on x1 = (-b + (b2-4ac))/2a x2 = (-b - (b2-4ac))/2a Huomautus Otsikkotiedostoa complex.h käyttäen voit laskea myös imaginääriset juuret. Myös muita mahdollisuuksia on kompleksiluvuille eri työkaluissa. Muutoin negatiivisten lukujen neliöjuurien syntymisen tulisi heittää poikkeus, joka ohjelmassa käsitellään. Heitettävänä poikkeusluokkana on yleensä runtime_error ja sen aliluokka numeric_error Muut yhtälöt Usein korkeampiasteisia yhtälöitä ei saada hajotettua osiin, jolloin niitä voitaisiin sieventämisen jälkeen ratkaista vähemmällä työllä. Yksi mahdollisuus on luonnostella kuvaajaa ja määrittää siitä X-akselin leikkauspisteitä. Kuvaajasta voidaan saada myös alkuarvo tarkemmalle iteroinnille, jolloin juuren arvosta saadaan tarkempi. Tietokone on kuin luotu tekemään raskaita iterointitehtäviä. Seuraavassa esitelläään yksi malli kolmannen asteen yhtälön ratkaisemiseen iteroinnin kautta. Mikäli yhtälöllä on kokonaislukujuuri, murtolukujuuri tai päättyvä desimaalilukujuuri, voidaan sen avulla yhtälöä sieventää edelleen, jolloin muiden juurien ratkaisu helpottuu. Olettakaamme, että yhtälö olisi muotoa X 3 + 2X 2-3X +4 = 0. Ensin tarvitaan alkuluku, jota kasvatetaan sopivalla lisäyksellä, kunnes päästään joko täysin oikeaan juuriarvoon tai hyväksyttävään likiarvoon.
11 108 Matemaattiset algoritmit Iterointi voidaan suorittaa seuraavasti: 3-asteisen yhtälön juuren hakeminen: #include <iostream.h> void main() float x; float y, tulos; x = -3; do x=x+0.1; y = x*x*x + 2*x*x + 3*x + 6; tulos = y; tulos = (tulos <0?(-1)* tulos: tulos); if (tulos < 0.001) cout << x; break; ; while(x < 2); Juurta kasvatetaan siis kymmenyksellä jokaisen kierroksen jälkeen. Algoritmiin tulee lisätä negatiivisen alkuluvun käyttömahdollisuus sekä riittävän likiarvon hakutoiminto. Esimerkiksi tuloksen vaihtaessa merkkiä voitaisiin palata askel taaksepäin ja pienentää askellusarvoa sadasosiin. Myös kahden peräkkäisen tuloksen erotusta voidaan tarkkailla. Edellä käytetty menettely vaatii runsaasti laskentaa ja etsintää, jotta juurta päästäisiin lähestymään. Niinpä yleisesti käytetään toista menetelmää, jolla etsintä nopeutuu, koska kohdetta (juuren likiarvo) päästään lähestymään huomattavasti edellistä menettelyä nopeammin. Kyseinen menettely juuren etsintään on Newton-Raphsonmenetelmä, joka hakee juuren seuraavasti:
12 Matemaattiset algoritmit 109 Kuvamme esittää Newton-Raphson-menetelmän etenemistä: Menetelmässä piirretään annettua käyrää tietyssä pisteessä sivuava tangentti. Kyseinen alkupiste (kuvassamme x 0 ) on yhtälön juuren ensimmäinen approksimaatio. Tangentti leikkaa x-akselia tietyssä pisteessä, josta saadaan uusi käyrän piste, josta piirretyn tangentin ja x-akselin leikkauspiste on aiempaa lähempänä oleva juuren likiarvo. Näin tangenttien avulla jatketaan, kunnes on saatu riittävä tarkkuus juurelle. Yhtälöinä menetelmä on seuraavanlainen: Jos x 0 on ensimmäinen yhtälön juuren approksimaatio, niin pisteeseen (x 0, y 0 ) piirretty tangentti leikkaa x-akselin pisteessä: x 1 = x 0 - f(x 0 )/f (x 0 ) Uuteen pisteeseen (x 1, y 1 ) piirretty tangentti leikkaa x-akselin pisteessä x 2 = x 1 - f(x 1 )/f (x 1 )
13 110 Matemaattiset algoritmit Eli yleismuoto on: x n+1 = x n - f(x n )/f (x n ) SIIS (yleismuodosta saatu) muutos x = x n+1 - x n = - f(x n )/f (x n ) Ohjelmallisesti voidaan uusi approksimaatio laskea joko laskemalla ensin x ja lisäämällä vanhaan approksimaatioon tai laskemalla suoraan uusi arvo yleismuodon mukaan. Ehkä riittävän tarkkuuden määrittelemisessä on helpompi seurata x:n pienenemistä suoraan kuin laskea juurten likiarvojen erotus. Newton-Raphson-menetelmä: Määritellään ensin f(x) ja f (x) Annetaan alkuarvot x0 ja mahdollisesti tarkkuus, johon tulosta verrataan Lasketaan uusi likiarvo x1 = x0 - f(x0)/f (x0) Verrataan vanhan ja uuden likiarvon erotusta tarkkuuteen Jos tarkkuus ei riitä, lasketaan taas uusi likiarvo x2... xn kunnes tulos on tyydyttävä Moniasteisen yhtälön kaikkien reaalijuurten etsintä Yhtälöä kuvaava käyrä y = f(x) vaihtaa merkkiään sellaisella osavälillä (x i < x < x i+1 ), jonka sisällä käyrä leikkaa x-akselia eli kyseisen osavälin sisällä sijaitsee yksi yhtälön juurista. Tällöin on siis ensin haettava osavälejä, joissa yhtälön etumerkin vaihtuminen tapahtuu ja sen jälkeen haettava kyseinen juuri esimerkiksi edellä kuvatulla menetelmällä. Etumerkki saadaan selville esimerkiksi kertomalla aiempaa x-arvoa vastaava käyrän (y:n) arvo uutta x:n arvoa (x + askel) vastaavalla käyrän arvolla: jos tulo on negatiivinen, ovat tulon tekijät siis erimerkkiset. Mikäli tulo on nolla, on 'vahingossa' löydetty yksi juuri Neliöjuuren approksimointi Neliöjuuren likiarvon saamiseksi on olemassa useita erilaisia matemaattisia menettelyjä. Eräs käytetyimmistä tavoista on hyödyntää edellä kuvattua Newton- Raphsonin approksimointimenettelyä.
14 Matemaattiset algoritmit 111 Lähtökäyrä on nyt muotoa: joten ja f(x) = y - x 2 = 0 f (x) = - 2x x = (y - x 2 )/2x Neliöjuurta laskettaessa on huolehdittava siitä, että neliöjuuren sisällä oleva arvo on positiivinen. Neliöjuuren approksimointi: #include <iostream.h> float juuri(float arvo); void main() float luku; // Lasketaan neliöjuuri luvusta cout << "Anna luku \n"; cin >> luku; cout << "Neliöjuuri on " << juuri(luku) << " \n"; float juuri(float arvo) float x = arvo/10; /*ensimmäinen approksimaatio juuresta*/ float dx; float tarkkuus = 0.001; float muutos; /*approksimaation ja oikean tuloksen erotus*/ if (arvo < 0) arvo = arvo * (-1); if (arvo == 0) return (0); /*juurta ei oteta negatiivisesta luvusta*/ do dx = (arvo -x*x)/(2.0 * x); x=x+dx; cout << x << "\n"; muutos = arvo - x* x; while ( (muutos <0?(-1)*muutos : muutos) > tarkkuus); /*tarpeeksi lähellä?*/ return (x);
15 112 Matemaattiset algoritmit 4.4 Kompleksiluvut ja vektorit Tässä aliluvussa käsitellään kompleksilukujen eri muotojen sekä tasovektorien laskemista. Myös kirjastotiedosto tarjoaa funktioita kompleksilukujen käsittelyyn Kompleksiluvut Kompleksiluku voidaan esittää summa-, polaari-, eksponentti- tai osoitinmuodossa. Tässä tarkastellaan hieman summa- ja osoitinmuotoa. Summamuotoinen kompleksiluku on tyyppiä Z = a + bi, jossa a kuvaa reaaliosaa ja bi imaginääriosaa. Kompleksilukua kuvaavan vektorin pituus R Re-Im-koordinaatistossa on kompleksiluvun itseisarvo ja vektorin kulma (Re-akseliin nähden myötäpäivään) saadaan trigonometrisesti laskemalla kulma = arcussin (a/r). Arcus-funktioissa voi olla eroja riippuen kääntäjästä. Tulos on kuitenkin yleisesti radiaanimuodossa. π:n likiarvo (jos se joudutaan laskemaan) saadaan kirjassa toisaalla olevalla algoritmilla. Kompleksiluku on siis muotoa z = a + bi. Tämä kompleksiluvun perusmuoto on summamuoto. Kompleksiluvun z itseisarvo (vektorin pituus), z = (a 2 + b 2 ) 1/2. Kompleksiluvuilla lasketaan kuten tavallisilla kirjainmerkeillä, ainoastaan sievennysvaiheessa otetaan huomioon, että i 2 = -1. Kompleksiluvun polaarinen muoto on z = r(cosϕ + isinϕ). Komponentit a ja b saadaan seuraavasti: a = rcosϕ ja b = rcosϕ, jossa r on vektorin pituus eli kompleksiluvun itseisarvo. Tässä muodossa kompleksiluvut kerrotaan keskenään siten, että pituudet kerrotaan keskenään ja vaihekulmat lasketaan yhteen, eli z 1 z 2 = r 1 r 2 [cos(ϕ 1 + ϕ 2 ) + isin(ϕ 1 + ϕ 2 ). Jakolaskussa vastaavasti pituudet jaetaan keskenään ja vaihekulmat vähennetään toisistaan. Kompleksiluvun osoitinmuoto on yleinen sähkötekniikassa. Tällöin polaarisesta muodosta z = r(cosϕ + isinϕ) käytetään lyhyempää muotoa r ϕ (luetaan 'r kulmassa ϕ').
16 Matemaattiset algoritmit 113 Kompleksiluvusta on vielä eksponenttimuoto, jossa hyödynnetään Eulerin kaavaa e iϕ = cosϕ + isinϕ. Nyt kompleksiluku z = r(cosϕ + isinϕ) tai r ϕ voidaan esittää muodossa z = r e iϕ. Muodostetaan seuraavassa algoritmi summamuotoisen kompleksiluvun muuntamiseksi osoitinmuotoon: Summamuotoinen kompleksiluku osoitinmuotoon: Annetaan reaali- ja imaginääriosat Lasketaan pituus r (algoritmi edellä) Kulma_rad = arctan(b/a) Kulma_ast = Kulma_rad*360/π Tulosta esimerkiksi muodossa 'Annettu kompleksiluku z=a+bion osoitinmuodossa r kulmassa Kulma_ast.' Algoritmiin on helppo lisätä myös polaarimuodon tulostus, koska mitään lisälaskentoja ei tarvita. Sama koskee eksponenttimuotoa. Summamuotoon muuttaminen tehdään muista muodoista (eli tiedetään r ja ϕ) muodostamalla ensin z = r(cosϕ + isinϕ) ja laskemalla erikseen rcosϕ ja rsinϕ sekä lisäämällä tulostuksessa viimeksimainittuun arvoon imaginääriyksikkö i. Huomaa myös, että C++ sisältää standardikirjaston complex.h, jonka avulla voidaan käsitellä kompleksilukuja. Math.h-tiedoston funktiot hyväksyvät myös usein tietyssä muodossa olevan kompleksiluvun (esimerkiksi abs() ) Vektorit Tason vektori voidaan esittää muodossa a = xi + yj eli a = [x,y] ja vastaavasti avaruusvektori muodossa a = xi + yj + zk eli a = [x,y,z]. Tarkastellaan seuraavassa kahta tason vektoria a ja b, jotka esittävät vektoreita a = x 1 i + y 1 j ja b = x 2 i + y 2 j. Vektoreiden summa lasketaan siten, että vektoreiden komponentit lasketaan yhteen.
17 114 Matemaattiset algoritmit a + b = (x 1 + x 2 )i + (y 1 + y 2 )j. Erotus lasketaan vastaavalla tavalla. Vektorin a pituus, a, lasketaan summaamalla vektorin komponenttien neliöt ja ottamalla summasta neliöjuuri. Vektorin a pituus = a = (x y 1 2 ) 1/2 Vektoreilla on kaksi erilaista tuloa: pistetulo (eli skalaaritulo) ja ristitulo (eli vektoritulo). Pistetuloa merkitään notaatiolla piste. (esimerkiksi a. b) ja ristituloa notaatiolla x (esimerkiksi a x b). Pistetulo lasketaan kertomalla vektoreiden pituuksien tulo vektoreiden välisen kulman kosinilla. Kahden vektorin a ja b pistetulo, a. b = a b cos(a,b). Pistetulon tulos on skalaari. Nyt vektorin a pituus saadaan myös pistetulosta eli a = (a. a) 1/2. Tason (ja avaruuden) vektoreiden pistetulo saadaan myös kertomalla vektoreiden vastinkomponentit keskenään ja summaamalla tulot eli vektoreiden a ja b pistetulo, a. b = x 1 y 1 + x 2 y 2. Ristitulo saadaan ottamalla determinantti matriisista, jonka alkioina ovat i ja j sekä vektoreiden komponentit. Kahden tason vektorin a ja b ristitulo, a x b = a b sin(a,b) e, missä e on yksikkövektori. Avaruusvektoreiden a ja b ristitulo voidaan esittää näppärässä matriisimuodossa seuraavasti: a x b = det [ (i,j,k), (x 1, y 1, z 1), (x 2, y 2, z 2) ] T. Vektorin a projektio vektorilla b eli projektiovektori a b saadaan seuraavasti: Vektorin a projektio vektorilla b, a b = (a. b)/(b. b) * b. Kahden vektorin a ja b välinen kulma, (a,b) saadaan seuraavasti: Vektoreiden a ja b välinen kulma,
18 (a,b) = arcos ((a. b)/( a b )). Matemaattiset algoritmit 115 Tulos on radiaaneissa ja se muutetaan asteiksi kertomalla luvulla 360 /π. Vektorin a yksikkövektori, a 0, saadaan jakamalla vektori a sen pituudella a. vektorina yksikkövektori: a 0 = a/ a. Lopuksi tarkistetaan kahden vektorin a ja b yhtäsuuruus. Kaksi vektoria ovat yhtäsuuria, jos ne ovat samansuuntaisia ( eli a b ) ja niiden pituudet ovat samat (eli a = b ). Samansuuntaisuus saadaan selville siten, että lasketaan determinantti matriisista, jonka alkioina ovat a:n ja b:n komponentit eli det [(x 1 y 1 ), (x 2 y 2 )] T. Jos determinantti = 0, ovat vektorit samansuuntaisia. Algoritmi vektorioperaatioille: Suoritetaan ensin operaatioita tason vektoreille a ja b eli a=x1i + y1j ja b = x2i + y2j. Annetaan ensin vektoreiden a ja b komponentit (x1, y1, x2, y2). Helpointa lienee antaa komponentit muodossa [komponentti1, komponentti2]. Lasketaan pituudet a ja b eli a = (x12 + y12)1/2ja b = (x22 + y22)1/2 Lasketaan vektoreiden a ja b pistetulo a.b=x1y1 +x2y2. Käytetään nyt tätä kaavaa, koska toisessa kaavassa (a.b= a b cos(a,b)) tarvittaisiin vektoreiden välistä kulmaa, jota emme toistaiseksi saa kaavaa varten esille. Lasketaan vektoreiden a ja b välinen kulma (a, b) hyödyntämällä edellä laskettua pistetuloa sekä aiemmin laskettuja vektoreiden pituuksia: (a,b) = arcos ((a. b)/( a b )). Lasketaan tämän jälkeen myös pistetulo (b. b.) Muutetaan saatu kulma-arvo (radiaaneissa) asteiksi: Kulma_ast = Kulma_rad*360/ π Lasketaan vektorin a projektio vektorilla b: ab= (a. b)/(b. b) * b. Lopuksi tarkistetaan vektoreiden yhtäsuuruus: Vektorit a ja b ovat yhtäsuuria, jos det [(x1 y1), (x2 y2)] T=0 AND a = b.
19 116 Matemaattiset algoritmit Suoritetaan vielä joitakin operaatioita avaruusvektoreille a, b, c, jotka ovat muotoa a = x 1 i + y 1 j + z 1 k b = x 2 i + y 2 j + z 2 c = x 3 i + y 3 j + z 3 k Vektoreiden a ja b ristitulo saatiin siis seuraavasti: a x b = (i,j,k), (x 1, y 1, z 1), (x 2,y 2, z 2 ) T, josta saadaan a x b = (y 1, z 1 ) (y 2, z 2) T i - (x 1, z 1 ) (x 2, z 2) T j + (x 1, y 1 ) (x 2, y 2) T k Avaruusvektoreiden a, b, c skalaarikolmitulo muodostetaan vielä lopuksi: a x b. c = (x 1, y 1, z 1), (x 2,y 2, z 2 ), (x 3,y 3, z 3 ) T Molemmat determinanttimuodot (2x2) ja (3x3) voidaan laskea tässä teoksessa toisaalla olevilla algoritmeilla. 4.5 Alkuluvut, jakojäännös, Pascalin kolmio, potenssi ja syt Tähän lukuun on koottu muutamia kiinnostavia ja lähes klassisia aiheita, jotka kuitenkin ovat hyvin hyödyllisiä monessakin eri sovelluskohteessa Alkuluvut Alkuluvuiksi kutsutaan kokonaislukuja, joita ei voida jakaa muilla luvuilla kuin omalla itsellään. Alkulukuja ovat siis kokonaisluvut: 2, 3, 5, 7, 9, 11,... jne (yleensä luku 1 käsitetään myös alkuluvuksi). Alkulukuja hyödynnetään monissa yhteyksissä kuten esimerkiksi salausalgoritmeissa. Kun luku on suuri (esimerkiksi yli 100 numeroa), joudutaan luvun alkuluvuksi todentamiseen tekemään runsaasti työtä. Se, onko jokin luku alkuluku, voidaan tarkistaa useallakin eri menetelmällä. Seuraavassa on kaksi erilaista menettelytapaa:
20 Matemaattiset algoritmit 117 Tapa 1: Ensiksikin, koska luku 2 on ainoa parillinen alkuluku, riittää, kun tarkastellaan parittomia lukuja. Seuraavaksi tutkitaan jaollisuutta: onko luku jaollinen luvuilla 3, 5, 7, 9,..., n-2, jossa n on siis tarkastettava luku. Tarkastusalgoritmissa lähdetään luvusta 3, jota lisätään silmukassa aina kahdella yksiköllä. Tarkastus voidaan tehdä katsomalla, onko jakojäännös nolla tai onko tarkastettavan luvun ja jakajan osamäärä kokonaisluku. Tapa 2: Tässä menettelyssä tehostetaan edellistä tapaa lähtien liikkeelle käänteisestä tapauksesta: jos luku ei ole alkuluku, se voidaan esittää tulona, jonka tekijät ovat suurempia kuin yksi. Siis tarkasteltava luku n = x*y, jos se ei ole alkuluku. Jos nyt x <= y, niin x 2 <= n ja x <= n. Tarkasteltavan luvun jaollisuutta ei siis kannata tutkia pitemmälle kuin lähimpään parittomaan kokonaislukuun, joka on pienempi tai yhtäsuuri kuin n. Jos tutkimme esimerkiksi, onko luku 197 alkuluku, voimme yksinkertaisesti hakea lähimmän parittoman kokonaisluvun, jonka neliö on lähinnä lukua 197. Tällainen luku on nyt 13, koska 13 2 = 169 (lukua 14 ei hyväksytä ja luvun 15 neliö (225) menee yli 197:n). Nyt siis riittää, että tutkitaan, onko luku 197 jaollinen luvuilla 3, 5, 7, 9, 11, 13 vai ei. Oikeastaan lukua 13 ei tietenkään tarvitsisi enää testata. Kyseessä on siis alkuluku. Alkulukujen testaamisessa kannattaa vielä tietää, että, mikäli luku ei ole jaollinen jollakin testiluvulla, niin se ei ole jaollinen myöskään kyseisen testiluvun monikerroilla. Edellisessä esimerkissämme ei meidän siis olisi tarvinnut tehdä testaamista luvulla 9, koska testaaminen tapahtui jo luvulla kolme. Millainen jono muodostuu siis testiluvuista? Testilukuja ovat: 3, 5, 7, 11, 13, 17, 19, 23, 31, 37, 41, 43, 47,... Alkulukuja voidaan tulostaa esimerkiksi seuraavalla algoritmilla. Alkulukujen generointi: #include <iostream.h> void main() int luku; int maara; for (luku = 1; luku <= 30; luku++) if (luku == 1) cout << "Luku " << luku << " on alkuluku\n"; for (maara = 2; maara <= luku; ++maara) if (maara == luku) cout << "Luku " << luku << " on alkuluku\n";
21 118 Matemaattiset algoritmit else if (luku % maara == 0) break; /*ei ole alkuluku*/ Jakojäännös Seuraavalla algoritmilla voidaan korvata jakojäännös- ja jakolaskuoperaattorit. Algoritmi suorittaa kahden kokonaisluvun välisen jakolaskun ja kertoo jakojäännöksen kokonaislukuna. Jakojäännös: #include <iostream.h> void main() int Jaettava, Jakaja, Kokonaisia, Jakojaannos; Kokonaisia = 0; cout << "Anna jaettava \n"; cin >> Jaettava; cout << "Anna jakaja \n"; cin >> Jakaja; Jakojaannos = Jaettava; while ((Jakojaannos - Jakaja) >= 0) Jakojaannos = Jakojaannos - Jakaja; Kokonaisia = Kokonaisia + 1; cout << "Jakojaannös on " << Jakojaannos << "\n"; cout << "Kokonaisosa on " << Kokonaisia << "\n"; Luvun numeroiden lukumäärä Joskus eri sovelluksissa on tarkistettava numeroiden lukumäärä luvussa. Algoritmi tähän on seuraavana. Luvussa olevien numeroiden määrä:
22 Matemaattiset algoritmit 119 #include <iostream.h> void main() int Lukumaara = 0; int Annettu_luku; cout << "Anna luku "; cin >> Annettu_luku; // Annetaan luku, jonka numeroiden maara lasketaan do Annettu_luku = Annettu_luku / 10; Lukumaara = Lukumaara + 1; while (Annettu_luku!= 0); cout << "Antamassasi luvussa on " << Lukumaara << " nroa \n"; Pascalin kolmio Pascalin kolmio antaa kertoimet korotettaessa kahden tekijän summaa kokonaislukupotensseihin. Laskettava lauseke on (a + b) n. Kertoimia varten on kehitetty ns. Pascalin kolmio, joka on seuraavanlainen: (a + b) 0 1 (a + b) (a + b) (a + b) (a + b) Matemaattisella kaavalla kertoimet saadaan seuraavasti: (n/k) = n!/k!(n-k)! Sekä kertoimet että tekijöiden a ja b eksponentit saadaan esille kaavalla: SUM((n/k)a n-k b k Pascalin kolmion kertoimet:
23 120 Matemaattiset algoritmit #include <iostream.h> //(n/k) = n!/k!(n-k)! int kertoma(int a); void main() int n, k; n=4; for(inti=0;i<=n;i++) int kerroin = (kertoma(n))/(kertoma(i) * kertoma(n-i)); cout << kerroin << "\t"; int kertoma(int a) if(a==0)return 1; intj=1; for (int i=1; i<=a; i++) j=j*i; return j; Potenssiin korotus Seuraavassa algoritmissa korotetaan kokonaisluku kokonaislukupotenssiin. Potenssiin korotus: #include <iostream.h> int korotus(int a, int b); void main() int x, y; cout << "Anna kantaluku \n"; // kantaluku voi olla myös liukuluku cin >> x; cout << "Anna eksponentti \n"; cin >> y; cout << "Luku " << x << " korotettuna potenssiin " << y << " on " << korotus(x,y); int korotus(int a, int b) int laskuri;
24 Matemaattiset algoritmit 121 int tulos=1; if (b == 0) return(1); for (laskuri = 1; laskuri <= b; laskuri++) tulos = tulos * a; return(tulos); Potenssiin korotus voidaan toteuttaa myös standardikirjastoa math.h käyttämällä, kun tiedetään että x y (y lnx) = e Nyt sekä eksponenttina että kantalukuna voi olla liukuluku. Seuraavana on ohjelma, joka hyödyntää yllä olevaa kaavaa. Potenssiin korotus: #include <iostream.h> #include <math.h> double korota(double x, double y) return exp(y * log(x)); main() double a=2.2, b=3.3; cout << "2.2 pot 3.3 on " << korota(a,b); return 0;
25 122 Matemaattiset algoritmit Kokonaislukujen suurin yhteinen tekijä (SYT) Manuaalisesti laskemalla kahden kokonaisluvun SYT saadaan jakamalla molemmat luvut tekijöihin, jonka jälkeen tekijöistä haetaan yhteiset tekijät. SYT on hyvin tärkeä monissa yhteyksissä. Esimerkiksi salausmenetelmässä RSA (jonka otamme esille myöhemmissä luvuissa) haetaan lukuja, joilla ei saa olla yhteisiä tekijöitä. Esimerkiksi kokonaislukujen 27 ja 6 SYT saadaan seuraavasti: 27 = 3*3*3 6 = 2*3 SYT on siis 3. SYT #include <iostream.h> int syt(int a, int b); void main() int x, y; cout << "Anna eka luku \n"; cin >> x; cout << "Anna toka luku \n"; cin >> y; cout << "SYT on " << syt(x,y); int syt(int a, int b) int sy; a=(a<0?(-1)*a: a); b=(b<0?(-1)*b: b); while (a!= b) if (a > b) a = a-b; else b = b-a; sy=a; return sy; Kuten näemme, annetuista kokonaisluvuista otetaan itseisarvot, jolloin on mahdollista syöttää myös negatiivisia kokonaislukuja. SYT on tietenkin sama sekä negatiivisilla että positiivisilla kokonaisluvuilla.
26 Matemaattiset algoritmit 123 Simulaatio: Olkoon a = 27 ja b = 6 while 27!= 6 if 27>6 a = 27-6; (a = 21) if 21>6 a = 21-6; (a = 15) if 15>6 a = 15-6; (a = 9) if 9>6 a = 9-6; (a = 3) if 3>6 b = 6-3; (b=3) a = b = 3 (while-ehto päättyy) -->SYT = 3 LOPPU 4.6 Tasokuvion pinta-alan likiarvo Jos meillä on tasokuvio, jota x- ja y-akselien lisäksi rajoittaa jokin n-asteinen funktio, voimme laskea pinta-alan likiarvon usealla eri tavalla. Otamme tässä esille kaksi menettelyä: puolisuunnikaskaavan ja ns. Simpsonin kaavan. Allaolevasta nähdään sekä tilanne että käytettävät parametrit:
27 124 Matemaattiset algoritmit Puolisuunnikaskaava Jos funktio y = f(x) rajoittaa x-y-koordinaatistossa alueen, saadaan alueen pinta-alan likiarvo puolisuunnikaskaavalla seuraavasti: A(n) = h( 1/2y 0 + y 1 + y y n-1 + 1/2y n ) Yleensä (etenkin manuaalisessa laskennassa) on osavälejä kolme, jolloin kaavaa kutsutaan trapetsikaavaksi. Tällöin siis alue saadaan kaavasta: A(3) = h(1/2y 0 + y 1 + y 2 + 1/2y 3 ) Kehittelemme seuraavana likiarvon laskenta-algoritmia esimerkin valossa käyttäen trapetsikaavaa. Olettakaamme, että rajoittava funktio on muotoa y = f(x) = 2x 2 + x +1 ja pinta-ala haluttaisiin saada aikaan väliltä 1<= x <= 3. Matemaattisesti tämä saataisiin integraalilla: 3 A = ( x 3 + 2x 2-1) dx 1 Kun integroitava funktio on positiivinen koko intergoimisvälillään, voidaan trapetsikaavalla hakea pinta-alan likiarvoa seuraavalla algoritmilla: Tasokuvion pinta-ala (puolisuunnikaskaava): Määritellään ensin funktio: Nyt f(x) = 2x2 +x+1 Annetaan integrointirajat: siis a ja b, nyt a=1,b=3 Annetaan osavälien lukumäärä n (trapetsikaavassa n=3) Lasketaan osavälin leveys: h = (b-a)/n Lasketaan 1/2y0 ja 1/2y3 eli funktion arvot/2 x:n arvoilla 1 ja 3 ja lisätään summa-muuttujaan Lasketaan silmukassa muut arvot eli i=1ton-1 summa = summa + f(a + i*h) next i Tulostetaan Muuttamalla n:n arvoa suuremmaksi voidaan likiarvon tarkkuutta parantaa. Lukija voi verrata algoritmin tulosta matemaattisesti laskettuun tulokseen. Tietokoneella laskenta tulee sitä hyödyllisemmäksi mitä vaikeammin integroitavasta funktiosta on kysymys.
28 Seuraavana on ohjelma, joka laskee integraalin: #include <iostream.h> #include <math.h> Matemaattiset algoritmit 125 double arvio(float (*funktio)(float x), double a, double b, long int n); double integraali(float (*funktio)(float x), double a, double b, double tarkkuus = 0.001); float alkufunktio(float x) return x*x*x; main() double a=2; double b=4; cout << "Funktiosi integraali valilta " << a << " ja " << b; cout << " on " << integraali(alkufunktio, a, b) << "\n" ; double integraali(float (*funktio)(float x), double a, double b, double tarkkuus) long int n=1; double edellinen = arvio(funktio, a, b, n), nykyinen = arvio(funktio, a, b, n = 2*n); while(fabs(nykyinen-edellinen) > tarkkuus) edellinen = nykyinen; n = 2*n; nykyinen = arvio(funktio,a,b,n); return nykyinen; double arvio(float (*funktio)(float x), double a, double b, long int n) double h = (b-a)/n; double s = (funktio(a)+funktio(b))/2; for (long int i=1; i<=n-1; i++) s=s+funktio(a+i*h);
29 126 Matemaattiset algoritmit return s*h; Simpsonin kaava pinta-alan likiarvon laskemiseksi Simpsonin kaavassa on arvon n oltava parillinen. Simpsonin kaava on muotoa: A(n) = h/3(y 0 + 4y 1 + 2y 2 +4y 3 + 2y y n-2 + 4y n-1 + y n ) Likiarvon laskenta-algoritmi on helppo johtaa puolisuunnikaskaavan algoritmista. Menettelyjen tarkkuutta voi lukija vertailla. Selvää tietenkin on, että osavälien lähestyessä ääretöntä myös likiarvot lähestyvät samaa arvoa. Molempia yllä esiteltyjä likiarvokaavoja voidaan käyttää myös tilavuuslaskuissa. Tällöin y i :t korvataan pinta-alasiivuilla. 4.7 Murtoluvut ja polynomit Murtoluku (rationaaliluku) on likiarvoa tarkempi, joten sen käsittelyn osaaminen ennen mahdollisia pyöristelyjä on hyödyllistä. Tässä aliluvussa käytetään myös hyödyksi syt-funktiota, jolla operaatioiden tulokset sievennetään Murtoluvut Seuraavissa murtolukualgoritmeissa käytämme SYT-laskentaa hyödyksi. Murtoluvut voidaan tallentaa esimerkiksi luokkaan, jolloin rakenne voitaisiin määritellä seuraavasti: Murtoluku-luokka: class Murtoluku int jakaja;
30 Matemaattiset algoritmit 127 int jaettava; public: Murtoluku(); Murtoluku(int a, int b)jakaja = b;jaettava = a; friend main(); friend Murtoluku operator /(Murtoluku& c1, Murtoluku& c2); friend Murtoluku Sievenna(Murtoluku & c1); ; Kaksi murtolukua summataan (ja vähennetään toisistaan) manuaalisesti sieventämällä ensin molemmat murtoluvut, jonka jälkeen lukujen nimittäjäksi haetaan nimittäjien pienin yhteinen jaettava ja kerrotaan osoittaja. Tämän jälkeen osoittajille tehdään laskentaoperaatio ja lopuksi mahdollisesti sievennetään tulosta. Hyödyntämällä SYT-operaatiota, voidaan ohjelmallisesti tehdä sieventäminen vasta lopputulokselle. Kahden murtoluvun yhteenlaskussa tuloksen osoittaja ja nimittäjä voidaan laskea ensin seuraavasti: Murtolukujen yhteenlasku: tulos.osoittaja = luku1.osoittaja * luku2.nimittäjä + luku2.osoittaja * luku1.nimittäjä tulos.nimittäjä = luku1.nimittäjä * luku2.nimittäjä Sievennys tapahtuu laskemalla: tulos.osoittaja/syt(tulos.osoittaja, tulos.nimittäjä) tulos.nimittäjä/syt(tulos.osoittaja, tulos.nimittäjä) Kokeilemme manuaalisesti: Olkoot murtoluvut: 1/6 ja 3/4 osoittaja = 1*4 + 3*6 = 22 nimittäjä = 6 * 4 = 24 tulos = 22/24, jota on siis sievennettävä Sieventäminen tapahtuu hakemalla ensin SYT(22, 24), joka on siis 2. Osoittaja ja nimittäjä voidaan nyt jakaa luvulla 2, jolloin tulos on 11/12.
31 128 Matemaattiset algoritmit Murtolukujen erotus Erotus saadaan edellisen mukaan: tulos.osoittaja = luku1.osoittaja * luku2.nimittäjä - luku2.osoittaja * luku1.nimittäjä tulos.nimittäjä = luku1.nimittäjä * luku2.nimittäjä Lopuksi sievennetään kuten edellä. Kahden murtoluvun tulo Murtolukujen tulo lasketaan kertomalla osoittajat keskenään ja nimittäjät keskenään, eli tulo.osoittaja = luku1.osoittaja * luku2.osoittaja tulo.nimittäjä = luku1.nimittäjä * luku2.nimittäjä Lopuksi sievennetään kuten edellä. Kahden murtoluvun osamäärä Osamäärä saadaan seuraavasti: osam.osoittaja = luku1.osoittaja * luku2.nimittäjä osam.nimittäjä = luku1.nimittäjä * luku2.osoittaja Lopuksi sievennetään kuten edellä. Seuraavana on oliopohjainen esimerkki: #include <iostream.h> class Murtoluku int jakaja; int jaettava; public: Murtoluku(); Murtoluku(int a, int b)jakaja = b;jaettava = a; friend main(); friend Murtoluku operator /(Murtoluku& c1, Murtoluku& c2); friend Murtoluku Sievenna(Murtoluku & c1); ; Murtoluku::Murtoluku() jakaja = 0;
32 Matemaattiset algoritmit 129 jaettava = 0; Murtoluku Sievenna(Murtoluku & c1) int syt; int a = c1.jakaja; int b = c1.jaettava; while (a!= b) if (a > b) a = a-b; else b = b-a; syt=a; c1.jakaja = c1.jakaja/syt; c1.jaettava = c1.jaettava/syt; // return c1; Murtoluku operator /(Murtoluku& c1, Murtoluku& c2) Murtoluku tulos; tulos.jakaja = c1.jaettava * c2.jakaja; tulos.jaettava = c2.jaettava * c1.jakaja; return tulos; main() int p; Murtoluku Luku1(2,3); Murtoluku Luku2(5,6); Murtoluku Luku3 = Luku1/Luku2; cout << "3. murtoluvun jakaja on " << Luku3.jakaja << "\n"; cout << "3. murtoluvun jaettava on " << Luku3.jaettava << "\n"; Sievenna(Luku3); cout << "3. murtoluvun jakaja on " << Luku3.jakaja << "\n"; cout << "3. murtoluvun jaettava on " << Luku3.jaettava << "\n"; return 0; tulos.jakaja = c1.jaettava * c2.jakaja; tulos.jaettava = c2.jaettava * c1.jakaja; return tulos;
33 130 Matemaattiset algoritmit Polynomit Polynomin normaalimuoto on A n x n + A n-1 x n A 1 x 1 + A 0 x 0 Viimeinen termi A 0 x 0 kuvaa vakiotekijää. Polynomi voi siis olla esimerkiksi lauseke 2x 3 + 3x 2 + x - 8. Polynomien yhteenlasku Kaksi polynomia lasketaan yhteen summaamalla samanasteisten x-arvojen kertoimet. Ellei samaa astetta löydy kahdesta polynomista kuin yksi tekijä, lisätään kyseinen tekijä summapolynomiin. Esimerkiksi: (2x 3 + 3x 2 + x - 8) + (x 4 + 2x 2 + x) = x 4 + 2x 3 + 5x 2 + 2x -8 Kumpikin yhteenlaskettava polynomi tallennetaan kahteen tiedostoon tai listaan, joissa kerroin ja aste ovat alkion kenttinä. Molempia polynomeja verrataan toisiinsa järjestyksessä ja haetaan samaa astetta olevia tekijöitä. Ellei paria löydy, lisätään tekijä summapolynomiin suoraan ja siirrytään ensimmäisessä polynomissa yksi tekijä eteenpäin. Jos pari löytyy, summataan kertoimet ja lisätään summa ja aste summapolynomiin. Edellä tulee samalla lasketuksi myös polynomien erotus, koska polynomien tekijöiden etumerkki voi olla positiivinen tai negatiivinen. 4.8 Likiarvo π:lle satunnaisluvuilla Kuten tiedämme, ympyrän ala = π x R 2. Kun säde on yksi, puhumme yksikköympyrästä. Yksikköympyrän ala on siis = π. Ympyrän yhtälö on R 2 = X 2 + Y 2. Kun tiedämme, että R = 1, voimme ratkaista yhtälöstä Y:n, eli saamme Y = +-(1 - X 2 ) 1/2. Seuraavassa kuvassa yksikköympyrän se neljännes, jossa sekä X että Y saavat positiivisia arvoja, on piirretty neliön sisään. Jos nyt generoimme suuren määrän pisteitä väliltä 0...1, voimme ajatella, että tietty osa pisteistä sattuu ympyrän neljänneksen alueelle, kun taas loput osuvat neliön alueelle. Neliön ala on siis tässä tapauksessa 1 x 1 = 1 yksikköä.
34 Matemaattiset algoritmit 131 Kun nyt generoimme satunnaislukuja, saamme ympyrän alan eli siis π:n selville seuraavasti: π = generoitujen, ympyrän neljänneksen sisälle osuneiden pisteiden suhde kaikkiin pisteisiin x 4. Jos satunnaisluku Y on suurempi tai yhtäsuuri kuin neljännesympyrää kuvaavan yhtälön oikea puoli eli (1 - X 2 ) 1/2, niin Y ei ole ympyrän sisäpuolella. Muutoin taas tilanne on päinvastoin. Näin saadaan laskettua satunnaislukujen määrät ja lopulta laskettua likiarvo π:lle.
Algoritmit C++ Kauko Kolehmainen
Algoritmit C++ Kauko Kolehmainen Algoritmit - C++ Kirjoittanut Taitto Kansi Kustantaja Kauko Kolehmainen Kauko Kolehmainen Frank Chaumont Oy Edita Ab IT Press PL 760 00043 EDITA Sähköpostiosoite Internet
1.1 Vektorit. MS-A0004/A0006 Matriisilaskenta. 1.1 Vektorit. 1.1 Vektorit. Reaalinen n-ulotteinen avaruus on joukko. x 1. R n.
ja kompleksiluvut ja kompleksiluvut 1.1 MS-A0004/A0006 Matriisilaskenta 1. ja kompleksiluvut Nuutti Hyvönen, c Riikka Kangaslampi Matematiikan ja systeemianalyysin laitos Aalto-yliopisto 8.9.015 Reaalinen
Vektoreiden A = (A1, A 2, A 3 ) ja B = (B1, B 2, B 3 ) pistetulo on. Edellisestä seuraa
Viikon aiheet Pistetulo (skalaaritulo Vektorien tulot Pistetulo Ristitulo Skalaari- ja vektorikolmitulo Integraalifunktio, alkeisfunktioiden integrointi, yhdistetyn funktion derivaatan integrointi Vektoreiden
jakokulmassa x 4 x 8 x 3x
Laudatur MAA ratkaisut kertausarjoituksiin. Polynomifunktion nollakodat 6 + 7. Suoritetaan jakolasku jakokulmassa 5 4 + + 4 8 6 6 5 4 + 0 + 0 + 0 + 0+ 6 5 ± 5 5 4 ± 4 4 ± 4 4 ± 4 8 8 ± 8 6 6 + ± 6 Vastaus:
MS-A0102 Differentiaali- ja integraalilaskenta 1
MS-A0102 Differentiaali- ja integraalilaskenta 1 Kompleksiluvut Riikka Korte (muokannut Riikka Kangaslammen materiaalin pohjalta) Matematiikan ja systeemianalyysin laitos Aalto-yliopisto 5.11.2015 1 /
1 Kompleksiluvut 1. y z = (x, y) Kuva 1: Euklidinen taso R 2
Sisältö 1 Kompleksiluvut 1 1.1 Määritelmä............................ 1 1. Kertolasku suorakulmaisissa koordinaateissa.......... 4 1.3 Käänteisluku ja jakolasku..................... 9 1.4 Esimerkkejä.............................
Matematiikan tukikurssi, kurssikerta 3
Matematiikan tukikurssi, kurssikerta 3 1 Epäyhtälöitä Aivan aluksi lienee syytä esittää luvun itseisarvon määritelmä: { x kun x 0 x = x kun x < 0 Siispä esimerkiksi 10 = 10 ja 10 = 10. Seuraavaksi listaus
Kompleksiluvut., 15. kesäkuuta /57
Kompleksiluvut, 15. kesäkuuta 2017 1/57 Miksi kompleksilukuja? Reaaliluvut lukusuoran pisteet: Tiedetään, että 7 1 0 x 2 = 0 x = 0 1 7 x 2 = 1 x = 1 x = 1 x 2 = 7 x = 7 x = 7 x 2 = 1 ei ratkaisua reaalilukujen
Tekijä Pitkä Matematiikka 11 ratkaisut luku 2
Tekijä Pitkä matematiikka 11 0..017 170 a) Koska 8 = 4 7, luku 8 on jaollinen luvulla 4. b) Koska 104 = 4 6, luku 104 on jaollinen luvulla 4. c) Koska 4 0 = 80 < 8 ja 4 1 = 84 > 8, luku 8 ei ole jaollinen
Schildtin lukio
MAA1.9.15 Scildtin lukio LIKIARVO MUISTA: tavallisesti matematiikassa pyritään aina tarkkoiin arvoiin! Kuitenkin esim. mittaustulokset ovat aina likiarvoja. o Luvun katkaiseminen: näin tekevät mm. jotkut
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 27.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 27.1.2010 1 / 37 If-käsky toistokäskyn sisällä def main(): HELLERAJA = 25.0 print "Anna lampotiloja, lopeta -300:lla."
13. Taylorin polynomi; funktioiden approksimoinnista. Muodosta viidennen asteen Taylorin polynomi kehityskeskuksena origo funktiolle
13. Taylorin polynomi; funktioiden approksimoinnista 13.1. Taylorin polynomi 552. Muodosta funktion f (x) = x 4 + 3x 3 + x 2 + 2x + 8 kaikki Taylorin polynomit T k (x, 2), k = 0,1,2,... (jolloin siis potenssien
MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 2 / vko 45
MS-A0003/A0005 Matriisilaskenta Laskuharjoitus / vko 5 Tehtävä 1 (L): Hahmottele kompleksitasoon ne pisteet, jotka toteuttavat a) z 3 =, b) z + 3 i < 3, c) 1/z >. Yleisesti: ehto z = R, z C muodostaa kompleksitasoon
Matematiikan peruskurssi 2
Matematiikan peruskurssi Tentti, 9..06 Tentin kesto: h. Sallitut apuvälineet: kaavakokoelma ja laskin, joka ei kykene graaseen/symboliseen laskentaan Vastaa seuraavista viidestä tehtävästä neljään. Saat
PRELIMINÄÄRIKOE PITKÄ MATEMATIIKKA 9.2.2011
PRELIMINÄÄRIKOE PITKÄ MATEMATIIKKA 9..0 Kokeessa saa vastata enintään kymmeneen tehtävään.. Sievennä a) 9 x x 6x + 9, b) 5 9 009 a a, c) log 7 + lne 7. Muovailuvahasta tehty säännöllinen tetraedri muovataan
Tehtävänanto oli ratkaista seuraavat määrätyt integraalit: b) 0 e x + 1
Tehtävä : Tehtävänanto oli ratkaista seuraavat määrätyt integraalit: a) a) x b) e x + Integraali voisi ratketa muuttujanvaihdolla. Integroitava on muotoa (a x ) n joten sopiva muuttujanvaihto voisi olla
Matematiikan tukikurssi
Matematiikan tukikurssi Kurssikerta 10 1 Funktion monotonisuus Derivoituva funktio f on aidosti kasvava, jos sen derivaatta on positiivinen eli jos f (x) > 0. Funktio on aidosti vähenevä jos sen derivaatta
1 Kompleksiluvut. Kompleksiluvut 10. syyskuuta 2005 sivu 1 / 7
Kompleksiluvut 10. syyskuuta 2005 sivu 1 / 7 1 Kompleksiluvut Lukualueiden laajennuksia voi lähestyä polynomiyhtälöiden ratkaisemisen kautta. Yhtälön x+1 = 0 ratkaisemiseksi tarvitaan negatiivisia lukuja.
Algebra. 1. Ovatko alla olevat väittämät tosia? Perustele tai anna vastaesimerkki. 2. Laske. a) Luku 2 on luonnollinen luku.
Algebra 1. Ovatko alla olevat väittämät tosia? Perustele tai anna vastaesimerkki. a) Luku on luonnollinen luku. b) Z c) Luvut 5 6 ja 7 8 ovat rationaalilukuja, mutta luvut ja π eivät. d) sin(45 ) R e)
Diplomi-insinööri- ja arkkitehtikoulutuksen yhteisvalinta 2017 Insinöörivalinnan matematiikan koe , Ratkaisut (Sarja A)
Diplomi-insinööri- ja arkkitehtikoulutuksen yhteisvalinta 017 Insinöörivalinnan matematiikan koe 30..017, Ratkaisut (Sarja A) 1. a) Lukujen 9, 0, 3 ja x keskiarvo on. Määritä x. (1 p.) b) Mitkä reaaliluvut
Juuri 12 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty
Juuri Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty 7.5.08 Kertaus K. a) Polynomi P() = + 8 on jaollinen polynomilla Q() =, jos = on polynomin P nollakohta, eli P() = 0. P() = + 8 = 54 08 +
Matematiikan tukikurssi
Matematiikan tukikurssi Kurssikerta Eksponenttifuntio Palautetaan mieliin, että Neperin luvulle e pätee: e ) n n n ) n n n n n ) n. Tästä määritelmästä seuraa, että eksponenttifunktio e x voidaan määrittää
Juuri 6 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty Vastaus: Määrittelyehto on x 1 ja nollakohta x = 1.
Juuri 6 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty 4..6 Kokoavia tehtäviä ILMAN TEKNISIÄ APUVÄLINEITÄ. a) Funktion f( ) = määrittelyehto on +, eli. + Ratkaistaan funktion nollakohdat. f(
MATEMATIIKAN KOE, PITKÄ OPPIMÄÄRÄ HYVÄN VASTAUKSEN PIIRTEITÄ
MATEMATIIKAN KOE, PITKÄ OPPIMÄÄRÄ 8906 HYVÄN VASTAUKSEN PIIRTEITÄ Tutkintoaineen sensorikokous on hyväksynyt seuraavat hyvän vastauksen piirteet Hyvästä suorituksesta näkyy, miten vastaukseen on päädytty
Ratkaisut vuosien tehtäviin
Ratkaisut vuosien 1978 1987 tehtäviin Kaikki tehtävät ovat pitkän matematiikan kokeista. Eräissä tehtävissä on kaksi alakohtaa; ne olivat kokelaalle vaihtoehtoisia. 1978 Osoita, ettei mikään käyrän y 2
Numeeriset menetelmät
Numeeriset menetelmät Luento 2 To 8.9.2011 Timo Männikkö Numeeriset menetelmät Syksy 2011 Luento 2 To 8.9.2011 p. 1/33 p. 1/33 Lukujen tallennus Kiintoluvut (integer) tarkka esitys aritmeettiset operaatiot
Differentiaali- ja integraalilaskenta 1 Ratkaisut 5. viikolle /
MS-A8 Differentiaali- ja integraalilaskenta, V/7 Differentiaali- ja integraalilaskenta Ratkaisut 5. viikolle / 9..5. Integroimismenetelmät Tehtävä : Laske osittaisintegroinnin avulla a) π x sin(x) dx,
3 Yleinen toisen asteen yhtälö ja epäyhtälö
Juuri Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty 5.8.016 3 Yleinen toisen asteen yhtälö ja epäyhtälö ENNAKKOTEHTÄVÄT 1. a) x + x + 1 = 4 (x + 1) = 4 Luvun x + 1 tulee olla tai, jotta sen
1 Peruslaskuvalmiudet
1 Peruslaskuvalmiudet 11 Lukujoukot N {1,, 3, 4,} on luonnollisten lukujen joukko (0 mukana, jos tarvitaan), Z {, 3,, 1, 0, 1,, 3,} on kokonaislukujen joukko, Q m n : m, n Z, n 0 on rationaalilukujen joukko,
1. Viikko. K. Tuominen MApu II 1/17 17
1. Viikko Keskeiset asiat ja tavoitteet: 1. Kompleksiluvut, kompleksitaso, polaariesitys, 2. Kompleksilukujen peruslaskutoimitukset, 3. Eulerin ja De Moivren kaavat, 4. Potenssi ja juuret, kompleksinen
A B = (1, q, q 2 ) (2, 0, 2) = 2 2q q 2 = 0 q 2 = 1 q = ±1 A(±1) = (1, ±1, 1) A(1) A( 1) = (1, 1, 1) (1, 1, 1) = A( 1) A(1) A( 1) = 1
Mapu I Viikko 4 tehtävä malli Millä q:n arvoilla vektori A(q) (, q, q ) on kohtisuora vektorin B (, 0, ) kanssa? Ovatko A:n eri ratkaisut keskenään kohtisuoria? Jos eivät, määrää niiden välinen kulma!
NELIÖJUURI. Neliöjuuren laskusääntöjä
NELIÖJUURI POLYNOMIFUNKTIOT JA -YHTÄLÖT, MAA2 Tarkoittaa positiivista tai nollaa Määritelmä, neliöjuuri: Luvun a R neliöjuuri, merkitään a, on se ei-negatiivinen luku, jonka neliö (eli toiseen potenssiin
MATEMATIIKAN KOE, PITKÄ OPPIMÄÄRÄ HYVÄN VASTAUKSEN PIIRTEITÄ
MATEMATIIKAN KOE, PITKÄ OPPIMÄÄRÄ 4.9.09 HYVÄN VASTAUKSEN PIIRTEITÄ Alustavat hyvän vastauksen piirteet on suuntaa-antava kuvaus kokeen tehtäviin odotetuista vastauksista ja tarkoitettu ensisijaisesti
Epäyhtälöt 1/7 Sisältö ESITIEDOT: yhtälöt
Epäyhtälöt 1/7 Sisältö Epäyhtälö Epäyhtälöllä tarkoitetaan ehtoa, missä kahdesta lausekkeesta toinen on suurempi tai mahdollisesti yhtä suuri kuin toinen: f(x) < g(x), f(x) g(x).merkit voidaan luonnollisesti
Matematiikan tukikurssi
Matematiikan tukikurssi Kurssikerta 4 Jatkuvuus Jatkuvan funktion määritelmä Tarkastellaan funktiota f x) jossakin tietyssä pisteessä x 0. Tämä funktio on tässä pisteessä joko jatkuva tai epäjatkuva. Jatkuvuuden
Anna jokaisen kohdan vastaus kolmen merkitsevän numeron tarkkuudella muodossa
Preliminäärikoe Tehtävät Pitkä matematiikka / Kokeessa saa vastata enintään kymmeneen tehtävään Tähdellä (* merkittyjen tehtävien maksimipistemäärä on 9, muiden tehtävien maksimipistemäärä on 6 Jos tehtävässä
LUKUTEORIA johdantoa
LUKUTEORIA johdantoa LUKUTEORIA JA TODISTAMINEN, MAA11 Lukuteorian tehtävä: Lukuteoria tutkii kokonaislukuja, niiden ominaisuuksia ja niiden välisiä suhteita. Kokonaislukujen maailma näyttää yksinkertaiselta,
a b c d
1. 11. 011!"$#&%(')'+*(#-,.*/103/465$*784 /(9:*;9."$ *;5> *@9 a b c d 1. + +. 3. 4. 5. 6. + + + + + + + + + + P1. 5 140 8 47 = 5 140 ( 3 ) 47 = 5 140 3 47 = 5 140 141 = (5 ) 140 = 10 140, jossa on
Matematiikan tukikurssi
Matematiikan tukikurssi Kurssikerta 12 1 Eksponenttifuntio Palautetaan mieliin, että Neperin luvulle e pätee: e ) n n n ) n n n n n ) n. Tästä määritelmästä seuraa, että eksponenttifunktio e x voidaan
B. 2 E. en tiedä C. 6. 2 ovat luonnollisia lukuja?
Nimi Koulutus Ryhmä Jokaisessa tehtävässä on vain yksi vastausvaihtoehto oikein. Laske tehtävät ilman laskinta.. Missä pisteessä suora y = 3x 6 leikkaa x-akselin? A. 3 D. B. E. en tiedä C. 6. Mitkä luvuista,,,
3.4 Rationaalifunktion kulku ja asymptootit
.4 Rationaalifunktion kulku ja asymptootit Rationaali- eli murtofunktiolla tarkoitetaan funktiota R, jonka lauseke on kahden polynomin osamäärä: P() R(). Q() Ainakin nimittäjässä olevan polynomin asteluvun
KOMPLEKSILUVUT C. Rationaaliluvut Q. Irrationaaliluvut
KOMPLEKSILUVUT C Luonnolliset luvut N Kokonaisluvut Z Rationaaliluvut Q Reaaliluvut R Kompleksi luvut C Negat kokonaisluvut Murtoluvut Irrationaaliluvut Imaginaariluvut Erilaisten yhtälöiden ratkaiseminen
Preliminäärikoe Tehtävät A-osio Pitkä matematiikka kevät 2016 Sivu 1 / 4
Preliminäärikoe Tehtävät A-osio Pitkä matematiikka kevät 06 Sivu / 4 Laske yhteensä enintään 0 tehtävää. Kaikki tehtävät arvostellaan asteikolla 0-6 pistettä. Osiossa A EI SAA käyttää laskinta. Osiossa
Tekijä Pitkä matematiikka a) Ratkaistaan nimittäjien nollakohdat. ja x = 0. x 1= Funktion f määrittelyehto on x 1 ja x 0.
Tekijä Pitkä matematiikka 6 9.5.017 K1 a) Ratkaistaan nimittäjien nollakohdat. x 1= 0 x = 1 ja x = 0 Funktion f määrittelyehto on x 1 ja x 0. Funktion f määrittelyjoukko on R \ {0, 1}. b) ( 1) ( 1) f (
Olkoon funktion f määrittelyjoukkona reaalilukuväli (erityistapauksena R). Jos kaikilla määrittelyjoukon luvuilla x 1 ja x 2 on voimassa ehto:
4 Reaalifunktiot 4. Funktion monotonisuus Olkoon funktion f määrittelyjoukkona reaalilukuväli (erityistapauksena R). Jos kaikilla määrittelyjoukon luvuilla x ja x on voimassa ehto: "jos x < x, niin f (x
9. Vektorit. 9.1 Skalaarit ja vektorit. 9.2 Vektorit tasossa
9. Vektorit 9.1 Skalaarit ja vektorit Skalaari on koon tai määrän mitta. Tyypillinen esimerkki skalaarista on massa. Lukumäärä on toinen hyvä esimerkki skalaarista. Vektorilla on taas suuruus ja suunta.
y z = (x, y) Kuva 1: Euklidinen taso R 2
Kompleksiluvut. Määritelmä Tarkastellaan euklidista tasoa R = {(, y), y R}. y y z = (, y) R Kuva : Euklidinen taso R Suorakulmaisessa koordinaatistossa on -akseli ja y-akseli. Luvut ja y ovat pisteen z
Algoritmit 1. Demot Timo Männikkö
Algoritmit 1 Demot 1 31.1.-1.2.2018 Timo Männikkö Tehtävä 1 (a) Algoritmi, joka tutkii onko kokonaisluku tasan jaollinen jollain toisella kokonaisluvulla siten, että ei käytetä lainkaan jakolaskuja Jaettava
MATEMATIIKAN KOE, PITKÄ OPPIMÄÄRÄ HYVÄN VASTAUKSEN PIIRTEITÄ
MATEMATIIKAN KOE, PITKÄ OPPIMÄÄRÄ 6.3.09 HYVÄN VASTAUKSEN PIIRTEITÄ Alla oleva vastausten piirteiden, sisältöjen ja pisteitysten luonnehdinta ei sido ylioppilastutkintolautakunnan arvostelua. Lopullisessa
Numeeriset menetelmät Pekka Vienonen
Numeeriset menetelmät Pekka Vienonen 1. Funktion nollakohta Newtonin menetelmällä 2. Määrätty integraali puolisuunnikassäännöllä 3. Määrätty integraali Simpsonin menetelmällä Newtonin menetelmä Newtonin
Harjoituskokeiden ratkaisut Painoon mennyt versio.
Harjoituskokeiden ratkaisut 8.6.7 Painoon mennyt versio. PYRAMIDI NUMEERISIA JA ALGEBRALLISIA MENETELMIÄ RATKAISUT, HARJOITUSKOE SIVU.7.7 Koe a) i) =,, = kpl ii) 9,876 =,9876,99 = 9,9 iii),66,66 =,7 =,7
Kokonaisluvut. eivät ole kokonaislukuja!
Luvut Lähdetään liikkeelle kertaamalla mitä tiedämme luvuista. Mitä erilaiset luvut kuvaavat ja millaisia ominaisuuksia niillä on? Mikä voisi olla luonnollisin luku aloittaa? Luonnolliset luvut Luonnolliset
MS-A0104 Differentiaali- ja integraalilaskenta 1 (ELEC2) MS-A0106 Differentiaali- ja integraalilaskenta 1 (ENG2)
MS-A4 Differentiaali- ja integraalilaskenta (ELEC2) MS-A6 Differentiaali- ja integraalilaskenta (ENG2) Harjoitukset 3L, syksy 27 Tehtävä. a) Määritä luvun π likiarvo käyttämällä Newtonin menetelmää yhtälölle
Funktion derivoituvuus pisteessä
Esimerkki A Esimerkki A Esimerkki B Esimerkki B Esimerkki C Esimerkki C Esimerkki 4.0 Ratkaisu (/) Ratkaisu (/) Mielikuva: Funktio f on derivoituva x = a, jos sen kuvaaja (xy-tasossa) pisteen (a, f(a))
5 Differentiaalilaskentaa
5 Differentiaalilaskentaa 5.1 Raja-arvo Esimerkki 5.1. Rationaalifunktiota g(x) = x2 + x 2 x 1 ei ole määritelty nimittäjän nollakohdassa eli, kun x = 1. Funktio on kuitenkin määritelty kohdan x = 1 läheisyydessä.
, c) x = 0 tai x = 2. = x 3. 9 = 2 3, = eli kun x = 5 tai x = 1. Näistä
Pitkä matematiikka 8.9.0, ratkaisut:. a) ( x + x ) = ( + x + x ) 6x + 6x = + 6x + 6x x = x =. b) Jos x > 0, on x = + x x = + x. Tällä ei ole ratkaisua. Jos x 0, on x = + x x = + x x =. c) x = x ( x) =
läheisyydessä. Piirrä funktio f ja nämä approksimaatiot samaan kuvaan. Näyttääkö järkeenkäyvältä?
BM20A5840 - Usean muuttujan funktiot ja sarjat Harjoitus 1, Kevät 2017 1. Tunnemme vektorit a = [ 1 2 3 ] ja b = [ 2 1 2 ]. Laske (i) kummankin vektorin pituus (eli itseisarvo, eli normi); (ii) vektorien
Matematiikan tukikurssi
Matematiikan tukikurssi Kurssikerta 9 1 Implisiittinen derivointi Tarkastellaan nyt yhtälöä F(x, y) = c, jossa x ja y ovat muuttujia ja c on vakio Esimerkki tällaisesta yhtälöstä on x 2 y 5 + 5xy = 14
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 28.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 28.1.2009 1 / 28 Esimerkki: murtoluvun sieventäminen Kirjoitetaan ohjelma, joka sieventää käyttäjän antaman murtoluvun.
Funktio 1. a) Mikä on funktion f (x) = x lähtöjoukko eli määrittelyjoukko, kun 0 x 5?
Funktio. a) Mikä on funktion f (x) = x + lähtöjoukko eli määrittelyjoukko, kun 0 x 5? b) Mikä on funktion f (x) = x + maalijoukko eli arvojoukko? c) Selitä, mikä on funktion nollakohta. Anna esimerkki.
Matriisilaskenta Laskuharjoitus 1 - Ratkaisut / vko 37
Matriisilaskenta Laskuharjoitus 1 - Ratkaisut / vko 37 Tehtävä 1: Käynnistä Matlab-ohjelma ja kokeile laskea sillä muutama peruslaskutoimitus: laske jokin yhteen-, vähennys-, kerto- ja jakolasku. Laske
1. Murtoluvut, murtolausekkeet, murtopotenssit ja itseisarvo
1. Murtoluvut, murtolausekkeet, murtopotenssit ja itseisarvo Olkoot a, b, c mielivaltaisesti valittuja reaalilukuja eli reaaliakselin pisteitä. Ne toteuttavat seuraavat laskulait (ns. kunta-aksioomat):
Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.
1 Luokka Murtoluku uudelleen Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. Sievennettäessä tarvitaan osoittajan ja nimittäjän suurin yhteinen tekijä (syt).
Matematiikan tukikurssi
Matematiikan tukikurssi Kurssikerta 8 1 Funktion kuperuussuunnat Derivoituva funktio f (x) on pisteessä x aidosti konveksi, jos sen toinen derivaatta on positiivinen f (x) > 0. Vastaavasti f (x) on aidosti
Kaikkia alla olevia kohtia ei käsitellä luennoilla kokonaan, koska osa on ennestään lukiosta tuttua.
6 Alkeisfunktiot Kaikkia alla olevia kohtia ei käsitellä luennoilla kokonaan, koska osa on ennestään lukiosta tuttua. 6. Funktion määrittely Funktio f : A B on sääntö, joka liittää jokaiseen joukon A alkioon
Muista tutkia ihan aluksi määrittelyjoukot, kun törmäät seuraaviin funktioihin:
Määrittelyjoukot Muista tutkia ihan aluksi määrittelyjoukot, kun törmäät seuraaviin funktioihin:, 0 ; log, > 0 ;, 0 (parilliset juuret) ; tan, π + nπ Potenssisäännöt Ole tarkkana kantaluvun kanssa 3 3
(iv) Ratkaisu 1. Sovelletaan Eukleideen algoritmia osoittajaan ja nimittäjään. (i) 7 = , 7 6 = = =
JOHDATUS LUKUTEORIAAN (syksy 07) HARJOITUS 7, MALLIRATKAISUT Tehtävä Etsi seuraavien rationaalilukujen ketjumurtokehitelmät: (i) 7 6 (ii) 4 7 (iii) 65 74 (iv) 63 74 Ratkaisu Sovelletaan Eukleideen algoritmia
Matematiikan tukikurssi
Matematiikan tukikurssi Kertausluento 2. välikokeeseen Toisessa välikokeessa on syytä osata ainakin seuraavat asiat:. Potenssisarjojen suppenemissäde, suppenemisväli ja suppenemisjoukko. 2. Derivaatan
= = = 1 3.
9. 10. 2008!"$#&%(')'*,#.-/* P1. lkuperäisen punaisen kuution pinta koostuu kuudesta 3 3-neliöstä, joten sen ala on 6 3 2 = 54. Koska 3 3 =, kuutio jakautuu leikatessa yksikkökuutioksi, joiden kokonaispinta-ala
13 Operaattoreiden ylimäärittelyjä
248 13 C++-kielessä voidaan operaattoreita ylimäärittää. Ylimääriteltävää operaattoria voidaan pitää ikäänkuin metodina, joka esitellään luokan esittelyssä ja määritellään luokan ulkopuolella kuten metoditkin.
Ohjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 26.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 1 / 34 Luentopalaute kännykällä käynnissä! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast
Juuri 7 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty c) sin 50 = sin ( ) = sin 130 = 0,77
Juuri 7 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty.5.07 Kertaus K. a) sin 0 = 0,77 b) cos ( 0 ) = cos 0 = 0,6 c) sin 50 = sin (80 50 ) = sin 0 = 0,77 d) tan 0 = tan (0 80 ) = tan 0 =,9 e)
Sekalaiset tehtävät, 11. syyskuuta 2005, sivu 1 / 13. Tehtäviä
Sekalaiset tehtävät, 11. syyskuuta 005, sivu 1 / 13 Tehtäviä Tehtävä 1. Johda toiseen asteen yhtälön ax + bx + c = 0, a 0 ratkaisukaava. Tehtävä. Määrittele joukon A R pienin yläraja sup A ja suurin alaraja
Preliminäärikoe Tehtävät A-osio Pitkä matematiikka kevät 2016 Sivu 1 / 4
Preliminäärikoe Tehtävät A-osio Pitkä matematiikka kevät 06 Sivu / Laske yhteensä enintään 0 tehtävää. Kaikki tehtävät arvostellaan asteikolla 0-6 pistettä. Osiossa A EI SAA käyttää laskinta. Osiossa A
Tekijä Pitkä matematiikka
K1 Tekijä Pitkä matematiikka 5 7..017 a) 1 1 + 1 = 4 + 1 = 3 = 3 4 4 4 4 4 4 b) 1 1 1 = 4 6 3 = 5 = 5 3 4 1 1 1 1 1 K a) Koska 3 = 9 < 10, niin 3 10 < 0. 3 10 = (3 10 ) = 10 3 b) Koska π 3,14, niin π
KERTAUSHARJOITUKSIA. 1. Rationaalifunktio a) ( ) 2 ( ) Vastaus: a) = = 267. a) a b) a. Vastaus: a) a a a a 268.
KERTAUSHARJOITUKSIA. Rationaalifunktio 66. a) b) + + + = + + = 9 9 5) ( ) ( ) 9 5 9 5 9 5 5 9 5 = = ( ) = 6 + 9 5 6 5 5 Vastaus: a) 67. a) b) a a) a 9 b) a+ a a = = a + a + a a + a a + a a ( a ) + = a
* Trigonometriset funktiot suorakulmaisessa kolmiossa * Trigonometristen funktioiden kuvaajat
Trigonometria. a) Määrittele trigonometriset funktiot. b) Vertaa trigonometristen funktioiden ominaisuuksia määritys- ja arvojoukko sekä perusjakso). * Trigonometriset funktiot suorakulmaisessa kolmiossa
Viikon aiheet. Funktion lineaarinen approksimointi
Viikon aiheet Funktion ääriarvot Funktion lineaarinen approksimointi Vektorit, merkintätavat, pituus, yksikkövektori, skalaarilla kertominen, kanta ja kannan vaihto Funktion ääriarvot 6 Väliarvolause Implisiittinen
mplperusteet 1. Tiedosto: mplp001.tex Ohjelmat: Maple, [Mathematica] Sievennä lauseke x 1 ( mplp002.tex (PA P1 s.2011)
Aalto-yliopisto, Matematiikan ja Systeemianalyysin laitos -e mplperusteet. Tiedosto: mplp00.tex Ohjelmat: Maple, [Mathematica] Sievennä lauseke x ( x )( + x ). Kokeile funktiota simplify. 2. mplp002.tex
VASTAA YHTEENSÄ KUUTEEN TEHTÄVÄÄN
Matematiikan kurssikoe, Maa6 Derivaatta RATKAISUT Sievin lukio Torstai 23.9.2017 VASTAA YHTEENSÄ KUUTEEN TEHTÄVÄÄN MAOL-taulukkokirja on sallittu. Vaihtoehtoisesti voit käyttää aineistot-osiossa olevaa
A-osa. Ratkaise kaikki tämän osan tehtävät. Tehtävät arvostellaan pistein 0-6. Taulukkokirjaa saa käyttää apuna, laskinta ei.
PITKÄ MATEMATIIKKA PRELIMINÄÄRIKOE 7..07 NIMI: A-osa. Ratkaise kaikki tämän osan tehtävät. Tehtävät arvostellaan pistein 0-. Taulukkokirjaa saa käyttää apuna, laskinta ei.. Valitse oikea vaihtoehto ja
Vektorialgebra 1/5 Sisältö ESITIEDOT: vektori
Vektorialgebra 1/5 Sisältö Skalaaritulo Vektoreiden yhteenlaskun ja skalaarilla kertomisen lisäksi vektoreiden välille voidaan määritellä myös kertolasku. Itse asiassa näitä on kaksi erilaista. Seurauksena
Mapu 1. Laskuharjoitus 3, Tehtävä 1
Mapu. Laskuharjoitus 3, Tehtävä Lineaarisessa approksimaatiossa funktion arvoa lähtöpisteen x 0 ympäristössä arvioidaan liikkumalla lähtöpisteeseen sovitetun tangentin kulmakertoimen mukaisesti: f(x 0
Derivaatan sovellukset (ääriarvotehtävät ym.)
Derivaatan sovellukset (ääriarvotehtävät ym.) Tehtävät: 1. Tutki derivaatan avulla funktion f kulkua. a) f(x) = x 4x b) f(x) = x + 6x + 11 c) f(x) = x4 4 x3 + 4 d) f(x) = x 3 6x + 1x + 3. Määritä rationaalifunktion
b) Määritä/Laske (ei tarvitse tehdä määritelmän kautta). (2p)
Matematiikan TESTI, Maa7 Trigonometriset funktiot RATKAISUT Sievin lukio II jakso/017 VASTAA JOKAISEEN TEHTÄVÄÄN! MAOL/LIITE/taulukot.com JA LASKIN ON SALLITTU ELLEI TOISIN MAINITTU! TARKISTA TEHTÄVÄT
Tehtävä 2. Osoita, että seuraavat luvut ovat algebrallisia etsimällä jokin kokonaislukukertoiminen yhtälö jonka ne toteuttavat.
JOHDATUS LUKUTEORIAAN syksy 017) HARJOITUS 6, MALLIRATKAISUT Tehtävä 1. Etsi Pellin yhtälön x Dy = 1 pienin positiivinen ratkaisu kun D {,, 5, 6, 7, 8, 10}. Ratkaisu 1. Tehtävässä annetuilla D:n arvoilla
MITEN RATKAISEN POLYNOMIYHTÄLÖITÄ?
MITEN RATKAISEN POLYNOMIYHTÄLÖITÄ? Polynomiyhtälön ratkaiseminen Eri lajin yhtälöiden ratkaisutavat poikkeavat toisistaan. Siksi on tärkeää tunnistaa yhtälötyyppi. Polynomiyhtälö on yhtälö, joka voidaan
Kertaus. x x x. K1. a) b) x 5 x 6 = x 5 6 = x 1 = 1 x, x 0. K2. a) a a a a, a > 0
Juuri 8 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty 8.9.07 Kertaus K. a) 6 4 64 0, 0 0 0 0 b) 5 6 = 5 6 = =, 0 c) d) K. a) b) c) d) 4 4 4 7 4 ( ) 7 7 7 7 87 56 7 7 7 6 6 a a a, a > 0 6 6 a
Pisteessä (1,2,0) osittaisderivaatoilla on arvot 4,1 ja 1. Täten f(1, 2, 0) = 4i + j + k. b) Mihin suuntaan pallo lähtee vierimään kohdasta
Laskukarnevaali Matematiikka B. fx, y, z) = x sin z + x y, etsi f,, ) Osittaisderivaatat ovat f f x = sin z + xy, y = x, f z = x cos z Pisteessä,,) osittaisderivaatoilla on arvot 4, ja. Täten f,, ) = 4i
Matemaattinen Analyysi
Vaasan yliopisto, kevät 01 / ORMS1010 Matemaattinen Analyysi. harjoitus, viikko 1 R1 ke 1 16 D11 (..) R to 10 1 D11 (..) 1. Määritä funktion y(x) MacLaurinin sarjan kertoimet, kun y(0) = ja y (x) = (x
Helsingin, Itä-Suomen, Jyväskylän, Oulun, Tampereen ja Turun yliopisto Matematiikan valintakoe 10.6.2013 klo 10-13 Ratkaisut ja pisteytysohjeet
Helsingin, Itä-Suomen, Jyväskylän, Oulun, Tampereen ja Turun yliopisto Matematiikan valintakoe.6. klo - Ratkaisut ja pisteytysohjeet. Ratkaise seuraavat epäyhtälöt ja yhtälö: a) x+ x +9, b) log (x) 7,
Matematiikan tukikurssi: kurssikerta 10
Matematiikan tukikurssi: kurssikerta 10 1 Newtonin menetelmä Oletetaan, että haluamme löytää funktion f(x) nollakohan. Usein tämä tehtävä on mahoton suorittaa täyellisellä tarkkuuella, koska tiettyjen
2 Pistejoukko koordinaatistossa
Pistejoukko koordinaatistossa Ennakkotehtävät 1. a) Esimerkiksi: b) Pisteet sijaitsevat pystysuoralla suoralla, joka leikkaa x-akselin kohdassa x =. c) Yhtälö on x =. d) Sijoitetaan joitain ehdon toteuttavia
Matemaattisen analyysin tukikurssi
Matemaattisen analyysin tukikurssi 12. Kurssikerta Petrus Mikkola 5.12.2016 Tämän kerran asiat Sini-ja kosifunktio Yksikköympyrä Tangentti- ja kotangenttifunktio Trigonometristen funktioiden ominaisuuksia
Matemaattisten menetelmien hallinnan tason testi.
Matemaattisten menetelmien hallinnan tason testi. Jokaisessa tehtävässä on vain yksi vaihtoehto oikein.. Laskutoimitusten a) yhteen- ja vähennyslaskun b) kerto- ja jakolaskun c) potenssiin korotuksen järjestys