PDA

مشاهده نسخه کامل : برنامه ای برای حل n معادله n مجهول



a_k
04-06-08, 20:30
سلام
کسی می تونه این برنامه رو بنویسه یا تو نوشتنش به من کمک کنه؟
زبان برنامه نویسی : c,c++,c#.net,vb6,pascal با هر کدام از اینها شد اشکال نداره.

Trance
04-06-08, 20:40
این درسته؟
منبع:عمران

طريقه حل N معادله و N مجهول به روش گوس اصلاح شده:
برنامه از روش حذف ( گوس) Elimination) (The Partial-Pivoting Gaussian كه مربوط به حل معادلات خطي است، استفاده شده است.
در اين روش ابتدا مضرب مناسبي از معادله اول به هر يك از معادلات ديگر اضافه مي شود به قسمي كه (n-1 ) معادله ضريب جمله x1 بجز معادله اول برابر صفر بدست آيد ( اگر معادله اول شامل جمله x1 نباشد نخست بايد جاي اين معادله را با هر معادله ديگري كه x1 داشته باشد عوض نمود ) و سپس مضرب مناسب ديگري از معادله دوم به تمام معادلات ديگر اضافه مي شود به قسمي كه جمله x2 از تمام معادلات بجز معادله دوم حذف شود و اين عمل تا N معادله ادامه دارد تا اين كه هر معادله شامل يك مجهول و در نهايت معادلات حل گردد.
تبصره:
1- مي توان از روش زير مثلثي و بالا مثلثي براي حل معادلات در روش گوس استفاده نمود .
2- ضريب مناسبي كه در هر مرحله از آن استفاده مي شود به ضريب لولايي معروف است.
در كامپيوتر معادلات زير بصورت متغيرهاي A(I,J) و B(I) كه به ترتيب ضرايب مجهولات و ضرايب ثابت معادلات تعريف مي شوند.


A11X1+A12X2+A13X3+….+A1nXn=B1


A21X1+A22X2+A23X3+….+A2nXn=B2


A31X1+A32X2+A33X3+….+A3nXn=B3


.


.


.


An1X1+An2X2+An3X3+….+AnnXn=Bn
تبصره :
ماتريس[X ] يك ماتريس n*1 است و متغيرهاي جواب بصورت X(I) تعريف شده است.
ضريب لولايي در هر مرحله نبايد صفر شود بلكه بزرگترين ضريب در هر سطر ماتريس يا معادله است كه باعث مي شود نه تنها از تقسيم يك عدد بر صفر جلوگيري كند بلكه مينيمم كردن خطاي روند كردن دقت كار را بالا مي برد . اين عمليات در زير برنامه REFORMA انجام مي شود.
تنها مشكلي كه در روش فوق وجود دارد احتمال به هم ريختن ضرايب مجهولات است كه باعث به هم ريختن خود مجهولات نيز مي شود و منجر به سردرگمي در جوابها مي شود.
براي حل اين مشكل در زمان پيدا كردن ضرايب لولايي , ماتريس مجهولات همزمان تغيير مي دهيم تا كلاً تمام معادلات جابجا شود اين كار در برنامه از ماتريس [INDX] كه يك عدد شناسايي است استفاده مي شود مثلاً متغير X2 در ستون اول است در كامپيوتر به صورت INDX(1)=2 تعريف مي شود اين عمليات در زير برنامه REFORMA انجام مي شود و از اين زير برنامه ماتريسA اصلاح شده بدست مي آيد.
بعد از حل زير برنامه فوق زير برنامه ديگري را بايد تعريف نمود كه ماتريس B را بر ماتريس A اصلاح شده تقسيم كند اين عمليات در زير برنامه MATRIXX تعريف شده است و كليه جابجايي ها در مجهولات را به حالت اوليه برگرداند.
براي حل معادله از برنامه اصلي SOLVINGEQU استفاده مي شود كه متغيرهاي ورودي را تعريف نموده و متغيرهاي خروجي را نشان مي دهد كه دو زير برنامه قبلي را تحت پو شش خود دارد

a_k
05-06-08, 12:08
کسی می تونه بیشتر کمک کنه؟(مثلا این برنامه رو بنویسه)

K A S R A
05-06-08, 21:44
من یه برنامه دارم یه چیزیه تو همین مایه ها ... برای درس محاسبات عددی نوشتم ... ببین به کارت میاد ...

معادله n مجهولی رو به روش گاوس - سایدل حل می کنه .. G-S