n元一次线性方程组模板

简介: n元一次线性方程组模板

题目描述


给定 n 个形如a1x1+a2x2+a3x3+⋯+anxn=b 的线性方程组,请你求出 x1,x2,⋯,xn


输入描述


第 1行为一个整数 n

接下来的 n 行每行包含一个 n+1 个整数 a1,a2,⋯,an,b,表示方程对应的系数和值。

1≤n≤100,−104≤∣ai∣,∣b∣≤104,保证对于任意的 i,j,ai,aj 都互质。

输出描述

输出 n 行,每行包含一个数,分别表示x1∼xn

若不存在唯一解,则仅需输出一行 −1。

答案保留 2 位小数。

样例输入

样例输出


1. #include<bits/stdc++.h>
2. using namespace std;
3. double a[105][105];   //存方程组的矩阵
4. double eps = 1e-7;
5. int main(){
6.     int n;
7.     scanf("%d",&n);
8. for(int i=1;i<=n;++i)
9. for(int j=1;j<=n+1;++j)
10.             scanf("%lf",&a[i][j]);    //读方程组,存入矩阵
11. for(int i=1;i<=n;++i){           //枚举列
12.         int max=i;
13. for(int j=i+1;j<=n;++j)      //选出该列最大系数
14. if(fabs(a[j][i])>fabs(a[max][i]))
15.                max=j;
16. for(int j=1;j<=n+1;++j)
17.             swap(a[i][j],a[max][j]); //把最大系数所在的行移到前面
18. if(fabs(a[i][i]) < eps){     //对角线上的主元系数等于0,说明没有唯一解
19.             puts("-1");
20. return 0;
21.         }
22. for(int j=n+1;j>=1;j--)         //把这一行的主元系数变为1
23.             a[i][j]= a[i][j]/a[i][i];  //除法产生精度问题
24. for(int j=1;j<=n;++j){         //消去主元所在列的其他行的主元
25. if(j!=i)    {
26.                 double temp=a[j][i]/a[i][i];
27. for(int k=1;k<=n+1;++k)
28.                     a[j][k] -= a[i][k]*temp;
29.             }
30.         }
31.     }
32. for(int i=1;i<=n;++i)    
33.         printf("%.2f\n",a[i][n+1]); //最后得到简化阶梯矩阵
34. return 0;
35. }
目录
相关文章
|
6月前
欧拉函数及模板
欧拉函数及模板
59 1
|
机器学习/深度学习 自然语言处理 算法
C++模板元模板(异类词典与policy模板)- - - 题目
C++模板元模板(异类词典与policy模板)- - - 题目
64 0
|
机器学习/深度学习 自然语言处理 安全
C++模板元模板(异类词典与policy模板)- - - 题目答案
C++模板元模板(异类词典与policy模板)- - - 题目答案
54 0
“天池PAI-DSW”创建一个斐波那契数列计算函数
使用天池PAI-DSW创建一个斐波那契数列计算函数
|
机器学习/深度学习 移动开发 人工智能
深度学习应用篇-元学习[15]:基于度量的元学习:SNAIL、RN、PN、MN
深度学习应用篇-元学习[15]:基于度量的元学习:SNAIL、RN、PN、MN
深度学习应用篇-元学习[15]:基于度量的元学习:SNAIL、RN、PN、MN
背包问题(模板)
背包问题(模板)
50 0
|
定位技术
输出不同像元大小的批量重采样方法
本文主要介绍的内容是一种基于ArcGIS ModelBuilder输出不同像元大小的批量重采样方法
173 0
关系运算相关的元方法
关系运算相关的元方法
66 0
计算几何模板
计算几何模板
65 0
|
人工智能 BI C语言
【数论】【模板】
【数论】【模板】
100 0