网站大量收购独家精品文档,联系QQ:2885784924

北航数值分析作业二详解.doc

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北航数值分析作业二详解.doc

数值分析作业二 算法的设计方案 矩阵的拟上三角化 矩阵的拟上三角化可采用Householer矩阵变换得到,具体的计算方法如下: 记A(1)=A,并记A(r)的第r列至第n列的元素为aij(r)(i=1,2,…,n;j=r,r+1,…,n)。并对r=1,2,…,n-2执行: 若air(r)(i=r+2,r+3,…,n)全为零,则另A(r+1)=A(r),转(5);负责转(2)。 计算 令 计算 继续。 当次算法执行完后,就得到与原矩阵A相似的拟上三角阵A(n-1)。 矩阵的QR分解 矩阵的QR分解的具体计算方法如下: 记A(1)=A,并记A(r)的第r列至第n列的元素为aij(r)(i=1,2,…,n;j=r,r+1,…,n)。令Q1=I(n阶单位矩阵)。对于r=1,2,…,n-1执行: (1)若air(r)(i=r+1,r+2,…,n)全为零,则另A(r+1)=A(r),Q(r+1)=Q(r)转(5);负责转(2)。 (2)计算 (3)令 (4)计算 继续。 当此算法执行完成后就得到正交矩阵Q=Q(n),和上三角阵R=A(n),且有A=QR。 带双步位移QR分解 采用拟上三角化方法将矩阵A拟上三角化得到矩阵A(n-1)。 记A1=A(n-1)=[a(1)ij]n*n,令k=1,m=n。 若,则得到一个特征值,置m=m-1(降阶),转(4);否则转(5)。 若m=1,则得到一个特征值,转(11);若m1,则转(3)。 求以下二阶子阵的两个特征值s1和s2。 若m=2,则得到2个特征值s1和s2,则转(11),否则转(7)。 (7)若,则得到两个特征值s1和s2,置m=m-2(降阶),转(4);否则转(8)。 (8)若k=L,则终止计算,未得到全部特征值;否则转(9)。 (9)计算 置k=k+1; A的特征值全部计算完毕,停止计算。 其中对Mk的QR分解采用以下的算法: 记B1=Mk,C1=Ak,对于r=1,2,…m-1执行: 1)若bir(r)(i=r+1,r+2,…,m)全为零,则另B(r+1)=B(r),C(r+1)=C(r)转(5);负责转(2)。 (2)计算 (3)令 (4)计算 继续。 此算法执行完后,就得到Ak+1=Cm。 计算实值特征值对应的特征向量 构造矩阵B=A-λI,解方程Bx=0,解x即为特征值λ对应的特征向量。采用列主元素Guass消除法求解方程Bx=0,采用Gauss法的过程中化成上三角阵的最后一个方程为Bnn*xnn=0,不妨取xnn=1,然后再迭代求解。 所有源程序 为实现计算本题目所完成的程序主要分为以下两大部分: 1.analysis2.h与analysis2.cpp Analysis2.cpp中包含了本题目中所要使用的各种算法的子程序,analysis2.h为其头文件。 2.numerical_analysis2.cpp 主程序——通过包含了头文件analysis2.h,可以使用analysis2.cpp中各种算法的子程序,在主程序值调用相应功能子程序完所有的计算,并将计算结果按要求输出。 以下为所有源代码: analysis2.h: #ifndef ANALISIS_H_H #define ANALISIS_H_H #define n 10 #define error 1e-12 #define L 1e8 struct complex { double real; double imag; }; extern void Create_Matrix_A(double (*a)[n]); extern void Matrix_A_Mul_Matrix_B(double (*a)[n],double (*b)[n],int m,double (*x)[n]); extern void Matrix_A_Sub_Matrix_B(double (*a)[n],double (*b)[n],int m,double (*x)[n]); extern void Matrix_A_Mul_Vector_B(double (*a)[n],double *b,int m,double *x,double h); extern void Vector_A_Mul_Vector_B(double *a,double *b,int m,double h,double x); extern void Vector_A_Sub_Vector_B(double *a,double *b,int m,double t,double *x); extern void VA_Mul_VB_Matrix(double *a,double *b,int m,double h,double (*x)[

文档评论(0)

挑战不可能 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档