esam

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


نمایش نتایج: از شماره 1 تا 14 , از مجموع 14

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

  1. #1
    Registered User hamid206 آواتار ها

    تاریخ عضویت
    Feb 2005
    نوشته ها
    231

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

    اگه کسی لطف کنه الگوریتمش و برنامه رو به زبون c++ بده محبت کرده ؟ بخصوص روش محاسبه دترمینالش
    نخستین سایت اموزش گام به گام برنامه نویسی در لینوکس افتتاح شد
    تا پایان مهر ماه اموزش کار با GCC , Glad , GTK# , Mono در سایت قرار خواهد گرفت


  2. تبلیغات در اینترنت
  3. #2
    Registered User Arash_j13 آواتار ها

    تاریخ عضویت
    Feb 2005
    محل سکونت
    مشهد
    نوشته ها
    778
    تو کتاب های طراحی الگوریتم روشش هست اگه می تونید یه نگاهی بهش بندازید کتاب نپو ترجمه دکتر جلیلی خوب توضیح داده
    ویرایش توسط Arash_j13 : March 12th, 2007 در ساعت 02:55 PM

  4. #3
    Registered User

    تاریخ عضویت
    Mar 2005
    نوشته ها
    6
    سلام

    اگر شما دنبال الگوریتم ریاضی یافتن دترمینان ماتریس 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]

  5. #4
    Registered User hamid206 آواتار ها

    تاریخ عضویت
    Feb 2005
    نوشته ها
    231
    متشکر از دوستان

  6. #5
    Registered User hamid206 آواتار ها

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


  7. تبلیغات در اینترنت
  8. #6
    Registered User kakoo آواتار ها

    تاریخ عضویت
    May 2006
    نوشته ها
    217
    نقل قول نوشته اصلی توسط aribarzan7 نمایش نوشته ها
    سلام

    اگر شما دنبال الگوریتم ریاضی یافتن دترمینان ماتریس 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 برای حل معادلات خطی ياد ميدادند. اين روش برای
    معکوس کردن هم بکار ميره.

    خلاصه اگر ميخواهی کامپيوتر برت کار کنه، بايد روش های عددی رو ياد بگيری.
    ویرایش توسط kakoo : March 13th, 2007 در ساعت 05:42 PM

  9. #7
    Registered User Arash_j13 آواتار ها

    تاریخ عضویت
    Feb 2005
    محل سکونت
    مشهد
    نوشته ها
    778
    البته این روش های عددی یه کم مرتبه زمانیشون بالاست و برای ماتریس های بزرگ خیلی طول می کشه

  10. #8
    Registered User kakoo آواتار ها

    تاریخ عضویت
    May 2006
    نوشته ها
    217
    نقل قول نوشته اصلی توسط Arash_j13 نمایش نوشته ها
    البته این روش های عددی یه کم مرتبه زمانیشون بالاست و برای ماتریس های بزرگ خیلی طول می کشه
    اميدوارم که اشتباه متوجه حرف شما شده باشم، منظورتان دقيقاً چيست؟ چونکه اگر برداشت من از نوشته شما
    درست باشد بايد بگويم که قضيه برعکس است!

  11. #9
    Registered User hamid206 آواتار ها

    تاریخ عضویت
    Feb 2005
    نوشته ها
    231
    روش برای حل این مسئله زیاد هست من 4 تا نمونه برنامه پیدا کردم در این مورد با 4 شیوه مختلف ولی خودم از همین روش Gauss استفاده کردم ولی خیلی برنامه از نظر زمانی سنگین شد

  12. #10
    Registered User

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


  13. تبلیغات در اینترنت
  14. #11
    Registered User Arash_j13 آواتار ها

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

  15. #12
    Registered User

    تاریخ عضویت
    Mar 2005
    نوشته ها
    6
    سلام به همه ی دوستان

    به ویژه جناب kakoo

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

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

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

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

  16. #13
    Registered User kakoo آواتار ها

    تاریخ عضویت
    May 2006
    نوشته ها
    217
    نقل قول نوشته اصلی توسط Arash_j13 نمایش نوشته ها
    منظورم دقیقا همون چیزی بود که گفتم محاسبه روی ماتریس ها معموا به روش هایی که تو ریاضیات استفاده می شه برای کامپویتر سنگینه و مرتبه زمانی الگوریتم رو خیلی با لا می بره
    شما گفتيد روش های عددی، برداشت من اين بود که روشهای numerical را ميگوييد و همه ميدانيم، بهتر
    است که بدانيم، که روش های numerical نه تنها سريع ترند بلکه دقت اشان هم معمولا بيشتر است (در محاسبات کامپيوتر ی)

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

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


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


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

  17. #14
    Registered User Arash_j13 آواتار ها

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


  18. تبلیغات در اینترنت