📄 线性代数之行列式计算c语言实现.txt
字号:
线性代数之行列式计算C语言实现[原创]
行列式定义为:
|a11 a12...a1n|
|a21 a22...a2n|= ∑ (-1)t(j1j2...jn)a1j1a2j2...anjn,其中t(j1j2...jn)表示逆序数。
|......................| j1j2...jn
|an1 an2...ann|
#define N 2
#i nclude <conio.h>
void init(int arr[])
{ /* to initiate the array*/
int i;
for(i=0;i<N;i++)
arr[i]=i;
}
void initial(int A[N][N])
{
}
void output(int arr[])
{ /* to output the array*/
int i;
for(i=0;i<N;i++)
printf("%4d",arr[i]);
printf("\n");
}
void sort(int arr[],int start)
{ /*to resort the array from the position 'start' to end*/
int i,j;
for(i=start;i<N;i++)
for(j=start;j<N-1;j++)
if(arr[j]>arr[j+1])
{
int t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
int next(int arr[])
{ /* to produce the next arrangemeng*/
int i,j;
int temp;
for(i=N-2;i>=0;i--)
if(arr[i]<arr[i+1])
break;
for(j=N-1;j>i;j--)
if(arr[j]>arr[i])
break;
if(i<0||j<0)
return;
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
sort(arr,i+1);
}
long jiecheng(int n)
{ /* to compute n!=n*(n-1)*(n-2)....*2*1 */
long result=1;
while(n>0)
result*=n--;
return result;
}
int nixu(int a[])
{
int i,j;
int n=0;
for(i=0;i<N-1;i++)
for(j=i+1;j<N;j++)
if(a[i]>a[j])
n++;
return n;
}
void main()
{
int array[N];
int A[N][N]={{5,6},{8,9}};
int count;
int i,j;
int result=0,t=1;
clrscr();
init(array);
/* initial(A);*/
for(count=0;count<jiecheng(N);count++)
{
t=1;
for(i=0;i<N;i++)
{
j=array[i];
t=t*A[i][j];
}
if(nixu(array)%2==1)
result+=-t;
else
result+=t;
next(array);
}
printf("\nThe result is:\n%d",result);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -