博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
平方根法 乔累斯基分解Cholesky_解线性方程组的直接解法
阅读量:4155 次
发布时间:2019-05-26

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

平方根法 乔累斯基分解Cholesky_解线性方程组的直接解法

标签:计算方法实验

#include 
#include
const int maxn = 15;int main(){ double a[maxn][maxn], b[maxn], y[maxn], x[maxn], l[maxn][maxn]; int n, sum; freopen("sqrt.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(int i = 1; i <= n; i++){ //算L: 对正定矩阵A分解,A = LL^T sum = 0; for(int k = 1; k <= i - 1; k++) sum += (l[i][k] * l[i][k]); l[i][i] = sqrt(a[i][i] - sum); sum = 0; for(int j = i + 1; j <= n; j++){ for(int k = 1; k <= i - 1; k++) sum += (l[j][k] * l[i][k]); l[j][i] = (a[j][i] - sum) / l[i][i]; } } for(int i = 1; i <= n; i++){ //求y: A = LL^T -> LL^Tx = b -> Ly = b sum = 0; for(int k = 1; k <= i - 1; k++) sum += (l[i][k] * y[k]); y[i] = (b[i] - sum) / l[i][i]; } for(int i = n; i >= 1; i--){ //求x: L^Tx = y sum = 0; for(int k = i + 1; k <= n; k++) sum += (l[k][i] * x[k]); x[i] = (y[i] - sum) / l[i][i]; } for(int i = 1; i <= n; i++) printf("%10f\n", x[i]); return 0;}

数据文件

input
实验结果
output

你可能感兴趣的文章
大文件重定向和管道的效率对比
查看>>
Tair ldb(leveldb存储引擎)实现介绍
查看>>
通过apache/nginx禁止访问.svn目录
查看>>
C++性能优化技术导论
查看>>
SQL-92定义的errorcode 通过PDO什么的返回的值~
查看>>
linux 终端控制 颜色/位置 man console_codes
查看>>
深入了解php底层机制
查看>>
打开general_log 记录所有的sql
查看>>
原来打补丁是这么玩儿。。。diff patch
查看>>
51cto 均衡负载专题 收藏
查看>>
为什么程序员的社会地位不高?
查看>>
Binary_search_tree from wikipedia
查看>>
给你的Linux系统上点stress
查看>>
学了学shell,钻个牛角尖,根据接口文档生成配置数组...awk sed xargs
查看>>
给wordpress加个特色头像
查看>>
BitMap初探
查看>>
Google Reader快捷键
查看>>
由12306.cn谈谈网站性能技术
查看>>
MySQL DELAY_KEY_WRITE
查看>>
地球重力为什么没把我们压碎掉?
查看>>