Hay dos vectores A y B y tenemos que encontrar el producto escalar y el producto vectorial de dos arrays vectoriales. El producto punto también se conoce como producto escalar y el producto vectorial también se conoce como producto vectorial.
Producto punto: tengamos dos vectores dados A = a1 * i + a2 * j + a3 * k y B = b1 * i + b2 * j + b3 * k. Donde i, j y k son el vector unitario a lo largo de las direcciones x, y y z. Luego, el producto escalar se calcula como producto escalar = a1 * b1 + a2 * b2 + a3 * b3
Ejemplo:
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
Producto Cruzado – Supongamos que hemos dado dos vectores A = a1 * i + a2 * j + a3 * k y B = b1 * i + b2 * j + b3 * k. Entonces el producto cruzado se calcula como producto cruzado = (a2 * b3 – a3 * b2) * i + (a3 * b1 – a1 * b3) * j + (a1 * b2 – a2 * b1) * k, donde [(a2 * b3 – a3 * b2), (a3 * b1 – a1 * b3), (a1 * b2 – a2 * b1)] son el coeficiente del vector unitario a lo largo de las direcciones i, j y k.
Ejemplo –
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
Ejemplo –
Input: vect_A[] = {3, -5, 4} vect_B[] = {2, 6, 5} Output: Dot product: -4 Cross product = -49 -7 28
Código-
C++
// C++ implementation for dot product // and cross product of two vector. #include <bits/stdc++.h> #define n 3 using namespace std; // Function that return // dot product of two vector array. int dotProduct(int vect_A[], int vect_B[]) { int product = 0; // Loop for calculate dot product for (int i = 0; i < n; i++) product = product + vect_A[i] * vect_B[i]; return product; } // Function to find // cross product of two vector array. 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]; } // Driver function int main() { int vect_A[] = { 3, -5, 4 }; int vect_B[] = { 2, 6, 5 }; int cross_P[n]; // dotProduct function call cout << "Dot product:"; cout << dotProduct(vect_A, vect_B) << endl; // crossProduct function call cout << "Cross product:"; crossProduct(vect_A, vect_B, cross_P); // Loop that print // cross product of two vector array. for (int i = 0; i < n; i++) cout << cross_P[i] << " "; return 0; }
Java
// java implementation for dot product // and cross product of two vector. import java.io.*; class GFG { static int n = 3; // Function that return // dot product of two vector array. static int dotProduct(int vect_A[], int vect_B[]) { int product = 0; // Loop for calculate dot product for (int i = 0; i < n; i++) product = product + vect_A[i] * vect_B[i]; return product; } // Function to find // cross product of two vector array. 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]; } // Driver code public static void main(String[] args) { int vect_A[] = { 3, -5, 4 }; int vect_B[] = { 2, 6, 5 }; int cross_P[] = new int[n]; // dotProduct function call System.out.print("Dot product:"); System.out.println(dotProduct(vect_A, vect_B)); // crossProduct function call System.out.print("Cross product:"); crossProduct(vect_A, vect_B, cross_P); // Loop that print // cross product of two vector array. for (int i = 0; i < n; i++) System.out.print(cross_P[i] + " "); } } // This code is contributed by vt_m
Python3
# Python3 implementation for dot product # and cross product of two vector. n = 3 # Function that return # dot product of two vector array. def dotProduct(vect_A, vect_B): product = 0 # Loop for calculate dot product for i in range(0, n): product = product + vect_A[i] * vect_B[i] return product # Function to find # cross product of two vector array. 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]) # Driver function if __name__=='__main__': vect_A = [3, -5, 4] vect_B = [2, 6, 5] cross_P = [] # dotProduct function call print("Dot product:", end =" ") print(dotProduct(vect_A, vect_B)) # crossProduct function call print("Cross product:", end =" ") crossProduct(vect_A, vect_B, cross_P) # Loop that print # cross product of two vector array. for i in range(0, n): print(cross_P[i], end =" ") # This code is contributed by # Sanjit_Prasad
C#
// C# implementation for dot product // and cross product of two vector. using System; class GFG { static int n = 3; // Function that return dot // product of two vector array. static int dotProduct(int[] vect_A, int[] vect_B) { int product = 0; // Loop for calculate dot product for (int i = 0; i < n; i++) product = product + vect_A[i] * vect_B[i]; return product; } // Function to find cross product // of two vector array. 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]; } // Driver code public static void Main() { int[] vect_A = { 3, -5, 4 }; int[] vect_B = { 2, 6, 5 }; int[] cross_P = new int[n]; // dotProduct function call Console.Write("Dot product:"); Console.WriteLine( dotProduct(vect_A, vect_B)); // crossProduct function call Console.Write("Cross product:"); crossProduct(vect_A, vect_B, cross_P); // Loop that print // cross product of two vector array. for (int i = 0; i < n; i++) Console.Write(cross_P[i] + " "); } } // This code is contributed by vt_m.
PHP
<?php // PHP implementation for dot // product and cross product // of two vector. $n = 3; // Function that return // dot product of two // vector array. function dotproduct($vect_A, $vect_B) { global $n; $product = 0; // Loop for calculate // dot product for ($i = 0; $i < $n; $i++) $product = $product + $vect_A[$i] * $vect_B[$i]; return $product; } // Function to find // cross product of // two vector array. 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; } // Driver Code $vect_A = array( 3, -5, 4 ); $vect_B = array( 2, 6, 5 ); $cross_P = array_fill(0, $n, 0); // dotproduct function call echo "Dot product:"; echo dotproduct($vect_A, $vect_B); // crossproduct function call echo "\nCross product:"; $cross_P = crossproduct($vect_A, $vect_B, $cross_P); // Loop that print // cross product of // two vector array. for ($i = 0; $i < $n; $i++) echo $cross_P[$i] . " "; // This code is contributed by mits ?>
Javascript
<script> // Javascript implementation for dot product // and cross product of two vector. let n = 3; // Function that return // dot product of two vector array. function dotProduct(vect_A, vect_B) { let product = 0; // Loop for calculate dot product for (let i = 0; i < n; i++) product = product + vect_A[i] * vect_B[i]; return product; } // Function to find // cross product of two vector array. 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]; } // Driver code let vect_A = [ 3, -5, 4 ]; let vect_B = [ 2, 6, 5 ]; let cross_P = []; // dotProduct function call document.write("Dot product:"); document.write(dotProduct(vect_A, vect_B) + "<br/>"); // crossProduct function call document.write("Cross product:"); crossProduct(vect_A, vect_B, cross_P); // Loop that print // cross product of two vector array. for (let i = 0; i < n; i++) document.write(cross_P[i] + " "); // This code is contributed by sanjoy_62. </script>
Dot product:-4 Cross product:-49 -7 28
Complejidad de tiempo: O(3), el código se ejecutará en un tiempo constante porque el tamaño de las arrays siempre será 3.
Espacio auxiliar: O(3), no se requiere espacio adicional, por lo que es una constante.
Este artículo es una contribución de Dharmendra Kumar . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA