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.