اگه کسی لطف کنه الگوریتمش و برنامه رو به زبون c++ بده محبت کرده ؟ بخصوص روش محاسبه دترمینالش![]()
گزیده ای از بازارچه پرشین تولز
اگه کسی لطف کنه الگوریتمش و برنامه رو به زبون c++ بده محبت کرده ؟ بخصوص روش محاسبه دترمینالش![]()
نخستین سایت اموزش گام به گام برنامه نویسی در لینوکس افتتاح شد
تا پایان مهر ماه اموزش کار با GCC , Glad , GTK# , Mono در سایت قرار خواهد گرفت
تو کتاب های طراحی الگوریتم روشش هست اگه می تونید یه نگاهی بهش بندازید کتاب نپو ترجمه دکتر جلیلی خوب توضیح داده
ویرایش توسط Arash_j13 : March 12th, 2007 در ساعت 02:55 PM
سلام:[/CENTER]A ij= (-1)^(i+j)]*det [Mij][/CENTER]
اگر شما دنبال الگوریتم ریاضی یافتن دترمینان ماتریس 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 هست
میدونم این موضوع به این تاپیک ربطی نداره ولی حال نداشتم تاپیک جدید باز کنم این کتاب
Introduction to Algorithms
فارسیش رو تو تهران کجا میشه گیر اورد قیمتش چنده ( من شهرستانم اومدم تهران چند جا رفتم نداشتن!!)
بسيار بعيد است که الگوريتم هايی اينچنين را به کد کامپيوتر تبديل کنند.
برای معکوس کردن يه ماتريس، بايد از الگوريتم های numerical استفاده کرد. بطور معمول کسی دترمينان ماتريس ها
رو هيچوقت از روشی که در کتب رياضی آموزش ميدهند پيدا نميکنه.
بهترين کار اينه که يه کتاب numerical analysis, numerical methods, ... بگيری و نگاهی بيندازی. خيلی هاشون هم
بصورت پی دی اف موجود اند اگر انگليسی بخواهی.
قديما که ما تو دبيرستان درس ميخونديم روش Gauss برای حل معادلات خطی ياد ميدادند. اين روش برای
معکوس کردن هم بکار ميره.
خلاصه اگر ميخواهی کامپيوتر برت کار کنه، بايد روش های عددی رو ياد بگيری.
ویرایش توسط kakoo : March 13th, 2007 در ساعت 05:42 PM
البته این روش های عددی یه کم مرتبه زمانیشون بالاست و برای ماتریس های بزرگ خیلی طول می کشه
روش برای حل این مسئله زیاد هست من 4 تا نمونه برنامه پیدا کردم در این مورد با 4 شیوه مختلف ولی خودم از همین روش Gauss استفاده کردم ولی خیلی برنامه از نظر زمانی سنگین شد
برای این برنامه بهترین روش ماتریس (LU(Lower & Upper هست ....
اگه از طریق دترمینان بریم ، باید خیلی زیاد دترمینان حساب کنیم که اصلا خوب نیست و سرعت کم میشه.
منظورم دقیقا همون چیزی بود که گفتم محاسبه روی ماتریس ها معموا به روش هایی که تو ریاضیات استفاده می شه برای کامپویتر سنگینه و مرتبه زمانی الگوریتم رو خیلی با لا می برهاميدوارم که اشتباه متوجه حرف شما شده باشم، منظورتان دقيقاً چيست؟ چونکه اگر برداشت من از نوشته شما
درست باشد بايد بگويم که قضيه برعکس است!
سلام به همه ی دوستان
به ویژه جناب kakoo
با سپاس از راهنمایی هاتون
اصلا روشهای عددی یادم نبود اما این دوستمون هم تنها یه الگوریتم خواستند نه یه الگوریم بهینه
بازم ممنونم از گوشزد هاتون
راستی مگه کتابای محاسبات عددی کتاب ریاضی حساب نمیشن
شما گفتيد روش های عددی، برداشت من اين بود که روشهای numerical را ميگوييد و همه ميدانيم، بهتر
است که بدانيم، که روش های numerical نه تنها سريع ترند بلکه دقت اشان هم معمولا بيشتر است (در محاسبات کامپيوتر ی)
روش Gauss رو هم محض نمونه گفتم تا دوستانی که تا حال با numerical methods کار نکرده اند، حداقل
يه نمونه اش رو که به احتمال قوی هنوز در کتب دبيرستان هست (اميد وارم که چنين باشد) ديده باشند،
يه متن مختصر در اين خصوص:
به اينجا رجوع شود
اگر هم کسی کتاب در اين زمينه خواست (انگليسی) رو در وايستی نکنه و هيمنجا اعلام کنه.
اگه هر اطلاعات بیشتر در مورد روش های محاسبات عددی و پیاده سازی با کامپیوتر می خوایید کتاب محاسبات عددی دکتر کرایچیان رو توصیه می کنم