C++ Bc. 32 cpp

Z GeoWikiCZ
Přejít na: navigace, hledání
#include <iostream>
#include <matvec/matvec.h>

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

   std::string text;
};


void reseni(const GNU_gama::Mat<>& U, GNU_gama::Vec<>& x)
{
  if (U.rows() != U.cols() || U.rows() != x.dim()) 
    throw Chyba("chybne zadane dimenze");

  const int N = x.dim();
  for (int i=1; i<=N; i++)
    {
      double p = U(i,i);
      if (p == 0) throw Chyba("nulovy prvek na diagonale");

      p = x(i)/p;
      x(i) = p;

      for (int j=i+1; j<=N; j++)
        {
          x(j) -= U(j,i)*p;
        }
    }
}


int main()
{
  GNU_gama::Mat<> L(5,5);
  L = 
    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;

  GNU_gama::Vec<> b(5);  b = 3, 2, 14, 16, 48;

  try
    {
      reseni(L, b);
      
      std::cout << trans(b);
    }
  catch(Chyba& ch)
    {
      std::cout << ch.text;
    }
}

[ Zpět ]