Příklady II - používání funkcí
■ Napište program pro numerickou integraci dané funkce, předpokládejte přitom, že integrační metodu dostanete předepsanou vzorcem.
Postupujte v těchto třech krocích:
- napište funkci f, která bude počítat hodnotu dané funkce (jako např. esin(2x+3) nebo odmocnina z (x2 + 7x))
-
napište funkci Numint pro numerické integrování funkce f použitím daného vzorce (jako např. obdélníkové nebo lichoběžníkové pravidlo):
- vstup:
a, b ... interval integrace
n ... počet integračních bodů uvnitř intervalu - výstup:
ierr ... indikátor chyby (pro n < 0 nebo f(x) nedefinovanou v některém z integračních bodů)
sumf ... určitý integrál f(x) od a do b (pouze pokud není indikována chyba)
- vstup:
-
použijte funkci Numint v hlavním programu, který
- požádá o hodnoty a, b a n
- vypíše hodnotu integrálu (nebo informaci o chybě)
■ Napište program pro řešení rovnice x = f(x) pro danou funkci f(x), který použije metodu prosté iterace. Postupujte v těchto třech krocích:
- napište funkci f, která bude počítat hodnotu dané funkce (jako např. 0.2 sin(2x+3) nebo 0.5 cos(x))
-
napište funkci Solve pro přibližné řešení rovnice x = f(x) s použitím funkce f definované výše a metody prosté iterace: xi+1 = f(xi)
- vstup:
xo ... výchozí aproximace řešení
eps ... požadovaná přesnost: |f(x) - x| < eps
maxit ... maximální počet iterací - výstup:
x ... přibližné řešení
nit ... počet iterací (nebo 0, pokud by byl překročen počet maxit)
- vstup:
-
použijte funkci Solve v hlavním programu, který
- požádá o hodnoty xo a eps (maxit definujte jako konstantu v hlavním programu)
- vypíše hodnotu x a počet iterací potřebných pro výpočet (nebo oznámení, že řešení s přesností eps nebylo během maxit iterací nalezeno)
Položte maxit = 100 a vyzkoušejte program pro eps = 0.0001 a výchozí hodnotu xo = 0
■ Napište program pro určení množství a ceny hnojiva pro zahradu dané velikosti. Hnojivo se dodává ve dvou baleních: buď 1 kg za 50 Kč nebo 3 kg za 120 Kč. Na čtvereční metr zahrady je potřeba 0.1 kg hnojiva. Postupujte v těchto dvou krocích:
-
napište funkci fert která určí nejlevnější kombinaci daných dvou typů balení pro danou zahradu:
- vstup:
w1, w2 ... váhy 2 typů balení (kg)
p1, p2 ... ceny balení (Kč)
g_size ... velikost zahrady (m2)
d_m ... dávkování na m2 - výstup:
nw1, nw2 ... počet balení obou typů
t_am ... celková cena
- vstup:
-
použijte funkci fert v hlavním programu, který v cyklu
- se zeptá na velikost zahrady (váhy a ceny dvou typů balení a dávkování hnojiva definujte jako konstanty v hlavním programu)
- vypíše počet potřebných 1 kg a 3 kg balení a celkovou cenu
■ Napište program, který řeší vektorovou rovnici x = U x + v metodou prosté iterace, kde U je n x n matice a x a v jsou sloupcové vektory dimenze n. Postupujte v těchto dvou krocích:
- napište funkci Iter pro řešení rovnice x = U x + v použitím metody prosté iterace (tj. xi+1 = U xi + v ) dokud není splněna podmínka |xi+1 - xi| < eps nebo dokud není překročen maximální povolený počet iterací maxit
- vstup:
xo ... výchozí aproximace řešení
U, v ... daná matice a sloupcový vektor
eps ... požadovaná přesnost: |xi+1 - xi| < eps
maxit ... max. povolený počet iterací - výstup:
x ... přibližné řešení
nit ... počet iterací (nebo 0, pokud byl překročen počet maxit )
- vstup:
-
použijte funkci Iter v hlavním programu, který
- přečte matici U a vektor v z klávesnice nebo ze souboru (maxit a eps definujte jako konstanty v programu)
- zvolí výchozí aproximaci xo jako nulový vektor a přibližně vyřeší rovnici x = U x + v
- vytiskne přibližné řešení x a kolik iterací bylo potřeba pro jeho výpočet (nebo oznámí, že řešení s přesností eps nebylo během maxit iterací nalezeno)