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

شروع موضوع توسط hamid206 ‏12 مارس 2007 در انجمن خانواده C++ , C

  1. hamid206

    hamid206 Registered User

    تاریخ عضویت:
    ‏26 فوریه 2005
    نوشته ها:
    232
    تشکر شده:
    0
    اگه کسی لطف کنه الگوریتمش و برنامه رو به زبون c++ بده محبت کرده ؟ بخصوص روش محاسبه دترمینالش :D
  2. Arash_j13

    Arash_j13 Registered User

    تاریخ عضویت:
    ‏18 فوریه 2005
    نوشته ها:
    778
    تشکر شده:
    2
    محل سکونت:
    مشهد
    تو کتاب های طراحی الگوریتم روشش هست اگه می تونید یه نگاهی بهش بندازید کتاب نپو ترجمه دکتر جلیلی خوب توضیح داده
  3. aribarzan7

    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]
  4. hamid206

    hamid206 Registered User

    تاریخ عضویت:
    ‏26 فوریه 2005
    نوشته ها:
    232
    تشکر شده:
    0
    متشکر از دوستان
  5. hamid206

    hamid206 Registered User

    تاریخ عضویت:
    ‏26 فوریه 2005
    نوشته ها:
    232
    تشکر شده:
    0
    میدونم این موضوع به این تاپیک ربطی نداره ولی حال نداشتم تاپیک جدید باز کنم این کتاب
    Introduction to Algorithms
    فارسیش رو تو تهران کجا میشه گیر اورد قیمتش چنده ( من شهرستانم اومدم تهران چند جا رفتم نداشتن!!)
  6. kakoo

    kakoo کاربر تازه وارد

    تاریخ عضویت:
    ‏16 می 2006
    نوشته ها:
    217
    تشکر شده:
    1
    بسيار بعيد است که الگوريتم هايی اينچنين را به کد کامپيوتر تبديل کنند.

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

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

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

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

    Arash_j13 Registered User

    تاریخ عضویت:
    ‏18 فوریه 2005
    نوشته ها:
    778
    تشکر شده:
    2
    محل سکونت:
    مشهد
    البته این روش های عددی یه کم مرتبه زمانیشون بالاست و برای ماتریس های بزرگ خیلی طول می کشه
  8. kakoo

    kakoo کاربر تازه وارد

    تاریخ عضویت:
    ‏16 می 2006
    نوشته ها:
    217
    تشکر شده:
    1
    اميدوارم که اشتباه متوجه حرف شما شده باشم، منظورتان دقيقاً چيست؟ چونکه اگر برداشت من از نوشته شما
    درست باشد بايد بگويم که قضيه برعکس است!
  9. hamid206

    hamid206 Registered User

    تاریخ عضویت:
    ‏26 فوریه 2005
    نوشته ها:
    232
    تشکر شده:
    0
    روش برای حل این مسئله زیاد هست من 4 تا نمونه برنامه پیدا کردم در این مورد با 4 شیوه مختلف ولی خودم از همین روش Gauss استفاده کردم ولی خیلی برنامه از نظر زمانی سنگین شد
  10. mamali_1382

    mamali_1382 کاربر تازه وارد

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

    Arash_j13 Registered User

    تاریخ عضویت:
    ‏18 فوریه 2005
    نوشته ها:
    778
    تشکر شده:
    2
    محل سکونت:
    مشهد
    منظورم دقیقا همون چیزی بود که گفتم محاسبه روی ماتریس ها معموا به روش هایی که تو ریاضیات استفاده می شه برای کامپویتر سنگینه و مرتبه زمانی الگوریتم رو خیلی با لا می بره
  12. aribarzan7

    aribarzan7 کاربر تازه وارد

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

    به ویژه جناب kakoo

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

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

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

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

    kakoo کاربر تازه وارد

    تاریخ عضویت:
    ‏16 می 2006
    نوشته ها:
    217
    تشکر شده:
    1
    شما گفتيد روش های عددی، برداشت من اين بود که روشهای numerical را ميگوييد و همه ميدانيم، بهتر
    است که بدانيم، که روش های numerical نه تنها سريع ترند بلکه دقت اشان هم معمولا بيشتر است (در محاسبات کامپيوتر ی)

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

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


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


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

    Arash_j13 Registered User

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

این صفحه را با دیگران به اشتراک بگذارید


بک لینک