# Native Code > برنامه نویسی با C > برنامه نویسی با زبان C و ++C >  الگوریتم دترمینان ماتریس n در n

## amir_cpp

با سلام و عرض خسته نباشید خدمت برنامه نویسان محترم.
می خواستم ببینم کسی می تونه در مورد الگوریتم دترمینان ماتریس n در n به من کمک کنه یا نه. راستش هم بازگشتی مدنظره هم غیر بازگشتی، با تشکر.

----------


## emad_67

الگوریتم بازگشتی اون به این شکله:
دترمینان هر ماتریس مربعی ، با کمک دترمینان ماتریسهای همسازه مرتبه بالا تر بدست میاد. بنابراین دترمینان به صورت زیر محاسبه می شود:

det(A) = A[i,1] * det(minor(A,i,1)) * pow (-1,0)+
             A[i,2] * det(minor (A,i,2)) * pow (-1,1)+
             A[i,3] * det(minor (A,i,3)) * pow (-1,2)+
...             
             A[i,j] * det(minor (A,i,j)) * pow (-1,j-1)+
...             
             A[i,n]] * det(minor (A,i,n)) * pow(-1,n-1)
که در توی این فرمول i یک عدد طبیعی دلخواه بین 1 تا n و pow تابع توان و minor تابع به دست آوردن ماتریس همسازه است.

----------


## amir_cpp

ممنون می شم اگه یه مثال بزنید.
مثلا برای n=7 کد کامل چی می شه؟
ممنون.

----------


## emad_67

کدش که خودت باید بنویسی ولی از روش باز گشتی باید آرایه رو کوچیک کنی تا به 2*2 برسه یعنی مثلا یه آرایه 4*4 رو به 3*3 و سپس به 2*2 تبدیل کرده و دترمینان ماتریس 2*2  رو حساب میکنیم. در واقع مقدار کل دترمینان از مقداری که از دترمینان ماتریس 2*2 به دست میاد حساب میشه. طبق فرمولی که در بالا نوشتم تقریبا واضح هست که چیکار باید بکنی.

----------


## amir_cpp

نه!
منظورم کد واقعی نیست! منظورم تکه کد بود، یعنی این فرمول بالا به ازای مثلا 7 چه شکلی می شه؟
ممنون.

----------


## emad_67

برای 7 تا هر عدد دیگه هیچ فرقی نمیکنه، چون این الگوریتم برای ماتریس n*n هست.
کد تابع محاسبه دترمینان:

int det(int a[],int n)
{
    int x=0;
    if(n==2)
        return a[0]*a[3]-a[2]*a[1];
    else
    {
        for(int i=0;i<n;i++)
            x+=a[i]*det(minor(a,i,n),n-1)*pow(-1,i);
    }
    return x;
}

این تابع به صورت باز گشتی دترمینان رو به ازای هر ماتریسی محاسبه میکنه.
من توی این تابع آرایه رو 2 بعدی در نظر نگرفتم، چون محاسباتش پیچیده تر میشد بجاش یه ماتریس 1 بعدی با طول n*n ایجاد کردم و مقادیر رو در اون قرار دادم.

----------


## aser12

*سلام* 
*emad جان ممنون میشم اگه کمکم کنی بدونم برنامه ی قابل اجرایدترمینان ماتریس n در nرو از کجا میتونم گیر بیارم.*

----------


## emad_67

توی همین سایت بگردی فکر کنم باشه.
https://barnamenevis.org/showth...86%D8%A7%D9%86
https://barnamenevis.org/showth...86%D8%A7%D9%86
https://barnamenevis.org/showth...86%D8%A7%D9%86

----------


## aser12

سلام   emad
جون من یک برنامه ی قابل اجرا می خوام. ماتریس(nn )در زبان c
اگه کمکم کنی خیلی ممنون میشم چون این سایت هایی که گفتی تو c
نیستند.و من فقط این زبونو بلدم.خیلی خیلی ممنون.

----------


## emad_67

> من فقط این زبونو بلدم


خوب مشکل اینه که من c بلد نیستم و بیشتر با C++‎ کار کردم :D

----------


## hag narafte

> خوب مشکل اینه که من c بلد نیستم و بیشتر با C++‎‎ کار کردم :D


مشکل شما اینه که مهیچکدومو بلد نیستید وگرنه نمی گفتید c بلد نیستم :گیج:

----------


## joojoo_meysam

سلام با عرض خسته نباشید :
من میخواهم دترمینان 2 ماتریس  (3*2) و (4*3 ) را به زبان ++c بنویسم خواهشمندم کمکم کنید.

----------


## IamOverlord

> سلام با عرض خسته نباشید :
> من میخواهم دترمینان 2 ماتریس  (3*2) و (4*3 ) را به زبان ++c بنویسم خواهشمندم کمکم کنید.


فقط ماتریس مربّعی دترمینان داره.

----------


## sepehr7192

کد ماتریس معکوس رو برای C++‎ میخوام .........خیلی مهمه :گریه:  :افسرده:

----------

