数值代数上机报告

上传人:suns****4568 文档编号:88921143 上传时间:2019-05-13 格式:DOC 页数:22 大小:1,022.72KB
返回 下载 相关 举报
数值代数上机报告_第1页
第1页 / 共22页
数值代数上机报告_第2页
第2页 / 共22页
数值代数上机报告_第3页
第3页 / 共22页
数值代数上机报告_第4页
第4页 / 共22页
数值代数上机报告_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《数值代数上机报告》由会员分享,可在线阅读,更多相关《数值代数上机报告(22页珍藏版)》请在金锄头文库上搜索。

1、Doolittle分解报告1一、 目的意义: 把矩阵A分解成一个下三角阵与一个上三角阵的乘积,即 A=LR,其中L为下三角阵,R为上三角阵,这样原线性方程组就可以化为的求解问题,方便求解。二、 算法:1) 输入系数矩阵 A;2) 利用公式和交错进行,计算得出矩阵L和R;3) 回带到中得出原线性方程组的解。三、 源程序:#include #include #include #include #define N 100main()int i,j,k,s,n;printf(请输入系数矩阵A的阶数:n= );scanf(%d,&n);float aNN=0,LNN=0,RNN=0,sigma1,sig

2、ma2,bN,yN,xN;/*为L主对角线元素赋1*/for(i=0;in;i+)Lii=1;printf(请输入系数矩阵A:n); /*输入系数矩阵A*/for(i=0;in;i+)for(j=0;jn;j+)scanf(%f,&aij);for(k=0;kn;k+)for(j=k;jn;j+) /*计算矩阵R*/sigma1=0;for(s=0;s=k-1;s+)sigma1+=Lks*Rsj;Rkj=akj-sigma1;for(i=k;in;i+) /*计算矩阵L*/sigma2=0;for(s=0;s=k-1;s+)sigma2+=Lis*Rsk;Lik=(aik-sigma2)/R

3、kk;printf(n A矩阵为:n);/*输出矩阵L、R*/for(i=0;in;i+)for(j=0;jn;j+)printf(%5.1f ,aij);printf(n);printf(n L矩阵为:n);for(i=0;in;i+)for(j=0;jn;j+)printf(%5.1f ,Lij);printf(n);printf(n R矩阵为:n);for(i=0;in;i+)for(j=0;jn;j+)printf(%5.1f ,Rij);printf(n);printf(请输入b矩阵n,i+1);for(i=0;in;i+)scanf(%f,&bi);for(i=0;in;i+)/*

4、回代法求解方程组Ly=b*/sigma1=0;for(k=0;k=0;i-)sigma2=0;for(k=i+1;kn;k+)sigma2+=Rik*xk;xi=(yi-sigma2)/Rii;printf(解得x为:n);for(i=0;in;i+)printf(%5.1f ,xi);printf(n);四、 计算结果与分析:分析:运行结果与预想的结果相近,误差对结果的影响不是很大,比较理想五、 参考文献:1刑志栋. 矩阵数值分析. 陕西: 陕西科学技术出版社, 20052谭浩强. C语言程序设计. 北京:清华大学出版社,2005报告2cholesky分解一、 目的意义: 对称正定矩阵是实践

5、中经常遇到的一种特殊矩阵类型矩阵,由于矩阵本身的流量好兴致,使得cholesky分解在存储和运算量上较一般消去法节省一半左右,且解的精度高,cholesky分解方法是目前计算机求解该类问题最有效的方法之一。二、 算法:1) 输入系数矩阵 A;2) 利用公式 交错进行,计算得出矩阵L和D;3) 回带到中得出原线性方程组的解三、 源程序:#include #include #include #define EPS 1.0e-8#define N 20double aNN, bN, xN;int n;int zhuyuan(int row); /* 选主元*/void hangjiaohuan(in

6、t row1, int row2); /* 行交换*/void xiaoyuan(int row); /*消元*/void huidai(); /* 回代*/void main()printf(请输入方程的维数n: n = ); scanf(%d, &n); getchar(); printf(输入%d行%d列系数矩阵A:n, n, n); for (int i=0; in; i+)for (int j=0; jn; j+)scanf(%lf, &aij);getchar();printf(n输入线性方程组右端项b%d:n, n); for (i=0; in; i+)scanf(%lf, &b

7、i);getchar(); for (i=0; in-1; i+) double rowmark = zhuyuan(i);if (rowmark = -1) printf(多解!); system(pause); return;if (rowmark != i) hangjiaohuan(i, rowmark);xiaoyuan(i);huidai(); printf(n线性方程组的解为:n ); for (i=0; in; i+) printf(x%d=%lf , i+1, xi); printf(n); printf(n); system(pause);int zhuyuan(int r

8、ow)double elem = arowrow; int rowmark = row; for (int i=row+1; in; i+) if (elemairow) elem = airow; rowmark = i;if(fabs(elem) = EPS) return -1;return rowmark;void hangjiaohuan(int row1, int row2)double tmp; tmp = brow1; brow1 = brow2; brow2 = tmp; for (int j=0; jn; j+) tmp = arow1j; arow1j = arow2j;

9、 arow2j = tmp;void xiaoyuan(int row)for (int i=row+1; in; i+)int j=row; double tmp = aij/arowrow; bi -= tmp*brow; for (aij+ = 0; j=0; i-)double sum = 0.0; for (int j=i+1; jn; j+) sum -= aij*xj;xi = (bi+sum)/aii;四、 计算结果与分析:分析:运行结果与预想的结果相近,误差对结果的影响不是很大,比较理想五、 参考文献:1刑志栋. 矩阵数值分析. 陕西: 陕西科学技术出版社, 20052谭浩强

10、. C语言程序设计. 北京:清华大学出版社,2005Jacobi迭代法报告3一、 目的意义:通过有限次的算术运算得到线性方程组的近似值二、 算法:1) 输入系数矩阵 A;2) 输入迭代的初始向量;3) 利用公式 ,计算得出原线性方程组的近似解。三、 源程序:#include#include#include#include#define EPS 1e-6#define MAX 100#define N 100float *Jacobi(float aNN,int n)float *x,*y,s; double epsilon; int i,j,k=0; x=(float *)malloc(n*sizeof(float); y=(float *)malloc(n*sizeof(float); printf(请输入迭代的初始向量:n); for(i=0;in;i+) scanf(%f,&xi); while(1) epsilon=0; k+; for(i=0;in;i+) s=0; for(j=0;jn;j+) if(j=i) continue; s+=aij*xj; yi=(ain-s)/aii; epsilon +=

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

当前位置:首页 > 高等教育 > 其它相关文档

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