A:=Matrix([[5,3,1,7,9],[6,4,2,8,-8],[7,5,3,10,9],[9,6,4,-9,-5],[8,5,2,11,4]]);

MatrixInverse(A).Vector([5,6,7,9,8]);

Explain why the answer makes sense in this context (hint compare Vector([5,6,7,9,8]) to the columns of A)

MatrixInverse(A).Vector([5.1,6.1,7.1,9.1,8.1]);

MatrixInverse(A).Vector([5.01,6.01,7.01,9.01,8.01]);

MatrixInverse(A).Vector([5.001,6.001,7.001,9.001,8.001]);

MatrixInverse(A).Vector([5.0001,6.0001,7.0001,9.0001,8.0001]);

MatrixInverse(A).Vector([5.00001,6.00001,7.00001,9.00001,8.00001]);

MatrixInverse(A).Vector([5.000001,6.000001,7.000001,9.000001,8.000001]);

MatrixInverse(A).Vector([5.0000001,6.0000001,7.0000001,9.0000001,8.0000001]);

MatrixInverse(A).Vector([5.00000001,6.00000001,7.00000001,9.00000001,8.00000001]);

Assume that you intercept a number of items, as follows:

- A question from sender a:
*What kind of row operations did you use to solve that system?* - A string of coded numbers as a reply from sender b:

12, -5, 13, -5, 14, -5, 1, -20, 25, -18, 13, 0, 0, -25, 5, -4, 18, -1, 23, 0, 20, -1, 15, -19, 0, -14 - The beginning of the decoded message:
*elem* - The fact that a 2x2 decoding matrix was used in the Hill Cipher

DecodingMatrix:=Matrix([[a, b],[c,d]]);

DecodingMatrix.Vector([12,-5]) = Vector([5,12]); (the vector corresponding to "el")

DecodingMatrix.Vector([13,-5]) = (the vector corresponding to "em" - create it!)

Part B: From setting equal each corresponding entry in Part A, write down the 4 equations in the 4 unknowns a, b, c, d.

Part C: Solve this system (it's linear - you can solve it using a variety of methods, like a 4x5 augmented matrix with columns a b c d and an equals column, so your first row would be [12,-5,0,0,5]) to see whether you have 0, 1 or infinite solutions for a, b, c and d.

Part D: If you have solutions, put them into DecodingMatrix:=Matrix([[a, b],[c,d]]); (careful about which numbers are in which spots) and use this to decode (by-hand or in Maple). If you are using Maple, then execute (twice!)

interface(rtablesize=13);

interface(rtablesize=13);

CodedMessage:=Matrix([[12,13,14,1,25,13,0,5,18,23,20,15,0],[-5,-5,-5,-20,-18,0,-25,-4,-1,0,-1,-19,-14]]);

DecodingMatrix.CodedMessage

(the interface command gets Maple to display more than 10 columns of a matrix and you must define the DecodingMatrix correctly using Part C. Notice also that the coded string has gone in as the column vectors of the CodedMessage)

Then translate back to letters by reading down the columns. If there are no solutions, then explain why the system is inconsistent.

Various Maple Commands:

> A:=Matrix([[-1,2,1,-1],[2,4,-7,-8],[4,7,-3,3]]);

> ReducedRowEchelonForm(A);

> GaussianElimination(A);

> ConditionNumber(A);

> Transpose(A);

> Vector([1,2,3]);

> B:=MatrixInverse(A);

> A.B;

> A+B;

> B-A;

> 3*A;

> A^3;

> evalf(M);

> spacecurve({[4*t,7*t,3*t,t=0..1],[-1*t,2*t,6*t,t=0..1]},color=red, thickness=2);

> implicitplot({2*x+4*y-2,5*x-3*y-1}, x=-1..1, y=-1..1);

> implicitplot3d({x+2*y+3*z-3,2*x-y-4*z-1,x+y+z-2},x=-4..4,y=-4..4,z=-4..4);