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

📄 高斯塞德尔.cpp

📁 高斯赛德尔算法
💻 CPP
字号:
#include <iostream.h>

 

 double qiuhe(double a[10][10],double y[10],int n,int i)
  {
	  double sum=0;
	   for(int j=1;j<=n;j++)
	   {
		   if(i!=j)
			   sum=sum+a[i][j]*y[j];
	   }
	    return (sum);
		}




void main()
{

	bool sucess=0;
	cout<<"请输入元素的个数:";
	int n;
	cin>>n;
	cout<<"输入叠代次数:";
	int N;
	cin>>N;
    double e;
	cout<<"请输入精度"<<endl;
	cin>>e;


	double x[10];
	double y[10];
	double a[10][10];
	double b[10];
	cout<<"请输入数组叠代初值"<<endl;
	for(int i3=1;i3<=n;i3++)
	{
		cin>>x[i3];
		y[i3]=x[i3];
	}
	  cout<<"输入B数组的值"<<endl;
	  for(int i4=1;i4<=n;i4++)
	  {
		  cin>>b[i4];
	  }
	   //创建系数矩阵
	  cout<<"创建系数矩阵"<<endl;
      for(int i1=1;i1<=n;i1++)
		  for(int i2=1;i2<=n;i2++)
		  {
			  cin>>a[i1][i2];
		  }
		      
double max=(y[1]-x[1])*(y[1]-x[1]);	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  
	  int k=1;
		 while(k<N)
		 {
			 for(int i=1;i<=n;i++)
			 {
				 y[i]=(b[i]-qiuhe(a,y,n,i))/a[i][i];
			 }
			    
			 //double max=(y[1]-x[1])*(y[1]-x[1]);
				
			 for(int j=1;j<=n;j++)
				{
					double t=(y[j]-x[j])*(y[j]-x[j]);
					if(max<t)
                     max=t;
				}
				 if(max<e*e)
					 
				 {     
					 sucess=1;
					 for(int j1=1;j1<=n;j1++)
                      cout<<y[i1]<<"  ";
					 break;
				 }


                 else
				 {
					// k++;
					 for(int j2=1;j2<=n;j2++)
						 x[j2]=y[j2];
				 }

		 
		    if((k<=N)&&(sucess==0))
			
			{
				cout<<"叠代失败";
			  for(int j5=1;j5<=n;j5++)
                   cout<<y[j5]<<"  ";
			       cout<<endl;
			}
              k++;
                     
		 }



}

⌨️ 快捷键说明

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