高斯消元法

高斯消元法,是线性代数中的一个算法,可以用来解现行方程组,并且可以求出矩阵的秩。

原理:若用初等行变换将增广矩阵 化为 ,则AX = B与CX = D是同解方程组。

原博主
高斯消元法后,自己也试着写了一下。

代码如下:

#include<iostream>
//file read

using namespace std;


//系数矩阵
float matrix[20][20];

//常数向量b
float b[20];

float x[20] = {0};
void create_Augmentedmatrix(const int n)
{
	for (int i = 0; i < n; i++)
	{
		matrix[i][n] = b[i];
	}
}

void show_Matrix(const int n)
{
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n + 1; j++)
		{
			
			if(j<n)cout << matrix[i][j] << "    ";
			else
			{
				cout <<"           "<< matrix[i][j] << " ";
			}
		}
		cout << endl;
	}
}
void Gauss(int n)
{
	float k;
	
	for (int i = 0; i < n-1; i++)
	{
		for (int j = i+1; j < n; j++)
		{
			//j是行
			k =   matrix[j][i]/matrix[i][i] ;
			for (int z = 0; z < n+1; z++)
			{
				matrix[j][z] =matrix[j][z]-k*matrix[i][z];
			}
			
		}
		cout << "The" << i+1 << "row" << endl;
		show_Matrix(n);
	}
	
}
void get_X(int n)
{
	for (int i = n - 1; i >-1; i--)
	{
		float sum = 0;
		for (int j = 0; j < n; j++)
		{
			if(j!=i)
				sum += (x[j] * matrix[i][j]);
			
		}
		x[i]=(matrix[i][n] - sum) / matrix[i][i];
	}
}
int main()
{
	int n;//矩阵的n
	cin >> n;
	//输入系数矩阵n*n
	cout << "please input in coefficient vector x[][]" << endl;
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
		{
			cin >> matrix[i][j];
		}
	}
	cin.get();
	cout << "please input in constant vector b[]" << endl;
	for (int i = 0; i < n; i++)
	{
		cin >> b[i];
	}
	cin.get();
	create_Augmentedmatrix(n);
	Gauss(n);
	cout << "show the Upper triangular matrix" << endl;
	show_Matrix(n);
	get_X(n);
	cout << "answer" << endl;
	for (int i = 0; i < n; i++)
	{
		cout << "x" << i + 1 << "="<<x[i] << endl;
	}
	cin.get();
}


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值