কম্পিউটার টিউটোরিয়াল

দুটি ভেক্টরের ডট প্রোডাক্ট ও ক্রস প্রোডাক্ট C++ প্রোগ্রাম


দুটি ভেক্টর দেওয়া আছে, ধরা যাক ভেক্টর A এবং ভেক্টর B যাতে x, y, z ডিরেকশন আছে। কাজ হলো এই দুটি ভেক্টর অ্যারেতে ডট প্রোডাক্ট ও ক্রস প্রোডাক্ট বের করা।

ভেক্টর কী?

গণিতে, যে পরিমাণের মagniটিউড এবং ডিরেকশন আছে সেটাকে ভেক্টর বলা হয়, আর যেটির শুধু মagniটিউড আছে সেটাকে স্ক্যালার। ভেক্টর শুরু হয় ইনিশিয়াল পয়েন্ট থেকে এবং শেষ হয় টার্মিনাল পয়েন্টে। এই দুটি পয়েন্টের দূরত্ব হলো ভেক্টর মagniটিউড।

ভেক্টরের ধরনগুলো -

  • ইউনিট ভেক্টর - মagniটিউড ১ হলে ইউনিট ভেক্টর।
  • জিরো ভেক্টর - NULL ভেক্টর, যেখানে ইনিশিয়াল এবং টার্মিনাল পয়েন্ট একই।
  • কোইনিশিয়াল ভেক্টর - একই ইনিশিয়াল পয়েন্ট বালা ভেক্টর।
  • কলিনিয়ার ভেক্টর - একই লাইন সমান্তরাল ভেক্টর।
  • ইকুয়াল ভেক্টর - একই মagniটিউড এবং ডিরেকশন বালা ভেক্টর।

ডট প্রোডাক্ট কী?

ডট প্রোডাক্টাকে স্ক্যালার প্রোডাক্টও বলা হয়।

দুটি ভেক্টর 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 = 2*i + 7*j + 2*k, B = 3*i + 1*j + 5*k
আউটপুট: 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।

ইনপুট: A = 2*i + 7*j + 2*k, B = 3*i + 1*j + 5*k
আউটপুট: (7*5 - 2*1)i + (2*5 - 2*3)j - (2*1 - 7*3)k

অ্যালগরিদম

শুরু
ধাপ ১ -> দুটি ভেক্টরের ডট প্রোডাক্ট ফাংশন ঘোষণা
    int dot_product(int vector_a[], int vector_b[])
    int product = 0 ঘোষণা
    লুপ i = 0 থেকে i < size এবং i++
        product = product + vector_a[i] * vector_b[i] সেট
    শেষ
    return product
ধাপ ২ -> দুটি ভেক্টরের ক্রস প্রোডাক্ট ফাংশন ঘোষণা
    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] সেট
ধাপ ৩ -> main()-এ
    vector_a[] = { 4, 2, -1 } ঘোষণা
    vector_b[] = { 5, 7, 1 } ঘোষণা
    temp[size] ঘোষণা
    dot_product(vector_a, vector_b) কল
    cross_product(vector_a, vector_b) কল
    লুপ i = 0 থেকে i < size এবং i++
        temp[i] প্রিন্ট
    শেষ
শেষ

উদাহরণ

#include <bits/stdc++.h>
#define size 3
using namespace std;
// দুটি ভেক্টরের ডট প্রোডাক্ট
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;
}
// দুটি ভেক্টরের ক্রস প্রোডাক্ট
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

  1. দুটি রেখার ছেদবিন্দু খুঁজে বের করার জন্য C++ প্রোগ্রাম

  2. C++-এ কিউবয়েডের ভলিউম এবং সারফেস এরিয়া বের করার প্রোগ্রাম

  3. C++-এ কিউবের ভলিউম এবং সারফেস এরিয়া বের করার প্রোগ্রাম

  4. দুই স্পার্স ভেক্টরের ডট প্রোডাক্ট বের করার পাইথন প্রোগ্রাম