Scalar matrix multiplication
Scalar matrix multiplication is a basic operation in linear algebra where each element of a matrix is multiplied by a scalar value. This operation is used to scale the entire matrix by the given scalar factor. It has applications in various fields, including graphics, physics, and engineering.
Problem Statement
Given a matrix and a scalar value, the task is to perform scalar multiplication on the matrix, which involves multiplying each element of the matrix by the scalar.
Example
Let's consider a 4x4 matrix matrix
and a scalar value k = 3
:
Matrix:
1 0 2 3
4 1 1 6
1 1 1 1
5 0 1 2
After performing scalar multiplication with k = 3
, the resulting matrix is:
3 0 6 9
12 3 3 18
3 3 3 3
15 0 3 6
Idea to Solve the Problem
To solve this problem, iterate through each element of the matrix and multiply it by the given scalar value. The resulting matrix will have each element scaled by the scalar factor.
Pseudocode
function scalarMultiply(matrix, k):
for i from 0 to number of rows in matrix:
for j from 0 to number of columns in matrix:
matrix[i][j] *= k
return matrix
Algorithm Explanation
-
The algorithm takes a matrix and a scalar value as inputs.
-
It iterates through each row of the matrix using the variable
i
. -
For each row, it iterates through each column of the matrix using the variable
j
. -
Inside the nested loop, it multiplies the element
matrix[i][j]
by the scalar valuek
. -
After the multiplication is performed for all elements, the algorithm returns the modified matrix.
Code Solution
//C Program
//Program for scalar multiplication of a matrix
#include<stdio.h>
#define ROW 4
#define COL 4
void scalar_multiply(int matrix[][COL],int k)
{
for (int i = 0; i < ROW; ++i)
{
for (int j = 0; j < COL; ++j)
{
//Multiply element into of k
matrix[i][j] *= k;
printf("%4d",matrix[i][j] );
}
printf("\n");
}
}
int main()
{
int matrix[][COL]= {
{1, 0, 2, 3},
{4, 1, 1, 6},
{1, 1, 1, 1},
{5, 0, 1, 2}
};
int k=3;
scalar_multiply(matrix,k);
return 0;
}
Output
3 0 6 9
12 3 3 18
3 3 3 3
15 0 3 6
/*
C++ Program
Program for scalar multiplication of a matrix
*/
#include<iostream>
#define ROW 4
#define COL 4
using namespace std;
class MyMatrix {
public:
void scalar_multiply(int matrix[][COL],int k)
{
for (int i = 0; i < ROW; ++i)
{
for (int j = 0; j < COL; ++j)
{
//Multiply element into of k
matrix[i][j] *= k;
cout<<" "<<matrix[i][j] ;
}
cout<<endl;
}
}
};
int main() {
MyMatrix obj;
int matrix[][COL] = {
{1, 0, 2, 3},
{4, 1, 1, 6},
{1, 1, 1, 1},
{5, 0, 1, 2}
};
int k=3;
obj.scalar_multiply(matrix,k);
return 0;
}
Output
3 0 6 9
12 3 3 18
3 3 3 3
15 0 3 6
/*
Java Program
Program for scalar multiplication of a matrix
*/
public class MyMatrix {
public void scalar_multiply(int [][]matrix,int k)
{
//Get the size of matrix
int row = matrix.length;
int col = matrix[0].length;
for (int i = 0; i < row; ++i)
{
for (int j = 0; j < col; ++j)
{
//Multiply element into of k
matrix[i][j] *= k;
System.out.print(" "+matrix[i][j] );
}
System.out.print("\n");
}
}
public static void main(String[] args) {
MyMatrix obj = new MyMatrix();
//Define matrix
int [][]matrix = {
{1, 0, 2, 3},
{4, 1, 1, 6},
{1, 1, 1, 1},
{5, 0, 1, 2}
};
int k=3;
obj.scalar_multiply(matrix,k);
}
}
Output
3 0 6 9
12 3 3 18
3 3 3 3
15 0 3 6
<?php
/*
Php Program
Program for scalar multiplication of a matrix
*/
class MyMatrix {
public function scalar_multiply($matrix, $k) {
//Get the size of matrix
$row = count($matrix);
$col = count($matrix[0]);
for ($i = 0; $i < $row; ++$i) {
for ($j = 0; $j < $col; ++$j) {
//Multiply element into of k
$matrix[$i][$j] *= $k;
echo(" ". $matrix[$i][$j]);
}
echo("\n");
}
}
};
function main() {
$obj = new MyMatrix();
//Define matrix
$matrix = array(array(1, 0, 2, 3), array(4, 1, 1, 6), array(1, 1, 1, 1), array(5, 0, 1, 2));
$k = 3;
$obj->scalar_multiply($matrix, $k);
}
main();
Output
3 0 6 9
12 3 3 18
3 3 3 3
15 0 3 6
/*
Node Js Program
Program for scalar multiplication of a matrix
*/
class MyMatrix {
scalar_multiply(matrix, k) {
//Get the size of matrix
var row = matrix.length;
var col = matrix[0].length;
for (var i = 0; i < row; ++i) {
for (var j = 0; j < col; ++j) {
//Multiply element into of k
matrix[i][j] *= k;
process.stdout.write(" " + matrix[i][j]);
}
process.stdout.write("\n");
}
}
}
function main(args) {
var obj = new MyMatrix();
//Define matrix
var matrix = [
[1, 0, 2, 3],
[4, 1, 1, 6],
[1, 1, 1, 1],
[5, 0, 1, 2]
];
var k = 3;
obj.scalar_multiply(matrix, k);
}
main();
Output
3 0 6 9
12 3 3 18
3 3 3 3
15 0 3 6
using System;
/*
C# Program
Program for scalar multiplication of a matrix
*/
public class MyMatrix {
public void scalar_multiply(int[,] matrix, int k) {
//Get the size of matrix
int row = matrix.GetLength(0);
int col = matrix.GetLength(1);
for (int i = 0; i < row; ++i) {
for (int j = 0; j < col; ++j) {
//Multiply element into of k
matrix[i,j] *= k;
Console.Write(" " + matrix[i,j]);
}
Console.Write("\n");
}
}
public static void Main(String[] args) {
MyMatrix obj = new MyMatrix();
//Define matrix
int[,] matrix = {
{
1,
0,
2,
3
},
{
4,
1,
1,
6
},
{
1,
1,
1,
1
},
{
5,
0,
1,
2
}
};
int k = 3;
obj.scalar_multiply(matrix, k);
}
}
Output
3 0 6 9
12 3 3 18
3 3 3 3
15 0 3 6
# Python 3 Program
# Program for scalar multiplication of a matrix
class MyMatrix :
def scalar_multiply(self, matrix, k) :
# Get the size of matrix
row = len(matrix)
col = len(matrix[0])
i = 0
while (i < row) :
j = 0
while (j < col) :
# Multiply element into of k
matrix[i][j] *= k
print(" ", matrix[i][j], end = "")
j += 1
print(end = "\n")
i += 1
def main() :
obj = MyMatrix()
matrix = [
[1, 0, 2, 3],
[4, 1, 1, 6],
[1, 1, 1, 1],
[5, 0, 1, 2]
]
k = 3
obj.scalar_multiply(matrix, k)
if __name__ == "__main__":
main()
Output
3 0 6 9
12 3 3 18
3 3 3 3
15 0 3 6
# Ruby Program
# Program for scalar multiplication of a matrix
class MyMatrix
def scalar_multiply(matrix, k)
# Get the size of matrix
row = matrix.length
col = matrix[0].length
i = 0
while (i < row)
j = 0
while (j < col)
# Multiply element into of k
matrix[i][j] *= k
print(" ", matrix[i][j])
j += 1
end
print("\n")
i += 1
end
end
end
def main()
obj = MyMatrix.new()
matrix = [
[1, 0, 2, 3],
[4, 1, 1, 6],
[1, 1, 1, 1],
[5, 0, 1, 2]
]
k = 3
obj.scalar_multiply(matrix, k)
end
main()
Output
3 0 6 9
12 3 3 18
3 3 3 3
15 0 3 6
/*
Scala Program
Program for scalar multiplication of a matrix
*/
class MyMatrix {
def scalar_multiply(matrix: Array[Array[Int]], k: Int): Unit = {
//Get the size of matrix
val row: Int = matrix.length;
val col: Int = matrix(0).length;
var i: Int = 0;
while (i < row) {
var j: Int = 0;
while (j < col) {
//Multiply element into of k
matrix(i)(j) *= k;
print(" " + matrix(i)(j));
j += 1;
}
print("\n");
i += 1;
}
}
}
object Main {
def main(args: Array[String]): Unit = {
val obj: MyMatrix = new MyMatrix();
val matrix: Array[Array[Int]] = Array(
Array(1, 0, 2, 3),
Array(4, 1, 1, 6),
Array(1, 1, 1, 1),
Array(5, 0, 1, 2));
val k: Int = 3;
obj.scalar_multiply(matrix, k);
}
}
Output
3 0 6 9
12 3 3 18
3 3 3 3
15 0 3 6
/*
Swift 4 Program
Program for scalar multiplication of a matrix
*/
class MyMatrix {
func scalar_multiply(_ matrix: inout [[Int]], _ k: Int) {
//Get the size of matrix
let row: Int = matrix.count;
let col: Int = matrix[0].count;
var i: Int = 0;
while (i < row) {
var j: Int = 0;
while (j < col) {
//Multiply element into of k
matrix[i][j] *= k;
print(" ", matrix[i][j], terminator: "");
j += 1;
}
print("\n", terminator: "");
i += 1;
}
}
}
func main() {
let obj: MyMatrix = MyMatrix();
var matrix: [
[Int]
] = [
[1, 0, 2, 3],
[4, 1, 1, 6],
[1, 1, 1, 1],
[5, 0, 1, 2]
];
let k: Int = 3;
obj.scalar_multiply(&matrix, k);
}
main();
Output
3 0 6 9
12 3 3 18
3 3 3 3
15 0 3 6
Time Complexity
The time complexity of scalar matrix multiplication is O(m * n), where m is the number of rows in the matrix and n is the number of columns. This is because each element of the matrix is visited exactly once to perform the scalar multiplication.
Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.
New Comment