Programa para producto escalar y producto vectorial de dos vectores

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>
Producción: 

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *