Sbírka příkladů z MATLABu
Kateřina Konečná
1. Spočítejte objemy krychlí s délkami stran a = 2 cm, 3 cm a 4 cm. 2. Vytvořte vektor funkčních hodnot funkce sin(x) v bodech 0,
π π 4, 2,
. . . , 2π.
3. Vygenerujte posloupnost u čísel −2, − 1.8, . . . délky 20. Vektor u seskládejte po řádcích do matice A o 5 sloupcích. Nahraďte všechny nezáporné prvky A Eulerovým číslem. 4. Spočítejte skalární součin prvních dvou řádků matice A. 5. Vygenerujte komplexní vektor v délky 20 obsahující prvky [−5 + 10i, − 4 + 9i, − 3 + 8i, . . . ]. Vypište tento vektor pozpátku jako vektor w a ten pak seskládejte do matice W o 4 řádcích. Proveďte transpozici matice W bez komplexně sdružených prvků. 6. Pro náhodně vygenerované reálné z z intervalu [−1, 1] a náhodné přirozené číslo n z mnoPčíslo n žiny {5, 6, . . . , 10} vypočítejte i=1 z i . 7. Jedním příkazem vytvořte vektor t délky 10 obsahující prvky 1, 21 , 13 , . . . , z intervalu [ 14 , 21 ] nahraďte hodnotami přirozeného logaritmu.
1 10 .
Poté hodnoty
8. Vygenerujte matici B o 4 řádcích a náhodném počtu sloupců v rozmezí 5 − 10 se všemi prvky rovnými 5. Zjistěte rozměry matice B, dále ji vhodně doplňte náhodnými celými čísly z intervalu [−5, 5] na čtvercovou matici a spočítejte její determinant. 9. Vytvořte diagonální matici s diagonálními prvky matice B. 10. Z matice B vytvořte jedním příkazem matici C s následujícími vlastnostmi: (i ) dvě diagonály nad a pod hlavní diagonálou budou obsahovat samé nuly, (ii ) hlavní diagonála bude tvořena prvky rovnými 3, (iii ) zbývající pozice zůstanou nezměněny. 11. Z matice B vytvořte matici D, která bude obsahovat druhou diagonálu pod a třetí diagonálu nad hlavní diagonálou matice B, jinde nuly. 12. Vytvořte jednotkovou matici M řádu 4, jedničkovou matici N o 2 řádcích a 4 sloupcích a náhodný vektor v délky 4 tvořený celými čísly z intervalu [−5, 6]. Vhodnými příkazy je seskládejte do matice O o 4 řádcích a 7 sloupcích. 13. Vytvořte vektor e, který bude obsahovat součty všech lichých sloupců matice O. Pak jej doplňte na matici E rozměrů 3×4, která bude na pozicích [2, 4] a [3, 2] obsahovat hodnotu polynomu 4x3 − 6x2 + 10 v bodě −3, na ostatních pozicích 2. a 3. řádku samé nuly. Z matice E odstraňte druhý řádek a určete maximální prvek každého řádku.
1
Sbírka příkladů z MATLABu
Kateřina Konečná
14. Řešte soustavu lineárních rovnic: 2x + 3y − z = 9, x − y + z = −2, −x + 2y − 3z = 6. 15. Najděte vektor x, který je řešením soustavy x * A = b, kde 1 1 1 A = 1 −1 −2 a b = 1 3 1 1 −2
2 .
16. Vytvořte textový řetězec r s textem Stari matematici neumiraji, pouze prichazeji o nektere sve funkce. (John C. George) (i ) Vypište každý sudý znak. (ii ) Vypište každý třetí znak v opačném pořadí. (iii ) Najděte počet výskytů znaku m. (iv ) Zjistěte pozice mezer v řetězci r. *(v ) Nahraďte znaky, jejichž odpovídající kód podle ASCII tabulky je větší nebo roven 97 a zároveň menší než 110, znakem %. *17. Převeďte číselný vektor [77, 105, 108, 117, 106, 105, 32, 77, 65, 84, 76, 65, 66, 33, 32, 58, 41] na textový řetězec. 18. Zadejte funkci 3x(2x2 − 7)3 jako symbolický výraz f. (i ) Vypočtěte funkční hodnoty funkce f v bodech −1, 0, 1. (ii ) Spočtěte 1. derivaci funkce f a vyhodnoťte ji v bodě 2. (iii ) Spočítejte primitivní funkci k funkci f a hodnotu integrálu v mezích od -2 do 1. 19. Spočítejte parciální derivaci funkce f1: z = ální derivace v bodě [−1, 2].
x2 y 2 x4 +y 4
podle proměnné x. Vyčíslete hodnotu parci-
20. V souboru data1.mat jsou uloženy proměnné rajcata a zeli, které obsahují informaci o počtu sklizených tun v letech 2000 − 2011. Vykreslete plnou červenou čarou vývoj sklizně rajčat, jednotlivé znaky vyznačte černými hvězdičkami. Graf řádně popište (název grafu, popisky os). Přidejte do grafu zelenou čárkovanou čarou s modrými kroužky vývoj sklizně zelí. 21. Jedním příkazem vykreslete na intervalu [0, 5] do jednoho obrázku graf funkce ekx sin(x) pro k = −5, − 4, . . . , − 1. Graf popište. 22. Do dvou samostatných obrázků umístěných pod sebou nakreslete grafy funkcí π x ∈ [ 10 , 5π]. Grafy řádně popište.
2
sin(x) x
a
cos(x) x
pro
Sbírka příkladů z MATLABu
Kateřina Konečná
23. Nakreslete graf funkce f (x, y) =
p |xy| pro x a y z intervalu [−2, 2]. Graf popište.
24. Napište jednoduchou dávku rychlost.m, ve které vyzvete uživatele o zadání rychlosti v km/hod. Dávka vypíše na obrazovku odpovídající rychlost v m/s. (1 m/s = 3.6 km/hod) 25. Vytvořte dávku matice.m, která načte matici X ze souboru data2.mat. Dávka vypíše na obrazovku řádkové součty, vlastní čísla a vlastní vektory matice X. Dávka by rovněž měla ověřit, zda se jedná o čtvercovou matici, v opačném případě by měla skončit. 26. Vytvořte funkci rocniobdobi.m, která pro vstupní číselnou hodnotu vrátí název odpovídajícího ročního období. Zajistěte, aby funkce na neexistující pořadí upozornila. 27. Vytvořte funkci hodnoceni.m se vstupním textovým řetězcem hodnocení testu jednotlivých studentů – možné varianty hodnocení: A, B, . . . , F. Výstupem funkce bude: (i ) proměnná pocetA udávající počet známek A, (ii ) proměnná uspesnost udávající procentuální úspěšnost, *(iii ) proměnná prumer udávající průměrné hodnocení podle následující tabulky textová hodnota A B C D E F
číselná hodnota 1 1.5 2 2.5 3 4
28. Vytvořte funkci fib.m se třemi vstupními parametry m, q s Fibonacciho posloupností: 0 F (n) = 1 F (n − 1) + F (n − 2)
a h = [l, u], která bude pracovat
n = 0, n = 1, n > 2.
Výstupem funkce bude: (i ) hodnota Fibonacciho posloupnosti Fm v bodě m, (ii ) největší hodnota N splňující F (N) ≤ q, (iii ) hodnota pocet udávající nejvyšší možný počet n splňující l ≤ F (n) ≤ u. Rovněž zajistěte, aby funkce pracovala pouze s hodnotou m ∈ N0 , v opačném případě byla měla vrátit chybové hlášení. 29. Vytvořte funkci pascalmat.m, která pro vstupní hodnotu n vrátí dolní trojúhelníkovou matici P řádu n s prvky Pascalova trojúhelníku.
3
Sbírka příkladů z MATLABu
Kateřina Konečná
Pozn. Pro n=3 bude matice P vypadat následovně: 1 0 0 P = 1 1 0 1 2 1 30. Vytvořte dávku duplicita.m, která ze souboru data3.mat načte vektor v. Dávka vypíše na obrazovku vektor původní i tento vektor bez duplicit.
Řešení 1. a = [2 3 4]; objem = a .^ 3 2. x = 0 : pi/4 : 2*pi; sinx = sin(x) 3. u = -2 : 0.2 : 1.8; A = (reshape(u, 5, 4))’ A(A >= 0) = exp(1) 4. skalsouc = A(1,:) * (A(2,:))’ nebo skalsouc = sum(prod(A(1:2,:))) 5. v = (-5 : 1 : 14) + i * (10: -1 : -9) w = v(end : -1 : 1) nebo w = v(length(v) : -1 : 1) nebo w = fliplr(v) W = reshape(w, 4, 5) Wtransp = W.’ 6. z = rand(1) * 2 - 1 n = round(rand(1) * 5 + 5) suma = sum(z .^ (1:n)) 7. t = 1 ./ (1:10) t((t >= 1/4) & (t <= 1/2)) = log(t((t >= 1/4) & (t <= 1/2))) 8. B = 5 * ones(4, round(rand(1) * 5 + 5)) rozmery = size(B) B(5 : size(B, 2),:) = round(10 * rand(size(B, 2)-4, size(B, 2)) - 5) determinant = det(B) 9. diagmat = diag(diag(B)) 10. např. C = tril(B, -3) + triu(B, 3) + 3 * eye(size(B))
4
Sbírka příkladů z MATLABu
Kateřina Konečná
11. např. D = tril(B,-2) - tril(B,-3) + triu(B,3) - triu(B,4) 12. M N v O
= = = =
eye(4) ones(2, 4) round(rand(1, 4) * 11 - 5) [M, N’, v’]
13. e = sum((O(:, 1 : 2 : 7))) E = [e; zeros(2, 4)] E(2, 4) = polyval([4 -6 0 10], -3) E(3, 2) = polyval([4 -6 0 10], -3) E(2, :) = [] maximum = max(E’) 14. A = [2 3 -1; 1 -1 1; -1 2 -3] b = [9, -2, 6]’ x = A\\b 15. A = [1 1 1; 1 -1 -2; 1 1 -2] b = [1 3 2] x = b/A 16. r = ’Stari matematici neumiraji, pouze prichazeji o nektere sve funkce. (John C. George)’ (i ) r(2 : 2 : end) (ii ) fliplr(r(3 : 3 : end)) (iii ) length(findstr(’m’, r)) (iv ) findstr(’ ’, r) (v ) r(double(r) >= 97 & double(r) < 110) = ’%’ 17. retezec = char([77, 105, 108, 117, 106, 105, 32, 77, 65, 84, 76, 65, 66, 33, 32, 58, 41]) 18. f = sym(’3*x*(2*x^2 - 7)^3’) (i ) fval = subs(f, {’x’}, [-1, 0, 1]) (ii ) fder = diff(f) fderval = subs(fder, {’x’}, 2) (iii ) fint = int(f) fintval = int(f, -2, 1)
5
Sbírka příkladů z MATLABu
Kateřina Konečná
19. f1 = sym(’(x^2*y^2) / (x^4 + y^4)’) df1 = diff(f1, ’x’) df1val = subs(df1, {’x’, ’y’}, {-1, 2}) 20. load(’data1.mat’) rok = 2000:2011; plot(rok, rajcata, ’-r’, rok, rajcata, ’*k’) title(’Sklizen zeleniny v letech 2000 - 2011’) xlabel(’rok’) ylabel(’tuny’) hold on plot(rok, zeli, ’--g’, rok, zeli, ’ob’) 21. x = linspace(0, 5); y = exp((-5 : -1)’ * x) .* sin(ones(5,1) * x); plot(x,y) xlabel(’osa x’) ylabel(’osa y’) title(’Graf funkce e^{kx} * sin(x), k=-5, -4, ..., -1)’) 22. x = linspace(pi/10, 5*pi); y1 = sin(x) ./ x; y2 = cos(x) ./ x; subplot(2, 1, 1) plot(x, y1) title(’Graf funkce sin(x)/x’) xlabel(’osa x’) ylabel(’osa y’) subplot(2, 1, 2) plot(x, y2) title(’Graf funkce cos(x)/x’) xlabel(’osa x’) ylabel(’osa y’) 23. x = linspace(-2, 2); y = linspace(-2, 2); [X, Y] = meshgrid(x,y); f = sqrt(abs(X .* Y)); mesh(X, Y, f) title(’Graf funkce sqrt(abs(xy))’) xlabel(’osa x’) ylabel(’osa y’) zlabel(’osa z’) 24. rychlost
6
Sbírka příkladů z MATLABu
Kateřina Konečná
25. matice 26. rocniobdobi(1) 27. [pocetA, uspesnost, prumer] = hodnoceni(’ABCFACEDBAEC’) 28. [Fm, N, pocet] = fib(3, 7, [2, 13]) 29. P = pascalmat(5) 30. duplicita
Reference ČESKÝ STATISTICKÝ ÚŘAD: Veřejná databáze českého statistického úřadu, dostupné z http://vdb.czso. cz/vdbvo/tabparam.jsp?voa=tabulka&cislotab=14-14&&kapitola_id=11, cit. X. 2012. KOLDOVSKÝ, Z.: Výpočty, simulace a vizualizace Matlab, dostupné z http://itakura.kes.tul.cz/zbynek/ teaching.htm, cit. X. 2012. NEUMAN, E. Programming in MATLAB, dostupné z http://www.math.siu.edu/matlab/tutorial2.pdf, cit. X. 2012. PATERA, A., PENN, J. D. and YANO, M. 2.086 Numerical Computation for Mechanical Engineers. Spring 2012. (Massachusetts Institute of Technology: MIT OpenCourseWare), dostupné z http://ocw.mit.edu/ courses/mechanical-engineering, cit. X. 2012.
[verze: 26. X. 2014]
7