我正在尝试根据Cramer规则在C中制作线性系统解算器......
我找到了这段很好的代码来找到矩阵的决定因素[n] [n]:
int determinant(int f[20][20],int x)
{
int pr,c[20],d=0,b[20][20],j,p,q,t;
if(x==2)
{
d=0;
d=(f[1][1]*f[2][2])-(f[1][2]*f[2][1]);
return(d);
}
else
{
for(j=1;j<=x;j++)
{
int r=1,s=1;
for(p=1;p<=x;p++)
{
for(q=1;q<=x;q++)
{
if(p!=1&&q!=j)
{
b[r][s]=f[p][q];
s++;
if(s>x-1)
{
r++;
s=1;
}
}
}
}
for(t=1,pr=1;t<=(1+j);t++)
pr=(-1)*pr;
c[j]=pr*determinant(b,x-1);
}
for(j=1,d=0;j<=x;j++)
{
d=d+(f[1][j]*c[j]);
}
return(d);
}
}
但是为了解决基于Cramer规则的线性系统,我必须创建n个矩阵[n-1] [n-1] ...例如:
2x - y + 4z + t = -2
3x + 2y - t = -3
x + 2y + 2t = 10
x + y + 2z = 2
在这个5x4的情况下,我将不得不计算以下5个矩阵的行列式:
3 -1 4 1
3 2 0 -1
1 2 0 2
1 1 2 0
-2 -1 4 1
-3 2 0 -1
10 2 0 2
2 1 2 0
2 -2 4 1
3 -3 0 -1
1 10 0 2
1 2 2 0
2 -1 -2 1
3 2 -3 -1
1 2 10 2
1 1 2 0
2 -1 4 -2
3 2 0 -3
1 2 0 10
1 1 2 2
然后我将制作5个矩阵并为每个矩阵调用determinant()函数...然后进行最后的计算
但是,即使在用户输入n值之前,我的程序如何检测创建和填充所需的矩阵数量?