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

📄 gauss_seidel.cpp

📁 高斯—塞德尔迭代法。
💻 CPP
字号:
#include<iostream.h>
#include<iomanip.h>
#include<stdio.h>
#include<math.h>
#define M 10
int n;
void Gauss_seidel(double x[],double x0[],double a[][M],double b[],double eps,int Nmax)
{
	int i,j,s=0;
	double max;
	while(s<Nmax)
	{
		for(i=0;i<n;i++)
		{
			x[i]=b[i];
			for(j=0;j<n;j++)
		        if(j!=i)
			    x[i]=x[i]-a[i][j]*x[j];
				x[i]=x[i]/a[i][i];
			}
			max=fabs(x[0]-x0[0]);
			for(i=1;i<n;i++)
				if(fabs(x[i]-x0[i])>max)
					max=fabs(x[i]-x0[i]);
				if(max<eps)
					break;
				for(i=0;i<n;i++)
                    x0[i]=x[i];
				    s++;
		}
					if(s>=Nmax)
						printf("迭代法发散!\n");
					else
					{
						printf("原方程组的解为:\n");
                        for(i=0;i<n;i++)
				       printf("X%d=%f\n",i+1,x[i]);
					}
	}
     void main()
		{
		 double a1[10][10]={{8,-3,2},{4,11,-3},{6,3,6}};
         double a2[10][10]={{2,-1,10,0},{0,3,-1,8},{10,-1,2,0},{-1,11,-1,3}};
		 double b1[10]={20,33,36},b2[10]={-11,-11,6,25};
		 double x1[10],x2[10],x01[10],x02[10];
		 double eps;
		 int i,j,s=0,Nmax;
		cout<<"下面是第一题的矩阵表示:"<<endl;	
		 n=3;
	    for(i=0;i<n;i++)
		{
				for(j=0;j<n;j++)
					cout<<setw(6)<<a1[i][j];
				cout<<setw(6)<<b1[i]<<endl;
		}
			cout<<"请输入初始向量:"<<endl;
            for(i=0;i<n;i++)
			{
				printf("X%d=",i+1);
				cin>>x1[i];
				x01[i]=x1[i];
			}
			printf("\n请输入精度:");
			cin>>eps;
			printf("请输入最大迭代次数:");
			cin>>Nmax;
            Gauss_seidel(x1,x01,a1,b1,eps,Nmax);
			cout<<endl;
		cout<<"下面是第二题的矩阵表示形式:"<<endl;
        n=4;
	    for(i=0;i<n;i++)
		{
				for(j=0;j<n;j++)
					cout<<setw(6)<<a2[i][j];
				cout<<setw(6)<<b2[i]<<endl;
		}
			cout<<"请输入初始向量:"<<endl;
            for(i=0;i<n;i++)
			{
				printf("X%d=",i+1);
				cin>>x2[i];
				x02[i]=x2[i];
			}
			cout<<endl;
			cout<<"请输入精度: ";
			cin>>eps;
			cout<<"请输入最大迭代次数: ";
			cin>>Nmax;
            Gauss_seidel(x2,x02,a2,b2,eps,Nmax);
            
		}

⌨️ 快捷键说明

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