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

📄 05.c

📁 算法设计与分析实验报告
💻 C
字号:
#include <stdio.h>
#include <math.h>
#define M 3
#define t 1
#define N 3
int a[M][N];/*设定线性方程组的系数*/
int b[M][N];/*定义雅可比中的B*/
int f[M][t];/*定义雅可比中的F*/
int d[M][N];/*设定线性方程组的主对角线上的逆矩阵*/
int e[M][N];/*定义单位矩阵*/
int p[M][N];/*定义D与方程组的系数的积*/
int x[M][t];/*定义X为方程组的解矩阵*/
int q[M][t];/*设定解矩阵的初始值*/
int y[M][N];
main()
{int i,j,k,sum1=0,sum2=0;
 int m=0,n=0.0001;
 printf("a[3][3]=");
 for(i=0;i<M;i++)
   {for(j=0;j<N;j++)
      scanf("%d",&a[i][j]);
    printf("\n");
    }
  /*输入线性方程组的系数a[i][j]*/
 printf("b[3][0]=");
 for(i=0;i<M;i++)
    {scanf("%d",&b[i][0]);
     printf("%d ",b[i][0]);
    }
 /*输入b*/
 for(i=0;i<M;i++)
   for(j=0;j<N;j++)
     {if(i==j)
	{d[i][j]=1/a[i][j];e[i][j]=1;}
      else
	{d[i][j]=0;e[i][j]=0;}
     }                  /*求主对角逆矩阵D及单位矩阵e*/
 for(i=0;i<M;i++)
   for(j=0;j<N;j++)
    for(k=0;k<M;k++)
      {p[i][j]=+d[i][k]*a[k][j];
      }  

 for(i=0;i<M;i++)
   for(j=0;j<N;j++)
      {b[i][j]=e[i][j]-p[i][j];
      }                   /*求雅可比中的B*/
 for(i=0;i<M;i++)
   for(j=0;j<N;j++)
      {f[i][0]=+d[i][j]*b[j][0];
      }              

   /*F是M行1列的矩阵*/

 for(i=0;i<M;i++)
    {q[i][0]=0;  
    }   /*对初始解赋初值*/
while(m==0)    
{for(i=0;i<M;i++)
  for(j=0;j<N;j++)
    {x[i][0]=+b[i][j]*q[j][0];
     x[i][0]=x[i][0]+f[i][0];
    }/*迭代求解*/
 for(i=0;i<m;i++)
  {sum1=+x[i][0]*x[i][0];
   sum2=+q[i][0]*q[i][0];
  }
 sum1=sqrt(sum1);
 sum2=sqrt(sum2);
 if(abs(sum1-sum2)<n)
      { for(i=0;i<M;i++)
	  {q[i][0]=x[i][0];
	  }
      }
 else m=1;
}

for(i=0;i<M;i++)
  { printf("x[");printf("%d",i);printf("]=");printf("%d",x[i][0]);
  }
}

⌨️ 快捷键说明

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