C++向量點積和叉積程式


假設我們有兩個向量,例如向量 A 和向量 B,它們包含 x、y 和方向,任務是找到這兩個給定向量陣列的叉積和點積。

什麼是向量?

在數學中,具有大小和方向的量稱為向量,而只有大小值的一個量稱為標量。向量開始的點稱為起點,向量結束的點稱為終點。向量起點和終點之間的距離稱為向量的模或大小。

有多種型別的向量,例如:

  • **單位向量** - 模為 1 的向量稱為單位向量。
  • **零向量** - 也稱為空向量,因為在這種型別的向量中,起點和終點相同。
  • **共起點向量** - 如果兩個或多個向量具有相同的起點或起始點,則稱它們為共起點向量。
  • **共線向量** - 如果兩個或多個向量平行於同一條直線,則稱它們為共線向量。
  • **相等向量** - 如果兩個向量具有相同的大小和方向,則稱它們為相等向量。

什麼是點積?

點積也稱為標量積,定義如下:

假設我們有兩個向量 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 * b2 – 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 3-> 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

更新於: 2021年8月12日

6K+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告