C++ Bc. 4: Porovnání verzí

Z GeoWikiCZ
Bez shrnutí editace
(chyba v indexech sumeace ve vzorečku)
 
(Není zobrazeno 26 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.}</math>
;Ř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é.


  t11 t12 t13 ....   t1n        b1
<math>\begin{pmatrix}
   0  t22 t23  ....   t2n        b2
  t_{11} & t_{12} & t_{13} & \ldots & t_{1n}   \\
   0   t33 ....   t3n  X = b3
   0     & t_{22} & t_{23} & \ldots & t_{2n}   \\
              ....
   0     &  0     & t_{33} & \ldots & t_{3n}  \\
   0   ... tn-1,1 tn-1,n     bn-1
        &        &        & \ldots &          \\
  0  ...      0    tnn        bn
   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:'''


'''Řešení:'''
<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>


<math>x_{ n } =  b_n/t_{nn}</math>


<math>x_{n-1} = (b_{n-1} - t_{ n }x_{ n })/t_{n-1}
[ [[C++ Bc.|Zpět]] | [[C++ Bc. 4 cpp |C++]] | [[C++ Bc. 5|Další]] ]


<math>x_{n-2} = (b_{n-2} - t_{n-1}x_{n-1} - - t_{ n }x_{ n })/t_{n-1}</math>
[[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:


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