Základy algoritmizace a programování

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

Cviceni č. 10


Zde obsah cvičení jen v provizorní textové podobě, podrobněji viz MOODLE.
1. Uvažujme graf funkce f, interpolaci polynomem a splinem. Zobrazme graf těchto funkcí do jednoho grafu. 

x = [ -2  -1   0   1      2];
y = [  1  0.5  0   -0.6  -2];
h=0.005; xx = -2:h:2;
yy1 = interp1(x, y, xx, 'linear');
yy2 = spline(x,y, xx);

l = plot(xx,yy1, xx, yy2);


set(l)
set(l(2), 'LineWidth', 2);

gca
set(gca)

legend(l);

set(l(1),'LineStyle')

set(l(1),'Marker')

set(gca, 'FontSize', 19)
set(gca, 'xlabel', 'Popis X')
set(gca, 'title', 'TITULEK')


2. Práce s vlastní strukturou
a) Proměnná typu struktura, přiřazení a přístup k proměnným. Příklad: dva hmotné body A a B se pohybují rovnoměrným pohybem.
b) Určete jejich vzdálenost v čase t = 0 s a v čase t = 4 s.
c) Zobrazte vzdálenost těchto bodů jako graf v závislosti na proměnné t (čas). Rozhodněte, zda dojde ke srážce těchto bodů, pokud dané body reprezentují koule o poloměru r.

hbodA.m = 0.2;
hbodA.x = [ 0, 0 ];
hbodA.v = [ 0.1, 0.5];
hbodA.r = 0.05;

hbodB.m = 0.1;
hbodB.x = [ 0.2,  0.8 ];
hbodB.v = [   0, -0.2 ];
hbodB.r = 0.02;

3. Harmonický oscilátor - určení fundamentálního systému a obecného řešení homogenní rovnice
a) Uvažujme harminický oscilátor popsaný rovnicí 𝑚ℎ¨+𝑏ℎ˙+𝑘ℎ=𝑓(𝑡). Do proměnné typu struktura uložte data (m, k, b).
b) Vytvořte funkci, která pro proměnnou daného typu spočítá frekvenci netlumeného kmitání.
c) Vytvořte funkci, která pro daný oscilátor harm vypočte/vykreslí graf netlumeného(tedy případ s nulovým koeficientem b) i tlumeného kmitání s danou počáteční podmínkou proměnnou daného typu spočítá frekvenci netlumeného kmitání.

harm.k = 102;
harm.m = 0.9;
harm.d = 0.05;
harm.h0    = 0.4; % pocatecni podminka h(0)
harm.doth0 = 0;   % pocatecni podminka h'(0)
harm.T     = 5; 
freq = sqrt(harm.k / harm.m) / (2 * pi);

function [tt, hh, hhnetlum] = harmonic_oscilator(harm);

4. Pole struktur: práce se soubory a řazení výsledků
V souboru vysledky.txt jsou uloženy data ve formátu CSV, v jednotlivých sloupcích jsou uloženy data JMENO, PRIJMENI, IDENTIFIKATOR a v dalších 10 sloupcích pak výsledky testů (každý test 0-10 bodů, maximálně za všechny testy 100 bodů).
a) Soubor vysledky.txt načtěte a uložte do pole struktury student, která obsahuje student.JMENO, student.PRIJMENI, student.IDENTIFIKATOR, student.TEST1, ..., student.TEST10, student.TEST_CELKEM, student.ZNAMKA
b) V daném poli najděte nejlepšího studenta a nejhoršího studenta.
c) Určete studenty, jejichž známka je nižší než 50 bodů.
d) Určete studenty, jejichž známka v některém z testů je nižší než 3 body.