اگه کسی بتونه منو برا نوشتن برنامه برا حل ماتریس به روشهای gauss/jacobi راهنمایی کنه ممنون میشم
اطلاعیه
Collapse
No announcement yet.
برنامه برا حل ماتریس به روشهای gauss/jacobi
Collapse
X
-
پاسخ :برنامه برای دترمینان ماتریس به روشهای gauss/jacobi
عنوان تاپیک رو متاسب انتخاب کنید .
* من این برنامه رو که نوشته ام با استفاده از روش گاوس -جردن هستش . ( البته یک سال پیش ، و برای یک ماتریس 5*5 - که البته به راحتی قابل تعمیم به n*n هست )
روش گاوس -جردن هم ، اکثر شما با این روش آشنا هستین .
فقط مختصرا بگم که روش کلی اون ساده کردن معادلات دستگاه با جمع کردن ضرایب مناسبی از اونها با همه ، تا ماتریس ضرایب به یه ماتریس همانی یا بالا مثلثی یا پایین مثلثی تبدیل بشه.
( توضیح عملکرد برنامه : این برنامه در خروجی از شما می خواد که داریه ها رو وارد کنید و در واقع شما می بایست 25 درایه (برای ماتریس 5×5) تک تک وارد کنید .
و بعد دترمینان ماتریس رو می ده .
طریقه گرفتن داریه ها سطر به سطر است یعنی اینکه ابتدا از درایه a00 شروع می کنه وتا انتهای سطر 0 رو می گیره وبعد هم سطر دوم و تا . . . سطر پنجم و داریه هاش رو می گیره آخرین درایه هم که معلومه داریه a44
خواهد بود . )
کد برنامه با c++ :
کد:#include "iostream.h" #include "conio.h" int calc(int [],int dim); void revmatrix( int [],int dim); void main() { int matrix[1000] = {NULL}; int dim,temp; double leftsum,rightsum; dim=5 ; cout<<"\n\n\n"; for( int i = 0;i<( dim*dim );i ++ ) { cout<<"ENTER ELEMAN : "; cin>>temp; matrix[i] = temp; cout<<"\n"; clrscr(); cout<<" PLEASE ENTER MATRIX DIMANTION : "<<dim; cout<<"\n\n\n"; }//for i if ( dim > 2 ) { leftsum = calc( matrix , dim ); cout<<"LEFTSUM of the matrix = "<< leftsum <<"\n\n"; revmatrix( matrix , dim ); rightsum = calc( matrix ,dim ); cout<<"RIGHTSUM of the matrix = "<< rightsum <<"\n\n\n\n\n\n" ; cout<<" ( DETERMINAN OF THE MATRIX = "<< leftsum - rightsum<<" )"; } else { cout<<" ( DETERMINAN OF THE MATRIX = "<<(matrix[0] * matrix[3] - matrix[1] * matrix[2])<<" )"; } getch(); }//end main /////////////////calc function////////// int calc( int matrix[ ], int dim ) { int sum = 0, bul, x = 1; for( int l = 0; l<( dim*dim );l += ( dim+1 ) )//ghotr asli x *= matrix[l]; sum = x; x = 1; for( int c = 1;c<dim;c ++ ) { bul=c; for( int m = 0;m<dim;m ++ ) { if( ( bul+1 )%dim != 0 ) { x *= matrix[bul]; bul +=( dim + 1 ); } else { x = x * matrix[bul]; bul += 1; } }//for m sum += x; x = 1; }//for c return sum; } ////////////////////revmatriv determinan /////////////////// void revmatrix(int matrix[ ],int dim) { int end,temp,counter; for( int t = dim-1;t <= dim*dim;t = t + dim ) { end=t; counter = end -( dim-1 ); while( end > counter ) { temp = matrix[end]; matrix[end] = matrix[counter]; matrix[counter] = temp; ++ counter; -- end; } }
امیدوارم کمکت کنه . موفق باشید .می خور که ز دل کثرت و قلت ببرد واندیشه ی هفتاد و دو ملت ببرد.
پرهیز مکن ز کیمیایی که از او یک جرعه خوری هزار علت ببرد .
(حکیم عمر خیام)
دیدگاه
-
پاسخ : برنامه برا حل ماتریس به روشهای gauss/jacobi
با سلام
این و ببین شاید مفید بود.
http://forum.p30world.com/showthread.php?p=3223196تو هم می توانی, باور کن که رنج تفاوتی است بین آنچه هست و آنجه تو می خواهی باشد.
وقتی شرمسار گذشته ناقص خویشی, یا وفتی نگران آینده ی نامعلوم خودی, بدان که در زمان حال زندگی نمی کنی, آن وقت رنج را تجربه می کنی, خود را بیمار می کنی, و ناشادمان هستی.
بدان که گذشته تو زمان حال بوده است و آینده ات زمان حال خواهد بود.
پس زمان حال تنها واقعیتی است که میتوانی تجربه کنی.
***هر که نه گویای تو خاموش به / هر چه نه یاد تو فراموش به***
دیدگاه
دیدگاه