> with(linalg); Warning: new definition for norm Warning: new definition for trace [BlockDiagonal, GramSchmidt, JordanBlock, Wronskian, add, addcol, addrow, adj, adjoint, angle, augment, backsub, band, basis, bezout, blockmatrix, charmat, charpoly, col, coldim, colspace, colspan, companion, concat, cond, copyinto, crossprod, curl, definite, delcols, delrows, det, diag, diverge, dotprod, eigenvals, eigenvects, entermatrix, equal, exponential, extend, ffgausselim, fibonacci, frobenius, gausselim, gaussjord, genmatrix, grad, hadamard, hermite, hessian, hilbert, htranspose, ihermite, indexfunc, innerprod, intbasis, inverse, ismith, iszero, jacobian, jordan, kernel, laplacian, leastsqrs, linsolve, matrix, minor, minpoly, mulcol, mulrow, multiply, norm, normalize, nullspace, orthog, permanent, pivot, potential, randmatrix, randvector, rank, ratform, row, rowdim, rowspace, rowspan, rref, scalarmul, singularvals, smith, stack, submatrix, subvector, sumbasis, swapcol, swaprow, sylvester, toeplitz, trace, transpose, vandermonde, vecpotent, vectdim, vector] > Q := matrix(4,4,[1/6,-5/6,1/6,1/2,-5/6,1/6,1/6,1/2,1/6,1/6,-5/6,1/2,1/2,1/2,1/2,1/2]); [ 1/6 -5/6 1/6 1/2 ] [ ] [ -5/6 1/6 1/6 1/2 ] Q := [ ] [ 1/6 1/6 -5/6 1/2 ] [ ] [ 1/2 1/2 1/2 1/2 ] -------------------------------------------------------------------------------- > QT := transpose(Q); [ 1/6 -5/6 1/6 1/2 ] [ ] [ -5/6 1/6 1/6 1/2 ] QT := [ ] [ 1/6 1/6 -5/6 1/2 ] [ ] [ 1/2 1/2 1/2 1/2 ] > evalm (QT &* Q); [ 1 0 0 0 ] [ ] [ 0 1 0 0 ] [ ] [ 0 0 1 0 ] [ ] [ 0 0 0 1 ] # Since QT * Q = Identity matrix, so Q is orthogonal, and transopse of Q ,QT is the inverse of # Q. # # Problem 16. > c1 := matrix(3,1,[1,1,1]); [ 1 ] [ ] c1 := [ 1 ] [ ] [ 1 ] > c2 := matrix(3,1,[-1,1,0]); [ -1 ] [ ] c2 := [ 1 ] [ ] [ 0 ] > c3 := matrix(3,1,[-1,0,1]); [ -1 ] [ ] c3 := [ 0 ] [ ] [ 1 ] > lw1 := sqrt(evalm(transpose(c1)&*c1)); 1/2 lw1 := [ 3 ] > q1 := matrix(3,1,[1/sqrt(3),1/sqrt(3),1/sqrt(3)]); [ 1/2 ] [ 1/3 3 ] [ ] [ 1/2 ] q1 := [ 1/3 3 ] [ ] [ 1/2 ] [ 1/3 3 ] > evalm(transpose(c2)&*q1); [ 0 ] > w2 := c2; w2 := c2 > lw2 := sqrt(evalm(transpose(c2)&*c2)); 1/2 lw2 := [ 2 ] > q2 := matrix(3,1,[-1/sqrt(2),1/sqrt(2),0]); [ 1/2 ] [ - 1/2 2 ] [ ] q2 := [ 1/2 ] [ 1/2 2 ] [ ] [ 0 ] > evalm(transpose(c3)&*q1); [ 0 ] > evalm(transpose(c3)&*q2); [ 1/2 ] [ 1/2 2 ] > evalm((1/sqrt(2)) * q2); [ -1/2 ] [ ] [ 1/2 ] [ ] [ 0 ] > w3 := evalm(c3-"); [ -1/2 ] [ ] w3 := [ -1/2 ] [ ] [ 1 ] > lw3 := sqrt(evalm(transpose(w3)&*w3)); 1/2 lw3 := [ 3/2 ] > q3 := matrix(3,1,[(-1/2)/sqrt(3/2),(-1/2)/sqrt(3/2),1/sqrt(3/2)]); [ 1/2 ] [ - 1/6 6 ] [ ] [ 1/2 ] q3 := [ - 1/6 6 ] [ ] [ 1/2 ] [ 1/3 6 ] > Q := augment(q1,q2,q3); [ 1/2 1/2 1/2 ] [ 1/3 3 - 1/2 2 - 1/6 6 ] [ ] [ 1/2 1/2 1/2 ] Q := [ 1/3 3 1/2 2 - 1/6 6 ] [ ] [ 1/2 1/2 ] [ 1/3 3 0 1/3 6 ] > R := matrix(3,3,[sqrt(3),0,0,0,sqrt(2),1/sqrt(2),0,0,sqrt(3/2)]); [ 1/2 ] [ 3 0 0 ] [ ] [ 1/2 1/2 ] R := [ 0 2 1/2 2 ] [ ] [ 1/2 ] [ 0 0 1/2 6 ] > A := evalm(Q &* R); [ 1 -1 -1 ] [ ] A := [ 1 1 0 ] [ ] [ 1 0 1 ] # Exercise 5.2 Prob 16, 22. # Prob 16. # > A := matrix (2,2,[5,6,2,1]); [ 5 6 ] A := [ ] [ 2 1 ] > eigenvects(A); [-1, 1, {[ -1, 1 ]}], [7, 1, {[ 3, 1 ]}] > lamda1 := -1; lamda1 := -1 > lamda2 := 7; lamda2 := 7 # # lamda1 and lamda2 are the eigenvalues, and the characteristic polynomial is : # (lamda+1)(lamda-7)=0. # > x1 := vector(2,[-1,1]); x1 := [ -1, 1 ] > x2 := vector(2,[3,1]); x2 := [ 3, 1 ] # x1 and x2 are the bases for its eigenspaces. > evalm(A &* x1); [ 1, -1 ] > evalm(lamda1 * x1); [ 1, -1 ] > evalm(A &* x2); [ 21, 7 ] > evalm(lamda2 * x2); [ 21, 7 ] # Prob 22. # > A := matrix(4,4,[-4,0,6,0,0,-5,0,-4,-1,0,1,0,0,3,0,2]); [ -4 0 6 0 ] [ ] [ 0 -5 0 -4 ] A := [ ] [ -1 0 1 0 ] [ ] [ 0 3 0 2 ] > eigenvects(A); [-2, 2, {[ 3, 0, 1, 0 ], [ 0, -4/3, 0, 1 ]}], [-1, 2, {[ 2, 0, 1, 0 ], [ 0, -1, 0, 1 ]}] > lamda1 := -2; lamda1 := -2 > lamda2 := -1; lamda2 := -1 # lamda1 = -2 and lamda2 = -1 are the eigenvalues, and the characteristic polynomial is : # (lamda + 1)(lamda + 2)=0. # > x1 := vector(4,[3,0,1,0]); x1 := [ 3, 0, 1, 0 ] > x2 := vector(4,[0,-4/3,0,1]); x2 := [ 0, -4/3, 0, 1 ] > x3 := vector(4,[2,0,1,0]); x3 := [ 2, 0, 1, 0 ] > x4 := vector(4,[0,-1,0,1]); x4 := [ 0, -1, 0, 1 ] > eigenspace1 := augment(x1,x2); [ 3 0 ] [ ] [ 0 -4/3 ] eigenspace1 := [ ] [ 1 0 ] [ ] [ 0 1 ] > eigenspace2 := augment(x3,x4); [ 2 0 ] [ ] [ 0 -1 ] eigenspace2 := [ ] [ 1 0 ] [ ] [ 0 1 ] # eigenspace1 and eigenspace2 are the bases for its eigenspaces. # > evalm(A &* x1); [ -6, 0, -2, 0 ] > evalm(lamda1 * x1); [ -6, 0, -2, 0 ] > evalm(A &* x2); [ 0, 8/3, 0, -2 ] > evalm(lamda1 * x2); [ 0, 8/3, 0, -2 ] > evalm(A &* x3); [ -2, 0, -1, 0 ] > evalm(lamda2 * x3); [ -2, 0, -1, 0 ] > evalm(A &* x4); [ 0, 1, 0, -1 ] > evalm(lamda2 * x4); [ 0, 1, 0, -1 ] > evalm(A &* eigenspace1); [ -6 0 ] [ ] [ 0 8/3 ] [ ] [ -2 0 ] [ ] [ 0 -2 ] > evalm(lamda1 * eigenspace1); [ -6 0 ] [ ] [ 0 8/3 ] [ ] [ -2 0 ] [ ] [ 0 -2 ] > evalm(A &* eigenspace2); [ -2 0 ] [ ] [ 0 1 ] [ ] [ -1 0 ] [ ] [ 0 -1 ] > evalm(lamda2 * eigenspace2); [ -2 0 ] [ ] [ 0 1 ] [ ] [ -1 0 ] [ ] [ 0 -1 ] # # Final pratice problem. Exercise 5.3, prob 24. # > A := matrix(3,3,[1,0,1,0,2,0,-1,0,-1]); [ 1 0 1 ] [ ] A := [ 0 2 0 ] [ ] [ -1 0 -1 ] > eigenvects(A); [2, 1, {[ 0, 1, 0 ]}], [0, 2, {[ -1, 0, 1 ]}] > S := matrix(3,2,[0,-1,1,0,0,1]); [ 0 -1 ] [ ] S := [ 1 0 ] [ ] [ 0 1 ] > Blmada := matrix(2,2,[2,0,0,0]); [ 2 0 ] Blmada := [ ] [ 0 0 ] > InS := inverse(S); Error, (in inverse) singular matrix # Since matrix A has only 3 eigenvectors, it's not invertible. So A is not diagonalizable.