• Nebyly nalezeny žádné výsledky

Numerická lineární algebra 1 – cvičení 4

N/A
N/A
Protected

Academic year: 2022

Podíl "Numerická lineární algebra 1 – cvičení 4"

Copied!
1
0
0

Načítání.... (zobrazit plný text nyní)

Fulltext

(1)

Numerická lineární algebra 1 – cvičení 4

Soustavy lineárních rovnic Příklad 1.

1. Stáhněte si z http://homel.vsb.cz/~mer126/NLA1/Lectures/4/Cv/sit1d.m, prostudujte kód a otestujte metodu sítí.

2. Upravte funkci tak, aby fungovala i pro nenulové okrajové podmínky u(0) = u0, u(L) = un: sit1d(L, N, u0, un). Vzpomeňte si, že v takovém případě je třeba vhodně upravit první a poslední prvek vektoru pravé strany (viz přednáška). Výpočet chyby a vykreslení analytického řešení můžete zrušit.

Příklad 2.

1. Vygenerujte čtvercové matice náhodných čísel L (dolní trojúhelníková) a U (horní trojúhelníková) – použijte např. funkci rand a vzpomeňte si na příkazy z DÚ č. 1.

Vygenerujte také sloupcový vektor náhodných čísel b odpovídající velikosti.

Zaokrouhlete prvky matice a vektoru na tři desetinná čísla.

2. Vyjděte z následujícího kódu a vytvořte funkci fsubst, která bude řešit systém s čtvercovou dolní trojúhelníkovou maticí pomocí dopředné substituce. Doplňte test na počet vstupních argumentů, zda je vstupní matice čtvercová a test na nenulovost diagonálních prvků (pokud během výpočtu narazíte na nulový diagonální prvek, vypište chybovou hlášku a program ukončete).

function [ x ] = fsubst( L, b )

%FSUBST Resi soustavu s dolni trojuhelnikovou matici L a vekt. b

% Pouziti: x = fsubst( L, b )

% See also: lu

% zde doplnte test na pocet vstupnich argumentu (musi byt dva)

% zde otestuje, zda je matice ctvercova

x = zeros(m, 1);

x(1) = b(1) / L(1, 1);

for i = 2:m

% doplnte test na nenulovost diagonalniho prvku x(i) = (b(i) - L(i, 1:i-1)*x(1:i-1)) / L(i, i);

end

end

3. Podobně vytvořte funkci bsubst, která bude řešit systém se čtvercovou horní trojúhelníkovou maticí pomocí zpětné substituce. Nezapomeňte otestovat, zda má matice nenulové prvky na diagonále.

4. Pomocí funkcí fsubst a bsubst vyřešte soustavy Lx=b a Ux=b a porovnejte s řešením pomocí zpětného lomítka. K otestování můžete použít skript http://homel.vsb.cz/~mer126/NLA1/Lectures/4/Cv/test_subst.m

Odkazy

Související dokumenty

Korektnost zadaných vstupních argumentů můžeme použít metody isvector (je vstupní argument vektor?), isnumeric (je vstupní argument číselný vektor?), isscalar (je

Zkopírujte obsah souboru mat_mat.m do nového souboru mat_mat_v2.m (nezapomeňte upravit hlavičku souboru).. Nahraďte ji tedy zabudovanou matlabovskou funkci pro výpočet

nzmax( S ); % Mnozstvi pameti alokovane pro nenulove prvky spalloc( m, n, nzmax ); % Alokace pameti pro ulozeni ridke matice spfun( @sin, S ); % Aplikuje zadanou funkci

První parametr je matice, jejíž sloupce mají být umístěny na diagonály vytvářené matice, následuje vektor určující, na kterou diagonálu se daný sloupec umístí;

Otestujte funkčnost vámi vytvořených řešičů (LU rozklad v kombinaci s dopřednou a zpětnou substitucí) na vhodných soustavách (použijte např. soustavu vygenerovanou

Vaše řešení (doplněný skript DU_script3.m a všechny soubory potřebné k jeho správnému spuštění) zabalte do zip archívu a zašlete nejpozději

Naimplementujte Choleského rozklad symetrické, pozitivně definitní matice (na konci je nutné vynulovat prvky pod diagonálou výsledné matice R):... Otestujte funkčnost

Skript generuje náhodnou symetrickou ostře diagonální matici A a vektor pravé strany b. Pomocí nejmenšího a největšího vlastního čísla vypočítá maximální a