If you are using Python, you have to implement the Matrix class by yourself, you may not use any existing libraries.Others

Update1:

 If you are using Python, you have to implement the Matrix class by yourself, you may not use any existing libraries.

If you are using C++, use a double datatype (instead of float) for your matrices that will store floating point values, as it can help you to distinguish between int and double matrices. You can have two functions in your generic class to tell if a particular matrix instance is using int or double. If your template type is T, following functions in your generic class can help tell that.

bool isInt(){ return sizeof(T) == sizeof(int);}

bool isDouble{return sizeof(T) == sizeof(double);}

Note that this is not the best solution to know the actual types for the template type, but should work for our purposes.

As for Python, you can use isinstance() to tell between int and float. E.g. call isinstance(variable_name,int) or isinstance(variable_name,float).

Update2:

 Instead of ! operator, please use – (unary minus) for matrix inverse. The document has been updated to replace ! with -.

When we create a matrix using matrix_name = [ semicolon separated row values ], all the values will either be integers or floating points, but never mixed. So it would be either A = [1 2 3 4; 5 6 7 8;] or A

= [1.4 2.3 3.1 4.9; 5.2 6.0 7.4 8.1;].

If A and B are both integer matrices, the result of A + B should be an integer matrix. If they are both floating point, the result should be floating point. Same applies for other binary operations (that require another matrix parameter). Because the Matrix class is generic, a matrix should only be able to accept another matrix of the same type as a parameter. So in order to add two matrices where one is integer and the other is floating point, first you will have to create a new floating point matrix with the same values of the integer matrix but promoted to floating points and then add the matrices.

e.g. if A is integer and B is floating point and the command is A + B.

First you will create a temp matrix, let’s call it C, that has A’s values promoted to floating point. Then do the addition by doing C + B.

You have to write your own generic class (whether you are coding in Python or C++). By a generic class we mean that the datatype for the matrix values will be generic. Other members, such as dimensions will be regular data types (e.g. int for number of rows and number of columns). The instance

methods of the class (including those which overload operators) should be generic, which means if they accept another Matrix object as a parameter, that matrix should be of the (same) generic type.

Description:

 MatShell: A shell/program for high-school students to solve questions involving matrices. It will be a MATLAB like tool (although extremely limited in its capability and scope).

Details:

 The program will behave like an interactive shell where the user can give commands (related to matrices) and see the results. Alternatively, the commands may be written in a script (with .msh extension) which can be passed as a command line argument. If a script is provided, the program will run all the commands given in the script, display corresponding results, and exit. If no script is provided as a command line option, it will enter into the interactive shell mode, where it will wait for user to type a command. For each typed command, it will display a result and wait for the next command. It will remain active until a command to exit the shell is given by the user. MatShell should be able to handle matrices of any size. Following commands are supported:

Command:

  • matrix_name = [ matrix values provided as rows separated by semicolons ]

A matrix can be created by providing a name, equal sign, and values of the matrix provided in rows separated by semicolons and enclosed in square brackets. The name of a matrix can only be composed of one or more letters e.g. A and First are valid names but Mat1 is not. The program should internally create a matrix with provided values and remember its name, as it would be used later by the user in other commands. The program should also print the matrix as a signal to user that it got the matrix and is ready for the next command. (Note that this is not really a command but a way to create a matrix.)

The following is how we can create a 2x4 matrix A. A = [1 2 3 4; 5 6 7 8;]

The program will print the following as soon as the user provides the above command and presses enter.

A =

1

2

3

4

5

6

7

8

Note that the printed matrix is nicely formatted.

  • size matrix_name

size command will print the size of the matrix matrix_name as number of rows x number of columns.

Example: (Note A was declared above.)

size A

ans = 4 x 2

  • isRow matrix_name

isRow command will print yes if the given matrix matrix_name is a row matrix (has a single row), otherwise no.

Example:

isRow A ans = no

  • isColumn matrix_name

isColumn command will print yes if the given matrix matrix_name is a column matrix (has a single column), otherwise no.

Example:

isColumn A ans = no

  • isRectangular matrix_name

isRectangular command will print yes if the given matrix matrix_name is a rectangular matrix (number of rows and number of columns are different), otherwise no.

Example:

isRectangular A ans = yes

  • isSquare matrix_name

isSquare command will print yes if the given matrix matrix_name is a square matrix (number of rows and number of columns are equal), otherwise no.

Example:

isSquare A ans = no

  • isDiagonal matrix_name

isDiagonal command will print yes if the given matrix matrix_name is a square matrix whose all non-diagonal elements are 0, otherwise no.

Example:

B = [1 2 3; 4 5 6; 7 8 9;] B =

1         2         3

4         5         6

7         8         9

isDiagonal B ans = no

C = [2 0; 0 5;] C =

2         0

0         5

isDiagonal C

ans = yes

  • isScalar matrix_name

isScalar command will print yes if the given matrix matrix_name is a diagonal matrix whose all diagonal elements are equal to some non-zero constant, otherwise no.

Example: isScalar C ans = no

D = [2 0; 0 2;] D =

2         0

0         2

isScalar D ans = yes

  • isIdentity matrix_name

isIdentity command will print yes if the given matrix matrix_name is a diagonal matrix whose all diagonal elements are equal to 1, otherwise no.

Example: isIdentity D ans = no

E = [1 0 0; 0 1 0; 0 0 1;] B =

1         0         0

0         1         0

0         0         1

isIdentity E ans = yes

  • isUpperTriangular matrix_name

isUpperTriangular command will print yes if the given matrix matrix_name is a square matrix whose all elements below the diagonal are 0, otherwise no.

Example:

isUpperTriangular E ans = yes

  • isLowerTriangular matrix_name

isLowerTriangular command will print yes if the given matrix matrix_name is a square matrix whose all elements above the diagonal are 0, otherwise no.

Example:

isLowerTriangular E ans = yes

  • isNull matrix_name

isNull command will print yes if all the elements of the given matrix matrix_name are 0, otherwise no.

Example:

 

isNull E ans = no

  • isSymmetric matrix_name

isSymmetric command will print yes if the given matrix matrix_name is symmetric, otherwise no. A symmetric matrix is a square matrix whose transpose is the same as the matrix itself (A’ = A).

Example:

isSymmetric E ans = yes

  • isSkewSymmetric matrix_name

isSkewSymmetric command will print yes if the given matrix matrix_name is skew- symmetric, otherwise no. A skew-symmetric matrix is a square matrix whose transpose is the same as the negative of the matrix. (A’ = -A)

Example:

isSkewSymmetric E ans = no

  • areEqual matrix_nameA matrix_nameB

areEqual command is followed by two matrix names; it prints yes if both matrices are the same size and their corresponding elements are the same, otherwise no.

Example:

areEqual A B ans = no

  • det matrix_name

det command prints the determinant of the provided matrix matrix_name if it is a square matrix, otherwise it prints an error message “Error: It is not a square matrix”. Example:

det A

ans = Error: It is not a square matrix. det B

ans = 0

F = [1 2 3; 2 5 4; 4 3 2;] F =

1

2

3

2

5

4

4

3

2

det F

 

 

ans = -20

  • isSingular matrix_name

isSingular command prints yes if the determinant of the provided matrix matrix_name is

  1. It prints no if the determinant is non-zero and prints an error message “Error: It is not a square matrix” if it is not a square matrix.

Example:

18)   exit

isSingular A

ans = Error: It is not a square matrix. isSingular B

ans = yes isSingular F ans = no

This command will make the interactive shell stop executing.

Attachments:

Instructions Files

Others Experts

expert
Emma Zohn
Others

77 Answers

expert
Eden James
Others

91 Answers

View More Experts
Disclaimer

The ready solutions purchased from Library are already used solutions. Please do not submit them directly as it may lead to plagiarism. Once paid, the solution file download link will be sent to your provided email. Please either use them for learning purpose or re-write them in your own language. In case if you haven't get the email, do let us know via chat support.

Get Free Quote!

267 Experts Online