高斯消元求矩阵解

讲解:

http://www.tyut.edu.cn/kecheng/jisff/dzja/ch6/ch6-1.htm

// 高斯消元法解n阶线性方程组.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include
using namespace std;
//#include
#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<<"请输入方程组的系数增广矩阵:"< for(i=0;i<=n-1;i++){
for(j=0;j<=n;j++){
cout<<"A["< for(i=0;i<=n-1;i++){
cout<<"X["< }; //若在化归上三角矩阵的时候碰到有缺阶数的时候,此时无解或有无穷多解,统一为无解
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;
}

你可能感兴趣的:(高斯消元求矩阵解)