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

📄 线形方程组求解.txt

📁 用Gauss消元法、选列主元的Gauss消元法求线性方程组(1)的解
💻 TXT
字号:
 用Gauss消元法、选列主元的Gauss消元法求线性方程组(1)的解,要求输出增广矩阵的消元变化过程。
用Gauss消元法、选列主元的Gauss消元法求线性方程组(1)的解,要求输出增广矩阵的消元变化过程
42x1+2x2+3x3=3
x1+7x2+7x3=1  
-2x1+4x2+5x3=-7
算法思想:Gauss消元法是将线性方程组化为上三角形线性方程组,然后再用一个回代过程求这个上三角形线性方程组的解;选主元的Gauss消元法是在Gauss消元法上增加了选列主元的过程,选列主元是为了避免当akk 为零或绝对值充分小时使计算过程被迫终止或计算误差较大,选列主元是将akk、a(k+1)k  、…、ank 中绝对值最大的元素移到主对角线上,从而改进Gauss消元法性能 
#include<iostream.h>
#include<math.h>
int n=3;
double a[3][4];      //定义方程的增广矩阵
double b[3][4]={2,2,3,3,4,7,7,1,-2,4,5,-7};
double x[3];
void f0(int n)      //对原方程赋初值
{
for(int i=0;i<n;i++)
	{
		for(int j=0;j<=n;j++)
		{
			a[i][j]=b[i][j];
		}
	}
}
void print(int n)  //输出运算结果
{
	cout<<"A[i][j]"<<'\t';
	for(int i=0;i<=n;i++)
	cout<<'['<<i<<']'<<'\t';
	cout<<'\n';
	for(i=0;i<n;i++)
	{
		cout<<i<<'\t';
		for(int j=0;j<=n;j++)
		cout<<a[i][j]<<'\t';
		cout<<'\n';
	}
	cout<<"--------------------------------"<<'\n';
}
void f1(int n)    //求原方程上三角矩阵
{
		cout<<"Gauss消元法求线性方程组"<<'\n';
    cout<<"--------------------------------"<<'\n';
	for(int i=0;i<n;i++)
	{
		double temp=a[i][i];
		for(int j=i;j<=n;j++)
		{
			a[i][j]/=temp;
		}
		print(n);
		for(int k=i+1;k<n;k++)
		{
			temp=a[k][i];
			for(j=i;j<=n;j++)
			{
				a[k][j]-=a[i][j]*temp;
			}	
		}
		print(n);
	}
}
 void f2(int n)   //求解方程
 { 
	 for(int i=n-1;i>=0;i--)
	 {
		 x[i]=a[i][n];
		 for(int j=i+1;j<n;j++)
		x[i]-=a[i][j]*x[j];
		 cout<<"x["<<i<<"]="<<x[i]<<'\n'<<'\n';
	 }
	 	cout<<"------------------------------"<<'\n';
 }
 void f3(int n)   //选主元求解
 {
	 cout<<"选主元Gauss消元法求线性方程组"<<'\n';
	 	cout<<"-------------------------------"<<'\n';
	for(int i=0;i<n;i++)
	{
		for(int j=i+1;j<n;j++)
		{
			if(fabs(a[j][i])>fabs(a[i][i]))
			{
				for(int k=i;k<=n;k++)
				{
					double temp=a[i][k];
					a[i][k]=a[j][k];
					a[j][k]=temp;
				}
			}
		}
		print(n);
		double temp=a[i][i];
		for(j=0;j<=n;j++)
		{
			a[i][j]/=temp;
		}
		print(n);
		for(int k=i+1;k<n;k++)
		{
			temp=a[k][i];
			for(j=i;j<=n;j++)
			{
				a[k][j]-=a[i][j]*temp;
			}	
		}
	print(n);		
	}
	}
void main()
 {
	 f0(n);
	 f1(n);
	 f2(n);
	 f0(n);
	 f3(n);
	 f2(n);
 }

⌨️ 快捷键说明

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