C语言线性方程组求解,很急!

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/08 19:33:44

C语言线性方程组求解,很急!
C语言线性方程组求解,很急!


C语言线性方程组求解,很急!
/*
方程组维数 :3
控制精度 :0.000001
增广矩阵第1行(空格隔开):3 4 -6 12
增广矩阵第2行(空格隔开):1 -2 1 -3
增广矩阵第3行(空格隔开):3 2 -1 11
整理完毕,此时方程组为 :
1 1.33333 -2 4 
0 1 -0.9 2.1 
0 0 1 1 
方程的解为 :
2 3 1
Press any key to continue
*/
#include <iostream.h>
#include <math.h>
#define N 100

int main() {
\x05int n,k,i,j,m;
\x05double A[N][N + 1],eps,temp;
\x05cout << "方程组维数 : ";
\x05cin >> n;
\x05cout << "控制精度 : ";
\x05cin >> eps;
\x05for(i = 0;i < n;i++) {
\x05\x05cout << "增广矩阵第" << i + 1 << "行(空格隔开):";
\x05\x05for(j = 0;j < n + 1;j++) cin >> A[i][j];
\x05}
\x05for(k = 0; k < n; ++k) {
\x05\x05m = k;
\x05\x05for(i = k + 1; i < n; ++i) {
\x05\x05\x05if(fabs(A[i][k]) > fabs(A[m][k]))
\x05\x05\x05\x05m = i;
\x05\x05}
\x05\x05if(fabs(A[m][k]) <= eps) return 0;
\x05\x05if(m != k) {
\x05\x05\x05for(i = k;i < n + 1;i++) {
\x05\x05\x05\x05temp = A[k][i];
\x05\x05\x05\x05A[k][i] = A[m][i];
\x05\x05\x05\x05A[m][i] = temp;
\x05\x05\x05}
\x05\x05}
\x05\x05temp = A[k][k];
\x05\x05for(i = k; i < n + 1; ++i) A[k][i] /= temp; // 主元系数“归一”划
\x05\x05for(i = k + 1;i < n;i++) { // 消元
\x05\x05\x05temp = A[i][k];
\x05\x05\x05for(j = k; j < n + 1; ++j) {
\x05\x05\x05\x05A[i][j] -= A[k][j] * temp;
\x05\x05\x05}
\x05\x05}
\x05}
\x05cout << "整理完毕,此时方程组为 :" << endl;
\x05for(i = 0;i < n;i++) {
\x05\x05for(j = 0;j < n + 1;j++)
\x05\x05\x05cout << A[i][j] << " ";
\x05\x05cout << endl;
\x05}
\x05for(i = n - 2;i >= 0;i--) {
\x05\x05for(j = i + 1;j < n;j++)
\x05\x05\x05A[i][n] -= A[i][j] * A[j][n];
\x05}
\x05cout << "方程的解为 :" << endl;
\x05for(i = 0; i < n;i++) cout << A[i][n] << " ";
\x05cout << endl;
\x05return 0;
}