题目:
编制程序求解矩阵 A 的 Cholesky 分解,并用程序求解方程组 Ax=b,其中

代码实现:

#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
//Cholesky 分解
void Cholesky(double a[4][4], double L[4][4], int m, int n) {for (int j = 0; j < n; j++)for (int i = j; i < m; i++) {if (i == j) {double sum = 0;for (int k = 0; k < j; k++) {sum = sum + L[j][k] * L[j][k];
}L[i][j] = sqrt(a[i][j] - sum);
}else {double sum = 0;for (int k = 0; k < j; k++) {sum = sum + L[i][k] * L[j][k];
}L[i][j] = (a[i][j] - sum) / L[j][j];
}
}
}
//初始化矩阵 L
void InitL(double L[4][4], int m, int n) {for (int i = 0; i < m; i++)for (int j = 0; j < n; j++) {if (i < j) {L[i][j] = 0;
}
}
}
//显示 L 和 LT 矩阵
void Display(double L[4][4], double LT[4][4], int m, int n) {cout << "Cholesky 分解的 L 矩阵为:" << endl;for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {cout << setprecision(8) << setw(12) << L[i][j] << "";
}cout << endl;
}cout << "Cholesky 分解的 LT 矩阵为:" << endl;for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {cout << setprecision(8) << setw(12) << L[j][i] << "";LT[i][j] = L[j][i];
}cout << endl;
}
}
//Ax=b 的解答 中间步骤求 y
double* SolveOne(double L[4][4], double b[4], int m, int n) {static double y[4];y[0] = b[0] / L[0][0];for (int i = 1; i < m; i++) {double sum = 0;for (int k = 0; k < i; k++) {sum = sum + L[i][k] * y[k];
}y[i] = (b[i] - sum) / L[i][i];
}cout << "解答的中间结果 y 为:" << endl;for (int i = 0; i < m; i++) {cout << setprecision(8) << setw(12) << y[i] << endl;
}cout << endl;return y;
}
//Ax=b 的解答 最终结果
void SolveTwo(double L[4][4], double y[4], int m, int n) {double x[4];x[m - 1] = y[m - 1] / L[n - 1][n - 1];for (int i = m - 2; i >= 0; i--) {double sum = 0;for (int k = i + 1; k < m; k++) {sum = sum + L[k][i] * x[k];
}x[i] = (y[i] - sum) / L[i][i];
}cout << "解答的最终结果 x 为:" << endl;for (int i = 0; i < m; i++) {cout << setprecision(8) << setw(12) << x[i] << endl;
}cout << endl;
}
//主函数
int main() {double a[4][4] = { {2,1,-1,1},{1,5,2,7},{-1,2,10,1},{1,7,1,11} };double b[4] = { 13,-9,6,0 };double L[4][4];//L 矩阵double LT[4][4];//LT 矩阵double* y;//中间矩阵 yInitL(L, 4, 4);//初始化矩阵 LCholesky(a, L, 4, 4);//Cholesky 分解矩阵 ADisplay(L, LT, 4, 4);//显示矩阵 L 和 LT//求解原方程 Ax=b 中间步骤:L*y = b; LT*x = y;y = SolveOne(L, b, 4, 4);SolveTwo(L, y, 4, 4);return 0;
}

数值结果:

分析:
首先对 A 矩阵进行 Cholesky 分解,得到 L 矩阵,然后通过中间矩阵 y 求解矩阵 x。

C++实现Cholesky分解相关推荐

  1. Matlab与线性代数--矩阵的Cholesky分解

    本图文介绍了Matlab对正交矩阵的Cholesky分解操作.

  2. 线性代数笔记: Cholesky分解

    1 介绍 当一个实矩阵A是对称正定矩阵的时候,它可以分解成一个下三角矩阵L以及它的转置的乘积,即: 1.1 矩阵半正定的情况 如果矩阵是正定的话,那么L唯一确定:如果矩阵是半正定的话,那么也可以分解, ...

  3. cholesky分解java代码_Cholesky 分解(转)

    Cholesky 分解是把一个对称正定的矩阵表示成一个下三角矩阵L和其转置的乘积的分解. 它要求矩阵的所有特征值必须大于零,故分解的下三角的对角元也是大于零的. Cholesky分解法又称平方根法,是 ...

  4. 矩阵的Cholesky分解

    原文链接:矩阵的Cholesky分解 首先来复习线性代数中几个重要的概念. 1)如果一个复矩阵A = A*(共轭转置),则A称为Hermitian矩阵.(注意,矩阵A转置后仍为其本身,显然A一定是方阵 ...

  5. 使用 uBLAS 进行实对称正定矩阵的 Cholesky 分解

    Cholesky 分解理论 矩阵分解--三角分解(Cholesky 分解) 矩阵分解--三角分解(二) 注:只有实对称矩阵才有 Cholesky 分解理论. 已知实对称正定矩阵 AA,其 Choles ...

  6. 矩阵分解——三角分解(Cholesky 分解)

    (1)一个对角元素都是1的下三角矩阵,称为单位下三角矩阵. (2)上(下)三角矩阵的乘积仍是上(下)三角矩阵: (3)一般来说,矩阵的三角分解不唯一. (4)实对称正定矩阵 AA,Δk>0\De ...

  7. cholesky分解_Time Series Analysis-1.2 LDL分解

    最近考完两个小quiz,停了一段时间,今晚抽空继续来分享这门课的笔记. 1.前言 上一期分享了Cholesky分解的基本步骤和伪代码,本期介绍另外一种矩阵分解的方法--LDL分解. 首先补充一下,近几 ...

  8. 三十分钟理解:矩阵Cholesky分解,及其在求解线性方程组、矩阵逆的应用

    写一篇关于Cholesky分解的文章,作为学习笔记,尽量一文看懂矩阵Cholesky分解,以及用Cholesky分解来求解对称正定线性方程组,以及求对称正定矩阵的逆的应用. 文章目录 直接Choles ...

  9. 几种矩阵分解算法: LU分解,Cholesky分解,QR分解,SVD分解,Jordan分解

    目录 1.LU分解 2. LDLT分解法 3. Cholesky分解的形式 4. QR分解 5.SVD分解 5.1 SVD与广义逆矩阵 6. Jordan 分解 参考文章: ---------我只是搬 ...

最新文章

  1. Modeling System Behavior with Use Case(3)
  2. 关于endian的故事,big-endian和little-endian
  3. Unable to get the CMake version located at
  4. unity 让一个数按一秒累加_unity中的数据储存读取(基于PlayerPrefs)
  5. 关于rxjs里operators filter和map的详细讨论
  6. psql where里有自定义函数慢_使用gplearn自定义特征自动生成模块
  7. 新一代来袭︱不只是舒适,简直是享受,Google公司用的腰靠,到底有什么秘密?...
  8. Java中Comparator和Comparable之间的区别
  9. C++工作笔记-3种方法对数据类型进行拆分(可用于各种协议)
  10. 开关电源中的磁性元件书籍_总结丨PFC开关电源的效率优化措施
  11. 基础编程题目集 6-3 简单求和 (10 分)
  12. 中的图片文字识别_文字识别 图片转文字【小程序】
  13. 【转载】Java中String类的方法及说明
  14. 每天工作4小时的程序员_IT新闻_博客园
  15. 解决SVN没有中文选项
  16. 架构设计——缓存层设计思维导图总结
  17. Pubwin EP常见问题(转)
  18. 苹果手机计算机科学,手机科学计算器app_计算器软件应用推荐_iPhone_苹果ios_安卓...
  19. 什么软件测试情侣头像,情侣头像搜索另一半 另一半情头查找器在线匹配 - 株洲娱乐网...
  20. 太极图php代码,如何实现太极图

热门文章

  1. 移动云,中国移动算力网络棋局中的关键一子
  2. 根据银行卡号来获取银行名称-java
  3. RXJava之线程控制Scheduler(四),Android面试题
  4. 华为高姐寄来的新年礼物
  5. app专项测试之兼容性测试
  6. ECAM6--变量与函数
  7. 什么是Window【What Is a Window?】
  8. 几种基本的数字正则表达式[转]
  9. 【Ubuntu】虚拟机屏幕大小共享文件
  10. 标贝科技|AI企业级应用榜单发布,百度、讯飞、标贝科技等50家产品上榜