C++ Bc. 4: Porovnání verzí
Bez shrnutí editace |
chyba v indexech sumeace ve vzorečku |
||
(Není zobrazeno 25 mezilehlých verzí od 2 dalších uživatelů.) | |||
Řádek 1: | Řádek 1: | ||
Napište funkci, která pro zadanou horní trojúhelníkovou matici <math>\mathbf T</math> a vektor <math>\mathbf b</math> vypočte řešení soustavy lineárních rovnic <math>\mathbf {T x = b. | ;Řešení soustavy lineárních rovnic | ||
Napište funkci <tt>reseni()</tt>, která pro zadanou horní trojúhelníkovou matici <math>\mathbf T</math> a vektor <math>\mathbf b</math> vypočte řešení soustavy lineárních rovnic <math>\mathbf {T x = b}</math>. Funkce <tt>reseni()</tt> přepisuje vstupní vektor (pravou stranu) vypočteným řešením <math>x</math> 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 <math>\mathbf T</math> jsou všechny prvky pod hlavní diagonalou nulové, všechny prvky na hlavní diagonále jsou nenulové. | V horní trojúhelníkové matici <math>\mathbf T</math> jsou všechny prvky pod hlavní diagonalou nulové, všechny prvky na hlavní diagonále jsou nenulové. | ||
<math>\begin{pmatrix} | |||
0 | t_{11} & t_{12} & t_{13} & \ldots & t_{1n} \\ | ||
0 | 0 & t_{22} & t_{23} & \ldots & t_{2n} \\ | ||
0 & 0 & t_{33} & \ldots & t_{3n} \\ | |||
0 | & & & \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} | |||
</math> | |||
'''Řešení (zpětná substituce):''' | |||
<math>x_{ n } = b_n/t_{nn}\,</math> | |||
<math>x_{n-1} = (b_{n-1} - t_{n-1, n }x_{ n })/t_{n-1,n-1}\,</math> | |||
<math>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}\,</math> | |||
<math>x_{n-k} = (b_{n-k} - \sum^n_{j=n-k+1} t_{n-k,j}x_{j})/t_{n-k,n-k}\,</math> | |||
'''Příklad:''' | |||
<math>\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 | |||
</math> | |||
[ [[C++ Bc.|Zpět]] | [[C++ Bc. 4 cpp |C++]] | [[C++ Bc. 5|Další]] ] | |||
[[Kategorie:Programování]] |
Aktuální verze z 3. 12. 2008, 15:44
- Řešení soustavy lineárních rovnic
Napište funkci reseni(), která pro zadanou horní trojúhelníkovou matici a vektor vypočte řešení soustavy lineárních rovnic . Funkce reseni() přepisuje vstupní vektor (pravou stranu) vypočteným řešením 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 jsou všechny prvky pod hlavní diagonalou nulové, všechny prvky na hlavní diagonále jsou nenulové.
Řešení (zpětná substituce):
Příklad: