线性代数方程组求解.doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
线性代数方程组求解 一、实验要求 编程求解方程组: 方程组1: 方程组2: 方程组3: 要求: 用C/C++语言实现如下函数: bool lu(double* a, int* pivot, int n); 实现矩阵的LU分解。 pivot为输出参数,pivot[0,n) 中存放主元的位置排列。 函数成功时返回false,否则返回true。 bool guass(double const* lu, int const* p, double* b, int n); 求线代数方程组的解 设矩阵Lunxn为某个矩阵anxn的LU分解,在内存中按行优先次序存放。p[0,n)为LU分解的主元排列。b为方程组Ax=b的右端向量。此函数计算方程组Ax=b的解,并将结果存放在数组b[0,n)中。函数成功时返回false,否则返回true。 3. void qr(double* a, double* d, int n);矩阵的QR分解 假设数组anxn在内存中按行优先次序存放。此函数使用HouseHolder变换将其就地进行QR分解。 d为输出参数,d [0,n) 中存放QR分解的上三角对角线元素。 4. bool hshld(double const*qr, double const*d, double*b, int n); 求线代数方程组的解 设矩阵qrnxn为某个矩阵anxn的QR分解,在内存中按行优先次序存放。d [0,n) 为QR分解的上三角对角线元素。b为方程组Ax=b的右端向量。 函数计算方程组Ax=b的解,并将结果存放在数组b[0,n)中。 函数成功时返回false,否则返回true。 二、问题分析 求解线性方程组Ax=b,其实质就是把它的系数矩阵A通过各种变换成一个下三角或上三角矩阵,从而简化方程组的求解。因此,在求解线性方程组的过程中,把系数矩阵A变换成上三角或下三角矩阵显得尤为重要,然而矩阵A的变换通常有两种分解方法:LU分解法和QR分解法。 LU分解法: 将A分解为一个下三角矩阵L和一个上三角矩阵U,即:A=LU, 其中 L=, U= QR分解法: 将A分解为一个正交矩阵Q和一个上三角矩阵R,即:A=QR 三、实验原理 解Ax=b 的问题就等价于要求解两个三角形方程组:  ⑴ Ly=b,求y; ? ??⑵ Ux=y,求x. 设A为非奇异矩阵,且有分解式A=LU, L为单位下三角阵,U为上三角阵。 L,U的元素可以有n步直接计算定出。用直接三角分解法解Ax=b(要求A的所有顺序主子式都不为零)的计算公式: ① , ,i=2,3,…,n. 计算U的第r行,L的第r列元素(i=2,3,…,n):? ②? ? , i=r,r+1,…,n; ③ , i=r+1,…,n,且r≠n. 求解Ly=b,Ux=y的计算公式; ④ ⑤ 四、实验步骤 1将矩阵A保存进计算机中,再定义2个空矩阵L,U以便保存求出的三角矩阵的值。 利用公式①,②,③将矩阵A分解为LU,L为单位下三角阵,U为上三角阵。 2可知计算方法有三层循环。 先通过公式①计算出U矩阵的第一行元素?和L矩阵的第一列元素。 再根据公式②和③,和上次的出的值,求出矩阵其余的元素,每次都要三次循环,求下一个元素需要上一个结果。 3先由公式④ ,Ly=b 求出y,因为L为下三角矩阵,所以由第一行开始求y. 4再由公式⑤,Ux=y 求出x, 因为U为上三角矩阵,所以由最后一行开始求x. 五、程序流程图 1、LU分解法 2、QR分解法 六、实验结果 LU分解法 方程组1 : 方程组2: 方程组3: QR分解法 方程组1: 方程组2: 方程组3: 七、实验总结 为了求解线性方程组,我们通常需要一定的解法。其中一种解法就是通过矩阵的三角分解来实现的,属于求解线性方程组的直接法。在不考虑舍入误差下,直接法可以用有限的运算得到精确解,因此主要适用于求解中小型稠密的线性方程组。 1、三角分解法 三角分解法是将A矩阵分解成一个上三角形矩阵U和一个下三角形矩阵L,这样的分解法又称为LU分解法。它的用途主要在简化一个大矩阵的行列式值的计算过程,求反矩阵和求解联立方程组。不过要注意这种分解法所得到的上下三角形矩阵并非唯一,还可找到数个不同 的一对上下三角形矩阵,此两三角形矩阵相乘也会得到原矩阵。 2、 QR分解法 QR分解法是将矩阵分解成一个正规正交矩阵Q与上三角形矩阵R,所以称为QR分解法。 在编写这两个程序过程中,起初遇到不少麻烦!虽然课上老师反复重复着:“算法不难的,Its so easy!”但是当自己实际操作时,感觉并不是那么容易。毕竟是要把实际的数学问题转化为计算机能够识别的编程算法,所以在编

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档