Share on facebook
فیسبوک
Share on twitter
توئیتر
Share on linkedin
لینکدین
Share on telegram
تلگرام
Share on whatsapp
واتساپ

آموزش محاسبه معکوس ماتریس (inverse) در پایتون

در این آموزش با مثال و تمرین نحوه محاسبه معکوس ماتریس (inverse) رو به کمک دستور numpy.linalg.inv پایتون آموزش میدیم! و همینطور که می‌دونید معکوس ماتریس یکی از موارد پرکاربر در جبرخطی و ریاضیات است!

مثال

قطعه کد زیر رو در نظر بگیرید، تا بعدش خط به خط توضیح بدم!

import numpy as np
a=np.array([
    [1,2],
    [3,4]
])
b=np.linalg.inv(a)
print(b)

در خط اول اومدیم پکیج numpy رو با نام مستعار np وارد برنامه کردیم! [چون این معکوس تابع در این پکیج numpy وجود داره، برای همین مجبوریم این پکیج رو بیاریم توی برنامه تا ازش استفاده کنیم!]

شاید بپرسید حالا چرا نام مستعار؟! چون من حوصله ندارم که نام طوووووولانی numpy رو تایپ کنم! برای همین یه اسم کوچولو موچولو مثل np براش در نظر می‌گیرم که صدا زدنش در طوووول برنامه ساده و خلاصه‌تر باشه! دقیقاً مثل اینکه بعضی از افراد به اسم “سیاوش” میگن “سیا”! [هرچند کار اشتباهی میکنن!]

در خط 2 تا 5 یک آرایه دو بعدی (ماتریس) تعریف کردیم! اگر نمی‌دونید آرایه چیست و این چیز میزایی که توی خطوط 2 تا 5 نوشتیم چیست، یعنی باید مراجعه کنید به مطلب زیر!

آموزش ساخت آرایه در numpy پایتون

در خط یکی مونده به آخر، داریم از پکیج numpy (یادآوری میکنم که اووون np اسم مستعار numpy بود دیگه!) و زیربخش linalg (مخفف Linear Algebra به معنی جبر خطی است!) تابع inv (که برای محاسبه inverse یا معکوس یک ماتریس استفاده میشه!) رو استفاده می‌کنیم! و به این تابع می‌گیم شما لطف کن معکوس ماتریس a رو محاسبه کن و خروجیش رو بریز توی متغیری به اسم b !

حتی توضیح خط آخر هم زشته! ولی با این وجود توضیح میدم! در خط آخر هم که داریم همووون b رو چاپ می‌کنیم (مقدارش رو)!

خروجی:

[[-2. 1. ]
[ 1.5 -0.5]]

بررسی یک نکته

برای اینکه تمرین بیشتر بکنیم، بذارید یه چیزی رو از ریاضیات یادآوری کنم و بعد بریم سراغ کدنویسی‌ش!

یادآوری: ضرب «یک ماتریس» در «معکوس خودش» یک ماتریس همانی را می‌دهد!

حالا الان احتمالاً دارید می‌پرسید اصلاً ماتریس همانی چی هست؟!

یادآوری: [به بیان خودمونی:] ماتریس همانی یک ماتریسی است که روی قطر اصلیش 1 و بقیه عناصرش صفر است!

خب بیاید همین که ضرب یک ماتریس در معکوسش میشه همانی رو در پایتون چک کنیم!

فقط برای اینکه دوباره نویسی نشه! همون قطعه کد بالا رو در نظر بگیرید، با این تفاوت که بجای خط آخرش، خط زیر رو جایگزین کنید! همین!

print(a.dot(b))

و یادآوری کنم دستور dot برای آرایه‌های دو بعدی (یعنی ماتریس) معنی ضرب ماتریسی میده!

یعنی عملاً داریم ضرب ماتریسی a و b رو حساب می‌کنیم!

خروجی:

[[1.00000000e+00 1.11022302e-16]
[0.00000000e+00 1.00000000e+00]]

که می‌بینید دقیقاً روی قطر اصلی (یعنی درایه‌های 1و1 و 2و2) همگی یک است! و سایر جاها صفر!

شاید اعتراض کنید که: اِع! چرا درایه 1و2 1 هست! ولی دارید اشتباه می‌کنید اون هم صفر است! یادتون نره که در ماشین حساب و تمام زبووون‌های برنامه نویسی، این موارد با محاسبات عددی عددی حل میشه! و اووون e-16 یعنی 10 به توان منفیِ16 که خب تقریباً صفر است دیگه! [بازهم تاکید میکنم در ماشین حساب و زبان های برنامه نویسی این ها رو به صورت محاسبات عددی حساب میکنن و معمولاً این تقریب‌ها [خصوصاً در مورد 0] رو زیاد می‌بینید!]

امیدوارم این مطلب هم براتون مفید بوده باشه! لطفاً نقد، نظر و پیشنهاداتتون رو از طریق بخش نظرات برامووون بفرستید! ممنون از همگی!

مطالب پیشنهادی:

آموزش محاسبه دترمینان یک ماتریس در پایتون !

محاسبه جمع و تفریق و ترانهاده ماتریس در پایتون !

آموزش محاسبه ضرب ماتریسی و ضرب درایه درایه دو ماتریس در پایتون !

آموزش محاسبه مقادیر ویژه و بردارهای ویژه یک ماتریس

آموزش تابع ones و zeros در numpy پایتون !

با این دوتا دستور ones و zeros می‌تونید ماتریس های مختلفی، با ابعاد مختلفی بسازید که درایه‌هاشون صفر یا یک است!

آموزش کامل و رایگان زبان برنامه نویسی پایتون !

Share on facebook
Share on twitter
Share on linkedin
Share on telegram
Share on whatsapp
ارسال دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  1. دیار گفت:

    سلام ممنونم از مطالب مفیدتون
    اگه بخوایم تمیز تر ماتریس در خروجی نمایش داده بشه یعنی این همه اعشار و .. نداشته باشه باید چیکار کنیم؟

    • گروه آموزشی کولاک گفت:

      با سلام،
      ممنون از اینکه لطف کردید و نظر دادید
      در مورد سوالتون میشه با دستور set_printoptions از پکیج numpy و یک سری راه‌های دیگه [مثل format] و یا مثلاً تابع round در numpy این کار رو انجام داد!

  2. سید حسین گفت:

    کلا خیلی خوب و واضح و شیرین توضیح میدین.
    دمتون گررم!
    کارتون قابل تحسینه.

    • گروه آموزشی کولاک گفت:

      قربان شما، ممنون از لطفتون
      خیلی ممنون که با نظرتون به ما انرژی میدید

آموزش کامل پایتون
آموزش کامل پایتون

+ جزوه اختصاصی (به تفکیک فیلم که دیگه نیازی نیست جزوه بنویسید)
+ دارای تمرین

+ مدرس: سجّاد رحمانی

توضیحات بیشتر