C++ Bc. 4: Porovnání verzí
Bez shrnutí editace |
chyba v indexech sumeace ve vzorečku |
||
(Není zobrazeno 19 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é. | ||
Řádek 8: | Řádek 19: | ||
0 & 0 & t_{33} & \ldots & t_{3n} \\ | 0 & 0 & t_{33} & \ldots & t_{3n} \\ | ||
& & & \ldots & \\ | & & & \ldots & \\ | ||
0 & 0 & \ldots & t_{n-1,1} & t_{n-1,n} \\ | 0 & 0 & \ldots & t_{n-1,n-1} & t_{n-1,n} \\ | ||
0 & 0 & \ldots & 0 & t_{nn} | 0 & 0 & \ldots & 0 & t_{nn} | ||
\end{pmatrix}\mathbf x = | \end{pmatrix}\mathbf x = | ||
Řádek 17: | Řádek 28: | ||
'''Řešení:''' | '''Řešení (zpětná substituce):''' | ||
<math>x_{n | <math>x_{ n } = b_n/t_{nn}\,</math> | ||
<math>x_{n- | <math>x_{n-1} = (b_{n-1} - t_{n-1, n }x_{ n })/t_{n-1,n-1}\,</math> | ||
<math>x_{n- | <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:''' | '''Příklad:''' | ||
Řádek 45: | Řádek 55: | ||
\end{pmatrix}\qquad | \end{pmatrix}\qquad | ||
</math> | </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: