⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 juzhen.c

📁 不错的矩阵求逆的小程序
💻 C
字号:
#include<stdio.h>
#define R 6
float a[R][R*2];
float b1[R][R];
float b2[R][R];
float c[R][R];

/*****************************************************/
void start()

{
  int i;
  int j;
  printf("Please enter numbers:\n");
  for(i=0;i<=(R-1);i++)
  {
   for(j=0;j<=(R-1);j++)
    {
     scanf("%f",&a[i][j]);
    }
  }
  printf("The enterd is:\n");
  for(i=0;i<=(R-1);i++)
  {
   for(j=0;j<=(R-1);j++)
    {
     printf("%f ",a[i][j]);
    }
  printf("\n");
  }
 for(i=0;i<=(R-1);i++)
  {
   a[i][i+R]=1;
  }

}
/*************************************************/
void end()
{
	int i,j;
	printf("Result is:\n");
	for(i=0;i<=(R-1);i++)
	{
		for(j=R;j<=(R*2-1);j++)
		{
	      printf("%f ",a[i][j]);
	         }
    		printf("\n");
	}
}
/*************************************************/
void let(int t)
{
    int sw=1;
	int c,k;
	if(a[t][t]==0)
	 {
	   for(c=t+1;c<=(R-1);c++)
		 {
		   if(a[c][t]!=0)
			{
			  for(k=0;k<=(2*R-1);k++)
				{
				  a[t][k]+=a[c][k];
				}
				if(a[t][k]*a[t][k]<0.00001)
					{
						a[t][k]=0;
				     }
				break;
		     }
		 }
      }
       if(a[t][t]==0)
	    {
		printf("I am afraid your enterd has a mistake.");
		exit(0);
        }

}
/***************************************************/
void nizhen()
{
	float tt,tt2;
    int i,j,k;
	start();
     /********************/
 for(i=0;i<=(R-1);i++)
      for(j=0;j<=(R-1);j++)
        {
          b1[i][j]=a[i][j];
         }
     /**********************/

	for(j=0;j<=(R-1);j++)
  {
	let(j);
	for(i=0;i<=(R-1);i++)
     {
	   if((a[i][j]!=0)&&(i!=j))
		 {
			tt2=a[i][j]/a[j][j];

		   for(k=0;k<=(2*R-1);k++)
			{
              a[i][k]=(a[i][k]-(a[j][k]*tt2));
		      if(a[i][k]*a[i][k]<0.00001)
				{
				  a[i][k]=0;
			    }
			}
		 }
	 }
  }


for(i=0;i<=(R-1);i++)
  {
	tt=a[i][i];
	for(j=0;j<=(2*R-1);j++)
	 {
	   a[i][j]=a[i][j]/tt;
	 }
  }
  end();
}
/*******************************************************/
/******************************************************/
void yanzheng()
{
   int i,j,k;
   for(i=0;i<=(R-1);i++)
     for(j=0;j<=(R-1);j++)
       for(k=0;k<=(R-1);k++)
          {
         c[i][j]+=b1[i][k]*b2[k][j];
           }
printf("\nTest result is :\n");
     for(i=0;i<=(R-1);i++)
      {
        for(j=0;j<=(R-1);j++)
        {
          printf("%f ",c[i][j]);
        }
       printf("\n");
      }
}


/********************************************************/

void main()
{
  int i,j;
   
/********/
	nizhen();
/********/
   for(i=0;i<=(R-1);i++)
      for(j=0;j<=(R-1);j++)
        {
          b2[i][j]=a[i][j+R];
         }
        yanzheng();
}
/********************************************************/





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -