Programování jako nástroj porozumění matematce (serál pro web modernvyuka.cz) Autor: Radek Vystavěl, vystavel(zavnáč)modernprogramovan.cz Díl 15: Analýza Určtý ntegrál MATEMATIKA Integrál je v běžné řeč symbolem obtížné matematky stejně jako je Ensten symbolem genalty. Je takovým určtým završením studa matematky na střední škole. Bude završením pro nás. V tomto posledním díle serálu se budeme věnovat tomu, jak programování může napomoc k lepšímu zažtí tohoto pojmu. Neurčtý ntegrál nebol prmtvní unkce má jednou denc jde o unkc, jejíž dervací je unkce ntegrovaná. K denc ntegrálu určtého lze oprot tomu přstoupt hned několka způsoby. Lze postupovat přes lmtu, lze postupovat přes adtvtu a ohrančenost (zajímavý přístup, který jsem kdys vděl v knze Glmanově a Mc- Dowellově), exstuje Lebesgueův ntegrál atd. Já se zde přdržím dence Cauchy-Remannovy. S tou jsem se kdys seznáml jako první př četbě pěkné Hrušovy knhy Deset kaptol z derencálního a ntegrálního počtu. A znáte to, první láska Zmíněná dence pracuje s pojmy horních a dolních součtů a s dělením ntervalu. Interval <a, b>, na kterém unkc (x) ntegrujeme, se body x 0 = a < x 1 < x 2 < x n = b rozdělí na n ntervalů dílčích. Na každém dílčím ntervalu <x -1, x > se najde největší a nejmenší unkční hodnota, součet denován jako n = 1 max a max mn n ( x x 1), resp. = 1 Pro všechna možná dělení ntervalu <a, b> vznkne celá množna horních součtů a množna dolních součtů. Mnmum (strktně řečeno nmum) množny horních součtů se nazývá horním ntegrálem, maxmum (supremum) množny dolních součtů dolním ntegrálem. V případě jejch rovnost mluvíme prostě o ntegrálu. V tomto díle serálu vytvoříme program počítající horní a dolní součty unkce ( x) = x pro postupně se zjemňující dělení ntervalu, na kterém se ntegrál počítá. 2. Pro toto dělení je pak horní, resp. dolní mn ( x x ). 1
KONCEPČNÍ OTÁZKY PROGRAMU Pro jednoduchost budeme nterval dělt na stejně velké dílky. Počet dílků budeme postupně zvětšovat. Pro konkrétnost zvolíme unkc (x) = x 2, u níž se ntegrál snadno vypočítá ze známé prmtvní unkce x 3 /3. Ke hledání maxma, resp. mnma unkce na ntervalu s výhodou využjeme skutečnost, že x 2 je pro x > 0 neklesající (a mnmum je tudíž vždy na začátku ntervalu a maxmum na jeho konc). Výsledky zobrazíme v tabulce. Pro snadnější úpravu programu př změně ntegrované unkce umístíme výpočet unkční hodnoty a dalších pomocných hodnot do samostatných podprogramů. TECHNICKÉ OTÁZKY NA PLATFORMĚ.NET/C# Ovládací prvek tabulka najdete v Toolboxu v kategor Data pod názvem DataGrdVew. Nový řádek se do tabulky přdá voláním metody Add seznamu řádků Rows tabulky. Tabulka se vymaže přřazením nuly do vlastnost RowCount. Příkaz throw new Excepton(); vyvolá běhovou chybu. Pokud je umístěn v pokusném bloku try, chyba se hned zachytí v bloku catch. ŘEŠENÍ Uvádím zdrojový kód Form1.cs. usng System; usng System.Wndows.Forms; namespace Integrál publc partal class oknoprogramu : Form publc oknoprogramu() IntalzeComponent(); // Následující dva podprogramy změňte př změně ntegrované unkce prvate double IntegrovanáFunkce(double x) // Vrátí hodnotu ntegrované unkce v bodě x return x*x; prvate double PrmtvníFunkce(double x) // Vrátí hodnotu prmtvní unkce k unkc // ntegrované (v bodě x) return x*x*x / 3;
// Následující dva podprogramy změňte v případě, že // ntegrovaná unkce není neklesající prvate double MnmumNaIntervalu (double dílčídolnímez, double dílčíhornímez) // Vrátí mnmální hodnotu ntegrované unkce na // ntervalu <dílčídolnímez, dílčíhornímez> return IntegrovanáFunkce(dílčíDolníMez); prvate double MaxmumNaIntervalu (double dílčídolnímez, double dílčíhornímez) // Vrátí maxmální hodnotu ntegrované unkce na // ntervalu <dílčídolnímez, dílčíhornímez> return IntegrovanáFunkce(dílčíHorníMez); // Obsluha tlačítka prvate vod tlačítkospočt_clck(object sender, EventArgs e) try // Vymaž tabulku tabulka.rowcount = 0; // Zjst meze ntervalu double dolnímez = Convert.ToDouble(poleDolníMez.Text); double hornímez = Convert.ToDouble(poleHorníMez.Text); (dolnímez < 0 hornímez < dolnímez) throw new Excepton(); // Postupně zjemňuj dělení ntervalu nt početdílků = 10; or (nt terace = 0; terace < 15; terace++) double šířkadílku = (hornímez - dolnímez) / početdílků; double dolnísoučet = 0, hornísoučet = 0; double x1 = dolnímez; or (nt = 1; <= početdílků; ++) double x = x1 + šířkadílku; dolnísoučet += šířkadílku * MnmumNaIntervalu(x1, x); hornísoučet += šířkadílku * MaxmumNaIntervalu(x1, x); // Přprav další dílek x1 = x; // Zobraz součty a zjemn dělení tabulka.rows.add(početdílků, dolnísoučet, hornísoučet); početdílků *= 2; // Spočt a zobraz ntegrál dle vzorce double ntegrál = PrmtvníFunkce(horníMez) - PrmtvníFunkce(dolníMez); poleintegráldlevzorce.text = ntegrál.tostrng();
catch poleintegráldlevzorce.text = null; V odkazech na konc najdete také kompletní projekt pro Vsual C#. Spusttelný.EXE soubor z podsložky bn/debug využjete v případě, že toto vývojové prostředí na svém počítač nemáte. K běhu zmíněného.exe souboru je na cílovém počítač zapotřebí přítomnost.net Framework 3.5 (pokud není u vás nanstalován, stáhněte s jej zdarma ze stránek společnost Mcrosot, vz odkazy na konc). KAM DÁL V PROGRAMU Program lze rozvíjet celou řadou směrů, např. takto: 1. Předložený program možná přílš směřoval na lmtu, více by mohl být zaměřený na maxmum (supremum) a mnmum (nmum). 2. Program pracoval pouze se stejnoměrným dělením ntervalu. Dobré by bylo zkust také dělení nestejnoměrná. 3. Proč s rovněž nepohrát s nemonotónním unkcem? Maxmum a mnmum na ntervalu pak nebude tak jednoduché určt! KAM DÁL V MATEMATICE Kromě prohloubení představ o ntegrálu lze samozřejmě tento č podobný program používat pro ntegrac analytcky obtížně ntegrovatelných unkcí, čímž se podstatně rozšíří možnost aplkací. ODKAZY Kompletní projekt Integrál pro Vsual C#.NET Framework 3.5 PROGRAMOVÁNÍ NÁZORNĚ A SROZUMITELNĚ Chcete se naučt programovat nebo se v programování zdokonalt? Akredtované počítačové kurzy společnost moderníprogramování mohou být vaší správnou volbou. Na kurzech se učíte praktcky, lektor vám pomáhá překonat problémová místa, na cokol se můžete zeptat. Prozkoumejte nabídku kurzů na http://www.modernprogramovan.cz/kurzy/ Základní řada programovacích kurzů: Programování pro začátečníky Programování v.net/c# pro středně pokročlé Programování v.net/c# pro pokročlé
Programujeme na nové platormě, v novém jazyce: Přecházíme na Javu Přecházíme na.net/c# Databáze Databáze a SQL pro začátečníky (neprogramátorský kurz) Databázové aplkace na platormě.net/c# Web Tvorba webu, HTML a CSS pro začátečníky (neprogramátorský kurz) Základy webových aplkací ASP.NET Pokročlé webové aplkace ASP.NET