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

📄 one.cpp

📁 高斯消元法解方程组 简单的 但很实际 放在这里大家共享
💻 CPP
字号:
#include<iostream.h>
void main()
{
	double a[6][6],b[6],c[6][6],d=0,t=0,sum=0;
	int hang=1,lie=0,i=0,j=0,n;
	cout<<"请输入方程组中未知数的个数n    (0<n<=5):"<<endl;
	cin>>n;//考虑到实际应用,n大的情况已经很少了
	if(n>5||n<=0)
	{
		cout<<"输入错误 方程组中未知数的个数n    (0<n<=5)"<<endl;
		return;
	} 
	cout<<"请依次输入方程组各项系数:"<<endl;
	for(int w=1;w<=n;w++)
	{
		for(int e=1;e<=n;e++)
		{
			cout<<"a["<<w<<","<<e<<"] = ";
			cin>>a[w][e];
			c[w][e]=a[w][e];
		}
		cout<<"b["<<w<<"] = ";
		cin>>b[w];
		c[w][e]=b[w];
		cout<<endl;
	}
	while(hang<=n)//找出列主元素并进行交换
	{//所谓的主元就是主对角线上的元素a[k][k]
		d=a[hang][hang];
		lie=hang;//记录列主元素的行号
		for(i=hang+1;i<=n;i++)//找出列主元素过程
		{
			if(a[i][hang]>d)
			{
				d=a[i][hang];
				lie=i;
			}
		}       
		if(lie!=hang)
		{
			for(j=hang;j<=n;j++)// 将第i行与列主元素行交换
			{
				t=a[lie][j];
				a[lie][j]=a[hang][j];
				a[hang][j]=t;
			}
			t=b[hang];b[hang]=b[lie];b[lie]=t;
		}
		for(j=hang+1;j<=n;j++)//消元过程
		{
			a[hang][j]=a[hang][j]/a[hang][hang];
		}
		b[hang]=b[hang]/a[hang][hang];
		for(i=hang+1;i<=n;i++)
		{
			for(j=hang+1;j<=n;j++)
			{
				a[i][j]=a[i][j]-a[i][hang]*a[hang][j];
			}
			j=1;
			b[i]=b[i]-a[i][hang]*b[hang];
		}
		hang++;
	}
	for(i=n-1;i>=1;i--)//回代
	{
		sum=0;
		for(j=i+1;j<=n;j++)
		{
			sum=sum+a[i][j]*b[j];
		}
		b[i]=b[i]-sum;
	}
	cout<<"原方程组如下:"<<endl;
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=n;j++)
			cout<<"+"<<c[i][j]<<" (X"<<j<<") " ;
		cout<<" = "<<c[i][j]<<endl;
	}
	cout<<endl<<endl<<"解为:"<<endl;
	for(i=1;i<=n;i++)
	{
		cout<<"x"<<i<<"="<<b[i]<<endl;
	}
}

⌨️ 快捷键说明

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