صفحه اصلی - فروم پرشین سون

بازگشت   PersianSeven Forums > سخت افزار, نرم افزار و برنامه نویسی | Web Design & Programming > برنامه نویسی > خانواده C++ ,C و Visual C#.Net, Delphi
پورتال پرشين راهنمایی جــوایز IShop وبلاگ پرشین تماس با ما


ارسال مبحث جدید  پاسخ
 
LinkBack ابزارهای موضوع جستجو این تاپیک حالت نمایش
قدیمی 02-09-2014   #1 (لينک اين پست)
معاونت سایت
 
آواتار فرنوش
 
تاريخ عضويت: Oct 2013
محل سكونت: اصفهان
سن: 22
اسم واقعی: یلدا
پست ها: 48,423
تشكرها (از ديگران): 24,972
تشكر شده 18,986 بار در 11,276 پست
چوق (ثروتمند شماره 3): 32,369,474
پاداش داده شده 1,538 مرتبه
تاکنون 1,173 مرتبه با چوق تشکر کرده
تشکر شده با چوق 594 مرتبه
فعاليت Longevity
0/20 10/20
Today پست ها
ssss48423

ويترين جوايز


عکسهای خریداری شده
پرسپولیس تهران چلسی پرسپولیس تهران
New.s نحوه ی محاسبه دترمینان ماتریس

دترمینان ماتریس مربعی - که به صورت | A | یا ( det( A نمایش داده می‌شود - یکی از مفاهیم مشهور جبر خطی است که کاربردهای بسیاری در علوم مختلف دارد. امکان محاسبه سریع دترمینان یک ماتریس با ابعاد بزرگ، بحث مهمی است، که در ادامه سه روش محاسباتی رایج و پیچیدگی زمانی آنها مرور خواهند شد.

طبق تعریف دترمینان، اگر اندازه ابعاد ماتریس مربعی یک باشد (n = 1)، دترمینان همان مقدار تک‌عضو آن است. یعنی:



اما اگر مرتبه ماتریس بزرگتر از یک باشد (n > 1)، دترمینان را به یکی از روش‌های زیر می‌توان محاسبه کرد.



بسط لاپلاس دترمینان

بسط لاپلاس (یا بسط همسازه‌ای) برای محاسبه دترمینان ماتریس مرتبه n، به فرم زیر است:



یا




که در حالت اول، بسط بر اساس سطر دلخواه i، و در حالت دوم بر اساس ستون دلخواه j صورت گرفته است. منظور از Aij (ماتریس کهاد)، ماتریسی است که از حذف سطر iام و ستون jام ماتریس اصلی به دست آمده است.

به عنوان مثال، اگر ماتریس مربعی A به صورت زیر تعریف شده باشد:



دترمینان آن، با بسط روی سطر اول، به این ترتیب محاسبه می‌شود:



و با بسط روی ستون دوم:



توجه داشته باشید که منظور از | | علامت قدرمطلق نیست.

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



پیچیدگی زمانی بسط لاپلاس

همانطور که از تعریف مشخص است، در روش بسط لاپلاس، محاسبه دترمینان یک ماتریس مرتبه n، به محاسبه دترمینان n ماتریس کهاد از مرتبه n - 1 شکسته می‌شود. اگر عمل اصلی محاسبات را اعمال ضرب و جمع در نظر گرفته، و ( T1( n تعداد این اعمال را برای محاسبه دترمینان ماتریس مرتبه n به روش بسط لاپلاس نشان دهد، می‌توان نوشت:

T1( n ) = n T1( n - 1 ) + n + n + n - 1 = n T1( n - 1 ) + 3n - 1 , T1( 1 ) = 0


( n T1( n - 1: تعداد اعمال لازم برای محاسبه زیر مسائل

n: تعداد ضرب‌های بین aij و توان‌های زوج یا فرد منفی یک

n: تعداد ضرب‌های بین aij و ( det( Aij

n - 1: تعداد جمع‌های لازم برای محاسبه نهایی


حل این رابطه بازگشتی نشان می‌دهد که ( T1( n از مرتبه ( !O( n است، که برای nهای بزرگ کارایی ندارد.

روش گاوس

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

1- جابجا کردن دو سطر (یا دو ستون) ماتریس، مقدار دترمینان را قرینه می‌کند. در مثال زیر، جای سطر اول و دوم عوض شده است:



2- اگر تمام درایه‌های یک سطر (یا یک ستون) ماتریس در عددی مانند k ضرب شود، حاصل دترمینان نیز k برابر می‌شود. در مثال زیر، سه برابر بودن درایه‌های متناظر سطر دوم ماتریس سمت چپ، نسبت به سطر دوم ماتریس سمت راست، مقدار دترمینان آن را نیز سه برابر کرده است:



3- اگر ضریب ثابتی از درایه‌های یک سطر (یا یک ستون) ماتریس به سطر (یا ستون) دیگری اضافه شود، مقدار دترمینان تغییر نمی‌کند. در مثال زیر، پنج برابر سطر اول به سطر سوم اضافه شده است:



4- دترمینان یک ماتریس مثلثی (ماتریسی که تمامی درایه‌های بالای قطر اصلی یا پایین قطر اصلی و یا هر دو صفر باشند) برابر حاصلضرب درایه‌های قطر اصلی آن است:




5- ماتریسی که تمامی درایه‌های یک سطر (یا یک ستون) آن صفر باشد، دترمینان آن نیز صفر خواهد بود:




در روش گاوس مراحل زیر انجام می‌شود:

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

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

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




مرحله سوم: در ماتریس به دست آمده، ستون اول آن، به غیر از سطر اول همه صفر هستد. بسط لاپلاس دترمینان ماتریس را بر اساس ستون اول انجام می‌دهیم:




مرحله چهارم: محاسبه دترمینان ماتریس از مرتبه n به محاسبه دترمینان ماتریس مرتبه n - 1 تقلیل یافته است. با ادامه این مراحل برای این ماتریس، تا رسیدن به ماتریسی از مرتبه یک، مقدار دترمینان اصلی محاسبه می‌شود:




پیچیدگی زمانی روش گاوس

اعمال ضرب و جمع را اعمال اصلی این روش در نظر گرفته، و ( T2( n را تعداد این اعمال برای محاسبه دترمینان به روش گاوس تعریف می‌کنیم. برای صفر کردن ستون اول هر سطر، ضریب مشخصی را محاسبه می کنیم، که به یک عمل تقسیم (هم‌ارز ضرب) نیاز دارد. سپس حاصلضرب این ضریب در درایه‌های سطر اول را به درایه‌های متناظر آن سطر اضافه می‌کنیم. در نتیجه این مرحله برای هر سطر n عمل ضرب و n عمل جمع دارد، که برای n - 1 سطر باید اعمال شود. در پایان نیز با بسط لاپلاس روی ستون اول و یک عمل ضرب، به محاسبه دترمینان مرتبه n - 1 می‌رسیم. پس می‌توان نوشت:



T2( n ) = 1 + ( n - 1 ) ( n + n ) + T2( n - 1 ) + 1 = T2( n - 1 ) + 2n2 - 2n + 2 , T2( 1 ) = 0



چنین رابطه بازگشتی از مرتبه ( O( n3 است، که بهبود چشمگیری در مقایسه با روش بسط لاپلاس با مرتبه ( !O( n دارد.

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


پیاده‌سازی چنین الگوریتمی به سه حلقه تکرار تو در تو نیاز دارد، که با یک حساب سرانگشتی مرتبه‌ ( O( n3 را نشان می‌دهد.

توجه: در برخی منابع این روش با عنوان گاوس-جردن معرفی می‌شود.

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


یا به عبارت دیگر:


به عنوان مثال:


واضح است که برای چنین محاسبه باید a11 غیر صفر باشد. اگر اینچنین نبود، طبق اعمال مقدماتی سطر و ستون باید با جابجایی سطرها مقدار آن را غیر صفر کرد.
این فرمول، مساله از مرتبه n را به یک زیر مساله از مرتبه n - 1، و n - 1 )2 ) زیر مساله از مرتبه 2 تبدیل می‌کند.

پیچیدگی زمانی فرمول تحویل
اگر ( T3( n تعداد اعمال ضرب و جمع برای محاسبه به این روش باشد، می‌توان نوشت:

T3( n ) = n - 1 + T3( n - 1 ) + ( n - 1 )2 T3( 2 ) = T3( n - 1 ) + 3n2 - 5n + 2 , T3( 2 ) = 3
n - 1: تعداد تقسیم و ضرب‌های (یک تقسیم و n - 2 ضرب) لازم برای محاسبه توان (n- 2)ام معکوس a11 و ضرب آن در دترمینان
( T3( n - 1: تعداد اعمال لازم برای حل زیر مساله
( n - 1 )2 T3( 2 ): تعداد اعمال لازم برای محاسبه درایه‌های ماتریس زیر مساله

حل این رابطه بازگشتی نیز مرتبه پیچیدگی ( O( n3 را نشان می‌دهد.

مقایسه روش‌های سه‌گانه
1- محاسبه پیچیدگی زمانی روش‌های سه‌گانه فوق نشان می‌دهد، کارآیی زمانی دو روش گاوس و فرمول تحویل تقریبا یکسان بوده، و بسیار بهتر از روش بسط لاپلاس هستند.
2- فضای مصرفی هر سه روش در صورت پیاده‌سازی بهینه آنها، همان فضای لازم برای ذخیره یک ماتریس مربعی از مرتبه n است.
3- هر سه روش ظاهری بازگشتی - با روش تقسیم و غلبه - دارند، که حل مساله از مرتبه n را به حل زیرمساله یا زیرمسائلی از مرتبه n - 1 تقسیم می‌کنند. اما پیاده‌سازی غیربازگشتی این روش‌ها نیز ممکن است، که در روش گاوس توضیح مختصری داده شد.
4- بر اساس روش بسط لاپلاس، و با استفاده از استقرای ریاضی، می‌توان ثابت کرد که اگر تمامی درایه‌های یک ماتریس مربعی اعداد صحیح باشند، دترمینان آن نیز عدد صحیح خواهد بود. روش بسط لاپلاس صحیح بودن عدد دترمینان را در این شرایط تضمین می‌کند. چرا که تنها از اعمال جمع و ضرب تشکیل شده است، که صحیح بودن عدد را تغییر نمی‌دهند. اما دو روش دیگر - با توجه به این که شامل عمل تقسیم نیز هستند - در زمان پیاده‌سازی ممکن است خطای محاسباتی ایجاد کنند. چرا که اکثر زبان‌های برنامه‌نویسی اعداد را به دو فرم صحیح یا اعشاری - با دقت مشخص - ذخیره می‌کنند. بنابراین اعداد گویای غیرصحیح به صورت تقریبی ذخیره شده، و در محاسبات هم به همان صورت تقریبی به کار می‌روند.
دترمینان ماتریس A را که توسط بسط لاپلاس محاسبه کردیم، با استفاده از روش گاوس و با فرض ذخیره اعداد گویا به صورت اعشاری - با دقت شش رقم - مجددا محاسبه می‌کنیم:


این مساله زمانی اهمیت دارد که محاسبه دقیق مد نظر بوده، و امکان انجام عملیات حسابی روی اعداد گویا وجود نداشته باشد.










فرنوش آفلاین است   پاسخ به نقل قول چوق/پاداش
پاسخ

به اشتراک بگذارید

برچسب ها
ماتریس, محاسبه, نحوه, ی, دترمینان


كاربران در حال ديدن تاپیک: 1 (0 عضو و 1 مهمان)
 
ابزارهای موضوع جستجو این تاپیک
جستجو این تاپیک:

جستجوی پیشرفته
حالت نمایش

مجوزهای ارسال و ویرایش
شما نمیتوانید موضوع جدید ارسال کنید
شما نمیتوانید به پست ها پاسخ دهید
شما نمیتوانید فایل پیوست ضمیمه کنید
شما نمیتوانید ارسال های خود را ویرایش کنید

BB code : فعال
شکلکها : فعال
[IMG] : فعال
HTML : غیر فعال
Trackbacks are فعال
Pingbacks are فعال
Refbacks are فعال

خط مشی بانک مرکزی
جهت ارسال تاپیک جدید: 100 چوق
جهت ارسال پست: 50 چوق
به ازای هر کارکتر در پست : 1 چوق


زمان محلی شما با تنظیم GMT +3 هم اکنون 05:09 AM میباشد.

Powered by vBulletin .
Copyright © 2019 vBulletin Solutions, Inc. All rights reserved.