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

📄 gauss_siedel.cpp

📁 源程序是解决那个数据结构的一些知识关于二茶树的建立
💻 CPP
字号:
# include <stdio.h>
# include <math.h>
#define N 3
#define M 100

double fan(double s[N],double t[N])           //无穷范函数
{
int i;
double cha[N];
double max=0;
for(i=0;i<N;i++)
 cha[i]=s[i]-t[i];
max=cha[0];
for(i=0;i<N;i++)
{
  if(cha[i]>max) max=cha[i];
}
 return max;
}

void main()
{
	int i,j,k=0;
	double a[N][N];double b[N];double x[2][N]={0};
	double x1=0,x2=0,x3=0;
	double sum1,sum2,sum3;
	printf("输入系数距阵:\n");
  for(i=0;i<N;i++)
	{for(j=0;j<N;j++)
	  scanf("%lf",&a[i][j]);
	 printf("\n");
	}
  printf("\n");
  printf("输入常数项:\n");
  for(i=0;i<N;i++)
	{scanf("%lf",&b[i]);
	printf("\n");
	}
  printf("\n");
  printf("输入初解:\n");
  for(i=0;i<N;i++)
	{ scanf("%lf",&x[0][i]);
	  printf("\n");
	}
  printf("\n");
  do{
	  for(k=0;k<M;k++)
	  { 
	   for(i=0;i<N;i++)
		{
		 sum1=0,sum2=0,sum3=0;
		 for(j=0;j<i;j++) 
		  {if(i==j&&j==0) sum1=0;
		   else sum1+=a[i][j]*x[(k+1)%2][j];
		  }
		 for(j=i+1;j<N;j++) 
		  sum2+=a[i][j]*x[k%2][j];
		 sum3=sum1+sum2;
	     x[(k+1)%2][i]=(b[i]-sum3)/a[i][i];
		}
	  }
    }while(fan(&x[(k+1)%2][0],&x[k%2][0])>=0.0001);
 printf("最后的结果是:\n");
 printf("x1=%lf,x2=%lf,x3=%lf\n",x[(k+1)%2][0],x[(k+1)%2][1],x[(k+1)%2][2]);
 printf("\n");
}
           

	  

⌨️ 快捷键说明

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