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

📄 高斯消元法解n阶线性方程组.cpp

📁 高斯消元法解n阶线性方程组 这里是数学方法中常用的计算程序
💻 CPP
字号:
// 高斯消元法解n阶线性方程组.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<iostream.h>
//#include<iomanip.h>
#define N 50
int main(int argc, char* argv[])
{
	int i,j,n,s=0;
	double A[N][N],X[N];
	void line_equations(double A[][50],double X[],int n=1);
//变量的定义
	cout<<"请输入方程的阶数n:";
	cin>>n;
	cout<<"请输入方程组的系数增广矩阵:"<<endl;
	for(i=0;i<=n-1;i++){
		for(j=0;j<=n;j++){
			cout<<"A["<<i<<"]["<<j<<"]=";
			cin>>A[i][j];
		}
	};
    line_equations(A,X,n);
//方程组的系数增广矩阵的输入
	cout<<"下面是方程组的解:"<<endl;
	for(i=0;i<=n-1;i++){
		cout<<"X["<<i<<"]="<<X[i]<<endl;
	};
	cin.get();
	cin.get();
	return 0;
}

void line_equations(double A[][50],double X[],int n=1){
	int i,j,k,s=0;
	double temp;
	if(n==1 && A[0][0]!=0){
		X[0]=A[0][1]/A[0][0];
		return ;
	};
//为一阶时直接求出解
	for(k=0;k<=n-2;k++){
		for(i=k;i<=n;i++){
			if(A[i][k]!=0) break;
		};                         //求出从上往下第一个不为0的行
		if(i>=n){
			cout<<"无解!"; return ;
		}; //若在化归上三角矩阵的时候碰到有缺阶数的时候,此时无解或有无穷多解,统一为无解
		if(i!=k){
			for(j=k;j<=n;j++){
				temp=A[k][j];
				A[k][j]=A[i][j];
				A[i][j]=temp;
			};
		};                        //第一个不为0的行来与k行交换,以免除数为0
		for(i=k+1;i<=n-1;i++){
			for(j=k+1;j<=n;j++){
				A[i][j]-=((A[i][k]/A[k][k])*A[k][j]);
			};
			A[i][k]=0;
		};                 //第k次循环时,将第1列化为0
	};
//至此,将方程组的系数增广矩阵化为了上三角阵
	X[n-1]=A[n-1][n]/A[n-1][n-1];   //从下向上迭代求出X[k],先求最后一个
	for(i=n-2;i>=0;i--){
		for(j=n-2;j>=i;j--){
			A[i][n]-=X[j+1]*A[i][j+1];
		};
		X[i]=A[i][n]/A[i][i];
	};
//迭代求出X[k]
return;
}

⌨️ 快捷键说明

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