#include <stdio.h>
#include <math.h>
const int maxn = 15;
int main(){
double a[maxn][maxn], b[maxn], y[maxn], x[maxn], l[maxn][maxn], u[maxn][maxn];
int i, j, k, r, n, sum;
freopen("lu.txt", "r", stdin);
scanf("%d", &n);
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++) scanf("%lf", &a[i][j]);
scanf("%lf", &b[i]);
}
/*打印数据文件
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++) printf("%10f", a[i][j]);
printf("%10f\n", b[i]);
}
*/
for(i = 1; i <= n; i++) l[i][1] = a[i][1]; //L的第一列元素
for(i = 1; i <= n; i++) u[1][i] = a[1][i] / l[1][1]; //U的第一行元素
for(k = 2; k <= n; k++){
for(i = k; i <= n; i++){ //计算L的第k列元素
for(r = 1, sum = 0; r <= k - 1; r++) sum += (l[i][r] * u[r][k]);
l[i][k] = a[i][k] - sum;
}
for(j = k; j <= n; j++){ //计算U的第k行元素
for(r = 1, sum = 0; r <= k - 1; r++) sum += (l[k][r] * u[r][j]);
u[k][j] = (a[k][j] - sum) / l[k][k];
}
}
/*打印L U
for(i = 1; i <= n; i++){
for(j = 1; j <= n; j++) printf("%10f", l[i][j]);
printf("\t\t");
for(k = 1; k <= n; k++) printf("%10f", u[i][k]);
printf("\n");
}
*/
y[1] = b[1] / l[1][1]; //求解Ly = b
for(i = 2; i <= n; i++){
for(k = 1, sum = 0; k <= i; k++) sum += (l[i][k] * y[k]);
y[i] = (b[i] - sum) / l[i][i];
}
x[n] = y[n]; //求解Ux = y
for(i = n - 1; i >= 1; i--){
for(k = i + 1, sum = 0; k <= n; k++) sum += (u[i][k] * x[k]);
x[i] = y[i] - sum;
}
for(int i = 1; i <= n; i++) printf("%10f\n", x[i]);
return 0;
}
数据文件
实验结果
Gauss - Jordan 消元法 几个重要结论 n n n元线性方程组有解 ⇔ \Leftrightarrow ⇔ 方程组对应的增广矩阵化为行阶梯形后,不出现 0 = d 0 = d 0=d (其中d为非零数) 当 n n n元线性方程组有解时,设行阶梯形矩阵的非零行数目为 r r r ,未知量数目为 n n n 。若 r = n r = n r=n 则有唯一解;若 r &...
本文将介绍Matlab求解线性方程组的方法: 一、函数rref 二、函数mldivide(\) 三、函数inv、pinv 四、函数linsolve 五、函数lsqminnorm 六、函数decomposition 完整代码如下: 测试平台matlab 2018Rb,结果如下: 可以发现mldivide函数并没有优势,虽然官方文档建议使用mldivide函数。decomposition函数结合mld...
SVD方法求解线性方程组 本文详细推导如果利用奇异值分解得到 A X = 0 AX=0 AX=0及 A X = b AX=b AX=b的解,推导如下。 齐次方程组求解AX=0 对于一个维度为 m × n m\times n m×n的矩阵 A A A来说,我们可以将其进行奇异值分解得到: A m × n = U m × m W m × n ...
一、问题提出 给出下列几个不同类型的线性方程组,请用适当的算法计算其解。 1、设线性方程组 二、要求 1、对上述三个方程组分别用Gauss顺序消元法与Gauss列主元消元法:平方根法与改进平方根法:追赶法求解(选择其一); 2、应用结构程序设计编出通用程序; 3、比较计算结果、分析数值解误差的原因; 4、尽可能利用相应模板输出系数矩阵的三角分解式; 三、目的和意义 1、通过该课题的实验,体会模板化...
选主元LU分解 实验内容:列选主元LU分解和全选主元LU分解求解线性方程组 计算方法: 全选主元消元法 1.1 初始化 根据参数A、b,记录下矩阵、右端项的尺寸n; 以得到的尺寸n初始化解向量x; 同时,以尺寸(n-1)初始化一个记录列交换顺序的向量tcolum; 1.2 进入循环 for k=1:n-1 选主元:|A(p1,p2)|=max{|A(i,j)|:i=k:n,j=k:n} 记录列交换...
代码如下 分别建立函数文件 注意文件名匹配 建立好后直接运行就行...
问题描述 为求解一个线性方程组,首先采用偏序选主元策略的三角分解法构造矩阵L,U和P,再用前向替换法对方程组LY=PB求解Y,最后用回代法对方程组UX=Y求解X。 输入形式 在屏幕上依次输入方阵阶数n,系数矩阵A和常数矩阵B。 输出形式 先输出LU分解结果,再输出方程解。 样例1输入 4 1 2 4 1 2 8 6 4 3 10 8 8 4 12 10 6 21 52 79 82 样例1输出 [[...
2019独角兽企业重金招聘Python工程师标准>>> 错误信息: 错误原因由于spring版本太低 而spring-amqp和spring-rabbitMQ版本太高导致。 最后换成spring3和spring-amqp-1.4.6.RELEASE、spring-rabbit-1.4.6.RELEASE 如果是spring4 换成更高版本spring的的amqp和rabbit即可...
运行docker容器异常中止,使用docker logs CONTAINER_ID查看异常信息如下: 经过一番搜索,在https://www.jianshu.com/p/ffe2b5a08897文章中找到了答案。...
Mybatis-Plus总结 1、根据对象做批量查询...