北航数值分析大作业第二次QR分解.docVIP

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

目标:使用带双步位移的QR分解法求矩阵的全部特征值,并对其中的每一个实特征值求相应的特征向量。已知: i,j 1,2,……,10 算法: 输入需要求解的矩阵 首先输入需要求解的矩阵。即为下述程序中的void creaA 子程序。 对上述生成的矩阵进行拟上三角化 为了减少求特征值和特征向量过程中的计算量,在对矩阵进行QR分解前先进行拟上三角化。由于矩阵的QR分解不改变矩阵的结构,所以具有拟上三角形状的矩阵的QR分解可以大大极少计算量。在下述程序中用void hess 子程序来实现。 对拟上三角化后的矩阵进行QR分解。 为了直观的了解普通的QR分解过程及结果,下述程序中用void AQR()子程序来对拟上三角化过后的A阵进行QR分解,并输出Q阵R阵RQ阵。 对拟上三角化后的矩阵进行带双步位移的QR分解。 子程序void QRmeth()实现对拟上三角化后的A阵进行带双步位移的QR分解,得出特征值并输出,并用子程序void gauss()对其中的实数特征值进行求解,得出对应的特征向量。 输出相关结果。 源程序: #include #include #include #define L 2500 #define n 11 #define e 0.000000000001 int i,j,s,p,k,ik; double A[n][n],q[n][n],r[n][n],rq[n][n],I[n][n]; double P[n],W[n],u[n],Q[n]; double dr,cr,hr,ar,tr; int nR,nC; double s1,t,x,tzR[n],tzC[2][n],sum,M[n][n],v[n]; void creaA ////生成矩阵A for i 1;i 11;i++ for j 1;j 11;j++ if j! i A[i][j] sin 0.5*i+0.2*j ; else A[i][j] 1.5*cos i+1.2*j ; void hess for s 1;s n-2;s++ for ar 0.0,i s+2;i n;i++ ar+ A[i][s]*A[i][s];//printf ar %1.12e\n,ar ; if ar 0 continue; else ar+ A[s+1][s]*A[s+1][s]; dr sqrt ar ;//printf dr %1.12e\n,dr ; if A[s+1][s] 0 cr -dr; else cr dr; hr cr*cr-cr*A[s+1][s]; for i 1;i s;i++ ////生成u向量 u[i] 0.0; u[s+1] A[s+1][s]-cr; for i s+2;i n;i++ u[i] A[i][s]; for j 1;j n;j++ //P for P[j] 0.0,i 1;i n;i++ P[j]+ A[i][j]*u[i]/hr; for tr 0.0,i 1;i n;i++ //tr tr+ P[i]*u[i]/hr; for i 1;i n;i++ //Q for Q[i] 0.0,j 1;j n;j++ Q[i]+ A[i][j]*u[j]/hr; for i 1;i n;i++ //W W[i] Q[i]-tr*u[i]; for i 1;i n;i++ //生成Ar+1 for j 1;j n;j++ A[i][j]- W[i]*u[j]+u[i]*P[j] ; for i 1;i n;i++ for j 1;j n;j++ if fabs A[i][j] e A[i][j] 0.0; printf 拟上三角化后A n-1 :\n ; for i 1;i n;i++ for j 1;j n;j++ printf %1.12e,,A[i][j] ; printf \n ; void AQR double u[n],w[n],F[n]; for s 1;s n;s++ for p 1;p n;p++ r[s][p] A[s][p]; for s 1;s n-1;s++ for dr 0.0,i s;i n;i++ dr+ r[i][s]*r[i][s]; dr sqrt dr ; if dr 0 continue; else if A[s][s] 0 cr -dr; else cr dr; hr cr*cr-cr*r[s][s]; for i 1;i s;i++ //u u[i] 0; u[s] r[s][s]-cr; for i s+1;i n;i++ u[i] r[i][s]; for i 1;i n;i++ //F for F[i] 0.0,j 1;j n;j++ F[

文档评论(0)

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

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

1亿VIP精品文档

相关文档