博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
紧凑存储的杜利特尔分解法Doolittle(LU分解法)_解线性方程组的直接解法
阅读量:4155 次
发布时间:2019-05-26

本文共 1764 字,大约阅读时间需要 5 分钟。

紧凑存储的杜利特尔分解法Doolittle(LU分解法)_解线性方程组的直接解法

标签:计算方法实验

/*紧凑存储的杜利特尔分解法Doolittle:    如果初始矩阵不要求保留的话,可以紧凑存储。    因为每个a[i][j]用来计算u[i][j]或l[i][j]之后不需要了,u[i][j]或l[i][j]算出后可存入a[i][j]所占的单元;    y[i]可存入b[i]所占的单元,最后x[i]再取代y[i]存入最初b[i]所占的单元。    注意用 '' 标记部分。*/#include 
#include
const int maxn = 15;int main(){ double a[maxn][maxn], b[maxn]; int i, j, k, r, n, sum, temp; 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]); } */ temp = a[1][1]; for(i = 1; i <= n; i++) a[i][1] /= temp; //L的第一列元素, U的第一行元素不变 for(k = 2; k <= n; k++){ for(j = k; j <= n; j++){ //计算U的第k行元素 for(r = 1, sum = 0; r <= k - 1; r++) sum += (a[k][r] * a[r][j]); a[k][j] -= sum; } for(i = k; i <= n; i++){ //计算L的第k列元素 for(r = 1, sum = 0; r <= k - 1; r++) sum += (a[i][r] * a[r][k]); if(i == k) continue; 对角线在计算U时已被计算出来 else a[i][k] = (a[i][k] - sum) / a[k][k]; } } /*打印L U, L左下, U右上 for(i = 1; i <= n; i++){ for(j = 1; j <= n; j++) printf("%10f", a[i][j]); printf("\n"); } */ for(i = 2; i <= n; i++){ //求解Ly = b, y[1] = b[1] for(k = 1, sum = 0; k <= i - 1; k++) sum += (a[i][k] * b[k]); b[i] -= sum; } b[n] /= a[n][n]; //求解Ux = y for(i = n - 1; i >= 1; i--){ for(k = i + 1, sum = 0; k <= n; k++) sum += (a[i][k] * b[k]); b[i] = (b[i] - sum) / a[i][i]; } for(int i = 1; i <= n; i++) printf("%10f\n", b[i]); return 0;}

数据文件

input
实验结果
output

你可能感兴趣的文章
【5分钟代码练习】01—导航栏鼠标悬停效果的实现
查看>>
127个超级实用的JavaScript 代码片段,你千万要收藏好(中)
查看>>
127个超级实用的JavaScript 代码片段,你千万要收藏好(下)
查看>>
Flex 布局教程:语法篇
查看>>
年薪50万+的90后程序员都经历了什么?
查看>>
2019年哪些外快收入可达到2万以上?
查看>>
【JavaScript 教程】标准库—Date 对象
查看>>
前阿里手淘前端负责人@winter:前端人如何保持竞争力?
查看>>
【JavaScript 教程】面向对象编程——实例对象与 new 命令
查看>>
我在网易做了6年前端,想给求职者4条建议
查看>>
SQL1015N The database is in an inconsistent state. SQLSTATE=55025
查看>>
RQP-DEF-0177
查看>>
MySQL字段类型的选择与MySQL的查询效率
查看>>
Java的Properties配置文件用法【续】
查看>>
JAVA操作properties文件的代码实例
查看>>
java杂记
查看>>
RunTime.getRuntime().exec()
查看>>
Oracle 分组排序函数
查看>>
VMware Workstation 14中文破解版下载(附密钥)(笔记)
查看>>
日志框架学习
查看>>