void LDL(int n, double* a, double* b, double* x)//LDL法,参数依次:阶数 系数矩阵a 常数矩阵b
{double* U = new double[n * n];double* y = new double[n];double* z = new double[n];double* L = new double[n * n];double* D = new double[n];for (int i = 0; i < n; i++)//用LU先算出L U{for (int j = 0; j < n; j++){*(U + i * n + j) = 0;//暂时全部赋值为0if (i == j){*(L + i * n + j) = 1;//对角线赋值为1}else{*(L + i * n + j) = 0;//其他暂时赋值为0}}}for (int k = 0; k < n; k++)//计算u和l矩阵的值{for (int j = k; j < n; j++){*(U + k * n + j) = *(a + k * n + j);//第一行for (int r = 0; r < k; r++)//接下来由L的前一列算u的下一行{*(U + k * n + j) = *(U + k * n + j) - (*(L + k * n + r) * (*(U + r * n + j)));}}for (int i = k + 1; i < n; i++)//计算L的列{*(L + i * n + k) = *(a + i * n + k);for (int r = 0; r < k; r++){*(L + i * n + k) = *(L + i * n + k) - (*(L + i * n + r) * (*(U + r * n + k)));}*(L + i * n + k) = *(L + i * n + k) / (*(U + k * n + k));}}for (int i = 0; i < n; i++)//把D赋值{*(D + i) = *(U + i * n + i);}for (int i = 0; i < n; i++)//由Lz=b算z{*(z + i) = *(b + i);for (int j = 0; j < i; j++){*(z + i) = *(z + i) - *(L + i * n + j) * (*(z + j));}}for (int i = 0; i < n; i++)//算y{*(y + i) = *(z + i) / (*(D + i));}double* temp = new double[n * n];for (int i = 0; i < n; i++)//这里实现对L的转置{for (int j = 0; j < n; j++){*(temp + i * n + j) = *(L + j * n + i);}}for (int i = 0; i < n; i++){for (int j = 0; j < n; j++){*(L + i * n + j) = *(temp + i * n + j);}}delete[]temp;//释放for (int i = n - 1; i >= 0; i--)//最后算x{*(x + i) = *(y + i);for (int j = i + 1; j < n; j++){*(x + i) = *(x + i) - *(L + i * n + j) * (*(x + j));}}for (int i = 0; i < n; i++){cout << "解为:\n";cout << *(x + i) << endl;}delete[]U;delete[]y;delete[]z;delete[]L;delete[]D;
}

线性方程组的运算方法和种类很多,其中徐士良教授的《c语言常用算法集》中收集了较多种类的c语言解线性方程组的函数,但是由于版本过老,导致许多函数不能在现在的编译器中直接调用,因此,作者重新写了LDL法解线性方程组的C++程序

C++实现线性方程组运算函数 LDL法相关推荐

  1. Python数字类型:数值运算操作符、数值运算函数、类型判断函数、类型转换函数

    一.数字类型 (一)整数类型int(integer) int与数学中的整数概念一致 特点:可正可负,没有取值范围 整数有四种表示形式: 十进制,没有引导符号:10, 88,-485 二进制,以0(零) ...

  2. python 中m op n运算_Python数字类型、数值运算操作符、数值运算函数

    一.数字类型 (一)整数类型int(integer) int与数学中的整数概念一致 特点:可正可负,没有取值范围 整数有四种表示形式: 十进制,没有引导符号:10, 88,-485 二进制,以0(零) ...

  3. python天天向上的力量b_Python“天天向上的力量”——基本数据类型以及数值运算函数...

    整数类型:与数学中整数的概念一致 -可正可负,没有取值范围限制 -pow(x,y)函数:计算xy,想算多大算多大 -十进制:1010,99,-217 -二进制:以0b或0B开头:0b010,-0B10 ...

  4. php函数运算,PHP数学运算函数的功能及实例分析

    这篇文章主要介绍了PHP数学运算函数,汇总分析了常见的PHP数学运算函数的功能,使用方法与注意事项,需要的朋友可以参考下 一.常用函数说明: Abs: 取得绝对值. Acos: 取得反余弦值. Asi ...

  5. php次方函数_PHP数学运算函数大汇总(经典值得收藏)_PHP

    本文汇总分析了PHP数学运算函数.分享给大家供大家参考,具体如下: 一.常用函数说明: Abs: 取得绝对值. Acos: 取得反余弦值. Asin: 取得反正弦值. Atan: 取得反正切值. At ...

  6. Openssl 之大数运算函数 BN

    Openssl 之大数运算函数 BN 主要介绍Openssl中的有关大数运算函数,这个对于RSA研究和实现比较有价值   1.初始化函数 BIGNUM *BN_new(void);    新生成一个B ...

  7. C++学习笔记-----在重载的赋值运算函数中调用拷贝构造函数

    类的拷贝构造函数与赋值运算不同,拷贝构造函数是对这个类进行初始化的过程,而赋值是删除原有的东西,赋予它新的东西. 但是二者在实现上是互通的. template<class T> graph ...

  8. Pandas知识点-统计运算函数

    Pandas知识点-统计运算函数 统计运算非常常用.本文介绍Pandas中的统计运算函数,这些统计运算函数基本都可以见名知义,使用起来非常简单. 本文使用的数据来源于网易财经,具体下载方法可以参考:h ...

  9. php 超大整数计算,PHP int 超大溢出整数的 加减运算函数,如果有更好的方法欢迎探讨...

    [分享]PHP int 超大溢出整数的 加减运算函数,如果有更好的方法欢迎探讨 分享一个溢出整数加减的运算函数,刚刚写的,对于溢出的整数可以用这个来进行加减运算. 遗憾的几点是: 一代码太多: 二只有 ...

最新文章

  1. CentOS 7源码安装httpd服务
  2. Flink JAR包上传和运行逻辑
  3. v8学习笔记(四) 对象机制
  4. 7_CentOS下安装和卸载AdobeReader
  5. mysql5.6.28安装_mysql5.6.28源码安装
  6. rust建的怎么拆除_罗志祥私建泳池已拆除,后续还将接受物业的监督与教育
  7. [BZOJ] 3301: [USACO2011 Feb] Cow Line
  8. L1-031 到底是不是太胖了 (10 分)
  9. 实战HTML:模拟简书首页静态实现
  10. 编程中常见的安全算法
  11. 小米路由3刷华硕潘多拉固件教程及软件相关
  12. 「 LaTex 」写论文,natbib宏的参考文献引用格式详解
  13. “限时秒杀”活动分析报告
  14. ad模数转换采集电压程序c语言,单片机怎么通过AD转换得到电压值
  15. 中国哲学书电子化计划
  16. 早上空腹喝酸奶好吗?
  17. vertica基本常用sql
  18. 如何把word转成pdf格式以及如何从指定页开始设置页码技巧
  19. APP(IOS)蒲公英上传成功但下载页报错
  20. Intel NUC8i5BEH安装Windows10+Hackintosh双系统

热门文章

  1. MySQL查询数据后加上百分号%
  2. LMAX高并发系统架构
  3. opencv------图片的翻转和旋转
  4. excel图表数据发送到ppt
  5. 数据分析复盘——相关理论之精益数据分析
  6. ZEGO 最后一公里网络传输的容灾及优化方案
  7. 再见北京,你好天津!
  8. 北大2019年计算机学院保研名单,2019保研北大名单出炉,最大赢家:武大、南开、山大、北师大...
  9. mac偏好设置在哪里?如何在偏好设置里删除Deeper日志
  10. 架构师修炼系列【存储高性能[NoSQL]】