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

📄 exp7.cpp

📁 Gauss-Seidel法求解线性方程组
💻 CPP
字号:
# include <stdio.h>
# include <math.h>

double f(double x[9],double a[9][9],double b[9])
{ 
	//函数f计算||A*x-b||∞,||A*x-b||∞为其元素的最大值
	int i,j;
	double temp,c[9],max;	
    for(i=0;i<9;i++)
	{
		temp=0.0;
	    for(j=0;j<9;j++)
		{
		    temp +=a[i][j]*x[j];  
		}
		c[i]=temp-b[i];
	}
	max=fabs(c[0]);
	for(i=1;i<9;i++)
	{
	    if( fabs(c[i])>max )
			max=fabs(c[i]);
	}
	return max;
}

void main(void)
{
	int i,j,n=9,q=0;                //q记录迭代次数,初始值为零
	double temp=1.0;
	double t,s;
	double x[9]={1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0};   //计算结果存放数组,初始值赋1
	double x1[9];
	double a[9][9]={{31.0,-13.0,0,0,0,-10.0,0,0,0},
					{-13.0,35.0,-9.0,0,-11.0,0,0,0,0},
					{0,-9.0,31.0,-10.0,0,0,0,0,0},
					{0,0,-10.0,79.0,-30.0,0,0,0,-9.0},
					{0,0,0,-30.0,57.0,-7.0,0,-5.0,0},
					{0,0,0,0,-7.0,47.0,-30.0,0,0},
					{0,0,0,0,0,-30.0,41.0,0,0},
					{0,0,0,0,-5.0,0,0,27.0,-2.0},
					{0,0,0,-9.0,0,0,0,-2.0,29.0}};
	double b[9]={-15.0,27.0,-23.0,0.0,-20.0,12.0,-7.0,7.0,10.0};  

    while(f(x,a,b)>0.000000000001 )  
	{       
		for(i=0;i<n;i++) 
		{
			for(j=0;j<i;j++)  
			{
				temp += a[i][j]*x[j];            
			}              
			for(j=i+1;j<n;j++) 
			{                      
				temp += a[i][j]*x[j];                 
			}                 
			x[i]=-(temp-b[i])/a[i][i];
			temp=0.0;
		}
		q++;
     }
	printf("迭代次数 %d\n\n",q);
	printf("计算结果\n");
	for(i=0;i<n;i++)
	{		
		printf("\nx[%d] = %3.12f\n",i+1,x[i]);
	}	
}

⌨️ 快捷键说明

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