PDA

View Full Version : سوال: کاهش زمان اجرایی determinant



abasfar
یک شنبه 05 تیر 1390, 07:31 صبح
سلام
خوب یک پستم حذف شد اما من جوابش را پیدا کردم فقط مشکل اینجاست که
من میخوام دترمینال یک ماتریس مثلا 70*70 را بدست بیارم این کد را که گذاشتم برای ماتریس کوچک خوب کار میکنه اما ماتریس بزرگ خیلی زمان بر میشه ، لطفا کمک کنید

public static double fDeterminant(double arr[][])
{

double determinant=0.0;
int n=arr.length;
if(n==1)
{
determinant=arr[0][0];
}
else
{

int c=1;
for(int i=0;i<n;i++)
{
double minor[][]=new double[(n-1)][(n-1)];

int mini=0,minj=0;
for(int j=1;j<n;j++)
{
for(int k=0;k<n;k++)
{
if(k!=i)
{
minor[mini][minj]=arr[j][k];
minj++;
if(minj==(n-1))
{
mini++;
minj=0;
}
}
}
}

double term=arr[0][i]* fDeterminant(minor);

determinant=determinant+(c*term);
c=c*(-1);
}
}

return determinant;
}

abasfar
یک شنبه 05 تیر 1390, 09:02 صبح
جواب:
دوستان ممنون حل شد اول Upper Triangle را پیدا کردم بعد دترمینال و
پاک نکردم تا شاید کد بالا به درد کسی بخوره