Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)



Podobné dokumenty
Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Př. program s popojíždějícím autíčkem o 50 pixelů při každém stisku Popojeď

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)

Indexové seznamy. známe už pole, kde ale musí být předem známa velikost indexové seznamy umí růst dynamicky

Nejzajímavější jsou události MouseDown a KeyDown.

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Pro kontrolu správného formátu hodnoty N použijeme metodu try-catch.

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Aplikace pro vykreslování grafů elementárních funkcí

Objekty jako zapozdření dat. začneme vytvářet vlastní objekty a třídy

POLE. - datová struktura ze složek stejného typu, ke kterým se přistupuje pomocí indexů

Náhodná a pseudonáhodná čísla

Metodický list k didaktickému materiálu

Středoškolská odborná činnost. Obor SOČ: 1. Matematika a statistika GRAFY FUNKCÍ

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Desetinná čísla. pro celá čísla jsme používali typ int. pro desetinná čísla používáme typ double

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Rovnice přímek v rovině

Evropská obchodní akademie, Děčín I, Komenského náměstí 2, příspěvková organizace IČ tel

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Pokročilá práce s proměnnými

Jazyk C# a platforma.net

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Metodický list k didaktickému materiálu

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Takto chápanému druhu objektů se říká TŘÍDA.

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Jazyk C# - přístup k datům

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Podmíněné vykonávání

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

prostřednictvím ICT Téma didaktického materiálu RNDr. Václava Šrůtková

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Větvení programů příkaz IF

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Jazyk C# - přístup k datům

Jazyk C# - přístup k datům

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Metodický list k didaktickému materiálu

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Komplexní čísla, Kombinatorika, pravděpodobnost a statistika, Posloupnosti a řady

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Komponenty v.net. Obsah přednášky

UŽIVATELSKÉ ROZHRANÍ WINDOWS-FORM DESKTOPOVÉ APLIKACE - CVIČENÍ

Tabulková data. budeme pracovat s CSV soubory položky oddělené středníkem, např.

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Java - Kresba. 2/28/11 1/8 Java - kresba

ROZDĚLENÍ SPOJITÝCH NÁHODNÝCH VELIČIN

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Jazyk C# a platforma.net

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Dědičnost. seskupování tříd do hierarchie. potomek získá všechny vlastnosti a metody. provádí se pomocí dvojtečky za názvem třídy.

Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace. Maturitní otázky z předmětu INFORMATIKA A VÝPOČETNÍ TECHNIKA

Jazyk C# (seminář 7)

Určete zákon rozložení náhodné veličiny, která značí součet ok při hodu a) jednou kostkou, b) dvěma kostkami, c) třemi kostkami.

Teoretická rozdělení

Náhodný vektor a jeho charakteristiky

MRBT. Stacionární průmyslový robot EPSON C3 aplikace pro prezentaci

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

Vybraná rozdělení náhodné veličiny

Induktivní statistika. z-skóry pravděpodobnost

Základní práce v souborovém manažeru

Pravděpodobnost a statistika

Střední průmyslová škola strojnická Olomouc, tř. 17. listopadu 49. Výukový materiál zpracovaný v rámci projektu Výuka moderně

Vytváření a použití knihoven tříd

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Diskrétní náhodná veličina. November 12, 2008

Cvičné příklady Hodina 2

Kombinatorika, pravděpodobnost a statistika, Posloupnosti a řady

IRAE 07/08 Přednáška č. 10

Rozklad na prvočinitele. 3. prosince 2010

Přednáška. Další rozdělení SNP. Limitní věty. Speciální typy rozdělení. Další rozdělení SNP Limitní věty Speciální typy rozdělení

Hry s kostkami v jazyce C#

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Fyzikální korespondenční seminář MFF UK

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

Všechno, co jste chtěli vědět z teorie pravděpodobnosti, z teorie informace a

KGG/STG Statistika pro geografy

Transkript:

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz) Autor: Radek Vystavěl Díl 5: Náhoda Původ a význam Gaussova rozdělení MATEMATIKA O pravděpodobnostech při hodu jednou kostkou říkáme, že jsou rovnoměrně rozděleny. Každé číslo má stejnou pravděpodobnost, že bude hozeno. Ve třetím dílu tohoto seriálu jsme zase studovali trojúhelníkové rozdělení pravděpodobnosti vznikající při hodu dvěma kostkami. Asi nejznámějším rozdělením pravděpodobnosti je však rozdělení Gaussovo, které nalézáme při studiu četností různých jevů ve fyzice, v technice, v biologii, v psychologii atd. Gaussovo rozdělení je dáno funkcí p ( x µ ) σ ( x) = e σ π kde µ je střední hodnota a σ rozptyl. Grafem této funkce je známá zvonovitá křivka (idealizovaná hora Říp). Přestože tuto křivku leckdo zná, ne každý ví, odkud se bere. Proč se vlastně v přírodě vyskytuje tak často? Odpovědí je tzv. centrální limitní věta, která říká, že Gaussovo rozdělení je limitním rozdělením pravděpodobnosti součtu mnoha náhodných veličin, přičemž jednotlivé náhodné veličiny mohou být takřka libovolné. Právě taková situace nastává velice často. Nějaká veličina, jejíž četnosti sledujeme, je často daná současným působením mnoha různých faktorů. Bez ohledu na to, že jsou různě veliké, různě rozdělené, v součtu vznikne rozdělení Gaussovo. Navzdory svému zásadnímu významu se centrální limitní věta na středních školách obvykle nevyučuje. Možná je to dáno složitostí matematického důkazu, možná něčím jiným. My však máme počítač a můžeme si její platnost ověřit vlastním programem. Připravíme program, který bude sledovat četnost součtu při 00 hodech kostkou. Z výsledků sestavíme histogram, do kterého pro srovnání zakreslíme Gaussovu křivku s příslušnou střední hodnotou a rozptylem.

VYKRESLENÍ GAUSSOVY KŘIVKY Pro správný zákres Gaussovy křivky potřebujeme určit střední hodnotu a rozptyl součtu při sto hodech kostkou. Pro hod jednou kostkou je střední hodnota a rozptyl σ 6 = i= µ = i 6 3,5 6 = ( i µ ) =,96 6 i= Pro součet 00 hodů bude střední hodnota a rozptyl Histogram četností odpovídá hodnotám µ = 00 µ 00 = 350 σ 00 = 00 σ = 9,6 / i / N p( x) kde N je počet všech pokusů (počet všech realizací součtu sta hodnot). Vzhledem k malým změnám hodnot p(x) na intervalu délky lze integrál přibližně vyjádřit jako: / i / N p( x) N p( i) / i / = N p( i) Jinými slovy, budeme vykreslovat přímo hodnoty funkce p násobenou celkovým počtem náhodných pokusů.

TECHNICKÉ OTÁZKY NA PLATFORMĚ.NET/C# Histogram i křivku budeme kreslit prostředky vektorové grafiky. Ta se vždy realizuje v obsluze události Paint okna programu nebo panelu. Na začátku obslužné metody je třeba získat odkaz na objekt kreslicí plochy dotazem na e.graphics. Pro tento objekt lze poté volat různé grafické metody (FillRectangle, DrawLine ap.). ŘEŠENÍ Uvádím hlavní zdrojový kód řešení (Form.cs ze standardní šablony): using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; namespace Gaussovo_rozdělení public partial class oknoprogramu : Form // Pole pro tabulku četností int[] kolikrát = new int[60]; int početopakování = 0000; // Generátor Random náhoda = new Random(); public oknoprogramu() InitializeComponent(); private void tlačítkoházej_click(object sender, EventArgs e) // Vynuluj tabulku četností Array.Clear(kolikrát, 0, kolikrát.length); // Opakuj součet for (int opakování = ; opakování <= početopakování; opakování++) // Stanov součet 00 hodů int součet = 0; for (int počet = ; počet <= 00; počet++) int hozenéčíslo = náhoda.next(, 6 + ); součet += hozenéčíslo; // Zaznamenej součet v tabulce četností kolikrát[součet]++; // Překresli histogram Refresh();

private void oknoprogramu_paint(object sender, PaintEventArgs e) // Odkaz na kreslicí plochu okna Graphics kp = e.graphics; // Histogram for (int x = 00; x <= 600; x++) int hodnota = kolikrát[x]; if (hodnota > 0) Point bod = Transformuj(x, hodnota); Point bod = Transformuj(x +, 0); int šířka = bod.x - bod.x; int výška = bod.y - bod.y; kp.fillrectangle(brushes.cornflowerblue, bod.x, bod.y, šířka, výška); // Křivka List<Point> seznambodů = new List<Point>(); for (int x = 00; x <= 600; x++) double hodnota = početopakování * Gauss(x); Point bod = Transformuj(x, hodnota); Point bod = Transformuj(x +, hodnota); bod.x = (bod.x + bod.x) / ; seznambodů.add(bod); kp.drawcurve(pens.black, seznambodů.toarray()); Point Transformuj(double x, double y) // Matematické hodnoty x, y převede na pixelové hodnoty int výškahistogramu = 300; int šířkasloupce = 5; int středníhodnota = 350; int yzobrazené = Convert.ToInt3(výškaHistogramu - y); int půlokna = ClientSize.Width / ; int xzobrazené = Convert.ToInt3 ((x - středníhodnota - 0.5) * šířkasloupce + půlokna); return new Point(xZobrazené, yzobrazené); double Gauss(double x) // Vrátí hodnotu Gaussova rozdělení pro 00 hodů v bodě x double mí = 350; double sigma = 9.6666666666666; double jmenovatel = Math.Sqrt( * Math.PI * sigma); double exponent = -(x - mí) * (x - mí) / ( * sigma); double px = / jmenovatel * Math.Exp(exponent); return px;

V odkazu najdete také kompletní projekt pro Visual C#. Spustitelný.EXE soubor z podsložky bin/debug využijete i v případě, že toto vývojové prostředí na svém počítači nemáte. K běhu zmíněného.exe souboru je na cílovém počítači zapotřebí přítomnost.net Framework 3.5 (pokud není u vás nainstalován, stáhněte si jej zdarma ze stránek společnosti Microsoft). KAM DÁL V MATEMATICE Program je možno zobecnit na počet hodů v součtu odlišný od 00. Je možno jej také zobecnit tak, že se budou sčítat náhodné veličiny s různými rozptyly, popřípadě náhodné veličiny s jiným než rovnoměrným rozdělením. KAM DÁL V.NET/C# Další informace ke kreslení vektorové grafiky naleznete v šesté kapitole knihy Moderní programování učebnice pro začátečníky. Další informace k práci s objekty Point najdete ve třetí kapitole knihy Moderní programování učebnice pro středně pokročilé. V šesté kapitole téže knihy najdete informace k práci s indexovanými seznamy realizovanými třídou List. No a konečně v deváté a desáté kapitole najdete podrobnosti k vytváření vlastních metod. PROGRAMOVÁNÍ NÁZORNĚ A SROZUMITELNĚ Chcete se naučit programovat nebo se v programování zdokonalit? Akreditované počítačové kurzy společnosti moderníprogramování mohou být vaší správnou volbou. Na kurzech se učíte prakticky, lektor vám pomáhá překonat problémová místa, na cokoli se můžete zeptat. Prozkoumejte nabídku kurzů na http://www.moderniprogramovani.cz/kurzy/ Základní řada programovacích kurzů: Programování pro začátečníky Programování v.net/c# pro středně pokročilé Programování v.net/c# pro pokročilé Programujeme na nové platformě, v novém jazyce: Přecházíme na Javu Přecházíme na.net/c# Databáze Web Databáze a SQL pro začátečníky (neprogramátorský kurz) Databázové aplikace na platformě.net/c# Tvorba webu, HTML a CSS pro začátečníky (neprogramátorský kurz) Základy webových aplikací ASP.NET Pokročilé webové aplikace ASP.NET