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

📄 gauss.cpp

📁 Gauss跌代法解线性方程组的程序 可以用以参考
💻 CPP
字号:
#include<stdio.h>
#include<iostream.h>
#include<fstream.h>
#include<math.h>
void main()
{
	ifstream fin("input.txt",ios::in);
	ofstream fout("output.txt",ios::out);
	double **a,*x,mid,det=0;
	int n,i,j,k,num,flag=1;
	fin>>n;
	a=new double*[n];
	for(i=0;i<n;++i)
		a[i]=new double[n+1];
	x=new double[n];
	for(i=0;i<n;++i)
		for(j=0;j<n+1;++j)
			fin>>a[i][j];
	for(i=0;i<n;++i)
		fin>>x[i];
	fin>>num;

	for(i=0;i<n;++i)
	{
		if(a[i][i]==0)
		{
			fout<<"高斯迭代法无法运行!"<<endl;
			flag=0;
			break;
		}
	}

	if(flag==1)
	{
		for(k=0;k<num;++k)
		{
			for(i=0;i<n;++i)
			{
				mid=x[i];
				x[i]=a[i][n];
				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];
				if(fabs(mid-x[i])>det)
					det=fabs(mid-x[i]);
			}
			if(det<0.000001)
			{
				fout<<"经过"<<k+1<<"次高斯迭代后,得:"<<endl;
				for(i=0;i<n;++i)
					fout<<x[i]<<endl;
				break;
			}
			det=0;
		}
		if(k==num)
			fout<<"在规定次数内没有迭代出所需要的结果。"<<endl;
	}
	delete[] a;
	delete[] x;
	fin.close();
	fout.close();
}
	

⌨️ 快捷键说明

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