C++ Bc. 32

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

Napište funkci reseni(), která pro zadanou dolní 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
{
   template <typename T> Chyba(T t) : text(t) {}

   std::string text;
};

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

V dolní 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 nad 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} & 0 & 0 & \ldots & 0 \\ t_{21} & t_{22} & 0 & \ldots & 0 \\ t_{31} & t_{32} & t_{33} & \ldots & 0 \\ & & & \ldots & \\ t_{n-1,1} & t_{n-1,2} & \ldots & t_{n-1,n-1} & 0 \\ t_{n1} & t_{n2} & \ldots & t_{n,n-1} & t_{nn} \end{pmatrix}\mathbf x = \begin{pmatrix} b_1 \\ b_2 \\ \vdots \\ b_{n-1} \\ b_n \end{pmatrix} }

Řešení (přímá 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_{1} = b_{1}/t_{11}\,}

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_{2} = (b_{2} - t_{21}x_{1})/t_{22}\,}

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_{3} = (b_{3} - t_{31}x_{1} - t_{32}x_{2})/t_{33}\,}

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_{k} = (b_{k} - \sum^{k-1}_{j=1} t_{k,j}x_{j})/t_{k,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 & 0 & 0 & 0\\ 0 & 1 & 0 & 0 & 0\\ 3 & 4 & 1 & 0 & 0\\ 4 & 2 & 0 & 2 & 0\\ 1 & 1 & 2 & 6 & 3 \end{pmatrix}\mathbf x = \begin{pmatrix} 3 \\ 2 \\ 14 \\ 16 \\ 48 \end{pmatrix},\qquad \mathbf x = \begin{pmatrix} 1 \\ 2 \\ 3 \\ 4 \\ 5 \end{pmatrix}\qquad }

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