码迷,mamicode.com
首页 > 其他好文 > 详细

线性方程组的直接解法

时间:2018-02-20 12:23:54      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:turn   cin   线性   while   using   space   pre   set   man   

#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <typeinfo.h>
using namespace std;

#define MAXN 50

int n;
double a[MAXN][MAXN];
double b[MAXN];
double m[MAXN][MAXN];
double x[MAXN];
int i, j, k;


void input() {
	cout <<"输入系数矩阵阶数n: ";
	cin >> n;
	cout <<"输入系数矩阵a:\n";
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++) {
			cout << "a[" << i << "][" << j << "]=";
			cin >> a[i][j];
		};
	cout <<".....................................\n";
	cout <<"请输入b矩阵:\n";
	for (int i = 1; i <= n; i++) {
		cout << "b[" << i << "]=";
		cin >> b[i];
	};
	cout << "线性方程组增广矩阵为:"<<endl; 
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			cout << setw(10);
			cout << a[i][j]<< setw(10);
		};
		cout << b[i]<<"  ";
		cout << endl;
	};
};


void PrintMiddle(int k) {
	printf("第%d次消元结果:\n", k);
	for (int i = 1;i <= n;i++) {
		for (int j = 1;j <= n;j++) {
			cout << setw(10) << a[i][j] << ‘ ‘;
		}
			cout << setw(10) << b[i] << ‘\n‘;
	};
};


void PrintRes() {
	cout << ".....................................\n";
	cout << "结果为:\n";
	for (int i = 1;i <= n; i++) {
		printf("x[%d]=  %lf\n", i, x[i]);
	};
};


void sge() {
	for (int k = 1;k < n; k++) {
		for (int i = k + 1;i <= n; i++) {
			m[i][k] = a[i][k] / a[k][k];
			for (int j = k + 1;j <= n;j++) {
				a[i][j] -= m[i][k] * a[k][j];
			};
		};
		for (int i = k + 1;i <= n;i++) {
			b[i] -= m[i][k] * b[k];
		};
		PrintMiddle(k);
	};
	x[n] = b[n] / a[n][n];
	for (int i = n - 1; i > 0; i--) {
		x[i] = b[i];
		for (int j = i + 1; j <= n; j++)
			x[i] -= a[i][j] * x[j];
			x[i] /= a[i][i];
	};
	PrintRes();
};


int main()
{
	while (true) {
		input();
		sge();
	};
    return 0;
}

  

线性方程组的直接解法

标签:turn   cin   线性   while   using   space   pre   set   man   

原文地址:https://www.cnblogs.com/shipeiyu/p/8454980.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!