C++ Bc. 4

Z GeoWikiCZ
Řešení soustavy lineárních rovnic

Napište funkci reseni(), která pro zadanou horní trojúhelníkovou matici Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle \mathbf T} a vektor Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle \mathbf b} vypočte řešení soustavy lineárních rovnic Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle \mathbf {T x = b}} . Funkce reseni() přepisuje vstupní vektor (pravou stranu) vypočteným řešením Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle x} a testuje všechny možné chyby (nepřípustné dimenze a nulu na hlavní diagonále).

struct Chyba
{
   Chyba(std::string t) : text(t) {}

   std::string text;
};

void reseni(const GNU_gama::Mat<>& U, GNU_gama::Vec<>& x);

V horní trojúhelníkové matici Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle \mathbf T} jsou všechny prvky pod hlavní diagonalou nulové, všechny prvky na hlavní diagonále jsou nenulové.

Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle \begin{pmatrix} t_{11} & t_{12} & t_{13} & \ldots & t_{1n} \\ 0 & t_{22} & t_{23} & \ldots & t_{2n} \\ 0 & 0 & t_{33} & \ldots & t_{3n} \\ & & & \ldots & \\ 0 & 0 & \ldots & t_{n-1,n-1} & t_{n-1,n} \\ 0 & 0 & \ldots & 0 & t_{nn} \end{pmatrix}\mathbf x = \begin{pmatrix} b_1 \\ b_2 \\ \vdots \\ b_{n-1} \\ b_n \end{pmatrix} }


Řešení (zpětná substituce):

Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle x_{ n } = b_n/t_{nn}\,}

Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle x_{n-1} = (b_{n-1} - t_{n-1, n }x_{ n })/t_{n-1,n-1}\,}

Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle x_{n-2} = (b_{n-2} - t_{n-2,n-1}x_{n-1} - t_{n-2, n }x_{ n })/t_{n-2,n-2}\,}

Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle x_{n-k} = (b_{n-k} - \sum^n_{j=n-k+1} t_{n-k,j}x_{j})/t_{n-k,n-k}\,}

Příklad:

Nelze pochopit (SVG, alternativně PNG (MathML lze povolit skrze prohlížečový plugin): Neplatná odpověď („Math extension cannot connect to Restbase.“) od serveru „https://wikimedia.org/api/rest_v1/“:): {\displaystyle \begin{pmatrix} 3 & 0 & 3 & 4 & 1\\ 0 & 1 & 4 & 2 & 1\\ 0 & 0 & 1 & 0 & 2\\ 0 & 0 & 0 & 2 & 6\\ 0 & 0 & 0 & 0 & 3 \end{pmatrix}\mathbf x = \begin{pmatrix} 33 \\ 27 \\ 13 \\ 38 \\ 15 \end{pmatrix},\qquad \mathbf x = \begin{pmatrix} 1 \\ 2 \\ 3 \\ 4 \\ 5 \end{pmatrix}\qquad }


[ Zpět | C++ | Další ]