{VERSION 4 0 "IBM INTEL LINUX" "4.0" }
{USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0
1 0 0 0 0 1 }{CSTYLE "" -1 256 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }
{CSTYLE "" -1 257 "" 1 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }{PSTYLE "Normal
" -1 0 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0
-1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Heading 1" 0 3 1 {CSTYLE "" -1 -1
"" 1 18 0 0 0 0 0 1 0 0 0 0 0 0 0 0 }1 0 0 0 8 4 0 0 0 0 0 0 -1 0 }}
{SECT 0 {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart;" }}}{SECT 1
{PARA 3 "" 0 "" {TEXT -1 25 "Sets, Lists, some basics." }}{EXCHG
{PARA 0 "" 0 "" {TEXT -1 60 "A set is denoted by \{\} and a list by []
. Both may be empty." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG
{PARA 0 "> " 0 "" {MPLTEXT 1 0 40 "S1:= \{\}; S2 := \{1, 23\}; S3 := \+
\{23,4,5\};" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 157 "Union, intersecti
on and minus (set difference) can be accomplished two ways. Notice th
e back quote. The second form is more compact for more than two sets.
" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 ""
{MPLTEXT 1 0 49 "T1 := S2 union S3; T2 := `intersect`(S2, S3,T1);" }}
}{EXCHG {PARA 0 "" 0 "" {TEXT -1 63 "You can test for membership and t
he result is of type boolean." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT
1 0 40 "b := member(1, S1); c := member(1, S2);" }}}{EXCHG {PARA 0 ">
" 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16
"type(b,boolean);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "b and c
;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 5 "Lists" }}}{EXCHG {PARA 0 "> \+
" 0 "" {MPLTEXT 1 0 41 "L1 := [2,3,5,2,3,6,2,3]; L2 := [3,4,8,9];" }}}
{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "nops(L1); op(3,L1); [op(1..
6,L1)]; \{op(1..6,L1)\};" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16
"convert(L1,set);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "L3 := \+
[op(L1),op(L2)];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "L3 := m
ap(x -> x^2, L2);" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 26 "The Linear
Algebra Package" }}{PARA 0 "" 0 "" {TEXT -1 92 "Maple 6 has two packa
ges for doing linear algebra-- LinearAlgebra, which is new, and linalg
." }}{PARA 0 "" 0 "" {TEXT -1 248 "The new package improves on the ol
der linalg package in many ways. We'll look at some of the features o
f the new package. A fundamental difference is that Vectors and Matr
ices are stored as rtables rather than tables. This means that access
ing" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 168 "F
irst, defining a Vector or Matrix can be done in very many ways (note \+
the capital letter means Maple will use Linear Algebra not linalg). W
e'll just look at a couple." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA
0 "" 0 "" {TEXT -1 64 "Specifying just the dimension gives you an obje
ct with all 0's,." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "Vector(
2);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 49 "You can also specify the e
ntries in several ways:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 26 "
A:= Vector(1..3, 5); A[2];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0
38 "f:= (j) -> x^(j-1); Vector(3,f);" }}}{EXCHG {PARA 0 "> " 0 "
" {MPLTEXT 1 0 35 "g:= k -> k*(k-1); Vector(3,g);" }}}{EXCHG
{PARA 0 "" 0 "" {TEXT -1 221 "There is an option to specify a row Vect
or. The example also shows two other things 1) you can just spell ou
t the entries, you don't have to say the dimensions, 2) your entries \+
can be numbers, variables, and functions." }}}{EXCHG {PARA 0 "> " 0 "
" {MPLTEXT 1 0 28 "C := Vector[row]([3,x^2,g]);" }}}{EXCHG {PARA 0 ""
0 "" {TEXT -1 195 "The default for a random Vector is integer entries \+
between -99 and 99. You can also specify a random number generator. \+
There are other options too: e.g. specify the density, specify the sh
ape." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 38 "RanVec := LinearAlg
ebra[RandomVector];" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "B :=
RanVec(3);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "rn := rand(1
..10^6);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 41 "RanVec(10, gene
rator = rn, density = .5);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 67 "Ari
thmetic operations are easy to write. Recall our Vectors A, B.." }}
{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1
0 13 "A; B; A+5*B; " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 85 "Matrtix mu
ltiplications is also easy (and the LinearAlgebra package is not requi
red)." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "C; A.C;" }}}
{EXCHG {PARA 0 "" 0 "" {TEXT -1 65 "If you want to apply a function to
each term use the map command." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT
1 0 13 "map(exp, A); " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 41 "For Matr
ices the same techniques apply. " }}{PARA 0 "" 0 "" {TEXT -1 88 "Addi
tional constructors for matrices are Identity Matrix, ScalarMatrix, D
iagonalMatrix," }}{PARA 0 "" 0 "" {TEXT -1 27 "BandMatrix and many oth
ers." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 ""
{MPLTEXT 1 0 44 "M := LinearAlgebra[DiagonalMatrix]([5,3,4]);" }}
{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT
-1 69 "Multiplication of a Matrix and Vector and Matrix inversion are \+
easy: " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "M.A; M^(-1);" }}
}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 32 "L
et's get the whole package now." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT
1 0 20 "with(LinearAlgebra);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 52 "Y
ou can specify the entries of a Matrix as follows:" }}{PARA 0 "" 0 "
" {TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "N := <<2,
3,4>|<1,2,3>|<5,0,7>>;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 62 "Just to
prove there is a difference between matrix and Matrix." }}}{EXCHG
{PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "type(M,matrix); type(M,Matrix);" }}
}{EXCHG {PARA 0 "" 0 "" {TEXT -1 23 "Now, to solve a system." }}}
{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "
" {MPLTEXT 1 0 17 "LinearSolve(N,A);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT
-1 22 "New Matrices from old:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}
{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "P := ; Q := ;" }}}
{EXCHG {PARA 0 "" 0 "" {TEXT -1 69 "Solving the following linear syst
em gives a three dimensional space." }}}{EXCHG {PARA 0 "> " 0 ""
{MPLTEXT 1 0 17 "LinearSolve(Q,A);" }}}{EXCHG {PARA 0 "> " 0 ""
{MPLTEXT 1 0 55 "Q.<1,0,0,4,-5,0>; Q.<0,1,0,5,-6,0>; Q.<0,0,1,5,-5,-1
>;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 111 "Eigenvectors gives you a v
ector with the Eigenvalues, followed by a matrix with the correspondin
g Eigenvectors." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 28 "H := eva
lf(Eigenvectors(N));" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "H[1]
;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 96 "To select the Eigenvector, s
elect the second element of the list H then select the first column."
}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "K := H[2];" }}}{EXCHG
{PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "K[1..3,1];" }}}{EXCHG {PARA 0 "> "
0 "" {MPLTEXT 1 0 33 "h:=CharacteristicPolynomial(N,x);" }}}{EXCHG
{PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "solve(h,x);" }}}{EXCHG {PARA 0 "> \+
" 0 "" {MPLTEXT 1 0 21 "plots[matrixplot](P);" }}}}{EXCHG {PARA 0 "> \+
" 0 "" {MPLTEXT 1 0 0 "" }}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 23 "Basic
s of Number Theory" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{EXCHG {PARA 0 "
" 0 "" {TEXT -1 68 "The starting point is primes. There are several w
ays to get primes." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "nextp
rime(100);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "ithprime(55);
" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "isprime(%);" }}}{EXCHG
{PARA 0 "" 0 "" {TEXT -1 175 "The Euclidean algeorithm is used to find
the greatest common divisor. You can get the quotient of each intege
r by the gcd. The two extra variables are set to these values." }}}
{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "gcd(27,18);" }}}{EXCHG
{PARA 0 "> " 0 "" {MPLTEXT 1 0 28 "gcd(27,18,'ap','bp');ap; bp;" }}}
{EXCHG {PARA 0 "" 0 "" {TEXT -1 60 "You can also get the linear combin
ation that gives the gcd.." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG
{PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "igcdex(45,290,'s','t');" }}}{EXCHG
{PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "s; t; s*45 + t*290;" }}}{EXCHG
{PARA 0 "" 0 "" {TEXT -1 78 "The same can be done with polynomials. Y
ou have to specify the variable, too." }}{PARA 0 "" 0 "" {TEXT -1 0 "
" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 35 "F := x^3-3*x-2; H := x^
4-4*x^2-x+2;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "gcdex(F, H,
x, 's','t');" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "s; t; s*F
+ t*H; simplify(%);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 245 "A numbe
r of functions have two versions, one for polynomials and one for inte
gers. The integer version is preceeded with i (e.g. gcd). Other func
tions have both real number and integer versions. Again, the integer \+
version is preceeded with i." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}
{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "ifactor(1351895612498);" }}}
{EXCHG {PARA 0 "" 0 "" {TEXT -1 99 "In ifactors(), the first term is \+
-1 if the input is negative. The other terms are [prime ,power]." }}}
{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "ifactors(120);" }}}{EXCHG
{PARA 0 "" 0 "" {TEXT -1 158 "The q is optional and it receives the qu
otient. iquo works the other way returning the quotient, and (optiona
lly) setting an input variable to the remainder." }}{PARA 0 "" 0 ""
{TEXT -1 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "irem(29,7,'
q'); q;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 46 "You can solve equatio
ns for integer solutions." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}}{EXCHG
{PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "isolve(3*u-4*v=7);" }}}{EXCHG
{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 ""
{MPLTEXT 1 0 0 "" }}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}
{SECT 1 {PARA 3 "" 0 "" {TEXT -1 19 "Modular Arithmetic" }}{EXCHG
{PARA 0 "" 0 "" {TEXT -1 54 "Doing arithmetic mod m is critical in num
ber theory. " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "25*73 mod \+
99;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 67 "To make Maple think before
it computes use the \"neutral operator\" &" }}}{EXCHG {PARA 0 "> " 0
"" {MPLTEXT 1 0 24 "66^1235346462356 mod 99;" }}}{EXCHG {PARA 0 "> "
0 "" {MPLTEXT 1 0 26 "66 &^1235346462356 mod 99;" }}}{EXCHG {PARA 0 "
" 0 "" {TEXT -1 62 "Inverting mod n is simple. Of course it isn't alw
ays defined." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 32 "53^(-1) mod
99; 66^(-1) mod 99;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "ms
olve(\{3*x-4*y=1,7*x+y=2\},19);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT
1 0 22 "msolve(x^2 = 5 , 17); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT
1 0 18 "msolve(x^2= 1, 8);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 40 "Now
let's do some linear algebra mod m;." }}{PARA 0 "" 0 "" {TEXT -1 0 "
" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "m := 19;" }}}{EXCHG
{PARA 0 "> " 0 "" {MPLTEXT 1 0 40 "N := RandomMatrix(2,2,generator=0..
m-1);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 75 "I'll define my own funct
ion to invert a matrix and to multiply to matrices." }}}{EXCHG {PARA
0 "> " 0 "" {MPLTEXT 1 0 42 "ModInv := (M , m)-> map( modp, M^(-1), m)
;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "Ninv := ModInv(N,m);"
}}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "N^2 mod m;" }}}{EXCHG
{PARA 0 "> " 0 "" {MPLTEXT 1 0 40 "ModMul := (M,N, m) -> map(modp, M.N
, m);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "ModMul(N,N,m);" }}
}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "ModMul(N,Ninv,m);" }}}
{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 49 "Determinant(N, method = modu
lar[m]); 16*15 mod m;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 121 "Unfortu
nately, the Nullspace command, which is used over finite fields, seems
to require matrices rather than Matrices. " }}}{EXCHG {PARA 0 "> "
0 "" {MPLTEXT 1 0 20 "Nullspace(N) mod 19;" }}}{EXCHG {PARA 0 "> " 0 "
" {MPLTEXT 1 0 41 "N1 := convert(N, matrix);type(N1,matrix);" }}}
{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "Nullspace(N1) mod 19; " }}}
{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 40 "N2 := linalg[submatrix](N1, \+
1..1,1..2); " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "Nullspace(N
2) mod 19;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{PARA 0
"" 0 "" {TEXT -1 0 "" }}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 14 " Two Exer
cises" }}{PARA 0 "" 0 "" {TEXT -1 212 "1. Make a list of all (less th
an some bound) the Fibonacci numbers which are also perfect squares. \+
List also the index of the Fibonacci number. Try it by a brute force \+
method and then try to be more efficient." }}{PARA 0 "" 0 "" {TEXT -1
0 "" }}{PARA 0 "" 0 "" {TEXT -1 48 "2. Which Fibonacci numbers are di
visible by 17?" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }{TEXT 256 0 "" }
{TEXT 257 0 "" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}}
{MARK "3 0 0" 0 }{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 }{PAGENUMBERS 0 1 2
33 1 1 }