线性代数方程组求解

上传人:工**** 文档编号:496928614 上传时间:2022-07-25 格式:DOC 页数:16 大小:69KB
返回 下载 相关 举报
线性代数方程组求解_第1页
第1页 / 共16页
线性代数方程组求解_第2页
第2页 / 共16页
线性代数方程组求解_第3页
第3页 / 共16页
线性代数方程组求解_第4页
第4页 / 共16页
线性代数方程组求解_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《线性代数方程组求解》由会员分享,可在线阅读,更多相关《线性代数方程组求解(16页珍藏版)》请在金锄头文库上搜索。

1、-线性代数方程组求解一、实验要求编程求解方程组: 方程组1: 方程组2:方程组3:要求:用C/C+语言实现如下函数:1. bool lu(double* a, int* pivot, int n);实现矩阵的LU分解。pivot为输出参数,pivot0,n) 中存放主元的位置排列。函数成功时返回false,否则返回true。2. bool guass(double const* lu, int const* p, double* b, int n);求线代数方程组的解设矩阵Lun*n为*个矩阵an*n的LU分解,在内存中按行优先次序存放。p0,n)为LU分解的主元排列。b为方程组A*=b的右端

2、向量。此函数计算方程组A*=b的解,并将结果存放在数组b0,n)中。函数成功时返回false,否则返回true。3. void qr(double* a, double* d, int n);矩阵的QR分解假设数组an*n在内存中按行优先次序存放。此函数使用HouseHolder变换将其就地进展QR分解。d为输出参数,d 0,n) 中存放QR分解的上三角对角线元素。4. bool hshld(double const*qr, double const*d, double*b, int n); 求线代数方程组的解设矩阵qrn*n为*个矩阵an*n的QR分解,在内存中按行优先次序存放。d 0,n)

3、 为QR分解的上三角对角线元素。b为方程组A*=b的右端向量。函数计算方程组A*=b的解,并将结果存放在数组b0,n)中。函数成功时返回false,否则返回true。二、问题分析求解线性方程组A*=b,其实质就是把它的系数矩阵A通过各种变换成一个下三角或上三角矩阵,从而简化方程组的求解。因此,在求解线性方程组的过程中,把系数矩阵A变换成上三角或下三角矩阵显得尤为重要,然而矩阵A的变换通常有两种分解方法:LU分解法和QR分解法。1、 LU分解法:将A分解为一个下三角矩阵L和一个上三角矩阵U,即:A=LU,其中 L=, U=2、 QR分解法:将A分解为一个正交矩阵Q和一个上三角矩阵R,即:A=QR

4、三、实验原理解A*=b 的问题就等价于要求解两个三角形方程组: Ly=b,求y; U*=y,求*.设A为非奇异矩阵,且有分解式A=LU, L为单位下三角阵,U为上三角阵。L,U的元素可以有n步直接计算定出。用直接三角分解法解A*=b要求A的所有顺序主子式都不为零的计算公式:,i=2,3,,n.计算U的第r行,L的第r列元素(i=2,3,n):, i=r,r+1,n; , i=r+1,n,且rn.求解Ly=b,U*=y的计算公式;四、实验步骤1将矩阵A保存进计算机中,再定义2个空矩阵L,U以便保存求出的三角矩阵的值。利用公式,将矩阵A分解为LU,L为单位下三角阵,U为上三角阵。2可知计算方法有三

5、层循环。先通过公式计算出U矩阵的第一行元素和L矩阵的第一列元素。再根据公式和,和上次的出的值,求出矩阵其余的元素,每次都要三次循环,求下一个元素需要上一个结果。3先由公式 ,Ly=b求出y,因为L为下三角矩阵,所以由第一行开场求y.4再由公式,U*=y求出*, 因为U为上三角矩阵,所以由最后一行开场求*.五、程序流程图1、LU分解法2、QR分解法六、实验结果1、 LU分解法方程组1 :方程组2:方程组3:2、 QR分解法方程组1:方程组2:方程组3:七、实验总结为了求解线性方程组,我们通常需要一定的解法。其中一种解法就是通过矩阵的三角分解来实现的,属于求解线性方程组的直接法。在不考虑舍入误差下

6、,直接法可以用有限的运算得到准确解,因此主要适用于求解中小型稠密的线性方程组。1、三角分解法 三角分解法是将A矩阵分解成一个上三角形矩阵U和一个下三角形矩阵L,这样的分解法又称为LU分解法。它的用途主要在简化一个大矩阵的行列式值的计算过程,求反矩阵和求解联立方程组。不过要注意这种分解法所得到的上下三角形矩阵并非唯一,还可找到数个不同 的一对上下三角形矩阵,此两三角形矩阵相乘也会得到原矩阵。 2、 QR分解法QR分解法是将矩阵分解成一个正规正交矩阵Q与上三角形矩阵R,所以称为QR分解法。 在编写这两个程序过程中,起初遇到不少麻烦!虽然课上教师反复重复着:算法不难的,Its so easy!但是当

7、自己实际操作时,感觉并不是则容易。毕竟是要把实际的数学问题转化为计算机能够识别的编程算法,所以在编写程序之前我们仔细认真的把所求解的问题逐一进展详细的分析,最终转化为程序段。每当遇到问题时,大家或许有些郁闷,但最终还是静下心来反复仔细的琢磨,一一排除了错误,最终完成了本次实验。回头一想原来编个程序其实也没有想象的则复杂,只要思路清晰,逐步分析,就可以慢慢搞定了。附 源代码:#include #include #include #include #include using namespace std;bool lu(double* a, int* pivot, int n);/矩阵LU分解bo

8、ol guass(double const* lu, int const* p, double* b, int n);/求线性代数方程组的解void qr(double* a, double* d, int n); /矩阵的QR分解bool householder(double const*qr, double const*d, double*b, int n); int main() int n=0; int temp=0; bool flag = false; double e*pct=0;/误差期望值 double devsq=0;/误差的方差 int * P= NULL; double

9、 * D= NULL; double A= 1, 1/2.0, 1/3.0, 1/4.0, 1/5.0, 1/6.0, 1/2.0, 1/3.0, 1/4.0, 1/5.0, 1/6.0, 1/7.0, 1/3.0, 1/4.0, 1/5.0, 1/6.0, 1/7.0, 1/8.0, 1/4.0, 1/5.0, 1/6.0, 1/7.0, 1/8.0, 1/9.0, 1/5.0, 1/6.0, 1/7.0, 1/8.0, 1/9.0, 1/10.0, 1/6.0, 1/7.0, 1/8.0, 1/9.0, 1/10.0,1/11.0 ; double B= 1+ 1/2.0+ 1/3.0+

10、1/4.0+ 1/5.0+ 1/6.0, 1/2.0+ 1/3.0+ 1/4.0+ 1/5.0+ 1/6.0+ 1/7.0, 1/3.0+ 1/4.0+ 1/5.0+ 1/6.0+ 1/7.0+ 1/8.0, 1/4.0+ 1/5.0+ 1/6.0+ 1/7.0+ 1/8.0+ 1/9.0, 1/5.0+ 1/6.0+ 1/7.0+ 1/8.0+ 1/9.0+ 1/10.0, 1/6.0+ 1/7.0+ 1/8.0+ 1/9.0+ 1/10.0+1/11.0 ; n = 6 ; P = (int*)malloc(sizeof(int)*n); D = (double*)malloc(sizeo

11、f(double)*n); for (int i=0; in; i+) Pi=Di=0; coutflag; if(!flag) cout矩阵LU分解: n; lu(A,P,n);/矩阵LU分解 for (int i=0; in; i+) for(int j=0; jn; j+) printf(%ft,Ai); coutendl; cout矩阵LU分解的主元位置: n; for (int i=0; in; i+) coutPit; coutnGuass求线性代数方程组求解:n; guass(A,P,B,n);/求线性代数方程组的解 for (int i=0; in; i+) if(i=3) c

12、outendl; printf(%.16ft,Bi); coutnGuass解法的误差为:n; for (int i=0; in; i+) if(i=3) coutendl; printf(%.16ft,Bi-1); e*pct=e*pct + Bi-1; printf(n误差期望值为%.16ftn,e*pct/6); coutendl; else cout矩阵QR分解: n; qr(A,D,n);/矩阵qr分解 for (int i=0; in; i+) for(int j=0; jn; j+) printf(%dt,Ai); coutendl; coutQR分解的上三角矩阵对角线元素: n; for (int i=0; in; i+) printf(%ft,Di); coutnHouseholder线性代数方程组求解:n; householder(A,D,B,n);/求线性代数方程组的解 for (int i=0; in; i+) if(i=3) coutendl;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号