ECE OOP Lab4
ECE OOP Lab4
Use vector.h and matrix.h to declare class Vector and Matrix respectively.
1 ***************************************************************************
2 * class Vector :
3 *
4 * data member :
5 * * entry vector entries of type Double
6 * size vector size
7 *
8 * constructors and destructor :
9 * Vector ( size ) create a vector object of size size
10 * Vector ( size , val ) create a vector with entries of val
11 * Vector ( v ) copy constructor from vector v with deep copy
12 * ~ Vector () destructor
13 *
14 * member methods :
15 * getSize () return the size of vector v
16 * setEntry (i , val ) set v ( i ) = val
17 * getEntry ( i ) return v ( i )
18 * zeros () initialize vector v with zero entries
19 * ones () initialize vector v with one entries
20 * random () initialize vector v with random entries
21 * norm ( p ) compute p - norm of vector v , return a scalar
22 * print ( string name ) print the entries to the screen
23 *
24 * entry access :
25 * v(i) zero - based indexing
26 *
27 * member operators :
28 * v = w assignment
29 * v = -w
30 * v += w
31 * v -= w
32 * v *= alp alp scalar number
33 * v *= w
34 * t = v + w
35 * t = v - w
36 * w = alp * v
37 * non - member operators :
38 * alpha = dot (v , w ) return dot product of two vectors
39 ***************************************************************************/
1 ***************************************************************************
2 * class Matrix :
3 *
4 * member data :
ECE Programming 4 Page 2 of 4
Page 2
ECE Programming 4 Page 3 of 4
23 w . random () ;
24 t . zeros () ;
25
26 A . random () ;
27 B . random () ;
28 C . zeros () ;
29 D . random () ;
30 E . zeros () ;
31
32 /*
33 * 3. print out the i n i t i a l i z e d vectors and m a t r i c e s
34 */
35 v . print ( " Vector ␣ v : ␣ " ) ;
36 w . print ( " Vector ␣ w : ␣ " ) ;
37 t . print ( " Vector ␣ t : ␣ " ) ;
38 A . print ( " Matrix ␣ A : ␣ " ) ;
39 B . print ( " Matrix ␣ B : ␣ " ) ;
40 C . print ( " Matrix ␣ C : ␣ " ) ;
41 D . print ( " Matrix ␣ D : ␣ " ) ;
42 E . print ( " Matrix ␣ E : ␣ " ) ;
43
44
45 /*
46 * 4. compute vector norms
47 */
48 cout << " || ␣ v ␣ || _2 ␣ = ␣ " << v . norm (2) << endl ;
49 cout << " || ␣ v ␣ || _max ␣ = ␣ " << v . norm ( p_INF ) << endl ;
50
51 /*
52 * 5. o p e r a t i o n s
53 */
54 // ====== for vectors = = = = = = = =
55 // === adding 2 vectors
56 t = v + w;
57 t . print ( " Vector ␣ t ␣ = ␣ v ␣ + ␣ w : ␣ " ) ;
58
59 // === scalar - vector m u l t i p l i c a t i o n
60 t = v * alpha ;
61 t . print ( " Vector ␣ t ␣ = ␣ v * alpha : ␣ " ) ;
62
63 // === i n c r e a m e n t
64 ++ t ;
65 t . print ( " Vector ␣ ++ t : ␣ " ) ;
66
67 // === dot product of 2 vectors of the same size
68 beta = dot (v , w ) ;
69 cout << " beta ␣ = ␣ dot (v , ␣ w ) ␣ = ␣ " << beta << endl ;
70
71 // ====== for m a t r i c e s = = = = = = = =
72 // ==== adding 2 m a t r i c e s
73 E . zeros () ;
74 C = A + B;
75 C . print ( " Matrix ␣ C ␣ = ␣ A ␣ + ␣ B : ␣ " ) ;
76 E = C + B ; // should return error
77 // ==== matrix - matrix m u l t i p l i c a t i o n
78 E = A * D;
79 E . print ( " Matrix ␣ E ␣ = ␣ A ␣ * ␣ D : ␣ " ) ;
80 // ==== matrix - scalar m u l t i p l i c a t i o n
81 E = E * alpha ;
82 E . print ( " Matrix ␣ E ␣ = ␣ E * alpha : ␣ " ) ;
83 // ==== i n c r e a m e n t
84 ++ E ;
85 E . print ( " Matrix ␣ ++ E : ␣ " ) ;
86 // ==== complex matrix o p e r a t i o n
87 Matrix F (5 , 5 , 0.0) ;
88 F = E *( A * transpose ( B ) + C * D ) ;
Page 3
ECE Programming 4 Page 4 of 4
Listing 3: MatVecClass.cpp
Page 4