Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ สำหรับ dot product และ cross product ของเวกเตอร์สองตัว


เราได้รับเวกเตอร์สองตัว สมมติว่าเวกเตอร์ A และเวกเตอร์ B มี x, y และทิศทาง และภารกิจคือการหาผลคูณไขว้และผลคูณดอทของอาร์เรย์เวกเตอร์ทั้งสองที่กำหนด

เวกเตอร์คืออะไร

ในวิชาคณิตศาสตร์ ปริมาณที่มีขนาดและทิศทางเรียกว่าเวกเตอร์ ในขณะที่ปริมาณที่มีเพียงค่าเดียวเรียกว่าขนาดเรียกว่าสเกลาร์ จุดที่เวกเตอร์เริ่มต้นเรียกว่าจุดเริ่มต้นและจุดที่เวกเตอร์สิ้นสุดเรียกว่าจุดสิ้นสุด ระยะห่างระหว่างจุดเริ่มต้นและจุดสิ้นสุดของเวกเตอร์เรียกว่าขนาดของเวกเตอร์

เวกเตอร์มีหลายประเภท เช่น −

  • เวกเตอร์หน่วย − เวกเตอร์ที่มีขนาดเป็นเอกภาพซึ่งคือ 1 เรียกว่าเวกเตอร์หน่วย
  • เวกเตอร์ศูนย์ − เรียกอีกอย่างว่าเวกเตอร์ NULL เพราะในเวกเตอร์ประเภทนี้ จุดเริ่มต้นและจุดปลายทางเหมือนกัน
  • เวกเตอร์เหรียญกษาปณ์ − ถ้าเวกเตอร์ตั้งแต่สองตัวขึ้นไปมีจุดเริ่มต้นหรือจุดเริ่มต้นเหมือนกัน พวกมันจะเรียกว่าเวกเตอร์แบบเหรียญกษาปณ์
  • เวกเตอร์คอลลิเนียร์ − ถ้าเวกเตอร์ตั้งแต่สองตัวขึ้นไปขนานกับเส้นเดียวกัน จะเรียกว่าเวกเตอร์คอลลิเนียร์
  • เวกเตอร์เท่ากัน − ถ้าเวกเตอร์สองตัวมีขนาดและทิศทางเท่ากัน จะเรียกว่าเวกเตอร์เท่ากัน

Dot Product คืออะไร

ดอทโปรดัคเรียกอีกอย่างว่าผลคูณสเกลาร์ซึ่งถูกกำหนดเป็น −

สมมุติว่าเรามีเวกเตอร์สองตัว A =a1 * i + a2 * j + a3 * k และ B =b1 * i + b2 * j + b3 * k โดยที่ i, j และ k เป็นเวกเตอร์หน่วยซึ่งหมายความว่าพวกมันมีค่าเท่ากับ 1 และ x, y และ z คือทิศทางของเวกเตอร์ จากนั้น dot product หรือ scalar product เท่ากับ 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

Cross Product คืออะไร

ผลคูณไขว้เรียกอีกอย่างว่าผลิตภัณฑ์เวกเตอร์ซึ่งถูกกำหนดเป็น −

สมมติว่าเรามีเวกเตอร์สองตัว 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