|\^/| Maple V Release 3 (University of Florida)
._|\| |/|_. Copyright (c) 1981-1994 by Waterloo Maple Software and the
\ MAPLE / University of Waterloo. All rights reserved. Maple and Maple V
<____ ____> are registered trademarks of Waterloo Maple Software.
| Type ? for help.
PROBLEM CI(b) and C2. I do this with Maple, so as to demonstrate some
commands. However, almost all of the calculations I can do faster by hand.
For *large* matrices, however, using these Maple cmds is much better.
[ -1 -1 ]
B := [ ]
[ 2 -4 ]
I'll use Id for the 2x2 identity matrix, and use BmxId to denote
B minus x times Id
which is the matrix we use to compute the char.poly of B.
> Id := eye(2) : BmxId := B - x*Id : evalm(BmxId);
[ - 1 - x -1 ]
[ ]
[ 2 - 4 - x ]
> cpB := det(BmxId); factor(cpB);
2
cpB := 6 + 5 x + x
(x + 3) (x + 2)
So the eigenvalues are -3 and -2. Letting alpha be the more-positive, lets
compute vectors in the nullspaces of the corresponding matrices. I'll let
Maple do this, since we did a nullspace calculation in part(a).
> alpha := -2: beta := -3: basisalpha := nullspace(B - alpha*Id);
basisbeta := nullspace(B - beta*Id);
basisalpha := {[ 1, 1 ]} , basisbeta := {[ 1, 2 ]}
As we knew had to happen, each nullspace is 1-dimensional. Lets call the eigenvectors
valpha and vbeta. So
> valpha := convertvec(op(basisalpha)); vbeta := convertvec(op(basisbeta));
[ 1 ] [ 1 ]
valpha := [ ] vbeta := [ ]
[ 1 ] , [ 2 ]
Let EIG denote the eigenbasis {valpha, vbeta}, We now make the ChangeOfBasis
matrix, which converts vectors to the STD basis, from the EIGen basis.
> COBtoSTDfromEIG := augment(valpha,vbeta); # Maple's `concat' is faster.
[ 1 1 ]
COBtoSTDfromEIG := [ ]
[ 1 2 ]
This is our M^(-1), though of course it depends on the particular eigenvectors
that I chose. Lets compute M:
> COBtoEIGfromSTD := inverse(COBtoSTDfromEIG) ;
[ 2 -1 ]
COBtoEIGfromSTD := [ ]
[ -1 1 ]
Finally, we compute the diagonal matrix, which is the linear trn. B, but written
relative to the eigenbasis EIG.
> diag := matrix(2,2,[alpha, 0 , 0 , beta]) ;
[ -2 0 ]
diag := [ ]
[ 0 -3 ]
Let's check that conjugating the diagonal matrix *really yields* the original B.
> evalm(COBtoSTDfromEIG &* diag &* COBtoEIGfromSTD) , evalm(B);
[ -1 -1 ] [ -1 -1 ]
[ ], [ ]
[ 2 -4 ] [ 2 -4 ]
Ain't Science Wonnerful?
Now lets compute all the entries in B^(100). Because I don't want Maple to expand out
alpha^(100), let me use symbolic names ALPHA and BETA for alpha^(100) and beta^(100).
Letting DIAG denote diag^(100), then,
> DIAG := matrix(2,2,[ALPHA, 0 , 0 , BETA]) ;
[ ALPHA 0 ]
DIAG := [ ]
[ 0 BETA ]
Thus...
> BtoTheOneHundred := evalm(COBtoSTDfromEIG &* DIAG &* COBtoEIGfromSTD);
[ 2 ALPHA - BETA - ALPHA + BETA ]
BtoTheOneHundred := [ ]
[ 2 ALPHA - 2 BETA - ALPHA + 2 BETA ]
We can now plug in the correct values for ALPHA and BETA but -just for fun- let
us substitute *strings* in for ALPHA and BETA; this way, Maple will not try to
evaluate (-2)^100.
> ALPHA := `(-2)^100` : BETA := `(-3)^100` : map(eval,BtoTheOneHundred) ;
[ 2 (-2)^100 - (-3)^100 - (-2)^100 + (-3)^100 ]
[ ]
[ 2 (-2)^100 - 2 (-3)^100 - (-2)^100 + 2 (-3)^100 ]
The entry in position (2,1) is
> z := "[2,1];
z := 2 (-2)^100 - 2 (-3)^100
Question for you: Is z positive or negative?
#### End of File ####