Základy algoritmizace a programování

Petr Sváček
Ústav technické matematiky

Cviceni č. 3


Ulohy pro 3. tyden


  1. Funkce load, save, plot.
    a) Zobrazte si napovedu funkci save, load a rand.
    b) Do promenne u priradte nahodne generovany sloupcovy vektor o 50 prvcich (celociselne hodnoty v rozsahu od -20 do 20). Pomoci prikazu save ulozte tento vektor u do textoveho soubory(ASCII) novadata.dat
    c) Data znovu nactete do promenne new_u
    d) Pomoci operatoru : (linspace) generujte do promenne x sloupcovy vektor x-ovych souradnic od -2 do 2 s krokem 1100.
    e) Do promenne(vektoru) y ulozte hodnoty funkce 𝑓(𝑥)=𝑥𝑠𝑖𝑛(8𝜋𝑥) v bodech ulozenych v promenne x.
    f) Vygenerovana data zobrazte funkci plot.
    g) Data x, y ulozte jako ASCII soubor ve formatu dvou sloupcu (x a y).
      x = 10 * rand(8,1) - 5;
      x1 = floor(x);
      x2 = ceil(x);
      x3 = round(x);
      xx = 3:0.25:20;
      yy = sin(6 * xx);
      plot(xx,yy)
      plot(xx,yy,'b-');
      save -ascii uloz.dat xx;
      save -ascii uloz1.dat [xx,yy];
      nahraj = load('uloz1.dat');
    

  2. Prace s vektory, skript.
    Vytvořte skript, který pro nějaké vektory 𝑢⃗ ,𝑣⃗ ,𝑤⃗ a 𝑧⃗ provede Gram - Schmidtův ortogonalizační proces, tedy přesněji z dané skupiny vektorů vytvoří ortonormální vektory dle postupu z předchozího cvičení. Přesněji: a) Vektor 𝑢⃗ pozměňte na vektor jednotkové velikosti.
    b) Vypočtěte skalární součin vektorů 𝑣⃗ ⋅𝑢⃗ a vektor 𝑣⃗ pozmění tak aby byl ortogonální na vektor 𝑢⃗ . Výsledný vektor pozměňte tak, aby měl jednotkovou velikost. 𝑣⃗ :=𝑣⃗ −(𝑢⃗ ⋅𝑣⃗ )𝑢⃗
    c) Vypočtěte skalární součin vektorů 𝑤⃗ ⋅𝑢⃗ , 𝑤⃗ ⋅𝑣⃗ a vektor 𝑤⃗ pozměňte tak aby byl ortogonální na vektory 𝑢⃗ ,𝑣⃗ . Výsledný vektor přenásobte tak aby měl jednotkovou velikost. 𝑤⃗ :=𝑤⃗ −(𝑤⃗ ⋅𝑢⃗ )𝑢⃗ −(𝑤⃗ ⋅𝑣⃗ )𝑣⃗
    d) Vypočtěte skalární součin vektorů 𝑧⃗ ⋅𝑢⃗ , 𝑧⃗ ⋅𝑣⃗ , 𝑧⃗ ⋅𝑤⃗ . Vektor 𝑧⃗ pozměňte tak aby byl ortogonální na vektory 𝑢⃗ ,𝑣⃗ i na vektor 𝑤⃗ . Výsledný vektor pak upravte aby měl jednotkovou velikost.
    e) Daný vektor 𝑟⃗ následně (v závislosti na dimenzi) vyjádřete pomocí získané ortonormální báze, případně spočtěte projekci vektoru 𝑟⃗ do lineárního obalu vektorů 𝑢⃗ ,𝑣⃗ ,𝑤⃗ ,𝑧⃗ !
    u = [2, 1, 0, -1]';
    v = [1, 4, 0,  2]';
    w = [1, 0, 2,  0]';
    z = [3, 1, 0,  1]';
    u' * v
    dot(u,v)
    r = [5, 6, 7, 8];
    

  3. Logický výraz. Podmíněnný příkaz Vyzkousejte si nasledujici prikazy.
    Co ktery prikaz dela? Jake hodnoty promennych se na jakem radku meni? Co je ulozeno v promenne ans?
      a = 10;
     a == 10;
     a == 15;
     a >= 8;
     a ~= 9;
     pom = a~= 10;
     
     if (a < 100)
       disp('???');
     end
    
    if (a > 100)
       disp('???');
     else
       disp('???');
     end