0% found this document useful (0 votes)
12 views10 pages

Matrices

Uploaded by

SJV
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views10 pages

Matrices

Uploaded by

SJV
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 10

Here's a simple program in Turbo C++ to perform various operations on matrices, including finding

the sum, product, transpose, trace, and inverse of matrices. We'll assume the matrices are 3x3 for
simplicity.

```cpp

#include <iostream>

#include <iomanip>

using namespace std;

const int N = 3;

// Function to input a matrix

void inputMatrix(double mat[N][N]) {

for (int i = 0; i < N; i++) {

for (int j = 0; j < N; j++) {

cin >> mat[i][j];

// Function to print a matrix

void printMatrix(double mat[N][N]) {

for (int i = 0; i < N; i++) {

for (int j = 0; j < N; j++) {

cout << setw(10) << mat[i][j] << " ";

cout << endl;

// Function to find the sum of two matrices

void sumMatrices(double mat1[N][N], double mat2[N][N], double result[N][N]) {


for (int i = 0; i < N; i++) {

for (int j = 0; j < N; j++) {

result[i][j] = mat1[i][j] + mat2[i][j];

// Function to find the product of two matrices

void productMatrices(double mat1[N][N], double mat2[N][N], double result[N][N]) {

for (int i = 0; i < N; i++) {

for (int j = 0; j < N; j++) {

result[i][j] = 0;

for (int k = 0; k < N; k++) {

result[i][j] += mat1[i][k] * mat2[k][j];

// Function to find the transpose of a matrix

void transposeMatrix(double mat[N][N], double result[N][N]) {

for (int i = 0; i < N; i++) {

for (int j = 0; j < N; j++) {

result[j][i] = mat[i][j];

// Function to find the trace of a matrix

double traceMatrix(double mat[N][N]) {

double trace = 0;
for (int i = 0; i < N; i++) {

trace += mat[i][i];

return trace;

// Function to find the inverse of a matrix

bool inverseMatrix(double mat[N][N], double result[N][N]) {

double det = mat[0][0] * (mat[1][1] * mat[2][2] - mat[1][2] * mat[2][1]) -

mat[0][1] * (mat[1][0] * mat[2][2] - mat[1][2] * mat[2][0]) +

mat[0][2] * (mat[1][0] * mat[2][1] - mat[1][1] * mat[2][0]);

if (det == 0) {

cout << "Matrix is singular, inverse does not exist." << endl;

return false;

double invDet = 1.0 / det;

result[0][0] = (mat[1][1] * mat[2][2] - mat[1][2] * mat[2][1]) * invDet;

result[0][1] = (mat[0][2] * mat[2][1] - mat[0][1] * mat[2][2]) * invDet;

result[0][2] = (mat[0][1] * mat[1][2] - mat[0][2] * mat[1][1]) * invDet;

result[1][0] = (mat[1][2] * mat[2][0] - mat[1][0] * mat[2][2]) * invDet;

result[1][1] = (mat[0][0] * mat[2][2] - mat[0][2] * mat[2][0]) * invDet;

result[1][2] = (mat[0][2] * mat[1][0] - mat[0][0] * mat[1][2]) * invDet;

result[2][0] = (mat[1][0] * mat[2][1] - mat[1][1] * mat[2][0]) * invDet;

result[2][1] = (mat[0][1] * mat[2][0] - mat[0][0] * mat[2][1]) * invDet;

result[2][2] = (mat[0][0] * mat[1][1] - mat[0][1] * mat[1][0]) * invDet;

return true;

}
int main() {

double mat1[N][N], mat2[N][N];

double result[N][N];

double trace;

cout << "Enter the elements of the first 3x3 matrix (row-wise):" << endl;

inputMatrix(mat1);

cout << "Enter the elements of the second 3x3 matrix (row-wise):" << endl;

inputMatrix(mat2);

// Sum of matrices

sumMatrices(mat1, mat2, result);

cout << "Sum of matrices:" << endl;

printMatrix(result);

// Product of matrices

productMatrices(mat1, mat2, result);

cout << "Product of matrices:" << endl;

printMatrix(result);

// Transpose of the first matrix

transposeMatrix(mat1, result);

cout << "Transpose of the first matrix:" << endl;

printMatrix(result);

// Trace of the first matrix

trace = traceMatrix(mat1);

cout << "Trace of the first matrix: " << trace << endl;
// Inverse of the first matrix

if (inverseMatrix(mat1, result)) {

cout << "Inverse of the first matrix:" << endl;

printMatrix(result);

return 0;

```

### Explanation:

1. **Function Definitions**:

- `inputMatrix`: Takes input for a 3x3 matrix.

- `printMatrix`: Prints a 3x3 matrix.

- `sumMatrices`: Calculates the sum of two 3x3 matrices.

- `productMatrices`: Calculates the product of two 3x3 matrices.

- `transposeMatrix`: Calculates the transpose of a 3x3 matrix.

- `traceMatrix`: Calculates the trace (sum of diagonal elements) of a 3x3 matrix.

- `inverseMatrix`: Calculates the inverse of a 3x3 matrix using the formula for the inverse of a 3x3
matrix.

2. **Main Function**:

- Prompts the user to input the elements of two 3x3 matrices.

- Calculates and prints the sum, product, transpose, and trace of the matrices.

- Attempts to calculate and print the inverse of the first matrix, checking if it is singular.

This program covers basic matrix operations for a 3x3 matrix. For larger matrices or more complex
operations, consider using a library designed for linear algebra.
#include <iostream.h>

#include <iomanip.h>

#include <conio.h>

const int N = 3;

// Function to input a matrix

void inputMatrix(double mat[N][N]) {

for (int i = 0; i < N; i++) {

for (int j = 0; j < N; j++) {

cin >> mat[i][j];

// Function to print a matrix

void printMatrix(double mat[N][N]) {

for (int i = 0; i < N; i++) {

for (int j = 0; j < N; j++) {

cout << setw(10) << mat[i][j] << " ";

cout << endl;

// Function to find the sum of two matrices

void sumMatrices(double mat1[N][N], double mat2[N][N], double result[N][N]) {

for (int i = 0; i < N; i++) {

for (int j = 0; j < N; j++) {

result[i][j] = mat1[i][j] + mat2[i][j];

}
}

// Function to find the product of two matrices

void productMatrices(double mat1[N][N], double mat2[N][N], double result[N][N]) {

for (int i = 0; i < N; i++) {

for (int j = 0; j < N; j++) {

result[i][j] = 0;

for (int k = 0; k < N; k++) {

result[i][j] += mat1[i][k] * mat2[k][j];

// Function to find the transpose of a matrix

void transposeMatrix(double mat[N][N], double result[N][N]) {

for (int i = 0; i < N; i++) {

for (int j = 0; j < N; j++) {

result[j][i] = mat[i][j];

// Function to find the trace of a matrix

double traceMatrix(double mat[N][N]) {

double trace = 0;

for (int i = 0; i < N; i++) {

trace += mat[i][i];

return trace;
}

// Function to find the inverse of a matrix

bool inverseMatrix(double mat[N][N], double result[N][N]) {

double det = mat[0][0] * (mat[1][1] * mat[2][2] - mat[1][2] * mat[2][1]) -

mat[0][1] * (mat[1][0] * mat[2][2] - mat[1][2] * mat[2][0]) +

mat[0][2] * (mat[1][0] * mat[2][1] - mat[1][1] * mat[2][0]);

if (det == 0) {

cout << "Matrix is singular, inverse does not exist." << endl;

return false;

double invDet = 1.0 / det;

result[0][0] = (mat[1][1] * mat[2][2] - mat[1][2] * mat[2][1]) * invDet;

result[0][1] = (mat[0][2] * mat[2][1] - mat[0][1] * mat[2][2]) * invDet;

result[0][2] = (mat[0][1] * mat[1][2] - mat[0][2] * mat[1][1]) * invDet;

result[1][0] = (mat[1][2] * mat[2][0] - mat[1][0] * mat[2][2]) * invDet;

result[1][1] = (mat[0][0] * mat[2][2] - mat[0][2] * mat[2][0]) * invDet;

result[1][2] = (mat[0][2] * mat[1][0] - mat[0][0] * mat[1][2]) * invDet;

result[2][0] = (mat[1][0] * mat[2][1] - mat[1][1] * mat[2][0]) * invDet;

result[2][1] = (mat[0][1] * mat[2][0] - mat[0][0] * mat[2][1]) * invDet;

result[2][2] = (mat[0][0] * mat[1][1] - mat[0][1] * mat[1][0]) * invDet;

return true;

int main() {

double mat1[N][N], mat2[N][N];

double result[N][N];
double trace;

cout << "Enter the elements of the first 3x3 matrix (row-wise):" << endl;

inputMatrix(mat1);

cout << "Enter the elements of the second 3x3 matrix (row-wise):" << endl;

inputMatrix(mat2);

// Sum of matrices

sumMatrices(mat1, mat2, result);

cout << "Sum of matrices:" << endl;

printMatrix(result);

// Product of matrices

productMatrices(mat1, mat2, result);

cout << "Product of matrices:" << endl;

printMatrix(result);

// Transpose of the first matrix

transposeMatrix(mat1, result);

cout << "Transpose of the first matrix:" << endl;

printMatrix(result);

// Trace of the first matrix

trace = traceMatrix(mat1);

cout << "Trace of the first matrix: " << trace << endl;

// Inverse of the first matrix

if (inverseMatrix(mat1, result)) {

cout << "Inverse of the first matrix:" << endl;

printMatrix(result);
}

getch(); // To keep the console window open

return 0;

You might also like