线性代数方程组求解_高等教育-微积分.pdf
《线性代数方程组求解_高等教育-微积分.pdf》由会员分享,可在线阅读,更多相关《线性代数方程组求解_高等教育-微积分.pdf(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-.-.word.zl.线性代数方程组求解 一、实验要求 编程求解方程组:方程组 1:方程组 2:方程组 3:要求:用 C/C+语言实现如下函数:1.bool lu(double*a,int*pivot,int n);-.-.word.zl.实现矩阵的 LU 分解。pivot 为输出参数,pivot0,n)中存放主元的位置排列。函数成功时返回 false,否那么返回 true。2.bool guass(double const*lu,int const*p,double*b,int n);求线代数方程组的解 设矩阵 Lunxn 为某个矩阵 anxn 的 LU 分解,在内存中按行优先次序存放。p
2、0,n)为 LU 分解的主元排列。b 为方程组 Ax=b 的右端向量。此函数计算方程组Ax=b 的解,并将结果存放在数组 b0,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);求线代数方程组的解 设矩阵
3、qrnxn 为某个矩阵 anxn 的 QR 分解,在内存中按行优先次序存放。d 0,n)为 QR 分解的上三角对角线元素。b 为方程组 Ax=b 的右端向量。函数计算方程组 Ax=b 的解,并将结果存放在数组 b0,n)中。函数成功时返回 false,否那么返回 true。二、问题分析 求解线性方程组 Ax=b,其实质就是把它的系数矩阵 A 通过各种变换成一个下三角或上三角矩阵,从而简化方程组的求解。因此,在求解线性方程组的过输出参数中存放主元的位置排列函数成功时返回否那么返回求线代数方程组的解设矩阵为某个矩阵的分解在内存中按行优先次序存放为分解的主元排列为方程组的右端向量此函数计算方程组的解
4、并将结果存放在数组中函数成功时返 放分解的上三角对角线元素求线代数方程组的解设矩阵为某个矩阵的分解在内存中按行优先次序存放为分解的上三角对角线元素为方程组的右端向量函数计算方程组的解并将结果存放在数组中函数成功时返回否那么返回二问题分析 在求解线性方程组的过程中把系数矩阵变换成上三角或下三角矩阵显得尤为重要然而矩阵的变换通常有两种分解方法分解法和分解法分解法将分解为一个下三角矩阵和一个上三角矩阵即其中分解法将分解为一个正交矩阵和一个上三-.-.word.zl.程中,把系数矩阵 A 变换成上三角或下三角矩阵显得尤为重要,然而矩阵 A 的变换通常有两种分解方法:LU 分解法和 QR 分解法。1、L
5、U 分解法:将 A 分解为一个下三角矩阵 L 和一个上三角矩阵 U,即:A=LU,其中 L=100 10 0 12 121 n nl ll,U=nnnnuu uu u u 0 00 002 221 12 11 2、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 的所有顺序主子式都不为零的计算公式:),2
6、,1(n i a uli li,11/u a lil il,i=2,3,,n.计算 U 的第 r 行,L 的第 r 列元素(i=2,3,n):11rkki rk ri riu l a u,i=r,r+1,n;rrrkkr ik ir iru u l a l/)(11,i=r+1,n,且 r n.求解 Ly=b,Ux=y 的计算公式;输出参数中存放主元的位置排列函数成功时返回否那么返回求线代数方程组的解设矩阵为某个矩阵的分解在内存中按行优先次序存放为分解的主元排列为方程组的右端向量此函数计算方程组的解并将结果存放在数组中函数成功时返 放分解的上三角对角线元素求线代数方程组的解设矩阵为某个矩阵的分
7、解在内存中按行优先次序存放为分解的上三角对角线元素为方程组的右端向量函数计算方程组的解并将结果存放在数组中函数成功时返回否那么返回二问题分析 在求解线性方程组的过程中把系数矩阵变换成上三角或下三角矩阵显得尤为重要然而矩阵的变换通常有两种分解方法分解法和分解法分解法将分解为一个下三角矩阵和一个上三角矩阵即其中分解法将分解为一个正交矩阵和一个上三-.-.word.zl.:,3,2,111 1n i y l b yb yikk ik i i.1,2,1,/)(,/1 n n i u x u y xu y xiini kk ik i inn n n 四、实验步骤 1将矩阵 A 保存进计算机中,再定义
8、2 个空矩阵 L,U 以便保存求出的三角矩阵的值。利用公式,将矩阵 A 分解为 LU,L 为单位下三角阵,U 为上三角阵。2可知计算方法有三层循环。先通过公式计算出 U 矩阵的第一行元素liu 和 L 矩阵的第一列元素ill。再根据公式和,和上次的出的值,求出矩阵其余的元素,每次都要三次循环,求下一个元素需要上一个结果。3先由公式,Ly=b:,3,2,111 1n i y l b yb yikk ik i i 求出 y,因为 L 为下三角矩阵,所以由第一行开场求 y.4再由公式,Ux=y.1,2,1,/)(,/1 n n i u x u y xu y xiini kk ik i inn n n
9、 求出 x,因为 U 为上三角矩阵,所以由最后一行开场求 x.五、程序流程图 1、LU 分解法 输出参数中存放主元的位置排列函数成功时返回否那么返回求线代数方程组的解设矩阵为某个矩阵的分解在内存中按行优先次序存放为分解的主元排列为方程组的右端向量此函数计算方程组的解并将结果存放在数组中函数成功时返 放分解的上三角对角线元素求线代数方程组的解设矩阵为某个矩阵的分解在内存中按行优先次序存放为分解的上三角对角线元素为方程组的右端向量函数计算方程组的解并将结果存放在数组中函数成功时返回否那么返回二问题分析 在求解线性方程组的过程中把系数矩阵变换成上三角或下三角矩阵显得尤为重要然而矩阵的变换通常有两种分
10、解方法分解法和分解法分解法将分解为一个下三角矩阵和一个上三角矩阵即其中分解法将分解为一个正交矩阵和一个上三-.-.word.zl.开始输入系数矩阵A,常数项 b及 ndet 1K=1,n-1,1调选列主元子程序i=k+1,n,1aik aik/akk(即求乘数mik)j=k+1,n,1aik aij-aik*akjjbi bi aik*bkidet akkdetkbn bn/am(即求出 xn)i=n-1,1,-1s 0j=i+1,n,1s s+aij*bjjbi(bi-s)/aij输出 b及 det结束idet amndet回代过程消元过程 输出参数中存放主元的位置排列函数成功时返回否那么返
11、回求线代数方程组的解设矩阵为某个矩阵的分解在内存中按行优先次序存放为分解的主元排列为方程组的右端向量此函数计算方程组的解并将结果存放在数组中函数成功时返 放分解的上三角对角线元素求线代数方程组的解设矩阵为某个矩阵的分解在内存中按行优先次序存放为分解的上三角对角线元素为方程组的右端向量函数计算方程组的解并将结果存放在数组中函数成功时返回否那么返回二问题分析 在求解线性方程组的过程中把系数矩阵变换成上三角或下三角矩阵显得尤为重要然而矩阵的变换通常有两种分解方法分解法和分解法分解法将分解为一个下三角矩阵和一个上三角矩阵即其中分解法将分解为一个正交矩阵和一个上三-.-.word.zl.由主程序转来d
12、akk,p ki=k+1,n,1|aik|d|d aik,p iid=0P=kj=k,n,1t apj,apj akj,akj tjt bp,bp bk,bk tdet det返回主程序返回主程序输出失败标志,|A|=0det 0结束选列主元=输出参数中存放主元的位置排列函数成功时返回否那么返回求线代数方程组的解设矩阵为某个矩阵的分解在内存中按行优先次序存放为分解的主元排列为方程组的右端向量此函数计算方程组的解并将结果存放在数组中函数成功时返 放分解的上三角对角线元素求线代数方程组的解设矩阵为某个矩阵的分解在内存中按行优先次序存放为分解的上三角对角线元素为方程组的右端向量函数计算方程组的解并将
13、结果存放在数组中函数成功时返回否那么返回二问题分析 在求解线性方程组的过程中把系数矩阵变换成上三角或下三角矩阵显得尤为重要然而矩阵的变换通常有两种分解方法分解法和分解法分解法将分解为一个下三角矩阵和一个上三角矩阵即其中分解法将分解为一个正交矩阵和一个上三-.-.word.zl.2、QR 分解法 输出参数中存放主元的位置排列函数成功时返回否那么返回求线代数方程组的解设矩阵为某个矩阵的分解在内存中按行优先次序存放为分解的主元排列为方程组的右端向量此函数计算方程组的解并将结果存放在数组中函数成功时返 放分解的上三角对角线元素求线代数方程组的解设矩阵为某个矩阵的分解在内存中按行优先次序存放为分解的上三
14、角对角线元素为方程组的右端向量函数计算方程组的解并将结果存放在数组中函数成功时返回否那么返回二问题分析 在求解线性方程组的过程中把系数矩阵变换成上三角或下三角矩阵显得尤为重要然而矩阵的变换通常有两种分解方法分解法和分解法分解法将分解为一个下三角矩阵和一个上三角矩阵即其中分解法将分解为一个正交矩阵和一个上三-.-.word.zl.开始输入数据 A,b矩阵 A的转置Householder 变换转置矩阵相乘输出上三角阵R=H3*H2*H1*A输入正交阵 Q=-(H3*H2*H1)T解上三角阵输出结果结束 输出参数中存放主元的位置排列函数成功时返回否那么返回求线代数方程组的解设矩阵为某个矩阵的分解在内
15、存中按行优先次序存放为分解的主元排列为方程组的右端向量此函数计算方程组的解并将结果存放在数组中函数成功时返 放分解的上三角对角线元素求线代数方程组的解设矩阵为某个矩阵的分解在内存中按行优先次序存放为分解的上三角对角线元素为方程组的右端向量函数计算方程组的解并将结果存放在数组中函数成功时返回否那么返回二问题分析 在求解线性方程组的过程中把系数矩阵变换成上三角或下三角矩阵显得尤为重要然而矩阵的变换通常有两种分解方法分解法和分解法分解法将分解为一个下三角矩阵和一个上三角矩阵即其中分解法将分解为一个正交矩阵和一个上三-.-.word.zl.六、实验结果 1、LU 分解法 方程组 1:方程组 2:输出参
16、数中存放主元的位置排列函数成功时返回否那么返回求线代数方程组的解设矩阵为某个矩阵的分解在内存中按行优先次序存放为分解的主元排列为方程组的右端向量此函数计算方程组的解并将结果存放在数组中函数成功时返 放分解的上三角对角线元素求线代数方程组的解设矩阵为某个矩阵的分解在内存中按行优先次序存放为分解的上三角对角线元素为方程组的右端向量函数计算方程组的解并将结果存放在数组中函数成功时返回否那么返回二问题分析 在求解线性方程组的过程中把系数矩阵变换成上三角或下三角矩阵显得尤为重要然而矩阵的变换通常有两种分解方法分解法和分解法分解法将分解为一个下三角矩阵和一个上三角矩阵即其中分解法将分解为一个正交矩阵和一个
17、上三-.-.word.zl.方程组 3:2、QR 分解法 输出参数中存放主元的位置排列函数成功时返回否那么返回求线代数方程组的解设矩阵为某个矩阵的分解在内存中按行优先次序存放为分解的主元排列为方程组的右端向量此函数计算方程组的解并将结果存放在数组中函数成功时返 放分解的上三角对角线元素求线代数方程组的解设矩阵为某个矩阵的分解在内存中按行优先次序存放为分解的上三角对角线元素为方程组的右端向量函数计算方程组的解并将结果存放在数组中函数成功时返回否那么返回二问题分析 在求解线性方程组的过程中把系数矩阵变换成上三角或下三角矩阵显得尤为重要然而矩阵的变换通常有两种分解方法分解法和分解法分解法将分解为一个
18、下三角矩阵和一个上三角矩阵即其中分解法将分解为一个正交矩阵和一个上三-.-.word.zl.方程组 1:方程组 2:方程组 3:输出参数中存放主元的位置排列函数成功时返回否那么返回求线代数方程组的解设矩阵为某个矩阵的分解在内存中按行优先次序存放为分解的主元排列为方程组的右端向量此函数计算方程组的解并将结果存放在数组中函数成功时返 放分解的上三角对角线元素求线代数方程组的解设矩阵为某个矩阵的分解在内存中按行优先次序存放为分解的上三角对角线元素为方程组的右端向量函数计算方程组的解并将结果存放在数组中函数成功时返回否那么返回二问题分析 在求解线性方程组的过程中把系数矩阵变换成上三角或下三角矩阵显得尤
19、为重要然而矩阵的变换通常有两种分解方法分解法和分解法分解法将分解为一个下三角矩阵和一个上三角矩阵即其中分解法将分解为一个正交矩阵和一个上三-.-.word.zl.七、实验总结 为了求解线性方程组,我们通常需要一定的解法。其中一种解法就是通过矩阵的三角分解来实现的,属于求解线性方程组的直接法。在不考虑舍入误差下,直接法可以用有限的运算得到准确解,因此主要适用于求解中小型稠密的线性方程组。1、三角分解法 三角分解法是将 A 矩阵分解成一个上三角形矩阵 U 和一个下三角形矩阵 L,这样的分解法又称为 LU 分解法。它的用途主要在简化一个大矩阵的行列式值的计算过程,求反矩阵和求解联立方程组。不过要注意
20、这种分解法所得到的上下三角形矩阵并非唯一,还可找到数个不同 的一对上下三角形矩阵,此两三角形矩阵相乘也会得到原矩阵。输出参数中存放主元的位置排列函数成功时返回否那么返回求线代数方程组的解设矩阵为某个矩阵的分解在内存中按行优先次序存放为分解的主元排列为方程组的右端向量此函数计算方程组的解并将结果存放在数组中函数成功时返 放分解的上三角对角线元素求线代数方程组的解设矩阵为某个矩阵的分解在内存中按行优先次序存放为分解的上三角对角线元素为方程组的右端向量函数计算方程组的解并将结果存放在数组中函数成功时返回否那么返回二问题分析 在求解线性方程组的过程中把系数矩阵变换成上三角或下三角矩阵显得尤为重要然而矩
21、阵的变换通常有两种分解方法分解法和分解法分解法将分解为一个下三角矩阵和一个上三角矩阵即其中分解法将分解为一个正交矩阵和一个上三-.-.word.zl.2、QR 分解法 QR 分解法是将矩阵分解成一个正规正交矩阵 Q 与上三角形矩阵 R,所以称为QR 分解法。在编写这两个程序过程中,起初遇到不少麻烦!虽然课上教师反复重复着:“算法不难的,Its so easy!但是当自己实际操作时,感觉并不是那么容易。毕竟是要把实际的数学问题转化为计算机能够识别的编程算法,所以在编写程序之前我们仔细认真的把所求解的问题逐一进展详细的分析,最终转化为程序段。每当遇到问题时,大家或许有些郁闷,但最终还是静下心来反复
22、仔细的琢磨,一一排除了错误,最终完成了本次实验。回头一想原来编个程序其实也没有想象的那么复杂,只要思路清晰,逐步分析,就可以慢慢搞定了。输出参数中存放主元的位置排列函数成功时返回否那么返回求线代数方程组的解设矩阵为某个矩阵的分解在内存中按行优先次序存放为分解的主元排列为方程组的右端向量此函数计算方程组的解并将结果存放在数组中函数成功时返 放分解的上三角对角线元素求线代数方程组的解设矩阵为某个矩阵的分解在内存中按行优先次序存放为分解的上三角对角线元素为方程组的右端向量函数计算方程组的解并将结果存放在数组中函数成功时返回否那么返回二问题分析 在求解线性方程组的过程中把系数矩阵变换成上三角或下三角矩
23、阵显得尤为重要然而矩阵的变换通常有两种分解方法分解法和分解法分解法将分解为一个下三角矩阵和一个上三角矩阵即其中分解法将分解为一个正交矩阵和一个上三-.-.word.zl.附 源代码:#include#include#include#include#include using namespace std;bool lu(double*a,int*pivot,int n);/矩阵 LU 分解 bool guass(double const*lu,int const*p,double*b,int n);/求线性代数方程组的解 void qr(double*a,double*d,int n);/矩阵的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 线性代数 方程组 求解 高等教育 微积分
限制150内