PDA

View Full Version : حل n معادله n مجهول باروش پلکانی



computing
جمعه 27 فروردین 1389, 19:54 عصر
من می خواستم یه برنامه برای حل n معادله n مجهول باروش پلکانی بنویسم
می خوام بدونم قبلی کسی این برنامه رو نوشته یا نه؟
اگر هم ممکنه یکی پیچیدگی زمانی ش رو برام حساب کنه
در ضمن می خوام با سرباز گذاری بنویسم
سوال آخر هم اینکه روش بهتری از روش پلکانی وجود داره یا نه؟

amin1softco
جمعه 27 فروردین 1389, 21:07 عصر
به روش کرامر می شه خیلی راحت حلش کرد با جابه جا کردن ستون و بدست آوردن دترمینان

computing
جمعه 27 فروردین 1389, 21:12 عصر
تا جایی که من می دونم گوس جردن همون روش پلکانی ه!
پیچیدگی زمانیش می دونید چقدر ه؟
در ضمن نوشتن اینقدر ها هم آسون نیست مخصوصا وقتی یه معادله کمتر باشه

Salar Ashgi
جمعه 27 فروردین 1389, 22:06 عصر
می خوام بدونم قبلی کسی این برنامه رو نوشته یا نه؟


انشاالله که هدفتون درخواست کد نیست ؟؟؟!!!



روش بهتری از روش پلکانی وجود داره یا نه؟
ساده ترینش فرمول بسط یافته دستور کرامر میباشد و یا روش گاوس جردن .

ولی سایر روش ها رو تو کتابای محاسبات عددی میشه پیدا کرد .

amin1softco
جمعه 27 فروردین 1389, 22:14 عصر
من همینطور دارم با خودم فکر می کنم این روش پلکانی چیه نگو آب در کوزه و ما ...
خوب عزیز یک سرچ بزنی پیدا می کنی پیچیدگی زمانیش اینه ( O(n^3
البته من روش کرامر منظورم بود در پست قبلی.
به اینجا (http://www.dreamincode.net/forums/topic/33946-gauss-jordan-elimination-matrix/)هم یک نگاهی بنداز....البته فقط ازش ایده بگیر

computing
جمعه 27 فروردین 1389, 23:10 عصر
[quote=salar_cpp_cs;954175]
انشاالله که هدفتون درخواست کد نیست ؟؟؟!!!


نه کدش رو می خوام خودم بنویسم
فقط می خواستم مطمئمن بشم که خدای نکرده دانشجویی وقت گرامی شو رو صرف این کار نکرده باشه :لبخند:

دستتون بابت این لینکی که داده درد نکنه
ولی چون به قول بچه ها kis نکرده نمی شه ازش سر در آورد
keep in simple
بعد من متوجه نشدم چیدگی چی n^3 است
کرامر بیش تر طول نمی کشه؟

amin1softco
شنبه 28 فروردین 1389, 11:40 صبح
منظورم پیچیدگی زمانی گاوس جردن یا به قول شما پلکانی بود
روش کرامر به نظرم باید پیچیدگیش بیشتره چون باید اول دترمینان رو حساب کنیم بعد n تا جا به جایی هم داریم پس بستگی به روش محاسبه دترمینان داره

computing
شنبه 28 فروردین 1389, 17:49 عصر
شرمنده اینقدر سوال می کنم
من بلدم دترمینان رو به روش بازگشتی بنویسم ولی
interative یا همون تکراری شو رو بلد نیستم
اگه می شه ایده ی حل ش رو بگید
(کدش رو نمی خوام )
باتشکر

amin1softco
شنبه 28 فروردین 1389, 18:10 عصر
به نظر من باید پیاده سازی فرمول

http://upload.wikimedia.org/math/5/d/0/5d067940d9accb27e13fa2fab2fa5ec3.png

باشه ولی خوب یک سرچ که بزنی اینجا (http://en.wikipedia.org/wiki/Determinant)توضیحش هست به صورت کامل که پیچیدگی زمانی بستگی به فرمول
O(n!) ya O(n^3)
هست پس زیاد روش کرامر با پلکانی با هم پیچیدگی زمانیش فرق نداره اگه دترمینان از مرتبه ان 3 باشه

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

Salar Ashgi
شنبه 28 فروردین 1389, 21:17 عصر
شرمنده اینقدر سوال می کنم
من بلدم دترمینان رو به روش بازگشتی بنویسم ولی
interative یا همون تکراری شو رو بلد نیستم
اگه می شه ایده ی حل ش رو بگید
(کدش رو نمی خوام )
باتشکر

میشه گفت معمول ترین روش و نسبتا ساده از لحاظ پیاده سازی ، همون روش Recursive

باشه ، البته یه روش تجزیه LU هم داریم ، که یه ماتریس رو تبدیل میکنه به حاصلضرب دو

ماتریس مثلثی و میدونیم که دترمینان ماتریس های مثلثی حاصلضرب عناصر روی قطر اصلی

است ، پس دترمینان ماتریس اولیه بسادگی محاسبه میشود .

البته حتما میدونید که روش بازگشتی برای ماتریس های بزرگتر ، زیاد کارایی نخواهد داشت ولی

روش LU روش جامعی بنظر میرسه برای همه ماتریس ها .

جزئییات روش LU تو اکثر کتابای محاسبات عددی پیدا میشه .