seidel.cpp

来自「gauss-seidel迭代法解Ax=b的解」· C++ 代码 · 共 56 行

CPP
56
字号
//gauss-seidel迭代法解Ax=b的解;
#include<iostream.h>
#include<stdlib.h>
#include<math.h>
#define N 100


void main()
{
	cout<<"gauss-seidel迭代法解Ax=b的解:\n";
	int i,j,n;
	double t,p;
	double a[N][N],b[N],x[N],temp,pe;

	cout<<"请输入A的阶数:\n";
	cin>>n;

	cout<<"请输入A:\n";
	for(i=0;i<n;i++)
		for(j=0;j<n;j++)
			cin>>a[i][j];
	
	cout<<"请输入列向量b:\n";
        for(i=0;i<n;i++)
		    cin>>b[i];

	cout<<"请输入精度要求pe:\n";
	cin>>pe;

	for(i=0;i<n;i++)
		x[i]=0;

	do
	{
		p=0;
		for(i=0;i<n;i++)
		{
			t=x[i];
			temp=0;

			for(j=0;j<n;j++)
				if(j!=i) temp+=a[i][j]*x[j];

			x[i]=(b[i]-temp)/a[i][i];
			
			if(fabs(x[i]-t)>p) p=fabs(x[i]-t);
		}
	}while(p>pe);

	cout<<"解为:\n";
	for(i=0;i<n;i++)
		cout<<"x"<<i+1<<"="<<x[i]<<"\n";
}


⌨️ 快捷键说明

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