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

📄 gauss_row.cpp

📁 Gauss选列主元消去算法
💻 CPP
字号:
// Gauss_row.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream.h>
#include <iomanip.h>
#include <math.h>

int main(int argc, char* argv[])
{
	double  A[4][5]={
		{0.4096,0.1234,0.3678,0.2943,0.4043},
		{0.2246,0.3872,0.4015,0.1129,0.1550},
		{0.3645,0.1920,0.3781,0.0643,0.4240},
		{0.1784,0.4002,0.2786,0.3927,0.2557}
	};
	double det,d,s;
	int i,j,k,p,n,m;
	cout<<"输入系数矩阵行数、列数:";
	cin>>n>>m;     //m+1即为增广矩阵的列数
	cout<<endl<<"列数="<<n<<"     行数="<<m<<endl;
	det=1.0;
	//消去过程的主循环
	for (k=0;k<=n-2;k++)
	{
		//进入选列主元程式
		for (i=k+1;i<=n-1;i++)
		{
			d=A[k][k];     p=k;
		    if (fabs(A[i][k])>fabs(d))
			{
				d=A[i][k];
				p=i;      //p记录最大列主元的行号
			}
		}//列主元选择完毕
		if (d==0)     //最大列主元是否为0
		{
			det=0;
			cout<<"Gauss选列主元消去算法无效!"<<endl;
			return 0;
		}
		else
		{
			if (p!=k)    //是否需要换行
			{
				for (j=k;j<=m;j++)    
				{
					A[k][j]=A[k][j]+A[p][j];
					A[p][j]=A[k][j]-A[p][j];
					A[k][j]=A[k][j]-A[p][j];
				}
				det=-det;
		}
	}
		//进入消元程式
		for (i=k+1;i<=n-1;i++)
		{
			A[i][k]=A[i][k]/A[k][k];     //计算乘数
			for(j=k+1;j<=4;j++)          //消元计算
				A[i][j]=A[i][j]-A[i][k]*A[k][j];
		}
			det=A[k][k]*det;
	}  //消元过程结束
	//回代过程
	A[3][4]=A[3][4]/A[3][3];     //即x4
	for (i=n-2;i>=0;i--)
	{
		s=0;
		for (j=i+1;j<=m-1;j++)
		{
			s=s+A[i][j]*A[j][m];
		}
		A[i][m]=(A[i][m]-s)/A[i][i];
	}
	det=det*A[n-1][m-1];
	//输出结果
	cout<<"DET OF A IS:"<<det<<endl;
	cout<<setiosflags(ios::fixed);
	for (i=0;i<=3;i++)
		cout<<"X"<<i+1<<"="<<setw(17)<<setprecision(10)<<A[i][m]<<endl;
	return 0;
}

⌨️ 快捷键说明

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