Programovací jazyk C++ cvičení - příklad práce s maticemi a vektory

Z GeoWikiCZ
Přejít na: navigace, hledání

[ Zpět na plán cvičení - knihovna matvec ]

Příklad několika základních operací s maticemi a vektory.

#include <iostream>
#include <matvec/matvec.h>   // 1

using namespace GNU_gama;    // 3

int main()
{
  GNU_gama::Mat<> T;         // 2
  Mat<> U;                   // 4

  Mat<> A(3,2);              // 5
  Mat<> B(2,2);              // 6

  A =                        // 7
    1.1, 2.4,
    3.2, 4.5,
    5.3, 6.6;

  B = 0.221, 0.331, 0.441, 0.551;

  std::cout << A << B;

  Mat<> C = A*B;

  std::cout << C;

  Mat<> D = trans(C)*C;

  std::cout << D << inv(D);

  Vec<> b(2);                // 8
  b = 1, 2;

  std::cout << trans(b);

  Vec<> x = inv(D)*b;
  
  std::cout << x << "\n????\n"
	    << b-D*x;

  // soucet dvou vektoru

  Vec<> z(x.dim());

  for (int i=1; i<= z.dim(); i++)
    {
      z(i) = b(i) + x(i);
    }

  std::cout << "z = " <<z << " kontrola =" << b+x-z;

  // soucin matice*vektor : w = D*z;

  Vec<> w(D.rows());

  for (int r=1; r<=w.dim(); r++)     // cyklus pro vsechny radky
    {
      double sum=0;
      for (int s=1; s<=D.cols(); s++)
	{
	  sum += D(r,s)*z(s);
	}
      w(r) = sum;
    }

  std::cout << w << "\nkontrola " << w - D*z;
}

[ Zpět na plán cvičení - knihovna matvec ]