北航数值分析B作业题一研究生.docxVIP

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
北航数值分析B作业题一研究生

《数值分析》计算实习题目一算法的设计方案根据题目要求一,可以使用幂法求出矩阵A的最小特征值,而通过原点平移原理可以求得矩阵A的最大特征值,而则可使用反幂法求得。同理,通过原点平移原理,我们也可以得到与数最接近的特征值。这样就满足了要求二。而根据矩阵条件数的定义,只要知道了模值为最大和最小的特征值便可以求得。而将A通过QR分解,便可以得到A所有的特征值(位于上三角矩阵的主对角线上)。由题目要求,矩阵A的(s=2,r=2)所以可以选用矩阵来存储矩阵A中的非零元素。在算法实现过程中,我使用了5个头文件和相应的源文件来完成不同的矩阵操作,这5个源文件和头文件分别为:”convert_mufa.h”. ”convert_mufa.c””doolittle.h” .”doolittle.c”.“matrix-tool.h”. “matrix-tool.c””mufa.h”.”mufa.c”“ daizhuang.h”.”daizhuang.c”其中:”mufa.h”,”mufa.c”中的函数为:void iteration(double *error1);这个函数完成幂法的一次迭代过程double mufa_root();这个函数通过幂法求得模最大的特征值”convert_mufa.h”. ”convert_mufa.c”中的函数为:void Convert_Iteration(double *error);这个函数完成反幂法的迭代操作。double Convert_root();这个函数完成反幂法的特征根求解。”doolittle.h” .”doolittle.c”.中的函数为:int input(int n,double *a,double *b);这个函数完成原始系统矩阵a(n*n)的数据、维数的输入,方程右边向量b(n)的输入。 int DLLUdecompostion(double *a, int n);这个函数是进行doolittle的LU分解。int ROOT(int n, double *a, double *b);这个函数进行求根运算void display(int n,double *a,double *b);这个函数用于显示处理前和处理后的矩阵。“daizhuang.h”.”daizhuang.c”中的函数为:void INITIALDAIZHUANG();这个函数主要用于对A[501][501]的存储矩阵C [(1+r+s)][n]的初始化和按题目要求赋值。int TRI_DLLUdecompostion();这个函数完成对拟三角矩阵的DOLITTILE分解。int TRI_ROOT(double *xb,double *B);这个函数完成对拟上三角矩阵方程组的求根运算。void TRI_display();这个函数完成对拟上三角矩阵的显示,以方便调试。void TRI_ROOT_display(double *xb);这个函数完成对拟上三角矩阵方程组的根显示。“matrix-tool.h”. “matrix-tool.c”.中的函数主要实现矩阵和向量的一般操作,方便其他函数调用。函数的定义和作用如下所示:void Matrix_M_Vector(double *A,double *b,double *y,int n);函数实现 N*N的矩阵乘以N*1的向量,得到N*1向量Yvoid Matrix_Converted_M_Vector(double *A,double *b,double *y,int n);函数实现转置后N*N矩阵乘以N*1向量,得到N*1向量Yvoid Column_M_Row(double *a,double *b,double *A,int n); 函数实现列乘以行得到一个矩阵Avoid Row_M_Column(double *a,double *b,double *y,int n); 函数实现行乘以列得到一个数值yvoid Print_Matrix(double *a,int n); 函数实现将矩阵a显示出来void Print_Vector(double *b,int n); 函数实现将向量b显示出来二全部源代码2.1 “daizhuang.cpp”中源代码#includedaizhuang.h#includeiostream#includemath.h#includematrix-tool.husing namespace std;//带状线性方程组中相关变量的定义 char s = 2;char r = 2;int n = 501; //后来可以修改成为501double formula = 0; dou

文档评论(0)

yaobanwd + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档