برگزیده های پرشین تولز

معکوس ماتریس n*n

hamid206

Registered User
تاریخ عضویت
26 فوریه 2005
نوشته‌ها
239
لایک‌ها
2

aribarzan7

کاربر تازه وارد
تاریخ عضویت
29 مارس 2005
نوشته‌ها
6
لایک‌ها
0
سلام

اگر شما دنبال الگوریتم ریاضی یافتن دترمینان ماتریس n*n هستید (نوشتن برنامش که ساده میشه ):

اگر A یک ماتریس n*n باشه :

دترمینان گرد ردیف k ام {det [A]=S{[(-1)^(k+j)]*(a kj)*det [M kj] , j =1 to n

یا گرد ستون kام { det [A]=S{[(-1)^(i+k)]*(a ik)*det [M ik] , i =1 to n

که k میتواند هر عدد درستی میان 1 تا n باشد//// a ij درایه ی ردیف iام ستون jام //// det : دترمینان /// و ماتریس M ij همان ij مین کهاد ماتریس A است

که از برداشتن ردیف i ام و ستون j ام بدست می آید . یعنی یک دترمینان n*n را بصورت مجموع چند دترمینان (n-1)*(n-1) نوشتیم (بازگشتی)

این رابطه ی بازگشتی را در C بصورت یک تابع بازگشتی پیاده کنیم که شرط خروج آن زمانیست که به دترمینان 2*2 برسیم که آن هم مشخص است .
ماتریس وارون هم میشود:
[A -1] = (1/det[A])* [ cof A]​
که [cof A] ماتریس همسازه ها نامیده میشود که ماتریسی است n*n از همسازه های ماتریس A

ij مین همسازه ی A هست​
:[/CENTER]A ij= (-1)^(i+j)]*det [Mij][/CENTER]
 

hamid206

Registered User
تاریخ عضویت
26 فوریه 2005
نوشته‌ها
239
لایک‌ها
2
میدونم این موضوع به این تاپیک ربطی نداره ولی حال نداشتم تاپیک جدید باز کنم این کتاب
Introduction to Algorithms
فارسیش رو تو تهران کجا میشه گیر اورد قیمتش چنده ( من شهرستانم اومدم تهران چند جا رفتم نداشتن!!)
 

kakoo

کاربر تازه وارد
تاریخ عضویت
16 می 2006
نوشته‌ها
217
لایک‌ها
1
سلام

اگر شما دنبال الگوریتم ریاضی یافتن دترمینان ماتریس n*n هستید (نوشتن برنامش که ساده میشه ):

اگر A یک ماتریس n*n باشه :

دترمینان گرد ردیف k ام {det [A]=S{[(-1)^(k+j)]*(a kj)*det [M kj] , j =1 to n

یا گرد ستون kام { det [A]=S{[(-1)^(i+k)]*(a ik)*det [M ik] , i =1 to n

که k میتواند هر عدد درستی میان 1 تا n باشد//// a ij درایه ی ردیف iام ستون jام //// det : دترمینان /// و ماتریس M ij همان ij مین کهاد ماتریس A است

که از برداشتن ردیف i ام و ستون j ام بدست می آید . یعنی یک دترمینان n*n را بصورت مجموع چند دترمینان (n-1)*(n-1) نوشتیم (بازگشتی)

این رابطه ی بازگشتی را در C بصورت یک تابع بازگشتی پیاده کنیم که شرط خروج آن زمانیست که به دترمینان 2*2 برسیم که آن هم مشخص است .
ماتریس وارون هم میشود:
[A -1] = (1/det[A])* [ cof A]​
که [cof A] ماتریس همسازه ها نامیده میشود که ماتریسی است n*n از همسازه های ماتریس A

ij مین همسازه ی A هست​
:[/CENTER]A ij= (-1)^(i+j)]*det [Mij][/CENTER]

بسيار بعيد است که الگوريتم هايی اينچنين را به کد کامپيوتر تبديل کنند.

برای معکوس کردن يه ماتريس، بايد از الگوريتم های numerical استفاده کرد. بطور معمول کسی دترمينان ماتريس ها
رو هيچوقت از روشی که در کتب رياضی آموزش ميدهند پيدا نميکنه.

بهترين کار اينه که يه کتاب numerical analysis, numerical methods, ... بگيری و نگاهی بيندازی. خيلی هاشون هم
بصورت پی دی اف موجود اند اگر انگليسی بخواهی.

قديما که ما تو دبيرستان درس ميخونديم روش Gauss برای حل معادلات خطی ياد ميدادند. اين روش برای
معکوس کردن هم بکار ميره.

خلاصه اگر ميخواهی کامپيوتر برت کار کنه، بايد روش های عددی رو ياد بگيری.
 

Arash_j13

Registered User
تاریخ عضویت
18 فوریه 2005
نوشته‌ها
778
لایک‌ها
2
محل سکونت
مشهد
البته این روش های عددی یه کم مرتبه زمانیشون بالاست و برای ماتریس های بزرگ خیلی طول می کشه
 

kakoo

کاربر تازه وارد
تاریخ عضویت
16 می 2006
نوشته‌ها
217
لایک‌ها
1
البته این روش های عددی یه کم مرتبه زمانیشون بالاست و برای ماتریس های بزرگ خیلی طول می کشه

اميدوارم که اشتباه متوجه حرف شما شده باشم، منظورتان دقيقاً چيست؟ چونکه اگر برداشت من از نوشته شما
درست باشد بايد بگويم که قضيه برعکس است!
 

hamid206

Registered User
تاریخ عضویت
26 فوریه 2005
نوشته‌ها
239
لایک‌ها
2
روش برای حل این مسئله زیاد هست من 4 تا نمونه برنامه پیدا کردم در این مورد با 4 شیوه مختلف ولی خودم از همین روش Gauss استفاده کردم ولی خیلی برنامه از نظر زمانی سنگین شد
 

mamali_1382

کاربر تازه وارد
تاریخ عضویت
5 فوریه 2006
نوشته‌ها
31
لایک‌ها
0
برای این برنامه بهترین روش ماتریس (LU(Lower & Upper هست ....
اگه از طریق دترمینان بریم ، باید خیلی زیاد دترمینان حساب کنیم که اصلا خوب نیست و سرعت کم میشه.
 

Arash_j13

Registered User
تاریخ عضویت
18 فوریه 2005
نوشته‌ها
778
لایک‌ها
2
محل سکونت
مشهد
اميدوارم که اشتباه متوجه حرف شما شده باشم، منظورتان دقيقاً چيست؟ چونکه اگر برداشت من از نوشته شما
درست باشد بايد بگويم که قضيه برعکس است!

منظورم دقیقا همون چیزی بود که گفتم محاسبه روی ماتریس ها معموا به روش هایی که تو ریاضیات استفاده می شه برای کامپویتر سنگینه و مرتبه زمانی الگوریتم رو خیلی با لا می بره
 

aribarzan7

کاربر تازه وارد
تاریخ عضویت
29 مارس 2005
نوشته‌ها
6
لایک‌ها
0
سلام به همه ی دوستان

به ویژه جناب kakoo

با سپاس از راهنمایی هاتون

اصلا روشهای عددی یادم نبود اما این دوستمون هم تنها یه الگوریتم خواستند نه یه الگوریم بهینه

بازم ممنونم از گوشزد هاتون

راستی مگه کتابای محاسبات عددی کتاب ریاضی حساب نمیشن:)
 

kakoo

کاربر تازه وارد
تاریخ عضویت
16 می 2006
نوشته‌ها
217
لایک‌ها
1
منظورم دقیقا همون چیزی بود که گفتم محاسبه روی ماتریس ها معموا به روش هایی که تو ریاضیات استفاده می شه برای کامپویتر سنگینه و مرتبه زمانی الگوریتم رو خیلی با لا می بره

شما گفتيد روش های عددی، برداشت من اين بود که روشهای numerical را ميگوييد و همه ميدانيم، بهتر
است که بدانيم، که روش های numerical نه تنها سريع ترند بلکه دقت اشان هم معمولا بيشتر است (در محاسبات کامپيوتر ی)

روش Gauss رو هم محض نمونه گفتم تا دوستانی که تا حال با numerical methods کار نکرده اند، حداقل
يه نمونه اش رو که به احتمال قوی هنوز در کتب دبيرستان هست (اميد وارم که چنين باشد) ديده باشند،

يه متن مختصر در اين خصوص:


به اينجا رجوع شود


اگر هم کسی کتاب در اين زمينه خواست (انگليسی) رو در وايستی نکنه و هيمنجا اعلام کنه.
 

Arash_j13

Registered User
تاریخ عضویت
18 فوریه 2005
نوشته‌ها
778
لایک‌ها
2
محل سکونت
مشهد
اگه هر اطلاعات بیشتر در مورد روش های محاسبات عددی و پیاده سازی با کامپیوتر می خوایید کتاب محاسبات عددی دکتر کرایچیان رو توصیه می کنم
 
بالا