ELEC-C5210 Satunnaisprosessit tietoliikenteessä Harjoitus M1,

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

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

Matemaattiset ohjelmistot A. Osa 2: MATLAB

Matlab- ja Maple- ohjelmointi

Zeon PDF Driver Trial

Valitse ruudun yläosassa oleva painike Download Scilab.

Harjoitus 2: Matlab - Statistical Toolbox

Tässä dokumentissa on ensimmäisten harjoitusten malliratkaisut MATLABskripteinä. Voit kokeilla itse niiden ajamista ja toimintaa MATLABissa.

Miten voidaan arvioida virheellisten komponenttien osuutta tuotannossa? Miten voidaan arvioida valmistajan kynttilöiden keskimääräistä palamisaikaa?

Matematiikan kotitehtävä 2, MAA 10 Todennäköisyys ja tilastot

Matematiikan kotitehtävä 2, MAA 10 Todennäköisyys ja tilastot

Harjoitus 8: Monte-Carlo simulointi (Matlab)

Matlabin perusteita Grafiikka

Harjoitus 8: Monte Carlo -simulointi (Matlab)

Harjoitus 8: Monte-Carlo simulointi (Matlab)

3. laskuharjoituskierros, vko 6, ratkaisut

(b) Tarkista integroimalla, että kyseessä on todella tiheysfunktio.

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

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

5. laskuharjoituskierros, vko 8, ratkaisut

Johdatus todennäköisyyslaskentaan Momenttiemäfunktio ja karakteristinen funktio. TKK (c) Ilkka Mellin (2005) 1

805324A (805679S) Aikasarja-analyysi Harjoitus 3 (2016)

805324A (805679S) Aikasarja-analyysi Harjoitus 4 (2016)

Matlab-perusteet Harjoitustehtävien ratkaisut

2. Jatkoa HT 4.5:teen ja edelliseen tehtavään: Määrää X:n kertymäfunktio F (x) ja laske sen avulla todennäköisyydet

mlvektori 1. Muista, että Jacobin matriisi koostuu vektori- tai skalaariarvoisen funktion F ensimmäisistä

Johdatus tn-laskentaan torstai

Sovellettu todennäköisyyslaskenta B

plot(f(x), x=-5..5, y= )

Matriisilaskenta Laskuharjoitus 1 - Ratkaisut / vko 37

Moottorin kierrosnopeus Tämän harjoituksen jälkeen:

Ilkka Mellin Todennäköisyyslaskenta. Osa 2: Satunnaismuuttujat ja todennäköisyysjakaumat. Momenttiemäfunktio ja karakteristinen funktio

Luento 4. Timo Savola. 21. huhtikuuta 2006

T Sovellusohjelmat Matlab osa 4: Skriptit, funktiot ja kontrollirakenteet

Luento 5. Timo Savola. 28. huhtikuuta 2006

5/11 6/11 Vaihe 1. 6/10 4/10 6/10 4/10 Vaihe 2. 5/11 6/11 4/11 7/11 6/11 5/11 5/11 6/11 Vaihe 3

Heikki Apiola, Juha Kuortti, Miika Oksman. 5. lokakuuta Matlabperusteita, osa 1

. 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

MS-A0503 Todennäköisyyslaskennan ja tilastotieteen peruskurssi

Harjoitus 2: Ohjelmointi (Matlab)

Harjoitus 2: Ohjelmointi (Matlab)

Harjoitus 4 -- Ratkaisut

Käytetään satunnaismuuttujaa samoin kuin tilastotieteen puolella:

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

MS-A0501 Todennäköisyyslaskennan ja tilastotieteen peruskurssi

Kokonaislukuaritmetiikka vs. logiikkaluupit

Matlab-perusteet. Jukka Jauhiainen. OAMK / Tekniikan yksikkö. Hyvinvointiteknologian koulutusohjelma

Ohjelmoinnin perusteet Y Python

Luento KERTAUSTA Kaksiulotteinen jakauma Pisteparvi, Toyota Avensis -farmariautoja

Harjoitus 10: Mathematica

MATLABin alkeita J.Merikoski JYFL 2009 fysp120

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

Estimointi. Vilkkumaa / Kuusinen 1

Harjoitus 2 -- Ratkaisut

Mat Sovellettu todennäköisyyslasku A

Harjoitus 2 -- Ratkaisut

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 1 / vko 44

Matemaattiset ohjelmistot 1-2 ov, 2-3 op

Tilastomatematiikka Kevät 2008

Talousmatematiikan perusteet: Luento 17. Integraalin sovelluksia kassavirta-analyysissa Integraalin sovelluksia todennäköisyyslaskennassa

2 exp( 2u), kun u > 0 f U (u) = v = 3 + u 3v + uv = u. f V (v) dv = f U (u) du du f V (v) = f U (u) dv = f U (h(v)) h (v) = f U 1 v (1 v) 2

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

Todennäköisyyslaskun kertaus. Vilkkumaa / Kuusinen 1

Ohjelmoinnin perusteet Y Python

Tehtäväsarja I Tehtävät 1-5 perustuvat monisteen kappaleisiin ja tehtävä 6 kappaleeseen 2.8.

Tutkimustiedonhallinnan peruskurssi

ITKP102 Ohjelmointi 1 (6 op)

MS-A0503 Todennäköisyyslaskennan ja tilastotieteen peruskurssi

Osa 2: Otokset, otosjakaumat ja estimointi

Harjoitus 3 -- Ratkaisut

Mat Sovellettu todennäköisyyslasku A

Muuttujan sisällön näet kirjoittamalla sen nimen ilman puolipistettä

Sovellettu todennäköisyyslaskenta B

Ohjelmassa on käytettävä funktiota laskeparkkimaksu laskemaan kunkin asiakkaan maksu. Funktio floor pyöristää luvun lähimmäksi kokonaisluvuksi.

Juuri 10 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty

Sovellettu todennäköisyyslaskenta B

Ohjelmoinnin peruskurssi Y1

811120P Diskreetit rakenteet

Todennäköisyysjakaumia

Tieteellinen laskenta 2 Törmäykset

Laskuharjoitus 2 ( ): Tehtävien vastauksia

Satunnaismuuttujien muunnokset ja niiden jakaumat

H0: otos peräisin normaalijakaumasta H0: otos peräisin tasajakaumasta

811120P Diskreetit rakenteet

MS-A0501 Todennäköisyyslaskennan ja tilastotieteen peruskurssi

Säätötekniikan matematiikan verkkokurssi, Matlab tehtäviä ja vastauksia

Ohjelmoinnin perusteet Y Python

Mathematica Sekalaista asiaa

Valokuvien matematiikkaa

Tilastolliset jakaumat, niiden esittäminen ja tunnusluvut

Poisson-prosessien ominaisuuksia ja esimerkkilaskuja

Python-ohjelmointi Harjoitus 5

Taulukot. Jukka Harju, Jukka Juslin

ABHELSINKI UNIVERSITY OF TECHNOLOGY

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Johdatus todennäköisyyslaskentaan Satunnaismuuttujien muunnokset ja niiden jakaumat. TKK (c) Ilkka Mellin (2004) 1

Ohjelmoinnin perusteet Y Python

linux linux: käyttäjän oikeudet + lisää ja - poistaa oikeuksia

Transkriptio:

ELEC-C5210 Satunnaisprosessit tietoliikenteessä Harjoitus M1, 16.3.2017 1. Syntaksista, vektoreista ja matriiseista: Tehtävän eri kohdat on tehtävä järjestyksessä. Myöhemmissä kohdissa oletetaan, että aiemmin määritellyt muuttujat ovat yhä muistissa. a) Kokeile mitä seuraavat komennot tekevät: a = [1,2,3] b = [4;5;6] C = [1,2,3; 4,5,6; 7,8,9]; C.' d = [a; b.'; C].' d(:) Huomaa, että voit estää tuloksen näkymisen ruudulla lopettamalla komennon puolipisteeseen. Kokeile, mitä komennot length, size ja numel kertovat äsken määritellyistä vektoreista ja matriiseista (esim. length(a)). b) Tutkitaan erilaisia vektoreiden kertolaskuoperaatioita. Selvitä, mitä eroa on komennoilla: a*b b*a a.*b.' c) Esimerkkejä kompleksisten muuttujien käsittelystä: z = a(:)+1i*b(:) x = real(z) y = imag(z) Mitä eroa on seuraavilla komennoilla? z' z.' conj(z) d) Tutustu matriisin alkioihin viittaamiseen: C(:,1) C(2,:) C(3,3) C(4) diag(c) diag(c(:,1)) Matriisin alkioihin voi viitata myös niin kutsuttujen loogisten matriisien avulla. Kokeile ensin komentoja: 1

C>=5 D = C<6 & C =2 Yllä mainitut komennot generoivat loogisen matriisin. Koeta nyt viitata matriisin alkioihin käyttäen loogisia matriiseja: C(D) C(C>5 C==1) C(isprime(C)) Testaa, toimiiko seuraava viittaus: E = [1,0,1; 1,1,0; 0,0,0]; C(E) Mitä eroa on matriiseilla D ja E? Kokeile komentoja whos D ja whos E. e) Kokeile vielä seuraavia komentoja: clc zeros(2,3) ones(4,1) eye(3) linspace(0,10,6) v = 0:0.2:1.8 reshape(v,2,5) F = repmat(a,4,1) F - ones(4,1)*a Voit kutsua työmuistissa (Workspace) olevia muuttujia kirjoittamalla kyseisen muuttujan nimen. Viimeisimmän kohteettoman komennon tulos tallentuu ans nimiseen muuttujaan. Työmuistin voi tyhjentää clear komennolla. Voit kirjoittaa help komento tai doc komento saadaksesi tietoa komennon käytöstä. Kirjoittamalla komennon help? saat esiin hyödyllisen listan MATLABin eri operaattoreista sekä linkit niiden dokumentaatioihin. 2. Funktiot, skriptit ja kuvaajat: MATLAB-koodia voidaan suorittaa suoraan komentoriville kirjoittamalla. Suositeltavampaa on kuitenkin kirjoittaa koodi joko funktioksi tai skriptiksi tiedostoihin, jolloin koodia voi helposti muokata ja ajaa uudelleen. a) Avaa MATLABin tekstieditori komennolla edit. Kirjoita seuraava funktio, ja tallenna se rayleighpdf.m nimiseen tiedostoon: function rpdf = rayleighpdf(x,sigma) x(x<0) = 0; rpdf = (x/sigmaˆ2).*exp(-x.ˆ2/(2*sigmaˆ2)); Ajetaan funktio ja piirretään kuva antamalla seuraavat komennot: x = 0:0.01:10; y = rayleighpdf(x,2); plot(x,y); 2

b) Tutustutaan seuraavaksi muutamiin tapoihin, joilla edellisessä kohdassa tuotetun kuvan ulkoasua voidaan muokata. Komennolle plot voidaan antaa syötteinä esimerkiksi haluttu viivatyyli. Kokeile seuraavia vaihtoehtoja: plot(x,y,'r'); plot(x,y,':','color',[0,0.5,0]); plot(x,y,'b--','linewidth',2); hold on; plot(x(1:30:),y(1:30:),'bo','markersize',6,'linewidth',2); Komento grid lisää kuvan taustalle koordinaattiviivat. Kuva ja sen akselit voidaan otsikoida seuraavasti: title('rayleigh-jakauman tiheysfunktio (\sigma=2)'); xlabel('x'); ylabel('f(x)'); Akselien alku- ja loppupisteitä voidaan muuttaa muun muassa komennoilla xlim, ylim ja axis. Kokeile komentoa xlim([0,8]). c) Kirjoitetaan seuraavaksi skripti, joka hyödyntää aiemmin määriteltyä funktiota ja plottaa käyrän useammalla eri parametrin σ arvolla samaan kuvaan. Tallenna alla annettu skripti tiedostoon rayleighplot.m: clear all; sigma = [0.5,1:4]; x = 0:0.01:10; N = length(sigma); y = zeros(n,length(x)); sigma str = cell(n,1); solutaulukko kayrien selitteille Lasketaan kayrat eri parametrin arvoilla matriisiin y ja maaritetaan kayrien selitteet solutaulukkoon for k=1:n y(k,:) = rayleighpdf(x,sigma(k)); sigma str{k} = ['\sigma=',num2str(sigma(k))]; plot(x,y,'linewidth',2); grid; title('rayleigh-jakauman tiheysfunktio','fontsize',16); xlabel('x'); ylabel('f(x)'); h leg=leg(sigma str); set(h leg,'fontsize',20) Aja skripti painamalla F5-näppäintä. Käy skripti läpi siten, että ymmärrät kaikki siinä käytetyt komennot. Käytä komentoa help, jos tarvitset lisää tietoa jostain skriptin komennoista. Skriptissä on lisätty kuvaan käyrien selitteet komennolla leg. Tälle komennolle on annettu syötteenä solutaulukko. Yhteen solutaulukkoon voi tallentaa useampia erityyppisiä muuttujia. Se soveltuu hyvin esimerkiksi useampien eripituisten merkki- 3

jonojen kanssa käytettäväksi. Solutaulukon soluihin viitataan kuten matriisin alkioihinkin, mutta solujen sisältöön viitataan käyttäen aaltosulkeita. Tämän eron huomaa esimerkiksi komennoilla iscell(sigma str(1)) ja iscell(sigma str{1}). Voit koettaa komentoa ischar vastaavilla syötteillä. Käyrien selitteet voi asettaa myös komennolla: leg(merkkijono1,merkkijono2,merkkijono3,...); Yllä olevassa skriptissä käytetään myös for-silmukkaa. Muita silmukka- ja ehtorakenteita, joita voi hyödyntää skripteissä, ovat while, if ja switch. Näiden syntaksiin voi tutustua tarvittaessa tarkemmin dokumentaation avulla. Kaikki kurssin MATLAB-tehtävät kannattaa jatkossa tallentaa omiin tiedostoihinsa skripteinä. Kirjoittamasi funktiot kannattaa tallentaa yhteen hakemistoon. Funktioita voi myöhemmin kutsua työhakemistosta riippumatta, jos lisäät hakemiston MATLABin polkuun komennolla addpath hakemiston polku; Kirjoittaessasi koodia on järkevää kommentoida mahdollisimman tarkasti, mitä mikäkin rivi tekee. MATLABissa -merkillä saa kommentoitua loppurivin. Skripteissä kannattaa yleensä kirjoittaa ensimmäiseksi komennoksi clear all, joka poistaa muistista kaikki muuttujat. Tämä varmistaa sen, että skriptiä voi ajaa monta kertaa peräkkäin ilman ongelmia. 3. Satunnaisluvut ja tiheysfunktiot: MATLABissa on valmiina monia funktioita satunnaislukujen generointiin eri jakaumista. Tässä tehtävässä tutustutaan muutamaan yleisimmin tarvittaviin. Tiettyyn jakaumaan liittyviä funktioita voi etsiä kätevimmin komennon doc avulla. a) Komento rand(m,n) generoi M N-matriisin tasajakautuneita satunnaislukuja väliltä (0, 1) eli jakaumasta Tas(0, 1). Miten saat generoitua tasajakautuneita lukuja väliltä (0, 2)? Entä väliltä ( 1, 0) tai väliltä ( 2, 5)? b) Muita usein käytettyjä komentoja ovat randi, joka generoi tasajakautuneita kokonaislukuja, sekä randn, jolla tuotetaan satunnaislukuja standardi normaalijakaumasta eli N (0, 1) jakaumasta. Selvitä itsellesi, miten näitä komentoja käytetään. Miten saat generoitua normaalijakautuneita lukuja esimerkiksi odotusarvolla µ = 2 ja keskihajonnalla σ = 1.5? Tarkastele generoimiesi lukujen jakaumaa komennolla hist. c) Tutustu valmiiksi annetun funktion estpdf toimintaan. Funktion avulla voi estimoida ja piirtää empiirisen tiheys- tai kertymäfunktion annetulle datajoukolle. Funktiota tullaan käyttämään sekä tämän harjoituksen kotitehtävissä että myöhemmissä MATLABharjoituksissa. function [f,x] = estpdf(data,type,varargin) ESTPDF Empiirinen tiheys- ja kertymäfunktio [f,x] = estpdf(data) laskee empiirisen tiheysfunktion f havaintoaineistosta data siten, että laskennassa käytettävä jakoväli on 2*IQR*Nˆ(-1/3), missä N on havaintojen lukumäärä 4

ja IQR havaintojoukon kolmannen ja ensimmäisen kvartiilin erotus. Laskentavälien keskipisteet palautetaan vektorissa x. [f,x] = estpdf(data,type), jossa type on joko 'pdf' tai 'cdf' määrittää lasketaanko tiheysfunktio vai kertymäfunktio. [f,x] = estpdf(data,type,m) määrittää laskentavälien lukumääräksi M. estpdf(data,...) plottaa tiheys- tai kertymäfunktion. estpdf(data,type,style) tai estpdf(data,type,m,style) käyttää plottauksessa viivatyyliä style (oletusarvo: 'b-.'). Parametrin style tilalla tai sen jälkeen voidaan antaa vastaavia parametri/arvo -pareja kuin plot-komennollekin. Esimerkiksi estpdf(data,'cdf','r--','linewidth',2) plottaa empiirisen kertymäfunktion määrittäen itse sopivan laskentapisteiden määrän ja käyttäen punaista katkoviivaa leveydeltään 2. data = data(:); N = length(data); if nargin<2 type = 'pdf'; Määritetään laskentapisteiden lukumäärä if nargin>2 && ischar(varargin{1}) Nbins = varargin{1}; if nargin>3 varargin = varargin(2:); else Nbins = ceil(range(data)/(2*iqr(data)*nˆ(-1/3))); Lasketaan empiirinen jakauma (normalisoimaton) [pdf,x] = hist(data,nbins); Lasketaan pisteväli dx = x(2)-x(1); Normalisoidaan tiheysfunktio pdf = pdf/(n*dx); Lisätään alkuun ja loppuun pisteet, joissa tiheysfunktio on nolla. Myös kertymäfunktio saadaan näin alkamaan nollasta. x = [x(1)-dx,x,x()+dx]; pdf = [0,pdf,0]; Lasketaan kertymäfunktio cdf = cumsum(pdf)/sum(pdf); Valitaan palautetaanko tiheys- vai kertymäfunktio. Koska kumulatiivinen summa päättyy aina laskentavälin loppuun, mutta x sisältää välien keskipisteet, täytyy myös vektoria x siirtää. switch type case 'pdf' fnct = pdf; case 'cdf' fnct = cdf; 5

x = x+dx/2; Plotataan tai palautetaan laskettu funktio if nargout==0, if nargin<3 ischar(varargin{1}) varargin{1} = '-b.'; plot(x,fnct,varargin{:}); else f = fnct; 4. Generoi n = 10 000 satunnaislukua eksponenttijakaumasta Exp(λ = 1/µ) parametrilla µ = E[X] = 2. Käytä MATLAB-komentoa exprnd. Piirrä samaan kuvaan empiirinen tiheysfunktio, empiirinen kertymäfunktio, todellinen tiheysfunktio ja todellinen kertymäfunktio. Käytä valmiiksi annettua funktiota estpdf empiirisen tiheys- ja kertymäfunktion laskemiseen. Anna estpdf-funktion päättää jakauman tarkastelupisteiden lukumäärä. Älä käytä MATLABin valmiita funktioita (exppdf, expcdf) tiheys- ja kertymäfunktion laskemiseen vaan kirjoita koodi itse. Eksponenttijakauman tiheysfunktio on { 1 x µ f(x) = e µ, x 0 0, muulloin, missä µ > 0. Johda eksponenttijakauman kertymäfunktio tiheysfunktiosta integroimalla kynän ja paperin avulla. Plottaa kaikki käyrät samaan kuvaan (komento: hold) eri viivatyyleillä (ks. eri viivatyylit dokumentaatiosta: help plot). Lisää kuvaan otsikko ja x- ja y-akselien nimet (title, xlabel, ylabel). Lisää vielä lopuksi kuvaan selitteet, joista näkee, mitä kukin käyrä edustaa (leg). 5. Heitetään tasapuolista kolikkoa (H = kruuna ja T = klaava), kunnes saadaan ensimmäisen kerran tietty 3 heiton pituinen jono, esim. HT T. Tällöin esimerkiksi, jos kolikonheittosarja olisi HT HHT HHHT T, heittojen lukumäärä olisi 10. a) Simuloi 100000 yllä kuvattua satunnaiskoetta MATLAB:lla ja laske keskimääräinen heittojen lukumäärä, kunnes saadaan jono HT H. Yksittäinen satunnaiskoe siis loppuu, kun jono HT H esiintyy ensimmäisen kerran, minkä jälkeen aloitetaan uusi satunnaiskoe tyhjästä. Laske ja piirrä myös tarvittavien heittojen histogrammi. b) Simuloi 100000 yllä kuvattua satunnaiskoetta MATLAB:lla ja laske keskimääräinen heittojen lukumäärä, kunnes saadaan jono HT T. Laske ja piirrä myös tarvittavien heittojen histogrammi. 6