6 Funkce funkcí, kořen funkce Studijní cíl Tento blok je prvním ze tří, ve kterých se budeme zabývat čtyřmi důležitými matematickými úlohami 1 , pro které v MATLABu existuje obecné řešení. Všech‐ na tato obecná řešení jsou ve formě funkce a vyžadují jako jeden z parametrů uživatelem vytvořenou funkci popisující konkrétní řešenou úlohu. Proto se v šestém bloku budeme nejprve zabývat způsoby jak předat funkci jako para‐ metr do další funkce. Druhá část šestého bloku je pak věnována první matema‐ tické úloze – hledání kořene funkce jedné proměnné.
Doba nutná k nastudování
1 – 1,5 hodiny
Průvodce studiem Předpokládá se, že čtenář je seznámen s prostředím MATLABu, základními příkazy, tvorbou grafů a tvorbou skriptů a funkcí v rozsahu prvních čtyř bloků. Při studiu je vhodné mít spuštěný MATLAB a jednotlivé příkazy či funkce hned vyzkoušet a případně získat podrobnější informace využíváním nápovědy k programu. Na závěr jsou uvedeny řešené příklady na procvičení. V textu jsou použity následující typografické konvence: Calibri 11, Bold, Italic nové pojmy či informace k zapamatování Calibri 11 označení klávesy Courier New 10, Bold názvy nástrojů MATLABu Courier New 10, Bold upřesnění nápovědy (help téma) Courier New 10 názvy příkazů, funkcí a objektů Courier New 10 označení části příkazu, která se může vynechat Courier New 10, Italic názvy proměnných použitých v programu Courier New 9 příkaz příkazové řádky / výpis programu Courier New 9 výpis programu – klíčová slova Courier New 9 výpis programu – řetězec Courier New 9 výpis programu – komentář
6.1 Co označujeme pojmem funkce funkcí? Všechny čtyři matematické úlohy, kterými se budeme v blocích 6‐8 zabývat mají společné to, že jejich řešení je formulováno pro obecnou 2 funkci 3 popisu‐
1
a) úloha hledání kořene funkce b) úloha výpočtu určitého integrálu (včetně výpočtu dvojného a trojného) c) úloha numerického výpočtu soustavy obyčejných diferenciálních rovnic d) úloha hledání extrému funkce více proměnných
2
Např. postup (algoritmus) numerického výpočtu určitého integrálu je stejný bez ohledu na to jaký vztah integrujeme.
KŘP/IMSW Modelování ve výpočtových software
6‐1 (11) 15.9.11
František Dušek KŘP FEI Univerzita Pardubice
jící daný typ úlohy. Pro řešení každé úlohy je v MATLABu připravena samostat‐ ná funkce. Všechny tyto řešící funkce pak mají společné to, že vyžadují jako první vstupní parametr informaci o konkrétním popisu problému (dodaném uživatelem), pro který se má daná úloha řešit. V MATLABu je požadovaný předpis realizován nějakou funkcí, což znamená, že je potřeba předat odkaz na funkci (handle funkce). Samozřejmě možnost předat odkaz na funkci jako pa‐ rametr jiné funkci je obecně využitelná a lze ji použít i ve vlastních funkcích tj. nejen v již v MATLABu existujících.
Pokud je vstupní parametr jedné (řekněme vnější) funkce odkaz na jinou (řek‐ něme vnitřní) funkci, pak musí být zajištěno, aby vnější funkce volala vnitřní funkci se správným počtem vstupních parametrů. Pokud vytváříme obě funkce sami, pak to není problém. Pokud je však vnější funkce jednou vytvořená, pak je potřeba při tvorbě vnitřní funkce vědět jaký počet vstupních parametrů (a v jakém významu) vnější funkce vyžaduje (konvence). To znamená, že při tvorbě vnitřní uživatelské funkce určené pro použití jako parametr vnější funkce mu‐ síme dodržet počet a význam parametrů vnější funkcí vyžadovaných. Protože je často potřeba dodat do vnitřní funkce ještě další parametry, existuje mecha‐ nismus jak informovat vnější funkci, aby při volání vnitřní funkce předala doda‐ tečné parametry. O možnostech jak v MATLABu předávat odkaz na funkci po‐ jednává následující kapitola.
6.2 Funkce jako parametr jiné funkce V MATLABu existují tři možností jak předat informaci o funkci, která se má použít (odkaz na funkci), jako parametr jiné funkci. Všechny tři možnosti uká‐ žeme na stejném příkladě. Máme řešit úlohu výpočet přibližné hodnoty určité‐ ho integrálu obecné spojité funkce f(x) na zadaném intervalu lichoběžní‐ kovou metodou podle vztahu