Základy algoritmizace a programování

Petr Sváček, Luděk Beneš, Olga Majlingová
Ústav technické matematiky

Cviceni č. 7


Zde obsah cvičení jen v provizorní textové podobě, podrobněji viz MOODLE.
Uvažujme spojitou funkci 𝑓(𝑥) na intervalu [a,b]. Například 𝑓(𝑥)=𝑒−𝑥2 na intervalu [-4,4].

    Zobrazte její graf pomocí příkazu plot a area.
    Volte krok h = 0.5 a vypočtěte integrál na daném intervalu z dané funkce.

numerickou aproximaci integrálu. Výpočet realizujte skriptem.
Uvedený skript realizujte jako funkci např. numerint s argumenty f(x), a, b, n, kde h = (b - a) / n.
Vypočtěte numerického integrálu s polovičním krokem h = 0.25 a s krokem h = 0.05. Výsledky porovnejte.
Místo obdélníkového pravidla použijte Simpsonovo pravidlo nebo Gaussovu integraci.
Určete pro polynomy jakého stupně dávají uvedené předpisy numerické integrace přesné výsledky.
Proveďte integraci funkce 𝑓(𝑥)=𝑠𝑖𝑛(𝑥) na intervalu [0,𝜋] s krokem ℎ=𝜋/10, ℎ=𝜋/20 a ℎ=𝜋/40. Jak se zmenšuje chyba integrace pro různé numerické kvadratury?
Numerickou integraci realizujte jednak za předpokladu ekvidistantního kroku ℎ
jednak v závislosti na dělení uloženém v proměnné x, obecně tedy s různými kroky.
Odhadněte chybu integrace pomocí metody polovičního kroku a také pomocí vyhodnocení např. pomocí lichoběžníkového a Simpsonova pravidla.
Skripty aplikujte například pro aproximaci dalších integrálů.

f = inline('exp(-x .* x)'); 
xx = -4:0.01:4; yy = f(xx);
x = -4:0.5:4;   y  = f(x);
area(x,y); hold on; l = plot(xx,yy,'k-'); hold off, set(l, 'LineWidth', 4);
S = 0;
n = length(x);
for i = 2:n,
    h = x(i) - x(i - 1);
    S = S + h * (y(i) + y(i-1)) / 2;
end

%%%  VEKTOROVE
h = 0.5;
x = -4:h:4;   y  = f(x);
S1 = h * sum(y(2:end-1)) + h * (y(1) + y(end))/ 2;