There are two vector A and B and we have to find the dot product and cross product of two vector array. Dot product is also known as scalar product and cross product also known as vector product.
Dot Product – Let we have given two vector A = a1 * i + a2 * j + a3 * k and B = b1 * i + b2 * j + b3 * k. Where i, j and k are the unit vector along the x, y and z directions. Then dot product is calculated as dot product = a1 * b1 + a2 * b2 + a3 * b3
Example –
A = 3 * i + 5 * j + 4 * k
B = 2 * i + 7 * j + 5 * k
dot product = 3 * 2 + 5 * 7 + 4 * 5
= 6 + 35 + 20
= 61
Cross Product – Let we have given two vector A = a1 * i + a2 * j + a3 * k and B = b1 * i + b2 * j + b3 * k. Then cross product is calculated as cross product = (a2 * b3 – a3 * b2) * i + (a3 * b1 – a1 * b3) * j + (a1 * b2 – a2 * b1) * k, where [(a2 * b3 – a3 * b2), (a3 * b1 – a1 * b3), (a1 * b2 – a2 * b1)] are the coefficient of unit vector along i, j and k directions.
Example –
A = 3 * i + 5 * j + 4 * k
B = 2 * i + 7 * j + 5 * k
cross product
= (5 * 5 - 4 * 7) * i
+ (4 * 2 - 3 * 5) * j + (3 * 7 - 5 * 2) * k
= (-3)*i + (-7)*j + (11)*k
Example –
Input: vect_A[] = {3, -5, 4}
vect_B[] = {2, 6, 5}
Output: Dot product: -4
Cross product = -49 -7 28
Code-
C++
#include <bits/stdc++.h>
#define n 3
using namespace std;
int dotProduct( int vect_A[], int vect_B[])
{
int product = 0;
for ( int i = 0; i < n; i++)
product = product + vect_A[i] * vect_B[i];
return product;
}
void crossProduct( int vect_A[], int vect_B[], int cross_P[])
{
cross_P[0] = vect_A[1] * vect_B[2] - vect_A[2] * vect_B[1];
cross_P[1] = vect_A[2] * vect_B[0] - vect_A[0] * vect_B[2];
cross_P[2] = vect_A[0] * vect_B[1] - vect_A[1] * vect_B[0];
}
int main()
{
int vect_A[] = { 3, -5, 4 };
int vect_B[] = { 2, 6, 5 };
int cross_P[n];
cout << "Dot product:" ;
cout << dotProduct(vect_A, vect_B) << endl;
cout << "Cross product:" ;
crossProduct(vect_A, vect_B, cross_P);
for ( int i = 0; i < n; i++)
cout << cross_P[i] << " " ;
return 0;
}
|
Java
import java.io.*;
class GFG {
static int n = 3 ;
static int dotProduct( int vect_A[], int vect_B[])
{
int product = 0 ;
for ( int i = 0 ; i < n; i++)
product = product + vect_A[i] * vect_B[i];
return product;
}
static void crossProduct( int vect_A[], int vect_B[],
int cross_P[])
{
cross_P[ 0 ] = vect_A[ 1 ] * vect_B[ 2 ]
- vect_A[ 2 ] * vect_B[ 1 ];
cross_P[ 1 ] = vect_A[ 2 ] * vect_B[ 0 ]
- vect_A[ 0 ] * vect_B[ 2 ];
cross_P[ 2 ] = vect_A[ 0 ] * vect_B[ 1 ]
- vect_A[ 1 ] * vect_B[ 0 ];
}
public static void main(String[] args)
{
int vect_A[] = { 3 , - 5 , 4 };
int vect_B[] = { 2 , 6 , 5 };
int cross_P[] = new int [n];
System.out.print( "Dot product:" );
System.out.println(dotProduct(vect_A, vect_B));
System.out.print( "Cross product:" );
crossProduct(vect_A, vect_B, cross_P);
for ( int i = 0 ; i < n; i++)
System.out.print(cross_P[i] + " " );
}
}
|
Python3
n = 3
def dotProduct(vect_A, vect_B):
product = 0
for i in range ( 0 , n):
product = product + vect_A[i] * vect_B[i]
return product
def crossProduct(vect_A, vect_B, cross_P):
cross_P.append(vect_A[ 1 ] * vect_B[ 2 ] - vect_A[ 2 ] * vect_B[ 1 ])
cross_P.append(vect_A[ 2 ] * vect_B[ 0 ] - vect_A[ 0 ] * vect_B[ 2 ])
cross_P.append(vect_A[ 0 ] * vect_B[ 1 ] - vect_A[ 1 ] * vect_B[ 0 ])
if __name__ = = '__main__' :
vect_A = [ 3 , - 5 , 4 ]
vect_B = [ 2 , 6 , 5 ]
cross_P = []
print ( "Dot product:" , end = " " )
print (dotProduct(vect_A, vect_B))
print ( "Cross product:" , end = " " )
crossProduct(vect_A, vect_B, cross_P)
for i in range ( 0 , n):
print (cross_P[i], end = " " )
|
C#
using System;
class GFG {
static int n = 3;
static int dotProduct( int [] vect_A,
int [] vect_B)
{
int product = 0;
for ( int i = 0; i < n; i++)
product = product + vect_A[i] * vect_B[i];
return product;
}
static void crossProduct( int [] vect_A,
int [] vect_B, int [] cross_P)
{
cross_P[0] = vect_A[1] * vect_B[2]
- vect_A[2] * vect_B[1];
cross_P[1] = vect_A[2] * vect_B[0]
- vect_A[0] * vect_B[2];
cross_P[2] = vect_A[0] * vect_B[1]
- vect_A[1] * vect_B[0];
}
public static void Main()
{
int [] vect_A = { 3, -5, 4 };
int [] vect_B = { 2, 6, 5 };
int [] cross_P = new int [n];
Console.Write( "Dot product:" );
Console.WriteLine(
dotProduct(vect_A, vect_B));
Console.Write( "Cross product:" );
crossProduct(vect_A, vect_B, cross_P);
for ( int i = 0; i < n; i++)
Console.Write(cross_P[i] + " " );
}
}
|
PHP
<?php
$n = 3;
function dotproduct( $vect_A , $vect_B )
{
global $n ;
$product = 0;
for ( $i = 0; $i < $n ; $i ++)
$product = $product + $vect_A [ $i ] *
$vect_B [ $i ];
return $product ;
}
function crossproduct( $vect_A ,
$vect_B , $cross_P )
{
$cross_P [0] = $vect_A [1] * $vect_B [2] -
$vect_A [2] * $vect_B [1];
$cross_P [1] = $vect_A [2] * $vect_B [0] -
$vect_A [0] * $vect_B [2];
$cross_P [2] = $vect_A [0] * $vect_B [1] -
$vect_A [1] * $vect_B [0];
return $cross_P ;
}
$vect_A = array ( 3, -5, 4 );
$vect_B = array ( 2, 6, 5 );
$cross_P = array_fill (0, $n , 0);
echo "Dot product:" ;
echo dotproduct( $vect_A , $vect_B );
echo "\nCross product:" ;
$cross_P = crossproduct( $vect_A ,
$vect_B ,
$cross_P );
for ( $i = 0; $i < $n ; $i ++)
echo $cross_P [ $i ] . " " ;
?>
|
Javascript
<script>
let n = 3;
function dotProduct(vect_A, vect_B)
{
let product = 0;
for (let i = 0; i < n; i++)
product = product + vect_A[i] * vect_B[i];
return product;
}
function crossProduct(vect_A, vect_B,
cross_P)
{
cross_P[0] = vect_A[1] * vect_B[2]
- vect_A[2] * vect_B[1];
cross_P[1] = vect_A[2] * vect_B[0]
- vect_A[0] * vect_B[2];
cross_P[2] = vect_A[0] * vect_B[1]
- vect_A[1] * vect_B[0];
}
let vect_A = [ 3, -5, 4 ];
let vect_B = [ 2, 6, 5 ];
let cross_P = [];
document.write( "Dot product:" );
document.write(dotProduct(vect_A, vect_B) + "<br/>" );
document.write( "Cross product:" );
crossProduct(vect_A, vect_B, cross_P);
for (let i = 0; i < n; i++)
document.write(cross_P[i] + " " );
</script>
|
Output: Dot product:-4
Cross product:-49 -7 28
Time Complexity: O(3), the code will run in a constant time because the size of the arrays will be always 3.
Auxiliary Space: O(3), no extra space is required, so it is a constant.
This article is contributed by Dharmendra Kumar. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.