📜  两个向量的点积和叉积的程序

📅  最后修改于: 2021-05-04 12:12:23             🧑  作者: Mango

有两个向量AB ,我们必须找到两个向量数组的点积和叉积。点积也称为标量积,叉积也称为矢量积。

点积–让我们给出两个向量A = a1 * i + a2 * j + a3 * k和B = b1 * i + b2 * j + b3 * k。其中,i,j和k是沿x,y和z方向的单位矢量。然后将点积计算为点积= a1 * b1 + a2 * b2 + a3 * b3

例子 –

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

叉积–让我们给出两个向量A = a1 * i + a2 * j + a3 * k和B = b1 * i + b2 * j + b3 * k。然后将叉积计算为叉积=(a2 * b3 – a3 * b2)* i +(a3 * b1 – a1 * b3)* j +(a1 * b2 – a2 * b1)* k,其中[[a2 * b3 – a3 * b2),(a3 * b1 – a1 * b3),(a1 * b2 – a2 * b1)]是沿i,j和k方向的单位矢量系数。

例子 –

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

例子 –

Input: vect_A[] = {3, -5, 4}
        vect_B[] = {2, 6, 5}
Output: Dot product: -4
         Cross product = -49 -7 28

代码-

C++
// C++ implementation for dot product
// and cross product of two vector.
#include 
#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 cot 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 cot 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 cot 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 cot 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


输出:
Dot product:-4
Cross product:-49 -7 28