Základy algoritmizace a programování

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

Cviceni č. 9


Zde obsah cvičení jen v provizorní textové podobě, podrobněji viz MOODLE.
1. Interpolace po částech lomenou čarou - realizace vlastním výpočtem a také voláním funkce interp1
a) Je daná tabulka hodnot x, y. Vypočtěte přibližně hodnoty funkce v bodech xx pomocí interpolace po částech lineární funkcí - výpočet realizujte dle návodu, užijte funkce find.
b) Pro stejnou tabulku použijte funkci interp1.

x = [ -2  -1   0   1      2];
y = [  1  0.5  0   -0.6  -2];

xx = -2:0.005:2;

k = find(xx >= x(1) & xx <= x(2));
yy = zeros(size(xx,1),size(xx,2)); 

h = x(2) - x(1)
yy(k) = y(1) + (y(2) - y(1)) * (xx(k) - x(1)) / h;

yy2 = interp1(x, y, xx, 'linear');

2. Interpolace polynomem - realizace vlastním výpočtem, vytvořte vlastní funkci.
a) Je daná tabulka hodnot x, y. Vypočtěte přibližně hodnoty funkce v bodech xx
pomocí Lagrangeova interpolačního polynomu. Ten je dán pomocí vzorce ...
b) Graficky (plot) znázorněte hodnoty x,y a také hodnoty interpolace z a). Srovnejte s po částech lineární interpolací.
c) Použité metody vyzkoušejte pro interpolaci funkcí 𝑓(𝑥)=𝑒−𝑥2,𝑔(𝑥)=|𝑥|,ℎ(𝑥)=arctg𝑥 na intervalu 𝐼=[−3,3]. Hodnoty interpolujte pro ekvidistantně rozmístěné body 𝑥𝑘=−3+𝑘ℎ pro 𝑘=0,…𝑛, ℎ=6/𝑛. d) Interpolujte stejné funkce také pro body rozmístěné v Čebyševových uzlech daných dle 𝑥𝑘=3cos(2𝑘−12𝑛𝜋) pro 𝑘=1,…𝑛
.
Uzivane prikazy:

  
n = 10; h = 6 / n; x  = -3:h:3; y = exp(-x.^2);
n =20; k = 1:n; x = cos(pi * (2 * k - 1) / (2 * n)); y = exp(-x.^2);
xx = -3:0.005:3;
yy = 0 * xx;
n = length(x);
for i = 1:n, 
   lag_i = 1 + 0 * xx; 
   for j = 1:n,
     if (j ~= i)
        lag_i = lag_i .* (xx - x(j)) / (x(i) - x(j));
     end
  end
  yy3 = yy3 + y(i) * lag_i;
end

3. Interpolace spline funkcí - realizace pomocí funkce spline.
a) Je daná tabulka hodnot x, y. Vypočtěte přibližně hodnoty funkce v bodech xx pomocí interpolační spline funkce.
b) Graficky (plot) znázorněte hodnoty x,y a také hodnoty interpolace z a). Srovnejte s předchozími způsoby interpolace.