آموزش

آشنایی با دترمینان

کاربرد دترمینان در عملیات‌های ماتریسی، هندسه و روش‌های محاسباتی رو بررسی کن و یاد بگیر چطور مرحله‌به‌مرحله اون رو در پایتون و R محاسبه کنی.

تاریخ انتشار:
16 آبان 1405
8 دقیقه
علم داده
تحلیل داده
کاربرهای فینکا در چه شرکت‌هایی مشغول به کار هستند؟

اطلاعات و داده‌هایی که در یک معماری محاسباتی ذخیره می‌شن، شکل ماتریسی دارن. به همین خاطر، در پس‌زمینهٔ بیشتر محاسبات علمی و یادگیری ماشین، سروکلهٔ ماتریس‌هایی با ابعاد مختلف پیدا می‌شه.

ماتریس‌ها از مفاهیم پایه‌ایِ ریاضی در جبر خطی هستن و ویژگی‌هایی مثل بعد، پراکندگی، مقادیر ویژه و دترمینان دارن.

دترمینان یکی از ویژگی‌های مهم ماتریس‌های مربعیه که نقش مستقیم و غیرمستقیمی در عملیات‌های ماتریسی داره؛ مثل معکوس‌پذیری، حل دستگاه معادلات خطی در مهندسی و تبدیل‌ها در هندسه و گرافیک کامپیوتری.

در این مقاله، با دترمینان ماتریس‌های مربعی، کاربردهاشون و بعضی از روش‌های محاسبهٔ اون‌ها چه به‌صورت دستی و چه با زبان‌های پایتون و R آشنا می‌شی.

دترمینان چیه؟

دترمینان تابعیه که یک ماتریس مربعی رو به یک عدد حقیقی (اسکالر) تبدیل می‌کنه. در ریاضیات، دترمینان ماتریس مربعی A رو به‌صورت det(A) یا |A| نشون می‌دن.

دترمینان هم مثل خود علم ریاضیات تاریخچهٔ طولانی‌ای داره که ریشه‌اش به ریاضی‌دان‌های چینی برمی‌گرده. در چین باستان، برای حل دستگاه معادلات خطی از دترمینان استفاده می‌کردن (همون روشی که الان به نام قاعدهٔ کرامر یا Cramer’s Rule می‌شناسیم). بعدها در قرن ۱۶ میلادی در اروپا، ریاضی‌دانی به اسم کاردانو (Cardano) دوباره پای دترمینان‌ها رو به حل دستگاه معادلات خطی باز کرد. بعد از اون هم، تاکاکازو (Takakazu) و لایبنیتس (Leibniz) در قرن ۱۷، و وندرموند (Vandermonde) و کوشی (Cauchy) در قرن ۱۸، پایه‌های نظری دترمینان رو در ریاضیات محض شکل دادن.

ویژگی‌های دترمینان‌ها

با اینکه دترمینان هر ماتریس مربعی باید جداگانه محاسبه بشه، اما در حالت کلی و در ماتریس‌های خاص، ویژگی‌های مشخص و شناخته‌شده‌ای دارن. به‌علاوه، دترمینان‌ها حین یک‌سری عملیات‌های ریاضی، الگوها و رفتارهای خاصی از خودشون نشون می‌دن. بعضی از معروف‌ترین ویژگی‌های دترمینان‌ها این موارد هستن:

دترمینان ماتریس همانی برابره با 1

در یک ماتریس همانی، عددهای روی قطر اصلی ۱ و بقیهٔ مقادیر ۰ هستن.

جابه‌جا کردن دو سطر یا ستون، علامت دترمینان رو تغییر می‌ده

مثلاً در ماتریس زیر، دترمینان برابر است با:

det⁡(A)=∣1234∣=(1×4)−(2×3)=4−6=−2\det(A)= \begin{vmatrix} 1 & 2 \\ 3 & 4 \end{vmatrix} =(1 \times 4)-(2 \times 3)=4-6=-2

 

حالا اگه سطرها رو جابه‌جا کنیم، علامت نتیجه برعکس می‌شه.

det⁡(A′)=∣3412∣=(3×2)−(4×1)=6−4=2\det(A')= \begin{vmatrix} 3 & 4 \\ 1 & 2 \end{vmatrix} =(3 \times 2)-(4 \times 1)=6-4=2

 

دترمینان ماتریس‌های مثلثی برابر است با حاصل‌ضرب عناصر روی قطر اصلی

اگه با یک ماتریس بالا‌مثلثی یا پایین‌مثلثی سروکار داشته باشیم، برای محاسبهٔ دترمینان فقط کافیه عددهای روی قطر اصلی رو در هم ضرب کنیم. مثلاً در ماتریس بالا‌مثلثی زیر، دترمینان این‌طوری حساب می‌شه:

U=[232045006]U = \begin{bmatrix} 2 & 3 & 2 \\ 0 & 4 & 5 \\ 0 & 0 & 6 \end{bmatrix}

 

خیلی راحت عناصر روی قطر رو در هم ضرب می‌کنیم تا دترمینان به دست بیاد: det(U)=2×4×6=48

دترمینان در تشابه ماتریسی تغییری نمی‌کنه

دو ماتریس زمانی با هم متشابه هستن که از یک تبدیل خطی به دست اومده باشن، اما پایه‌هاشون متفاوت باشه. اگه دو تا ماتریس متشابه باشن، دترمینان اون‌ها (و همین‌طور مقادیر ویژه، اثر ماتریس و چندجمله‌ای‌های مشخصه‌شون) کاملاً با هم برابره.

دترمینان حاصل‌ضرب دو ماتریس، با حاصل‌ضرب دترمینان‌های اون‌ها برابره

مثلاً در اینجا دترمینان‌های ماتریس A و B به‌صورت جداگانه محاسبه شدن:

det⁡(A)=∣1234∣=−2\det(A)= \begin{vmatrix} 1 & 2 \\ 3 & 4 \end{vmatrix} =-2

det⁡(B)=∣5678∣=−2\det(B)= \begin{vmatrix} 5 & 6 \\ 7 & 8 \end{vmatrix} =-2

det⁡(AB)=∣19224350∣=4\det(AB)= \begin{vmatrix} 19 & 22 \\ 43 & 50 \end{vmatrix} =4

دترمینان با ترانهاده شدن ماتریس تغییری نمی‌کنه

مثلاً دترمینان ماتریس A و ترانهادهٔ اون یعنی AT هر دو با هم برابر (۹-) هستن.

A=[213456789]AT=[247158369]A = \begin{bmatrix} 2 & 1 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{bmatrix} \qquad A^T = \begin{bmatrix} 2 & 4 & 7 \\ 1 & 5 & 8 \\ 3 & 6 & 9 \end{bmatrix}

روش‌های محاسبهٔ دترمینان

برای محاسبهٔ دترمینان یک ماتریس مربعی روش‌های مختلفی داریم؛ مثل فرمول لایبنیتس (Leibniz)، بسط لاپلاس (Laplace) و حذف گاوسی (Gaussian elimination). اینکه کدوم روش رو انتخاب کنی، به ابعاد ماتریس و هزینهٔ محاسباتی اون بستگی داره. در ادامه بعضی از این روش‌ها رو بررسی می‌کنیم:

فرمول لایبنیتس

استفاده از فرمول لایبنیتس برای پیدا کردن دترمینان یک ماتریس مربعی، بیشتر به درد ماتریس‌های کوچیک می‌خوره؛ مخصوصاً وقت‌هایی که می‌خوایم محاسبات رو کلاً یا تا حدودی دستی انجام بدیم. فرمول لایبنیتس برای محاسبهٔ دترمینان به‌شکل زیره:

det⁡(A)=∑σ∈Sn(sgn⁡(σ)∏i=1nai,σ(i))\det(A) = \sum_{\sigma \in S_n} \left(\operatorname{sgn}(\sigma)\prod_{i=1}^{n} a_{i,\sigma(i)}\right)

در این فرمول، Sn نشون‌دهندهٔ مجموعهٔ تمام جایگشت‌های اعداد ۱، ۲، ...، n هست و sgn(σ) علامت جایگشت رو مشخص می‌کنه؛ به این صورت که اگه جایگشت زوج باشه، مقدارش ۱+ و اگه فرد باشه، ۱- می‌شه. عبارت ai,σ هم یکی از عناصر همون ماتریس A به حساب میاد.

بسط لاپلاس

بسط لاپلاس برای ماتریس‌های بزرگ‌تر انتخاب ایده‌آلیه. در این روش (که بهش بسط هم‌سازه هم می‌گن)، یک ماتریس بزرگ به ماتریس‌های کوچک‌تر تقسیم می‌شه. بعد از اون، با استفاده از دترمینان ماتریس‌های کوچک‌تر (کهاد) و هم‌سازه‌های اون‌ها، الگویی شکل می‌گیره که در طول سطرها یا ستون‌ها تکرار می‌شه.

حذف گاوسی

از اونجا که دترمینان ماتریس‌های مثلثی همون حاصل‌ضرب عناصر روی قطر اصلیه، اگه بتونیم ماتریس رو به یک ماتریس مثلثی تبدیل کنیم، محاسبهٔ دترمینان خیلی بهینه‌تر و سریع‌تر می‌شه. در روش حذف گاوسی، با انجام یک‌سری عملیات سطری مقدماتی، کل ماتریس رو به فرم پلکانی سطری یا بالا‌مثلثی تبدیل می‌کنیم و در نهایت، با ضرب کردن عناصر روی قطر اصلی، دترمینان رو به دست میاریم.

چطور دترمینان ماتریس‌هایی با ابعاد مختلف رو پیدا کنیم؟

در مثال‌های زیر، از همون روش‌هایی که توضیح دادیم استفاده می‌کنیم تا دترمینان رو برای ماتریس‌هایی با سایزهای مختلف حساب کنیم.

محاسبهٔ دترمینان ماتریس 2x2

محاسبه و حفظ کردن فرمول دترمینان برای یک ماتریس مربعی 2x2 از همه راحت‌تره. فرض کن ماتریس 2x2 ما مثل A به این شکل باشه:

A=[abcd]A = \begin{bmatrix} a & b \\ c & d \end{bmatrix}

در این حالت، det(A) = (a x d) - (b x c). مثلاً برای ماتریس B در زیر داریم:

A=[5214]A = \begin{bmatrix} 5 & 2 \\ 1 & 4 \end{bmatrix}

det⁡(B)=(5×4)−(2×1)=18\det(B) = (5 \times 4) - (2 \times 1) = 18

محاسبهٔ دترمینان ماتریس 3x3

با اینکه برای محاسبهٔ دترمینان ماتریس 3x3 هم فرمول مشخصی هست، اما برای اینکه روش کار رو بهتر یاد بگیریم، در این مثال از بسط لاپلاس (هم‌سازه) استفاده می‌کنیم. در ادامه، روند محاسبهٔ دترمینان ماتریس A رو می‌بینی:

A=[123456789]A = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{bmatrix}

det⁡(A)=a11∣a22a23a32a33∣−a12∣a21a23a31a33∣+a13∣a21a22a31a32∣\det(A) = a_{11} \begin{vmatrix} a_{22} & a_{23} \\ a_{32} & a_{33} \end{vmatrix} - a_{12} \begin{vmatrix} a_{21} & a_{23} \\ a_{31} & a_{33} \end{vmatrix} + a_{13} \begin{vmatrix} a_{21} & a_{22} \\ a_{31} & a_{32} \end{vmatrix}

det⁡(A)=1∣5689∣−2∣4679∣+3∣4578∣\det(A) = 1 \begin{vmatrix} 5 & 6 \\ 8 & 9 \end{vmatrix} - 2 \begin{vmatrix} 4 & 6 \\ 7 & 9 \end{vmatrix} + 3 \begin{vmatrix} 4 & 5 \\ 7 & 8 \end{vmatrix}

=1(5⋅9−6⋅8)−2(4⋅9−6⋅7)+3(4⋅8−5⋅7)=1(45−48)−2(36−42)+3(32−35)=1(−3)−2(−6)+3(−3)=−3+12−9=0= 1(5 \cdot 9 - 6 \cdot 8) - 2(4 \cdot 9 - 6 \cdot 7) + 3(4 \cdot 8 - 5 \cdot 7) = 1(45 - 48) - 2(36 - 42) + 3(32 - 35) = 1(-3) - 2(-6) + 3(-3) = -3 + 12 - 9 = 0

محاسبهٔ دترمینان ماتریس 4x4

اینجا از فرصت استفاده می‌کنیم تا روش حذف گاوسی رو برای محاسبهٔ دترمینان یک ماتریس 4x4 به اسم A پیاده‌سازی کنیم:

A=[12345678910111213141516]A = \begin{bmatrix} 1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8 \\ 9 & 10 & 11 & 12 \\ 13 & 14 & 15 & 16 \end{bmatrix}

با انجام یک‌سری عملیات سطری، این ماتریس رو به یک ماتریس بالا‌مثلثی تبدیل می‌کنیم.

R2=R2−5R1R3=R3−9R1R4=R4−13R1R_2 = R_2 - 5R_1 \qquad R_3 = R_3 - 9R_1 \qquad R_4 = R_4 - 13R_1

نتیجه می‌شه این ماتریس:

A=[12340−4−8−120−6−16−240−12−24−36]A = \begin{bmatrix} 1 & 2 & 3 & 4 \\ 0 & -4 & -8 & -12 \\ 0 & -6 & -16 & -24 \\ 0 & -12 & -24 & -36 \end{bmatrix}

حالا یک عملیات سطری دیگه انجام می‌دیم:

R3=R3−2R2R4=R4−3R2R_3 = R_3 - 2R_2 \qquad R_4 = R_4 - 3R_2

که این نتیجه به دست میاد:

[12340−4−8−1200000000]\begin{bmatrix} 1 & 2 & 3 & 4 \\ 0 & -4 & -8 & -12 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \end{bmatrix}

در نهایت، دترمینان با حاصل‌ضرب عناصر روی قطر اصلی برابر می‌شه:

det⁡(A)=1×(−4)×0×0=0\det(A) = 1 \times (-4) \times 0 \times 0 = 0

اهمیت هندسی و جبری

همون‌طور که قبلاً گفتیم، دترمینان تابعیه که یک ماتریس مربعی رو می‌گیره و به یک عدد حقیقی تبدیلش می‌کنه.

در هندسه، حاصل‌ضرب دو ضلع یک مربع، مساحتش رو بهمون می‌ده و اگه سه ضلع (یا همون سه بعد) داشته باشیم، می‌تونیم حجمش رو حساب کنیم. به همین شکل، قدرمطلقِ دترمینان در یک ماتریس 2x2 رو می‌شه معادل مساحت متوازی‌الاضلاعی در نظر گرفت که دو ستون ماتریس (به‌عنوان بردارهای جهت‌دار) اونو می‌سازن. دترمینان علامت‌دارِ یک ماتریس 3x3 هم نشون‌دهندهٔ حجم یک متوازی‌السطوح هست.

در تبدیل‌های گرافیکی، مثل کشیدن یا کوچک کردن یک تصویر، دترمینانِ ماتریسِ تبدیل‌شده به ما نشون می‌ده که آیا مساحت تصویر اولیه بعد از تبدیل تغییری کرده یا نه. در حالی که مقادیر ویژه نشون می‌دن تصویر در جهت‌های خاص چقدر منبسط یا منقبض شده.

علاوه بر این، دترمینان‌ها بهمون می‌گن که آیا سطرها یا ستون‌های یک ماتریس، ترکیب خطی از همدیگه هستن یا اینکه از نظر خطی کاملاً مستقلن و هر کدوم اطلاعات منحصربه‌فردی ارائه می‌دن. اگه دترمینان ماتریس صفر نباشه، یعنی سطرها یا ستون‌های اون مستقل خطی هستن. اما اگه دترمینان صفر بشه، نشون می‌ده که ستون‌ها یا سطرها به هم وابستگی خطی دارن.

در نهایت، از دترمینان برای فرمول‌بندی چندجمله‌ای مشخصه به‌منظور محاسبهٔ مقادیر ویژه هم استفاده می‌شه.

محاسبهٔ دترمینان در پایتون و زبان R

با اینکه محاسبهٔ دستی دترمینان‌ها برای یادگیری و تقویت مهارت‌های ریاضی خیلی ارزشمنده، اما در پروژه‌های واقعی به خاطر کمبود زمان و انرژی، معمولاً می‌ریم سراغ ماشین‌حساب یا زبان‌های برنامه‌نویسی مثل پایتون یا R. هم پایتون و هم R کتابخونه‌ها، توابع و متدهایی دارن که دترمینان یک ماتریس رو خیلی سریع برامون حساب می‌کنن. در قطعه‌کدهای زیر، نحوهٔ انجام این کار رو در این دو زبان می‌بینی.

مثال پایتون

دو تا از پکیج‌های معروف پایتون برای محاسبهٔ دترمینان ماتریس، NumPy و SymPy هستن. در قطعه‌کد زیر نشون دادیم که چطور می‌تونی با استفاده از این دو کتابخونه، دترمینان رو در پایتون حساب کنی.

مثال زبان R

محاسبهٔ دترمینان در زبان R هیچ نیازی به فراخوانی کتابخونه‌های خارجی نداره. خودِ زبان R یک تابع داخلی برای این کار داره که می‌تونی نحوهٔ استفاده ازش رو در قطعه‌کد زیر ببینی:

کاربردهای دترمینان

دستگاه‌های معادلات خطی

با کمک قاعدهٔ کرامر، می‌تونیم از دترمینان‌ها مستقیماً برای حل یک دستگاه معادلات خطی استفاده کنیم. طبق این قاعده، اول ماتریسی از ضرایب مجهولاتِ دستگاه معادلات می‌سازیم و دترمینانش رو محاسبه می‌کنیم. در مرحلهٔ بعد، برای هر مجهول یک ماتریس جدید می‌سازیم و دترمینان اون‌ها رو هم حساب می‌کنیم. در نهایت، با تقسیم دترمینان ماتریس جدید بر دترمینان ماتریس اصلی، مقدار هر مجهول به دست میاد.

معادلات دیفرانسیل

یک معادلهٔ دیفرانسیل ممکنه چندین جواب مختلف داشته باشه. برای اینکه مطمئن بشیم این جواب‌ها از نظر خطی مستقل و منحصربه‌فرد هستن، دترمینانِ مجموعه توابعِ جواب رو محاسبه می‌کنیم که به این دترمینان، رونسکین (Wronskian) می‌گن. اگه مقدار رونسکین صفر نباشه، نشون می‌ده که توابع یا جواب‌های ما در بازهٔ مشخص‌شده، کاملاً مستقل خطی هستن.

هندسه

در هندسه، می‌شه دترمینان یک ماتریس 2x2 رو معادل مساحت یک متوازی‌الاضلاع، و دترمینان ماتریس 3x3 رو معادل حجم یک جسم سه‌بعدی در نظر گرفت. علاوه بر این، در نگاشت توابع چندمتغیره، دترمینان ماتریس ژاکوبین (Jacobian) به ما کمک می‌کنه تا بفهمیم آیا نگاشت باعث تغییر در مساحت یا حجم توابع شده یا نه.

نکات کلیدی که باید یادت بمونه

دترمینان‌ها نقش غیرمستقیم اما بسیار مهمی در یادگیری ماشین، آمار و محاسبات علمی دارن. وقتی درک کنی که دستگاه‌های معادلات خطی، معکوس‌سازی ماتریس، گرافیک کامپیوتری و معادلات دیفرانسیل چطور در پس‌زمینهٔ خودشون از دترمینان استفاده می‌کنن، به اهمیت پنهان اون‌ها و دلیل یادگیری‌شون پی می‌بری. احتمالاً دفعهٔ بعد که موقع کدنویسی با خطای معکوس‌ناپذیر بودن ماتریس روبه‌رو بشی، سریعاً به یاد نقش دترمینان در شکل ماتریس و استقلال خطیِ اون می‌افتی.

نتیجه‌گیری

امیدواریم به‌خوبی متوجه اهمیت دترمینان‌ها در تحلیل رفتار ماتریس‌ها و تبدیل‌های خطی شده باشی. اگه دوست داری مهارت‌هات رو در این زمینه بالاتر ببری، گذروندن دوره‌های فینکا می‌تونه یک قدم عالی باشه تا تکنیک‌های جبر خطی رو عمیق‌تر یاد بگیری و اون‌ها رو در پروژه‌های علم داده به کار بگیری.

اشتراک‌گذاری
فهرست مطالب
  • دترمینان چیه؟
  • ویژگی‌های دترمینان‌ها
  • روش‌های محاسبهٔ دترمینان
  • چطور دترمینان ماتریس‌هایی با ابعاد مختلف رو پیدا کنیم؟
  • اهمیت هندسی و جبری
  • محاسبهٔ دترمینان در پایتون و زبان R
  • کاربردهای دترمینان
  • نکات کلیدی که باید یادت بمونه
  • نتیجه‌گیری

دریافت اپلیکیشن فینکا

با اپلیکیشن فینکا، به بیشتر دوره‌ها و مسیرها روی موبایل دسترسی دارید، تمرین می‌کنید و یادگیری رو هم‌زمان روی موبایل و دسکتاپ ادامه می‌دید.