#include <stdlib.h>
void fun3(float *,int)
float fun4(float *,int)
void main()
{
int i,j,n
float *a,answer
for(i=0i<3i++)
printf("<----------------------------------------------------------------------------->\n")
printf(" 欢迎进入*雒森*行列式计算程序,请准确输入以便我为您正确计算! \n")
for(i=0i<3i++)
printf("<----------------------------------------------------------------------------->\n")
do
{
printf("请输入您要计算的行列式的行数或列数n(n>1):")
scanf("%d",&n)
}while(n<2)
a=(float *)malloc(n*n*sizeof(float))
for(i=0i<ni++)
{
printf("请输入您要计算的行列式的:\n")
for(j=0j<nj++)
{
printf("第%d行%d列:",i+1,j+1)
scanf("%f",&a[i*n+j])
}
}
fun3(a,n)
answer=fun4(a,n)
printf("您要计算的行列式的值为:%.3f\n\n\n",answer)
for(i=0i<3i++)
printf("<----------------------------------------------------------------------------->\n")
printf(" 欢迎进入*雒森*行列式计算程序,请准确输入以便我为您正确计算! \n")
for(i=0i<3i++)
printf("<----------------------------------------------------------------------------->\n")
}
void fun3(float a[],int n)
{
int i,j,d,f
float m=1,w
for(j=0j<nj++)
{
for(i=0i<ni++)
{
if(a[j*n+j]==0)
{
for(d=j+1d<nd++)
{
if(a[d*n+j]!=0)
break
}
for(f=jf<nf++)
a[j*n+f]+=a[d*n+f]*m
}
if(i!=j)
{
w=-(a[i*n+j]/a[j*n+j])
for(f=jf<nf++)
a[i*n+f]+=a[j*n+f]*w
}
}
}
}
float fun4(float a[],int n)
{
int i
float answer=1
for(i=0i<ni++)
answer*=a[i*n+i]
return answer
}
4x4行列式计算基本公式是:两个乘数末位对齐,分别将第二个乘数从末位起每一位数依次乘上一乘数,将所以步骤计算的结果相加。
所以4x4行列式=10* (-4)*(-4) = 160。
行列式的计算技巧:
1、直接计算——对角线法。标准方法是在已给行列式的右边添加已给行列式的第一列、第二列。我们把行列式的左上角到右下角的对角线称为主对角线,把右上角到左下角的对角线称为次对角线。
这时,三阶行列式的值等于主对角线的三个数的积与和主对角线平行的对角线上的三个数的积的和减去次对角线的三个数的积与和次对角线平行的对角线上三个数的积的和的差。
2、任何一行或一列展开——代数余子式。行列式某元素的余子式:行列式划去该元素所在的行与列的各元素,剩下的元素按原样排列,得到的新行列式。
3、行列式某元素的代数余子式:行列式某元素的余子式与该元素对应的正负符号的乘积.即行列式可以按某一行或某一列展开成元素与其对应的代数余子式的乘积之和。
行列式的计算方法如下:
1、逆推法:逆推法主要是建立起来两个行列式之间的一个递推关系式,将整个式子逐步的推下去,从而可以求出来一个具体的值。
2、范德蒙行列式:范德蒙行列式的用法主要是将一些行列式的特点找到变形的一些地方,将我们需要求的一个行列式化成一个已知的或者是简单的形式,而这一种解题方法我们就叫做范德蒙行列式,这也是一种最为常见最为常用到的解题方法。
行列式的性质
1、单位矩阵的行列式为 1 ,与之对应的是单位立方体的体积是 1。
2、行列式的某一行(列)中所有的元素都乘以同一数k,等于用数k乘此行列式。
3、在消元的过程中,行列式不会改变,如果有行交换的话,符号不同。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)