/*! \file matvecdemo.cc \brief demo for static vectors and matrices \date 15 April 2010 \author Clemens Pechstein Institute of Computational Mathematics Johannes Kepler University Linz, Austria Tutorials -- Numerical methods for elliptic PDEs summer semester 2010 */ #include #include #include #include "vec.hh" #include "mat.hh" using namespace std; void Vec2Demo () { cout << endl << "==============" << endl << "DEMO of Vec<2>" << endl << "==============" << endl << endl; Vec<2> v; v[0] = 0.5; v[1] = -1; cout << "v = " << v << endl; cout << "we scale v by factor 2..." << endl; v *= 2; cout << "v = " << v << endl; Vec<2> w(1, 2); cout << "w = " << w << endl; Vec<2> z; z = v + w; cout << "v + w = " << z << endl; z = v - w; cout << "v - w = " << z << endl; } // Vec2Demo void Vec3Demo () { cout << endl << "==============" << endl << "DEMO of Vec<3>" << endl << "==============" << endl << endl; Vec<3> v(0, 2, -1); Vec<3> w(1, -3, 0); cout << "v = " << v << endl; cout << "w = " << w << endl; cout << "v += w..." << endl; v += w; cout << "v = " << v << endl; cout << "v . w = " << inner_product (v, w) << endl; } void Mat22Demo () { cout << endl << "=================" << endl << "DEMO of Mat<2, 2>" << endl << "=================" << endl << endl; Mat<2, 2> A, B; A(0, 0) = 2; A(0, 1) = -1; A(1, 0) = -0.5; A(1, 1) = 3; cout << "A = " << A << endl; B = 0; B(0, 0) = B(1, 1) = 1; cout << "B = " << B << endl; cout << "A + B = " << (A + B) << endl; Vec<2> v, w; v[0] = 1; v[1] = -0.5; cout << "v = " << v << endl; w = A * v; // same as A.apply (v, w); cout << "A v = " << w << endl; A.applyTrans (v, w); cout << "A^T v = " << w << endl; Mat<2, 2> C(A); // copy from A C.transpose (); cout << "C = A^T = " << C << endl; } // Mat22Demo int main () { Vec2Demo (); Vec3Demo (); Mat22Demo (); // put your own stuff here return 0; }