Kokonaislukuaritmetiikka vs. logiikkaluupit

Samankaltaiset tiedostot
Relaation ominaisuuksia. Ominaisuuksia koskevia lauseita Sulkeumat. Joukossa X määritelty relaatio R on. (ir) irrefleksiivinen, jos x Rx kaikilla x X,

Joukossa X määritelty relaatio R on. (ir) irrefleksiivinen, jos x Rx kaikilla x X,

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

Johdatus diskreettiin matematiikkaan Harjoitus 1,

Harjoitus 2: Ohjelmointi (Matlab)

Harjoitus 2: Ohjelmointi (Matlab)

8 Joukoista. 8.1 Määritelmiä

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

Ohjelmoinnin perusteet Y Python

Valitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukko oppi aksiomaattisesti.

BM20A0700, Matematiikka KoTiB2

Vektoreiden virittämä aliavaruus

Johdatus diskreettiin matematiikkaan Harjoitus 2, Osoita että A on hyvin määritelty. Tee tämä osoittamalla

811120P Diskreetit rakenteet

Matriisit, L20. Laskutoimitukset. Matriisikaavoja. Aiheet. Määritelmiä ja merkintöjä. Laskutoimitukset. Matriisikaavoja. Matriisin transpoosi

Numeeriset menetelmät

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

Matriisit, L20. Laskutoimitukset. Matriisikaavoja. Aiheet. Määritelmiä ja merkintöjä. Laskutoimitukset. Matriisikaavoja. Matriisin transpoosi

Insinöörimatematiikka D

Johdatus tekoälyn taustalla olevaan matematiikkaan

Ohjelmoinnin perusteet Y Python

Matematiikan tukikurssi

Insinöörimatematiikka D

Ratkaisuehdotukset LH 7 / vko 47

Matriisit, kertausta. Laskutoimitukset. Matriisikaavoja. Aiheet. Määritelmiä ja merkintöjä. Laskutoimitukset. Matriisikaavoja. Matriisin transpoosi

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

Ohjelmoinnin perusteet Y Python

Algoritmit 2. Luento 10 To Timo Männikkö

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Luento 5. Timo Savola. 28. huhtikuuta 2006

Ohjelmointiharjoituksia Arduino-ympäristössä

Muuttujien määrittely

Johdatus logiikkaan I Harjoitus 4 Vihjeet

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

Ohjelmoinnin perusteet Y Python

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Käänteismatriisin. Aiheet. Käänteismatriisin ominaisuuksia. Rivioperaatiot matriisitulona. Matriisin kääntäminen rivioperaatioiden avulla

TIETOTEKNIIKAN MATEMATIIKKA

Zeon PDF Driver Trial

PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2

Matriisilaskenta Laskuharjoitus 5 - Ratkaisut / vko 41

LU-hajotelma. Esimerkki 1 Matriisi on yläkolmiomatriisi ja matriisi. on alakolmiomatriisi. 3 / 24

Diskreetti matematiikka, syksy 2010 Harjoitus 7, ratkaisuista

Ohjelmoinnin peruskurssi Y1

8 KANNAT JA ORTOGONAALISUUS. 8.1 Lineaarinen riippumattomuus. Vaasan yliopiston julkaisuja 151

MS-A0402 Diskreetin matematiikan perusteet

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

ELEC-C5210 Satunnaisprosessit tietoliikenteessä Harjoitus M1,

Determinantit. Kaksirivinen determinantti. Aiheet. Kaksirivinen determinantti. Kaksirivinen determinantti. Kolmirivinen determinantti

Racket ohjelmointia osa 2. Tiina Partanen Lielahden koulu 2014

Harjoitus 3 -- Ratkaisut

Matlabperusteita, osa 1. Heikki Apiola Matlab-perusteita, osa 1. Heikki Apiola. 12. maaliskuuta 2012

Matriisilaskenta Luento 8: LU-hajotelma

Numeeriset menetelmät

Harjoitus 1: Matlab. Harjoitus 1: Matlab. Mat Sovelletun matematiikan tietokonetyöt 1. Syksy 2006

Ohjelmoinnin perusteet Y Python

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana

Algoritmit 1. Demot Timo Männikkö

Matematiikan johdantokurssi, syksy 2016 Harjoitus 11, ratkaisuista

Kurssikoe on maanantaina Muista ilmoittautua kokeeseen viimeistään 10 päivää ennen koetta! Ilmoittautumisohjeet löytyvät kurssin kotisivuilla.

Konsensusongelma hajautetuissa järjestelmissä. Niko Välimäki Hajautetut algoritmit -seminaari

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

MS-A0004/A0006 Matriisilaskenta

Ohjelmointi 2 / 2010 Välikoe / 26.3

811120P Diskreetit rakenteet

Algoritmit 2. Demot Timo Männikkö

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

Insinöörimatematiikka D

Matriisi-vektori-kertolasku, lineaariset yhtälöryhmät

Koodausteoria, Kesä 2014

Ratkaisuehdotukset LH 3 / alkuvko 45

keskenään isomorfiset? (Perustele!) Ratkaisu. Ovat. Tämän näkee indeksoimalla kärjet kuvan osoittamalla tavalla: a 1 b 3 a 5

Algoritmit 2. Luento 7 Ti Timo Männikkö

1 Kannat ja kannanvaihto

Yhtälöryhmä matriisimuodossa. MS-A0007 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

Matriiseista. Emmi Koljonen

. Kun p = 1, jono suppenee raja-arvoon 1. Jos p = 2, jono hajaantuu. Jono suppenee siis lineaarisesti. Vastaavasti jonolle r k+1 = r k, suhde on r k+1

Harjoitustyö: virtuaalikone

Käyttöohje alayksikkökoodiston tarkastamiseen ja täydentämiseen

Koodausteoria, Kesä 2014

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

Lineaarialgebra ja matriisilaskenta II Syksy 2009 Laskuharjoitus 1 ( ) Ratkaisuehdotuksia Vesa Ala-Mattila

Lineaarialgebra a, kevät 2019 Harjoitus 6 (ratkaisuja Maple-dokumenttina) > restart; with(linalg): # toteuta ihan aluksi!

Lineaarialgebra a, kevät 2018

Ohjelmoinnin peruskurssi Y1

811120P Diskreetit rakenteet

Matlab- ja Maple- ohjelmointi

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I

Talousmatematiikan perusteet: Luento 10. Lineaarikuvaus Matriisin aste Determinantti Käänteismatriisi

Python-ohjelmointi Harjoitus 2

Numeeriset menetelmät

ITKP102 Ohjelmointi 1 (6 op)

Matematiikan tukikurssi, kurssikerta 2

Oppimistavoitematriisi

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet, syksy 2006

PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2 3

Transkriptio:

Diskreetti matematiikka, syksy 2010 Matlab-harjoitus 3 (18.11. klo 16-18 MP103) Tehtäviin vastataan tälle paperille, osoitettuihin tyhjiin alueisiin, yleensä tyhjille riveille. Tehtävät saa ja on suorastaan toivottavaa ratkaista parityöskentelynä. Lataa Kurssimateriaalisivulta Diskreet2.zip ja pura se virtuaalilevysi juurikansioon X:. Käynnistä Matlab, siirry em. kansioon X:\DISKREET sekä aja M-skriptit alustus ja rel. Nyt sinun pitäisi olla hakemistossa X:\DISKREET\RELAATIO. Kokeile dir; silloin pitäisi listautua mm. Matlab-demojen 2 tehtävien ratkaisufunktiot ReflKo.m, SymmKo.m, AntisKo.m, TransKo.m, BT.m ja EkvivKo.m. Voit käyttää niitä jatkossa kutsumalla esimerkiksi» M = SatRel(6,6,40); M = M M ;» EkvivKo(M, )» type EkvivKo Kokonaislukuaritmetiikka vs. logiikkaluupit 1. Suorita seuraavat käskyrivit (kun olet yhden kirjoittanut, toiset voi helposti editoida; ylös- ja alasnuolilla voi rullata vanhoja käskyjä):» n=50; M = double(satrel(n,n)); N = double(satrel(n,n)); tic,sign(m*n);toc» n=50; M = SatRel(n,n); N = SatRel(n,n); tic, BT(M,N); toc» n=100; M = double(satrel(n,n)); N = double(satrel(n,n)); tic,sign(m*n);toc» n=100; M = SatRel(n,n); N = SatRel(n,n); tic, BT(M,N); toc» n=500; M = double(satrel(n,n)); N = double(satrel(n,n)); tic,sign(m*n);toc» n=500; M = SatRel(n,n); N = SatRel(n,n); tic, BT(M,N); toc Mitä tässä testattiin ja miten kävi? Relaatioiden sulkeumista 2. Kirjoita Matlab-funktiot a) ReflSulk ja b) SymmSulk, jotka laskevat ja palauttavat matriisina annetun relaation refleksiivisen ja symmetrisen sulkeuman. Aloita valitsemalla Matlabissa File, New ja M-file sekä kirjoita esimerkiksi (täydennä koodisi alle) function RS = ReflSulk(M); RS = function SS = SymmSulk(M); SS = Tallenna tuotoksesi funktiotiedostoiksi asianomaisilla nimillä (tarkenteena *.m) ja jätä editori käyntiin. Aja muutama testi niin, että arvot funktiolla SatRel matriisin, lasket funktiollasi sen sulkeumat ja katsot tuloksista sekä tarkastusfunktioilla ovatko oikein. Voit helposti tehdä useita testejä toistamalla vaikkapa käskyrivejä:» M = SatRel(5,5,20), R = ReflSulk(M), S = SymmSulk(M)» ReflKo(R, ), SymmKo(S, ) 1

3. Tehdään funktio TrSulk2, joka laskee ja palauttaa matriisina annetun relaation transitiivisen sulkeuman. Aloitetaan (lyhyyden vuoksi, älä nyt kirjoita kommentteja): function TS = TrSulk2(M); [m,n] = size(m); if (m == n) M = double(m); % matriisi numeeriseksi I = eye(n); % yksikkömatriisi TS = M; % alustus, suoraan M for i = 1:(n-1) % periaatteessa TS = M + M^2 + M^3 +.. + M^n, TS = sign(m * (I + TS)); % mutta lasketaan vähän nopeammalla tavalla % TS = M(I+M(I+M(...M(I+M))) TS = logical(ts); % positiiviset tosiksi else disp( relaation matriisin pitää tässä olla nxn ) Lopuksi tuote nimelle TrSulk2.m. Testaa nyt funktiota ja sen toiminnan nopeutta erikokoisilla matriiseilla: n = 10, n = 50, n = 100, n = 150, n = 200, n = 250, n = 300, ehkä jopa n = 500. Voit esimerkiksi toistaa riviä eri arvoilla n:» n = 10; M = SatRel(n,n,10); tic; T = TrSulk2(M); toc, TransKo(T) Testin ja seuraavan tehtävän testin tulokset taulukkoon: n 10 50 100 150 200 250 300 500 TrSulk2 aika TrSulk aika 4. Vielä nopeammin transitiivinen sulkeuma löytyy koodilla [m,n] = size(m); TRS = logical(m); for j = 1:n % käydään matriisin luvut läpi sarakkeittain for i = 1:n % ylhäältä alas, vasemmalta oikealle if (TRS(i,j) == 1) % jos nuoli i --> j, yhdistetään i nuolella TRS(i,:) = TRS(i,:) TRS(j,:); % kaikkiin niihin, joihin j:stä on nuoli Kirjoita tämä funktioksi TrSulk.m ja testaa kuten yllä, tulokset taulukkoon. 5. Kirjoita edellisten avulla Matlab-funktio EkvSulk, joka laskee äärellisen relaation matriisista lähtien kyseisen relaation ekvivalenssisulkeuman. 6. Generoi funktiolla SatRel sellainen (tai useitakin) 10 10-relaatio R [10] [10], jonka ekvivalenssisulkeumassa R e on enemmän kuin kymmenen nuolta, mutta kyseessä ei ole koko joukko [10] [10]. Saatat joutua arpomaan useita ehdokkaita, ja valita ykkösten osuuden sopivaksi. Piirrä relaatio R ja sen ekvivalenssisulkeuma R e piirtofunktiolla PiirRel1. Voit piirtää ensin sulkeuman ja sitten päälle alkuperäisen toisella värillä, esimerkiksi seuraavasti: 2

» M=SatRel(10,10,5);T=EkvSulk(M);EkvivKo(T, ),PiirRel1(T),PiirRel1(M, -g ) Mitä havaitset nuolikaavioesityksistä, paljonko on hyvä ykkösprosentti? 3

Järjestysrelaatioista Matlabin funktiota voidaan kutsua vähemmälläkin määrällä parametreja kuin funktion määrittely edellyttäisi. Tämä antaa mahdollisuuden määritellä funktio niin, että sen toiminta riippuu parametrien lukumäärästä. Esimerkiksi funktio SatRel toimii jo kahdellakin parametrilla m ja n (rivejä ja sarakkeita), jolloin ykkösten osuudelle käytetään oletusarvoa 50 (prosenttia), mutta mahdollisesti annettu optionaalinen kolmas parametri tulkitaan prosenttimääräksi. Samoin yllä EkvivKo-funktiolle voidaan antaa optionaalinen parametri, vaikkapa tyhje. Kutsun sisältämien parametrien määrän ilmoittaa (funktion sisällä) Matlabin muuttuja nargin (number of input arguments?). Itse funktion toiminta on siis suunniteltava muuttujan nargin arvosta riippuvaksi, esimerkiksi käyttäen rakennetta if (nargin == 3)... 7. Muodosta seuraavanlaiset Matlab-funktiot, jotka optionaalisella toisella parametrilla kutsuttaessa myös tulostavat tekstinä kyseisen ominaisuuden, jos se on voimassa. Voit tietenkin käyttää jo olemassaolevia funktioitamme. a) JarjKo, joka lähtötietonaan relaation matriisi palauttaa arvon 1 (tosi), jos ja vain jos relaatio on osittainen järjestys. b) TaysiKo, joka lähtötietonaan relaation matriisi palauttaa arvon 1 (tosi) jos ja vain jos relaatio on täysi. Vihjeeksi: kokeile» M = true(5,5)» all(all(m M ))» M(1,2) = false; M(2,1) = false» all(all(m M )) Testaa funktiotasi! Voit ladata testimatriiseja käskyllä (load jarjtest.mat). Millaisia ovat testimatriisien edustamat relaatiot? 8. Muodosta edellisten kanssa yhteensopiva funktio TaydJarjKo, joka selvittää onko matriisilla esitettävä relaatio täydellinen järjestys. Millaisia ovat testimatriisien edustamat relaatiot? 9. Muodosta funktio Minimaaliset, joka etsii järjestysrelaation minimaaliset alkiot, ts. ne, joita pienempiä ei ole. Kokeile koodia:» M = SatRel(10,10)» M = M & ~diag(diag(m));» find(~any(m )) Lataa relaatio.mat ja määritä relaatioiden ojarj ja tjarj minimaaliset alkiot. 10. Muodosta funktio Maksimaaliset, joka palauttaa järjestysrelaation maksimaaliset alkiot, kun lähtötietona annetaan relaation matriisi. 4

Satunnaisrelaatioiden manipulointia (bonustehtäviä) 10. Muodosta Matlab-funktio AntisymmSoi, joka muuttaa (vaikkapa osin satunnaisestikin) annetun n n-logiikkamatriisin antisymmetriseksi, ts. matriisiksi, joka esittää antisymmetristä relaatiota. Voit käyttää koodia: AS = logical(m); for i = 1:n % käydään läpi diagonaalin for j = (i+1):n % yläpuoliset alkiot: if (AS(i,j) & AS(j,i)) % jos symmetrisesti ykkösiä, toinen AS(i,j) = (rand > 0.5); % nollaksi arpomalla AS(j,i) = ~AS(i,j);... Testaa funktiotasi funktiolla AntisKo. 11. Muodosta Matlab-funktio SatAntis, joka lähtötietonaan relaation matriisin dimensio ja prosenttiluku (optionaalisena, oletusarvoksi esim. 50), muodostaa satunnaisen antisymmetrisen relaation matriisin. Voit käyttää apuna Tehtävän 10 funktiotasi sekä aiempaa funktiota SatRel. 5