Numerical Methods Contents - SAM
Numerical Methods Contents - SAM
Numerical Methods Contents - SAM
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
1.1.2 Matrices<br />
Matrices = two-dimensional arrays of real/complex numbers<br />
⎛<br />
A := ⎝ a ⎞<br />
11 ... a 1m<br />
. . ⎠ ∈ K n,m , n, m ∈ N .<br />
a n1 ... a nm<br />
vector space of n × m-matrices: (n ˆ= number of rows, m ˆ= number of columns)<br />
⎛<br />
Zero matrix: O = ⎝ 0 . .. 0<br />
⎞<br />
. ... . ⎠ ∈ K n,m , MATLAB: O = zeros(n,m);<br />
0 . .. 0<br />
⎛<br />
Diagonal matrix: D = ⎝ d ⎞<br />
1 0<br />
. .. ⎠ ∈ K n,n , MATLAB: D = diag(d); with vector d<br />
0 d n<br />
✎ notation: bold capital roman letters, e.g., A,S,Y<br />
MATLAB:<br />
K n,1 ↔ column vectors, K 1,n ↔ row vectors<br />
✄ vectors are 1 × n/n × 1-matrices<br />
✄ initialization:<br />
Accessing matrix entries & sub-matrices (✎<br />
⎛<br />
A := ⎝ a ⎞<br />
11 . .. a 1m<br />
. . ⎠<br />
a n1 . .. a nm<br />
⎛<br />
A = [1,2;3,4;5,6]; → 3 × 2 matrix ⎝ 1 2<br />
⎞<br />
3 4⎠ .<br />
5 6<br />
notations):<br />
→ entry (A) i,j = a ij , 1 ≤ i ≤ n, 1 ≤ j ≤ m ,<br />
→ i-th row, 1 ≤ i ≤ n: a i,: = (A) i,:<br />
Ôº¾ ½º½<br />
,<br />
→ j-th column, 1 ≤ j ≤ m: a i,: = (A) :,j ,<br />
1 ≤ k ≤ l ≤ n ,<br />
→ matrix block (a ij ) i=k,...,l = (A) k:l,r:s ,<br />
1 ≤ r ≤ s ≤ m .<br />
MATLAB: Matrix A ↦→ entry at position (i,j) = A(i,j)<br />
↦→ i-th row = A(i,:)<br />
↦→ j-th column = A(:,j)<br />
↦→<br />
matrix block<br />
(sub-matrix)<br />
(a ij ) i=k,...,l<br />
j=r,...,s<br />
= (A) k:l,r:s = A(k:l,r:s)<br />
Transposed matrix:<br />
⎛<br />
A T = ⎝ a ⎞T<br />
⎛<br />
11 ... a 1m<br />
. . ⎠ := ⎝ a ⎞<br />
11 . .. a n1<br />
. . ⎠ ∈ K m,n .<br />
a n1 ... a nm a 1m . .. a mn<br />
Adjoint matrix (Hermitian transposed):<br />
⎛<br />
A H := ⎝ a ⎞H<br />
⎛ ⎞<br />
11 . .. a 1m ... ā n1<br />
. . ⎠ := ⎝ā11 . . ⎠ ∈ K m,n .<br />
a n1 . .. a nm ā 1m ... ā mn<br />
✎ notation: ā ij = Re(a ij ) − iIm(a ij ) complex conjugate of a ij .<br />
Special matrices:<br />
⎛<br />
Identity matrix: I = ⎝ 1 0<br />
⎞<br />
Ôº¾ ½º½<br />
... ⎠ ∈ K n,n , MATLAB: I = eye(n);<br />
0 1<br />
Remark 1.1.1 (Matrix storage formats). (for dense/full matrices, cf. Sect. 2.6)<br />
A ∈ K m,n<br />
⎛<br />
A = ⎝ 1 2 3<br />
⎞<br />
4 5 6⎠<br />
7 8 9<br />
linear array (size mn) + index computations<br />
(Note:<br />
leading dimension (row major, column major))<br />
Row major (C-arrays, bitmaps, Python):<br />
A_arr 1 2 3 4 5 6 7 8 9<br />
Access to entry a ij of A ∈ K n,m , i = 1,...,n,<br />
j = 1, ...,m:<br />
row major:<br />
column major:<br />
a ij ↔A_arr(m*(i-1)+(j-1))<br />
a ij ↔A_arr(n*(j-1)+(i-1))<br />
Column major (Fortran, MATLAB, OpenGL):<br />
A_arr 1 4 7 2 5 8 3 6 9<br />
Example 1.1.2 (Impact of data access patterns on runtime).<br />
row major<br />
Cache hierarchies ❀ slow access of “remote” memory sites !<br />
column oriented<br />
A = randn(n,n);<br />
for j = 1:n-1,<br />
A(:,j+1) = A(:,j+1) - A(:,j);<br />
end<br />
access<br />
row oriented<br />
A = randn(n);<br />
for i = 1:n-1,<br />
A(i+1,:) = A(i+1,:) - A(i,:);<br />
end<br />
column major<br />
Ôº¾ ½º½<br />
2 K = 3 ; res = [ ] ;<br />
access<br />
n = 3000 ❀ 0.1s n = 3000 ❀ 0.3s<br />
Code 1.1.3: timing for row and column oriented matrix access in MATLAB<br />
1 % Timing for row/column operations<br />
△<br />
Ôº¾ ½º½