Algoritmit C++ Kauko Kolehmainen



Samankaltaiset tiedostot
10 Liiketaloudellisia algoritmeja

802328A LUKUTEORIAN PERUSTEET OSA III BASICS OF NUMBER THEORY PART III. Tapani Matala-aho MATEMATIIKKA/LUTK/OULUN YLIOPISTO

EHDOTUS. EHDOTUS Matematiikan opetussuunnitelmien perusteiden oppiainekohtaiset osat

802328A LUKUTEORIAN PERUSTEET OSA III BASICS OF NUMBER THEORY PART III

13 Operaattoreiden ylimäärittelyjä

Numeeriset menetelmät TIEA381. Luento 14. Kirsi Valjus. Jyväskylän yliopisto. Luento 14 () Numeeriset menetelmät / 55

Numeeriset menetelmät

Johdatus tekoälyn taustalla olevaan matematiikkaan

Matematiikka B2 - Avoin yliopisto

Matematiikka vuosiluokat 7 9

KESKEISET SISÄLLÖT Keskeiset sisällöt voivat vaihdella eri vuositasoilla opetusjärjestelyjen mukaan.

13. Taylorin polynomi; funktioiden approksimoinnista. Muodosta viidennen asteen Taylorin polynomi kehityskeskuksena origo funktiolle

MATEMATIIKKA MATEMATIIKAN PITKÄ OPPIMÄÄRÄ. Oppimäärän vaihtaminen

Lineaarialgebra II, MATH.1240 Matti laaksonen, Lassi Lilleberg

1 PROSENTTILASKENTAA 7

Käänteismatriisin ominaisuuksia

Numeeriset menetelmät

MS-A0102 Differentiaali- ja integraalilaskenta 1

3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä

1 PROSENTTILASKENTAA 7

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

Differentiaali- ja integraalilaskenta 1. Tietokoneharjoitus: ratkaisut

Differentiaali- ja integraalilaskenta 1 Ratkaisut 5. viikolle /

Harjoitus 10: Mathematica

Ohjelmoinnin perusteet Y Python

OPS OPPIMISTAVOITTEET JA OPETUKSEN KESKEISET SISÄLLÖT MATEMATIIKKA

MATEMATIIKKA. MAA Matematiikan pitkä oppimäärä

Rautaisannos. Simo K. Kivelä

4 LUKUJONOT JA SUMMAT

ja sitten. Kosketuskynä on upotettuna laskimen päädyssä ja ponnahtaa esiin, kun sitä hieman painetaan sisäänpäin.

5.6.3 Matematiikan lyhyt oppimäärä

4 Matemaattiset algoritmit

PERUSKOULUSTA PITKÄLLE

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3

PRELIMINÄÄRIKOE PITKÄ MATEMATIIKKA

mplperusteet 1. Tiedosto: mplp001.tex Ohjelmat: Maple, [Mathematica] Sievennä lauseke x 1 ( mplp002.tex (PA P1 s.2011)

Ohjelmoinnin perusteet Y Python

MATEMATIIKKA VL LUOKKA. Laaja-alainen osaaminen. liittyvät sisältöalueet

Laskentatoimi. Sisältö. Luku 6 Diat Ratkaisut (excel) (pdf) Luku 1 Diat Ratkaisut (excel) (pdf) Kopiointiehdot. Luku 7 Diat Ratkaisut (excel) (pdf)

Matematiikka B2 - TUDI

1.1. Määritelmiä ja nimityksiä

matematiikka Martti Heinonen Markus Luoma Leena Mannila Kati Rautakorpi-Salmio Timo Tapiainen Tommi Tikka Timo Urpiola

3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä

Ohjelmoinnin perusteet Y Python

Insinöörimatematiikka D

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

1 Aritmeettiset ja geometriset jonot

5. Laskutoimitukset eri lukujärjestelmissä

Tietorakenteet ja algoritmit

BM20A0700, Matematiikka KoTiB2

Johdatus matematiikkaan

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta Toteuta Pythonilla seuraava ohjelma:

MS-A0102 Differentiaali- ja integraalilaskenta 1

jakokulmassa x 4 x 8 x 3x

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Muutoksen arviointi differentiaalin avulla

Lukujonon raja-arvo 1/7 Sisältö ESITIEDOT: lukujonot

MAA Jussi Tyni Lue ohjeet huolellisesti! Tee pisteytysruudukko konseptin yläkertaan. Muista kirjoittaa nimesi. Kysymyspaperin saa pitää.

811120P Diskreetit rakenteet

Kompleksiluvut 1/6 Sisältö ESITIEDOT: reaaliluvut

a b 1 c b n c n

58131 Tietorakenteet ja algoritmit (syksy 2015)

KAAVAT. Sisällysluettelo

Tehtävä 2. Osoita, että seuraavat luvut ovat algebrallisia etsimällä jokin kokonaislukukertoiminen yhtälö jonka ne toteuttavat.

Numeeriset menetelmät Pekka Vienonen

Kurssikuvausten väljyyttä voidaan käyttää resurssien salliessa keskeisten sisältöjen syventämiseen ja eheyttävien kokonaisuuksien muodostamiseen.

Matematiikan pitkä oppimäärä

Excel syventävät harjoitukset

Tekijä Pitkä Matematiikka 11 ratkaisut luku 2

3. Muuttujat ja operaatiot 3.1

Vaihtoehtoinen tapa määritellä funktioita f : N R on

Ohjelmoinnin perusteet Y Python

Talousmatematiikan perusteet: Luento 11. Lineaarikuvaus Matriisin aste Käänteismatriisi

MATEMATIIKAN KOE, PITKÄ OPPIMÄÄRÄ HYVÄN VASTAUKSEN PIIRTEITÄ

Rekursio. Funktio f : N R määritellään yleensä antamalla lauseke funktion arvolle f (n). Vaihtoehtoinen tapa määritellä funktioita f : N R on

PROJEKTI- HALLINNAN KÄSIKIRJA

MS-C1340 Lineaarialgebra ja differentiaaliyhtälöt

Osa 1: Todennäköisyys ja sen laskusäännöt. Klassinen todennäköisyys ja kombinatoriikka

Algoritmit 1. Luento 12 Ke Timo Männikkö

Ohjelmoinnin perusteet Y Python

Johdatus tekoälyn taustalla olevaan matematiikkaan

Liite 1. Laajennettu Eukleideen algoritmi suoraviivainen tapa

MS-A0003/A0005 Matriisilaskenta Malliratkaisut 5 / vko 48

Algoritmit 1. Luento 3 Ti Timo Männikkö

ja B = 2 1 a) A + B, b) AB, c) BA, d) A 2, e) A T, f) A T B, g) 3A (e)

Taulukkolaskentaa selkokielellä EXCEL

kymmenjärjestelmä-käsitteen varmentaminen, tutustuminen 60-järjestelmään kellonaikojen avulla

Matematiikan tukikurssi

Matriisilaskenta. Harjoitusten 3 ratkaisut (Kevät 2019) 1. Olkoot AB = ja 2. Osoitetaan, että matriisi B on matriisin A käänteismatriisi.

7 Matematiikka. 3. luokka

Johdatus diskreettiin matematiikkaan Harjoitus 5, Ratkaise rekursioyhtälö

SINI- JA KOSINILAUSE. Laskentamenetelmät Geodeettinen laskenta M-Mies Oy

Lineaarialgebra ja matriisilaskenta I

Numeeriset menetelmät

9. Vektorit. 9.1 Skalaarit ja vektorit. 9.2 Vektorit tasossa

Juha Merikoski. Jyväskylän yliopiston Fysiikan laitos Kevät 2009

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.

Merkitys, arvot ja asenteet 7 Ei vaikuta arvosanan

Transkriptio:

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 palvelu@itpress.fi www.itpress.fi Painopaikka Oy Edita Ab, Helsinki 2000 Copyright IT Press 2000. Kaikki oikeudet pidätetään. Tämän julkaisun tai sen osan jäljentäminen ilman tekijän kirjallista lupaa painamalla, monistamalla, äänittämällä tai muulla tavoin on tekijänoikeuslain mukaisesti kielletty. ISBN 951-826-178-4

Sisällysluettelo 1 Sisällysluettelo JOHDANTO...5 1 TAULUKOT JA LUKUJOUKOT...7 1.1 MATRIISIN LAATIMINEN...7 1.2 LASKUTOIMITUKSIA MATRIISEILLA...8 1.2.1 Matriisien yhteenlasku...8 1.2.2 Matriisin kertominen vakiolla...9 1.2.3 Matriisien tulo...9 1.2.4 Determinantti...11 1.2.5 Matriisin transponointi ja käänteismatriisi...15 1.2.6 Dynaaminen taulukko...23 1.2.7 Turvallinen vektori...26 2 HAKU JA LAJITTELU...35 2.1 LUVUN HAKEMINEN TAULUKOSTA...35 2.2 TAULUKOIDEN LAJITTELU...41 2.2.1 Vaihtolajittelu...42 2.2.2 Quicksort...45 2.2.3 Shell-lajittelu...49 2.2.4 Kasalajittelu...51 2.2.5 Kuplalajittelu...53 2.2.6 Lisäyslajittelu (Insertion-sort)...55 2.2.7 Tehokkuusnäkökohtia...57 2.2.8 Yleiskäyttöinen lajittelufunktio...63 3 MERKKIJONOALGORITMIT...65 3.1 MERKIN PAIKKA MERKKIJONOSSA...66 3.2 MERKKIEN LUKUMÄÄRÄ MERKKIJONOSSA...67 3.3 MERKKIJONON ESITTÄMINEN KÄÄNTEISESSÄ JÄRJESTYKSESSÄ...68 3.4 KRYPTEERAUS ELI SALAKIRJOITUS...69 3.4.1 Klassiset menetelmät...69 3.4.2 Modernimmat salausmenetelmät...71 3.5 MUITA MERKKIJONO-OPERAATIOITA...74 3.5.1 Tietyn kirjaimen esiintyminen rivillä...74 3.5.2 Merkkijonon sisällön vaihtaminen...75 3.5.3 Kahden merkkijonon vertailu...76 3.5.4 Palindroma...77 3.5.5 Merkkijonon kirjainten muuttaminen isoiksi...77 3.5.6 Tyhjien alkumerkkien poistaminen...79 3.5.7 Tyhjien loppumerkkien poistaminen...81 3.6 PÄIVÄMÄÄRÄT...82 3.7 PARILLISET JA PARITTOMAT NUMEROARVOT...83 3.8 SOTU-TUNNUSOSAN TARKISTUSMERKIN MUODOSTUMINEN...84 3.9 MERKKI NUMEROKSI...85 3.10 MERKKIEN JA MERKKIJONOJEN KÄSITTELY TIEDOSTOISSA...86 4 MATEMAATTISET ALGORITMIT...98 4.1 KERTOMA...98 4.2 LIKIARVOJA...99 4.2.1 Neperin luvun (e) likiarvon laskeminen...99 4.2.2 e x, cos(x) ja sin(x) sarjakehitelmillä...100 4.3 DERIVAATTA, DIFFERENTIAALI JA YHTÄLÖT...101 4.3.1 Derivaatan likiarvo...102 4.3.2 Differentiaali...103 4.3.3 Differentiaaliyhtälön numeerinen ratkaiseminen...105

2 Sisällysluettelo 4.3.4 Toisen asteen yhtälö...106 4.3.5 Muut yhtälöt...107 4.3.6 Moniasteisen yhtälön kaikkien reaalijuurten etsintä...110 4.3.7 Neliöjuuren approksimointi...110 4.4 KOMPLEKSILUVUT JA VEKTORIT...112 4.4.1 Kompleksiluvut...112 4.4.2 Vektorit...113 4.5 ALKULUVUT, JAKOJÄÄNNÖS, PASCALIN KOLMIO, POTENSSI JA SYT...116 4.5.1 Alkuluvut...116 4.5.2 Jakojäännös...118 4.5.3 Luvun numeroiden lukumäärä...118 4.5.4 Pascalin kolmio...119 4.5.5 Potenssiin korotus...120 4.5.6 Kokonaislukujen suurin yhteinen tekijä (SYT)...122 4.6 TASOKUVION PINTA-ALAN LIKIARVO...123 4.6.1 Puolisuunnikaskaava...124 4.6.2 Simpsonin kaava pinta-alan likiarvon laskemiseksi...126 4.7 MURTOLUVUT JA POLYNOMIT...126 4.7.1 Murtoluvut...126 4.7.2 Polynomit...130 4.8 LIKIARVO π:lle SATUNNAISLUVUILLA...130 5 TILASTOLLISET LASKELMAT...132 5.1 KESKIARVO JA KESKIHAJONTA...132 5.1.1 Keskiarvo...132 5.1.2 Keskihajonta (normaalijakautuneen aineiston)...132 5.2 REGRESSIO JA KORRELAATIO...134 5.2.1 Regressio...134 5.2.2 Korrelaatio...137 5.3 KOMBINAATIOIDEN LUKUMÄÄRÄ...137 5.4 PERMUTAATIOIDEN LUKUMÄÄRÄ...150 5.5 KUMULATIIVINEN SUMMA...150 5.6 BITTIOPERAATIOT...151 6 ERIKOISALGORITMIT...155 6.1 HANOIN TORNIT...155 6.2 REKURSIIVISIÄ ALGORITMEJA...157 6.2.1 Kertoma rekursiolla...157 6.2.2 Fibonaccin luvut...158 6.2.3 SYT...160 6.2.4 Lukujen summa...161 6.2.5 Tyhjien alkumerkkien poistaminen merkkijonosta...161 7 TIETORAKENTEITA...163 7.1 LISTAT...163 7.2 PINO JA JONO...176 7.2.1 Pino...177 7.2.2 Jono...179 7.3 PUURAKENTEET...181 7.3.1 Binääripuu...183 8 HIEMAN ÄÄNISTÄ...191 8.1 MORSE-MERKIT...192 8.2 DISKREETTI FOURIER-MUUNNOS (DFT, DISCRETE FOURIER TRANSFORM)...194 8.2.1 DFT-muunnosparit...195 8.2.2 Nopeampi muunnoksen laskenta...200 9 GRAFIIKKA...205 9.1 KOLMIO...205 9.2 SUORA...206

Sisällysluettelo 3 9.3 YMPYRÄ...210 9.4 MUITA KÄYRIÄ...211 9.5 GEOMETRISET MUUNNOKSET...212 9.5.1 Siirto...212 9.5.2 Skaalaus...213 9.5.3 Kierto...214 9.6 REKURSIIVISET KUVIOT...215 9.7 BEZIER-KÄYRÄ...215 9.8 HIEMAN 3D-KUVIOISTA...216 10 LIIKETALOUDELLISIA ALGORITMEJA...218 10.1 INVESTOINTIEN KANNATTAVUUDEN ARVIOINTIMENETELMÄT...218 10.1.1 Nykyarvomenetelmä...218 10.1.2 Suhteellinen nykyarvomenetelmä...219 10.1.3 Sisäisen korkokannan menetelmä...219 10.1.4 Pääoman tuottoaste...220 10.1.5 Takaisinmaksuaika...220 10.2 MUITA TALOUDELLISIA LASKELMIA...220 10.2.1 Lainan takaisinmaksaminen...220 10.2.2 Koron korko...224 11 MUUNNOKSET JA TEKNISET LASKELMAT...226 11.1. CELSIUS-ASTEET FAHRENHEIT-ASTEIKSI...226 11.2. MITTAYKSIKÖIDEN MUUNNOKSET YLEENSÄ...226 11.2.1 ASCII-koodit...228 11.2.2 Aikayksikkömuunnos...230 11.2.3 Rahasumma rahayksiköiksi...232 11.2.4 Kuukausien nimien ilmoittaminen...233 11.2.5 Lukujärjestelmämuunnokset...234 12 SIMULOINTEJA JA KAAVOJA...239 12.1 LIIKENNEVALOJEN OHJAUS...239 12.2 NAKKIKIOSKIN ASIAKKAAT...241 12.3 TAIPUMAVIIVA...243 12.4 KEIHÄÄNHEITTO...244 13 OPERAATTOREIDEN YLIMÄÄRITTELYJÄ...248 13.1 OPERAATTORIN + YLIMÄÄRITTELY...248 13.2 JAKOLASKUOPERAATTORI (/)...253 13.3 OPERATOR++...254 13.4 OPERATOR UNSIGNED SHORT()...256 13.5 OPERATOR[]...257 13. 6 SYÖTÖN (>>) JA TULOSTUKSEN (<<) YLIMÄÄRITTELY...258 13.7 OPERATOR <...259 13.8 OPERATOR()...260 Muut operaattorit...262 LIITE1: C++-KIELI PÄHKINÄNKUORESSA...263 Perusteet lyhyesti...263 Luokka-käsite...272 HAKEMISTO...314

4 Sisällysluettelo