Matrix এবং Linear Algebra Operations

Numerical Methods এবং Fortran (নিউমেরিক্যাল মেথডস) - ফোরট্রান (Fortran) - Computer Programming

333

ফোরট্রানে Matrix এবং Linear Algebra Operations

ফোরট্রানে Matrix এবং Linear Algebra Operations খুবই গুরুত্বপূর্ণ, কারণ এটি বৈজ্ঞানিক কম্পিউটিং এবং সংখ্যাগত বিশ্লেষণের জন্য অত্যন্ত প্রয়োজনীয়। ফোরট্রানে বিল্ট-ইন ম্যাথমেটিক্যাল ফাংশন এবং রুটিন ব্যবহার করে দ্রুত ম্যাট্রিক্স অপারেশন করা যায়। ফোরট্রানে Matrix সম্পর্কিত কিছু গুরুত্বপূর্ণ অপারেশন হল ম্যাট্রিক্সের যোগফল, গুণফল, ইনভার্স, এবং ট্রান্সপোজ ইত্যাদি।

ফোরট্রানে Linear Algebra কাজের জন্য সাধারণত BLAS (Basic Linear Algebra Subprograms) এবং LAPACK (Linear Algebra PACKage) লাইব্রেরি ব্যবহৃত হয়, তবে অনেক মৌলিক অপারেশন ফোরট্রান নেটিভভাবে সমর্থন করে।


১. Matrix Initialization (ম্যাট্রিক্স ইনিশিয়ালাইজেশন)

ফোরট্রানে একটি ম্যাট্রিক্স ডিফাইন করতে dimension কিওয়ার্ড ব্যবহার করা হয়। আপনি চাইলে ম্যাট্রিক্সের উপাদানগুলি ইনিশিয়ালাইজ করতে পারেন।

Matrix Declaration Example:

program matrix_example
  implicit none
  integer, dimension(2, 2) :: A
  integer :: i, j

  ! ম্যাট্রিক্সের উপাদান ইনিশিয়ালাইজ
  A(1, 1) = 1
  A(1, 2) = 2
  A(2, 1) = 3
  A(2, 2) = 4

  ! ম্যাট্রিক্স প্রিন্ট করা
  print *, "Matrix A: "
  do i = 1, 2
     do j = 1, 2
        write(*, '(I3)', advance="no") A(i, j)
     end do
     print *
  end do
end program matrix_example

এখানে:

  • dimension(2, 2) ব্যবহার করে একটি 2x2 আকারের ম্যাট্রিক্স তৈরি করা হয়েছে।
  • ইনিশিয়ালাইজ করে A(1, 1) থেকে A(2, 2) উপাদানগুলি দেয়া হয়েছে।

আউটপুট:

Matrix A: 
  1  2
  3  4

২. Matrix Addition (ম্যাট্রিক্স যোগফল)

ম্যাট্রিক্সের যোগফল সাধারাণভাবে একই আকারের দুইটি ম্যাট্রিক্সের উপাদান একে অপরের সাথে যোগ করা হয়। ফোরট্রানে সাধারণভাবে দুইটি ম্যাট্রিক্সের জন্য একটি লুপের মাধ্যমে যোগফল করা হয়।

Matrix Addition Example:

program matrix_addition
  implicit none
  integer, dimension(2, 2) :: A, B, C
  integer :: i, j

  ! ম্যাট্রিক্স ইনিশিয়ালাইজ
  A = reshape([1, 2, 3, 4], [2, 2])
  B = reshape([5, 6, 7, 8], [2, 2])

  ! ম্যাট্রিক্স যোগফল
  C = A + B

  ! ফলাফল প্রিন্ট করা
  print *, "Matrix A + Matrix B: "
  do i = 1, 2
     do j = 1, 2
        write(*, '(I3)', advance="no") C(i, j)
     end do
     print *
  end do
end program matrix_addition

এখানে:

  • reshape([1, 2, 3, 4], [2, 2]) মাধ্যমে 2x2 ম্যাট্রিক্স তৈরি করা হয়েছে।
  • C = A + B দিয়ে দুটি ম্যাট্রিক্সের যোগফল করা হয়েছে।

আউটপুট:

Matrix A + Matrix B: 
  6  8
 10 12

৩. Matrix Multiplication (ম্যাট্রিক্স গুণফল)

ম্যাট্রিক্স গুণফল করার জন্য matmul ফাংশন ব্যবহার করা হয়, যা দুটি ম্যাট্রিক্সের গুণফল গণনা করে।

Matrix Multiplication Example:

program matrix_multiplication
  implicit none
  integer, dimension(2, 2) :: A, B, C

  ! ম্যাট্রিক্স ইনিশিয়ালাইজ
  A = reshape([1, 2, 3, 4], [2, 2])
  B = reshape([5, 6, 7, 8], [2, 2])

  ! ম্যাট্রিক্স গুণফল
  C = matmul(A, B)

  ! ফলাফল প্রিন্ট করা
  print *, "Matrix A * Matrix B: "
  print *, C
end program matrix_multiplication

এখানে:

  • matmul(A, B) ফাংশন দুটি ম্যাট্রিক্সের গুণফল করে এবং ফলাফল C তে সংরক্ষিত হয়।

আউটপুট:

Matrix A * Matrix B: 
 19  22
 43  50

৪. Matrix Transpose (ম্যাট্রিক্স ট্রান্সপোজ)

ম্যাট্রিক্স ট্রান্সপোজ একটি ম্যাট্রিক্সের সারি এবং স্তম্ভ একে অপরের সাথে বিনিময় করে। ফোরট্রানে transpose ফাংশন ব্যবহার করে এটি করা যায়।

Matrix Transpose Example:

program matrix_transpose
  implicit none
  integer, dimension(2, 3) :: A
  integer, dimension(3, 2) :: B

  ! ম্যাট্রিক্স ইনিশিয়ালাইজ
  A = reshape([1, 2, 3, 4, 5, 6], [2, 3])

  ! ম্যাট্রিক্স ট্রান্সপোজ
  B = transpose(A)

  ! ফলাফল প্রিন্ট করা
  print *, "Matrix A (2x3):"
  print *, A
  print *, "Matrix B (Transpose of A):"
  print *, B
end program matrix_transpose

এখানে:

  • transpose(A) ম্যাট্রিক্স A এর ট্রান্সপোজ তৈরি করেছে এবং এটি ম্যাট্রিক্স B তে সংরক্ষিত হয়েছে।

আউটপুট:

Matrix A (2x3):
 1  2  3
 4  5  6
Matrix B (Transpose of A):
 1  4
 2  5
 3  6

৫. Linear Algebra Operations (রৈখিক বীজগণিত অপারেশন)

ফোরট্রানে রৈখিক বীজগণিতের জন্য কিছু ইন্ট্রিনসিক ফাংশনও রয়েছে, যেমন:

  • dot_product: দুটি ভেক্টরের ডট প্রোডাক্ট বের করা।
  • cross_product: দুটি ভেক্টরের ক্রস প্রোডাক্ট বের করা।

Dot Product Example:

program dot_product_example
  implicit none
  real, dimension(3) :: v1, v2
  real :: result

  v1 = [1.0, 2.0, 3.0]
  v2 = [4.0, 5.0, 6.0]

  ! ডট প্রোডাক্ট গণনা
  result = dot_product(v1, v2)

  print *, "Dot product of v1 and v2: ", result
end program dot_product_example

এখানে:

  • dot_product(v1, v2) ফাংশনটি v1 এবং v2 ভেক্টরের ডট প্রোডাক্ট গণনা করেছে।

আউটপুট:

Dot product of v1 and v2:  32.0

উপসংহার

ফোরট্রানে Matrix এবং Linear Algebra Operations ব্যবহার করে বিভিন্ন গাণিতিক অপারেশন যেমন যোগফল, গুণফল, ট্রান্সপোজ, ইনভার্স, ডট প্রোডাক্ট ইত্যাদি সহজে করা যায়। ফোরট্রান বিশেষভাবে বিজ্ঞান এবং প্রকৌশলগত কাজের জন্য উপযোগী, কারণ এটি ম্যাট্রিক্স এবং রৈখিক বীজগণিত অপারেশনগুলো খুব দ্রুত এবং কার্যকরীভাবে করতে পারে।

Content added By
Promotion

Are you sure to start over?

Loading...