用于两个向量的点积和叉积的C ++程序

我们给了两个向量,比方说包含x,y和方向的向量A和向量B,任务是找到两个给定向量数组的叉积和点积。

什么是向量?

在数学中,具有大小和方向的量称为矢量,而仅具有一个值的量称为标量。矢量开始的点称为初始点,矢量结束的点称为终点。向量的起点和终点之间的距离称为向量的大小。

向量有多种类型,例如-

  • 单位向量-幅度为1的单位的向量称为单位向量。

  • 零向量-也称为NULL向量,因为在这种类型的向量中,初始点和终点是相同的。

  • 初始向量-如果两个或多个向量具有相同的起始点或起始点,则称它们为共初始向量

  • 共线向量-如果两个或多个向量平行于同一条线,则称它们为共线向量

  • 相等向量-如果两个向量的大小和方向相同,则称它们为相等向量

什么是点积?

点积也称为标量积,定义为-

假设我们有两个向量A = a1 * i + a2 * j + a3 * k和B = b1 * i + b2 * j + b3 * k其中i,j和k是单位向量,这意味着它们的值为1并且x,y和z是向量的方向,则点积或标量积等于a1 * b1 + a2 * b2 + a3 * b3

示例

Input-: A = 2 * i + 7 * j + 2 * k
B = 3 * i + 1 * j + 5 * k
Output-: 2 * 3 + 7 * 1 + 2 * 5 = 23

什么是交叉产品?

叉积也称为向量积,定义为-

假设我们有两个向量A = a1 * i + a2 * j + a3 * k和B = b1 * i + b2 * j + b3 * k。那么叉积等于(a2 * b3 – a3 * b2)* i +(a1 * b3 – a3 * b1)* j +(a1 * b1 – a2 * b1)* k,其中a2 * b3 – a3 * b2,a1 * b3 – a3 * b1和a1 * b1 – a2 * b1是单位矢量的系数,而i,j和k是矢量的方向。

示例

Input-: A = 2 * i + 7 * j + 2 * k
B = 3 * i + 1 * j + 5 * k
Output-: (7 * 5 - 2 * 1)i + (2 * 5 - 2 * 3)j - (2 * 1 - 7 * 3)k

算法

Start
Step 1 -> declare a function to calculate the dot product of two vectors
   int dot_product(int vector_a[], int vector_b[])
   Declare int product = 0
   Loop For i = 0 and i < size and i++
      Set product = product + vector_a[i] * vector_b[i]
   End
   return product
Step 2 -> Declare a function to calculate the cross product of two vectors
   void cross_product(int vector_a[], int vector_b[], int temp[])
   Set temp[0] = vector_a[1] * vector_b[2] - vector_a[2] * vector_b[1]
   Set temp[1] = vector_a[0] * vector_b[2] - vector_a[2] * vector_b[0]
   Set temp[2] = vector_a[0] * vector_b[1] - vector_a[1] * vector_b[0]
Step 2-> In main()
   Declare vector int vector_a[] = { 4, 2, -1 }
   Declare vector int vector_b[] = { 5, 7, 1 }
   Declare variable int temp[size]
   Call function for dot product as dot_product(vector_a, vector_b)
   Call function for dot product as cross_product(vector_a, vector_b)
   Loop For i = 0 and i < size and i++
   Print temp[i]
End
Stop

示例

#include <bits/stdc++.h>
#define size 3
using namespace std;
//function to calculate dot product of two vectors
int dot_product(int vector_a[], int vector_b[]) {
   int product = 0;
   for (int i = 0; i < size; i++)
   product = product + vector_a[i] * vector_b[i];
   return product;
}
//function to calculate cross product of two vectors
void cross_product(int vector_a[], int vector_b[], int temp[]) {
   temp[0] = vector_a[1] * vector_b[2] - vector_a[2] * vector_b[1];
   temp[1] = vector_a[0] * vector_b[2] - vector_a[2] * vector_b[0];
   temp[2] = vector_a[0] * vector_b[1] - vector_a[1] * vector_b[0];
}
int main() {
   int vector_a[] = { 4, 2, -1 };
   int vector_b[] = { 5, 7, 1 };
   int temp[size];
   cout << "Dot product:";
   cout << dot_product(vector_a, vector_b) << endl;
   cout << "Cross product:";
   cross_product(vector_a, vector_b, temp);
   for (int i = 0; i < size; i++)
   cout << temp[i] << " ";
   return 0;
}

输出结果

Dot product:33
Cross product:9 9 18