**ماتریس هموار** در ریاضیات ماتریس به اجتماع مؤلفه‌های مختلف در قالب آرایه‌ای مستطیل شکل گفته می‌شود. این مؤلفه‌ها به گونه‌های متفاوتی چیده می‌شوند. اندازهٔ هر ماتریس با تعداد سطرها و ستون‌های آن سنجیده می‌شود.

مؤلفه‌های ماتریس درایه نامیده می‌شوند که جایگاه هر درایه در ماتریس با دو زیروند که در سمت راست و پایین قرار دارد مشخص می‌شود.اولین زیر وند مربوط به جایگاه سطری آن و دیگری مشخّص‌کنندهٔ جایگاه ستونی آن است.
اگر دو ماتریس هم اندازه باشند می‌توان آن‌ها را جمع و تفریق کرد.
ماتریس‌ها همچنین اگر سازگار با شند می‌توانند در هم ضرب نیز بشوند. عمل ضرب ماتریس‌ها جابجایی
پذیر نیست.

ماتریس‌های هموار در جبر خطی کاربرد زیادی دارند. یکی از کاربردهای آن‌ها تبدیلات خطی می‌باشد
که توابع را به ابعاد بالاتر می‌برد. همچنین به عنوان ضریب در معادلات خطی به کار می‌آیند. ماتریس‌ها در زمینه‌های فراوانی کاربرد دارند از جمله در فیزیک یا هندسه اپتیک و در ماشین‌های ماتریسی.
نظریه گراف‌ها نیز از ماتریس‌ها برای نگاه داشتن فاصله بین رِاس‌ها استفاده می‌کند. در گرافیک کامپیوتری، از ماتریس‌ها برای تبدیل فضای ۳ بعدی به صفحه نمایش دو بعدی استفاده می‌شوند.

پیدایش ماتریس به نیاز انسان در قبال انجام عملیات‌های گوناگون روی تعداد متناهی بردار برمی گردد. از آنجا که معمولآ این بردارها هم بعد هستند دسته‌بندی کلی زیر را برای ماتریس‌ها قایل می‌شویم.
۱- ماتریس هموار ۲- ماتریس ناهموار

ماتریس ناهموار
--------------

ماتریس ناهموار به اجتماع بردارهایی با طول دلخواه گفته می‌شود.
علی رغم شمول گستردهٔ این گونهٔ ماتریسی به علّت محدودیت زیاد انجام عملیات روی آن کاربردش در مقایسه با ماتریس هموار بسیار کم است.
از معدود موارد استفادهٔ آن ذخیره‌سازی داده‌ها در کامپیوتر و بازیابی آن‌ها را می‌توان نام برد.

ماتریس هموار
------------

در مقابل ماتریس ناهموار، ماتریس هموار قرار دارد. ماتریس هموار گونه ایی از ماتریس می‌باشد که همهٔ سطرهای آن تعداد مؤلفه‌های یکسانی دارند یا به بیانی دیگر از بردارهایی با بعد یکسان تشکیل می‌شود.
مزیت آن امکان انجام عملیات‌های گوناگون روی یک یا تعداد بیشتری از این گونه ماتریس است و اطلاعات بیشتری می‌توان از این نوع استخراج کرد.

در این متن از این پس منظور از ماتریس، ماتریس هموار است.

برای یک ماتریس مربعی دترمینان و ماتریس وارون (در صورت وجود) تعریف می‌شود.
از دترمینان ماتریس می‌توان سازگاری مجموعه مؤلفه‌های آن با معادلات و شرایط گوناگون را تا حد خوبی تشخیص داد.

ماتریس هموار به صورت زیر نمایش داده می‌شود.

{\displaystyle \mathbf {A} ={\begin{bmatrix}9&8&6\\1&2&7\\4&9&2\\6&0&5\end{bmatrix}}.}

نوع دیگری از نمایش ماتریس به صورت استفاده از پرانتزهای بزرگ می‌باشد، که به صورت زیر می‌باشد:

{\displaystyle \mathbf {A} ={\begin{pmatrix}9&8&6\\1&2&7\\4&9&2\\6&0&5\end{pmatrix}}.}
یک جدول شامل m×n مؤلفه که به شکل بالا در mسطر و nستون چیده باشد. m×n را اندازه یا مرتبهی ماتریس می‌نامند. در مثال بالا یک ماتریس ۳در ۴ می‌باشد.
درایه واقع در محل تلاقی سطر iام و ستون jام را با نمایش می‌دهند و ماتریس فوق را به شکل *a**i*,*j* نیز نمایش می‌دهند. یا به صورت [*A**[*****i,j** و یا**A***i,j*.

```
در برخی از زبان‌های برنامه‌نویسی شروع i  و j از ۰ می‌باشد.
```

لازم است ذکر شود که ماتریس‌ها را با حروف بزرگ نشان می‌دهند. و از حروف کوچک با زیر وندهایی در راست حرف برای نشان دادن درایه‌های آن استفاده می‌شود.ماتریس‌های همواری که فقط یه سطر یا فقط یک ستون دارند بردار نامیده می‌شوند.

### جمع

برای جمع دو ماتریس شرط اولیه مورد نیاز این است که دو ماتریس هم مرتبه باشند. یعنی هر دو از مرنبه n\*m باشد؛ و هر درایه ماتریس نهایی حاصل جمع درایه‌های متناظر در دو ماتریس است. به عنوان مثال داریم:
{\displaystyle {\begin{bmatrix}1&3&1\\1&0&0\end{bmatrix}}+{\begin{bmatrix}0&0&5\\7&5&0\end{bmatrix}}={\begin{bmatrix}1+0&3+0&1+5\\1+7&0+5&0+0\end{bmatrix}}={\begin{bmatrix}1&3&6\\8&5&0\end{bmatrix}}}

### ضرب عدد ثابت در ماتریس

هر عدد ثابت که در ماتریس ضرب شود، آن عدد در تک تک درایه‌های آن ضرب می‌شود به عنوان مثال:

```
{\displaystyle 2\cdot {\begin{bmatrix}1&8&-3\\4&-2&5\end{bmatrix}}={\begin{bmatrix}2\cdot 1&2\cdot 8&2\cdot -3\\2\cdot 4&2\cdot -2&2\cdot 5\end{bmatrix}}={\begin{bmatrix}2&16&-6\\8&-4&10\end{bmatrix}}}
```

### ترانهاده

ترانهاده هر ماتریس، ماتریسی ایست با همان درایه‌ها اما با چینشی متفاوت. به این صورت که هر سطر تبدیل به ستون می‌شود. یعنی جای هر سطر و ستون عوض می‌شود. به عنوان مثال:

```
{\displaystyle {\begin{bmatrix}1&2&3\\0&-6&7\end{bmatrix}}^{T}={\begin{bmatrix}1&0\\2&-6\\3&7\end{bmatrix}}}
```

### دترمینان

دترمینان، در جبر خطی به تابعی گفته می‌شود که هر ماتریس مربعی را (به عبارتی هر ماتریس را) به یک عدد نسبت می‌دهد. دترمینان بیشتر برای تعیین، معکوس ماتریسها استفاده می‌شود، به‌طوری‌که اگر دترمینان ماتریسی مخالف صفر باشد، آنگاه آن ماتریس معکوس‌پذیر است. از این رو از طریق دترمینان می‌توان مقادیر ویژه یک ماتریس یا به عبارت بهتر یک نگاشت خطی را تعیین کرد. مثال دیگر، این توابع، دترمینان ژاکوبی است که در روش تغییر متغیر برای انتگرالهای چند بعدی، مورد استفاده قرار می‌گیرد.
اگر A یک ماتریس مربعی n-بعدی با اعضای A\_{{i,j}}
(i,j\in \{1,\cdots ,n\}) باشد، آنگاه دترمینان این ماتریس به صورت زیر نوشته می‌شود (نامیده شده به لایبنیتز):

\det(A)=\sum \_{{\sigma \in S\_{n}}}\operatorname{sgn}(\sigma )\prod \_{{i=1}}^{n}A\_{{i,\sigma (i)}}

در اینجا S\_{n}، مجموعهً تمام جابه‌جایی‌های (permutations) ممکن بین اعداد
\{1,\cdots ,n\} است و \operatorname{sgn}(\sigma ) تابعی است که مقدار آن برابر ۱برای جابه‌جایی‌های (\sigma ) زوج و برابر -1 برای جابه‌جایی‌های فرد است. در اینجا منظور از زوج و فرد، تعداد تعویض‌های دوتایی می‌باشد، که جابه‌جاییِ \sigma  از آن‌ها ساخته شده‌است.

#### کد ++c دترمینان

1. include "iostream.h"
2. 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;
 cout<<"\n\n\n"<<"  PLEASE ENTER MATRIX DIMANTION: ";
 cin>>dim;
 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 = ۱;
 for(int l = 0; l<(dim*dim);l += (dim+1))//ghotr asli
 x *= matrix[l];
 sum = x;
 x = ۱;
 for(int c = 1;c<dim;c ++)
 {
 bul=c;
 for(int m = 0;m<dim;m ++)
 {
 if((bul+1)%dim != ۰)
 {
   x *= matrix[bul];
   bul +=(dim + 1);
 }
 else
 {
   x = x * matrix[bul];
   bul += ۱;
 }
 }//for m
 sum += x;
 x = ۱;
 }//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;
 }
```

منابع
-----